Итак, если найден обходной путь, но на самом деле не ответ на мою проблему.
Хитрость заключается в том, чтобы иметь невидимый узел, который подключается к исходному состоянию. тогда начальное состояние не является вершиной иерархии, и каждый имеет немного больше свободы в размещении узлов. Кроме того, атрибуты head / tailport работают так, как должны.
В результате - если не красиво, как мне хотелось бы - хорошо смотреть.
digraph finite_state_machine {
edge [fontsize=7];
fontsize = 11;
rankdir=LR;
{rank = same;null}
{rank = same; S0}
{rank = same; S1 S2}
nodesep = 1;
ranksep = 1;
null [shape = plaintext label=""];
null -> S0;
S0 -> S0 [label = "td=1\n-/e2", tailport = n, headport = n];
S0 -> S1 [label = "td=3 \n-/e3" ];
S1 -> S0 [label = "td=3\n-/-\nt=0"];
S0 -> S2 [label = "P:i1/e4"];
S2 -> S0 [label = "td=0\n-/-" ];
S0 -> S0 [label = "i1/e1\ntd+=1" headport = s tailport = s];
}
рендеринг конечного автомата http://img532.imageshack.us/img532/4083/previewd.png
Хотя это работает (для данного конкретного примера), мне все равно очень хотелось бы получить некоторый совет по dot / Graphviz или альтернативе для отображения конечных автоматов приятным способом.