노드의 노드에서 어떻게 순위를 강제로 강제로합니까?
-
12-09-2019 - |
문제
GraphViz DOT 형식의 비교적 간단한 (자동 생성) 그래프가 여러 개 있습니다. 이들은 상태 기계를 통한 경로를 보여 주지만 DOT는 그래프를 상태 순서대로 원할 때 두 노드가 같은 순위에 있어야한다고 결정하는 약간 혼란스러운 습관을 가지고 있습니다. 나는 많은 설정을 시도했다 (포함 :n
그리고 :s
그리고 weight
아래에 나열), 그러나 나는 세 번째 상태를 배치하도록 DOT를 설득 할 수 없습니다. ~ 위에 네 번째 상태.
나는 많은 그래프 에이 문제가 있습니다. 두 개의 노드가 같은 순위에 있고 그것을 무시할 수있는 일이 없다고 결정하는 내부에 DOT에 내부에 무언가가있는 것 같습니다. 나는 심지어 하나의 노드가 rank=sink
, 그러나 Dot은 어쨌든 아래에 다른 노드를 넣기로 결정했습니다.
노드가 다른 구속 조건보다 순서대로 더 중요하다는 점을 제안 할 방법이 있습니까?
그래프를 생성하는 데 사용 된 코드는 다음과 같습니다.
digraph {
ERROR [label="Error"];
FirstSTATE [label="Initial State" URL="\ref FirstSTATE"];
FirstSTATE -> SecondSTATE;
SecondSTATE [label="Second State" URL="\ref SecondSTATE"];
SecondSTATE -> ThirdSTATE;
ThirdSTATE [label="Third State" URL="\ref ThirdSTATE"];
FourthSTATE [label="Fouth State?" shape="diamond"];
ThirdSTATE:s -> FourthSTATE:n [weight=50];
FourthSTATE -> FifthSTATE [label="Yes" ];
FourthSTATE -> ThirdSTATE [label="No"];
FifthSTATE [label="Fifth State" URL="\ref FifthSTATE"];
SixthSTATE [label="Sixth State?" shape="diamond"];
SixthSTATE -> ERROR [label="Yes" ];
SixthSTATE -> SeventhSTATE [label="No"];
FifthSTATE -> SixthSTATE;
SeventhSTATE [label="Seventh State" URL="\ref SeventhSTATE"];
SeventhSTATE -> EighthSTATE;
EighthSTATE [label="Eighth State" URL="\ref EighthSTATE"];
NinthSTATE [label="Ninth State?" shape="diamond"];
NinthSTATE -> TenthSTATE [label="Yes" ];
NinthSTATE -> EighthSTATE [label="No"];
EighthSTATE -> NinthSTATE;
TenthSTATE [label="Tenth State" URL="\ref TenthSTATE"];
EleventhSTATE [label="Eleventh State?" shape="diamond"];
EleventhSTATE -> ERROR [label="Yes" ];
EleventhSTATE -> TwelfthSTATE [label="No" ];
TenthSTATE -> EleventhSTATE;
TwelfthSTATE [label="Twelfth State" URL="\ref TwelfthSTATE"];
}
그래프는 현재 다음과 같습니다.
해결책
"제약 = 거짓"을 사용하십시오.
http://www.graphviz.org/doc/info/attrs.html#d:constraint
그래프에서 :
FourthSTATE -> ThirdSTATE [label="No" constraint=false] ;
당신은 얻을 것이다:
digraph {
ERROR [label="Error"];
FirstSTATE [label="Initial State" URL="\ref FirstSTATE"];
FirstSTATE -> SecondSTATE;
SecondSTATE [label="Second State" URL="\ref SecondSTATE"];
SecondSTATE -> ThirdSTATE;
ThirdSTATE [label="Third State" URL="\ref ThirdSTATE"];
FourthSTATE [label="Fouth State?" shape="diamond"];
ThirdSTATE -> FourthSTATE;
FourthSTATE -> FifthSTATE [label="Yes" ];
FourthSTATE -> ThirdSTATE [label="No" constraint=false] ;
FifthSTATE [label="Fifth State" URL="\ref FifthSTATE"];
SixthSTATE [label="Sixth State?" shape="diamond"];
SixthSTATE -> ERROR [label="Yes" ];
SixthSTATE -> SeventhSTATE [label="No"];
FifthSTATE -> SixthSTATE;
SeventhSTATE [label="Seventh State" URL="\ref SeventhSTATE"];
SeventhSTATE -> EighthSTATE;
EighthSTATE [label="Eighth State" URL="\ref EighthSTATE"];
NinthSTATE [label="Ninth State?" shape="diamond"];
NinthSTATE -> TenthSTATE [label="Yes" ];
NinthSTATE -> EighthSTATE [label="No"];
EighthSTATE -> NinthSTATE;
TenthSTATE [label="Tenth State" URL="\ref TenthSTATE"];
EleventhSTATE [label="Eleventh State?" shape="diamond"];
EleventhSTATE -> ERROR [label="Yes" ];
EleventhSTATE -> TwelfthSTATE [label="No" ];
TenthSTATE -> EleventhSTATE;
TwelfthSTATE [label="Twelfth State" URL="\ref TwelfthSTATE"];
}
제휴하지 않습니다 StackOverflow