Моя скрипка: http://jsfiddle.net/G5mTx/10/
Как вы можете видеть, текущий способ организации узлов не уравновешивается, и существует некоторое перекрытие, когда родительские узлы имеют более 1 дочернего узла.
Для тех, кто не знаком с алгоритмом DOT, краткое, смутное объяснение можно найти здесь: http://www.ece.uci.edu/~jhahn/pdf/dot.pdf
По сути, DOT организует узлы таким образом, чтобы график был оптимальным, а это значит, что он лаконичен, имеет минимальное пересечение линий и сбалансирован.
Я слышал о некоторых людях, использующих серверную часть алгоритма DOT перед отправкой его клиенту ... что было бы значительно быстрее ... но мне нужно, чтобы у каждого узла были состояния зависания и щелчка, как я планирую при разрешении пользователю переназначить, куда указывают стрелки / линии.
Я имею в виду, я мог бы выполнить генерацию SVG на стороне сервера ... но тогда как мне подключить события зависания / щелчка к узлам и сообщить серверу, какую модель представляет узел при повторном назначении линии?
Примечание: мой сервер работает на Ruby on Rails 2.3.8