2013-05-20 4 views
1

graphviz에서 일해야합니다. 나는 여러 나무의 그래픽 표현을 시각화해야하지만, 어쨌든 나는이 두 가지를 비교하기 위해 두 가지 나무를 비교해야한다. 나무 A와 나무 B를 가지고있다. 공통점이없는 노드 누군가가 EMF Compare를 사용하라고 말했지만 불행히도이 플러그인을 graphviz의 확장을 허용하는 방법을 모르겠습니다.graphviz - 그래픽 트리 비교

이 직업에 직면 할만한 조언이나 해결책이 있습니까?

감사합니다.

+0

나는 graphviz에 익숙하지 않아서 이것을 수행 할 수 있는지 알지 못한다. 빠른 검색 기능은 graphviz에서 EMF (EMF Compare에서 사용되는 기본 모델링 기술)로 내보내기를 위해 아무것도하지 않았다. EMF Compare를 사용하면 EMF 모델을 비교할 수 있습니다. 비교하기 전에 이러한 모델에 Graphviz 그래픽을 표현할 방법이 필요합니다. – Kellindil

+0

예 Kellindil, 다른 문제입니다. graphviz에서 모델을 만들고 EMF 모델과 함께 사용하는 방법을 찾지 못했습니다. 그래서 내가이 문제를 어떻게 대처할 것인지에 대한 생각이 전혀 없기 때문에이 질문을 쓰기로 결심했습니다. 그러나 어쨌든 고마워. – user2343521

답변

1

을 감안할 때 두 .dot 파일, a1.dot :

digraph g1 { 
    A -> B -> D -> E 
    A -> C -> E 
    } 

... 그리고 a2.dot 다음과 같이

digraph g2 { 
    A -> B -> F -> E 
    A -> C -> F 
    } 

... 당신이 그들 사이에 다른 노드를 찾을 수 있습니다

$ dot -Tplain a1.dot | sed -ne 's/^node \([^ ]\+\).*$/\1/p' | sort >a1.nodes 
$ dot -Tplain a2.dot | sed -ne 's/^node \([^ ]\+\).*$/\1/p' | sort >a2.nodes 
$ diff a1.nodes a2.nodes 
4d3 
< D 
5a5 
> F 

저는 sed을 사용하여 각 .dot 파일에 대한 노드 이름을 에서 출력하고 dot에서 노드를 순서대로 정렬 한 다음 diff을 사용하여 차이점을 찾습니다. 이 접근 방식은 그 차이점을 그래픽으로 나타내지는 않지만, 그것은 최상의 시간에 할 일이 까다 롭습니다.

+0

남자는 당신의 속임수에 대해 많은 감사를 드리며, 실제로 내가하고있는 일에 유용 할 수 있습니다. – user2343521

+0

나는 당신의 질문에 답한 이후로 차이점을 그래픽으로 보여주는 방법을 생각해 왔으며 병합 된 그래프와 음영을 표시하거나 두 노드에 공통적인지 여부에 따라 각 노드에 다르게 주석을 달아서 가능해야한다고 생각했습니다. 그래프 1에서만 또는 그래프 2에서만 가능합니다.이 그래픽 솔루션에 관심이 있다면 탐색 해 볼 수 있습니다. 대략적으로, 나는 내 대답에서 취한 접근 방식을 취하고 병합 된 그래프를 만든 다음 원래 그래프간에 다른 노드에 다른 노드 속성을 추가하는 스크립트에 대한 입력으로 'diff'를 사용합니다. – Simon

+0

@ 사이먼은 당신이 여기에서 이야기 한 비주얼 비교 모드를 만들었습니까? – Techdragon