2009-07-29 6 views
3

일부 데이터는 트리 구조로되어 있으며, 루트 노드가 무대 중간에 있고, 아이들이 그 주위를 빙빙 돌며 그래픽 방식으로 표현하고 싶습니다. 모든 아이들을 위해, 부모님 주위에. 노드가 겹치기를 원하지 않기 때문에 어떻게 공간을 최적의 방식으로 정렬해야할까요? 뭔가 다소 덜 비슷합니다 alt text (Google 검색)트리 구조의 순환 표현

이와 같은 것을 실현하기 위해 어떤 알고리즘을 사용해야합니까?

답변

2

... 앞까지의 모든 레이아웃이 매우 복잡 할 것 계산하려고 . 예제가 원하는 것을 정확하게 보지는 못했지만 필요한 레이아웃입니다. 또한 거기에 많은 연구 논문을 가지고 어떻게 진행되는지에 대한 아이디어를 줄 것입니다. 행운을 빕니다!

this paper을 순환 구조로 확장하는 것이 얼마나 쉬운 지 알 수 있습니다.

+1

yEd는 그가 원하는 정확한 레이아웃을 가지고 있습니다 (http://www.yworks.com/en/products_yed_about.html). –

1

그래프의 평면 표현을 그리려하고 있습니다. Find some buzzwords and perhaps a resource here And in wikipedia

아 내가 잊었 :이 힘을 가진 뉴턴의 방법으로 할 수 있습니다. 단순히 모든 노드에 서로 밀어내는 모든 양성자처럼 보이지 않게 잠재력을 부여하십시오. 모서리에 뉴턴 식 스프링의 특성을 부여하여 함께 모으는 힘을 행사하면 모두 설정됩니다. 그런 식으로 멋진 애니메이션을 만들 수 있습니다. 이것은 또한 그래프 그리기의 공식적인 방법이지만, 나는 그 이름을 모른다.

2

각 트리 노드가 가능한 한 다른 모든 노드 (부모 제외)와 최대한 거리를 유지하려고 시도하지만 가능한 한 짧은 부모 노드와의 거리를 유지하도록 시스템을 설정하여 비상식으로 수행 할 수 있습니다 유지해야하는 최소 거리까지). 안정화 될 때까지 각 노드에 대해 알고리즘을 반복적으로 실행하면 설명하는 것과 같은 배열이됩니다. 당신이 할 수있는 많은 최적화가 있다고 확신하지만, 이것이 가장 간단한 접근 방법 일 것이라고 확신합니다. 당신에 대한 그것을 어떻게하는지 걱정,하지만 당신은 데이터를 시각화하는 단지, 다음 graphvizradial layout을 살펴하지 않는 경우

+0

+1 이것은 본질적으로 제가 제안하려고했던 것입니다. –

+0

도움이 될만한 내용 : http://en.wikipedia.org/wiki/Force-based_algorithms –

1

최소의 낭비 된 공간과 짧은 연결로 트리를 그리려면 계산적으로 값 비싼 솔루션을 사용해야합니다. 나무에 작은 변화를 주면 근본적으로 다른 평형을 초래할 수 있다는 것은 말할 것도 없지만, 적당한 크기의 나무 위에서 이것이 실시간이되도록하는 것은 어려울 것입니다.

또 다른 접근법은 물리적 시뮬레이션을 포기하고 반복적으로 구축하는 것입니다. 나는 지난 주 비슷한 것을했지만 내 나무는 아마도 당신보다 훨씬 덜 관련되어 있습니다.

이 트리 레이아웃의 경우 각 노드 객체는 각도와 오프셋을 저장해야합니다. 이 두 숫자는 그래픽 표면의 어디에서 끝나는 지 제어합니다.

1) 전체 트리 데이터에 같이 Recurse 모든 잎 노드를 찾을 수 :

여기 내 기본 알고리즘이다. 2)이 작업을 수행하는 동안 각 분기 구조의 길이를 측정해야하므로 어느 것이 가장 길다는 것을 알 수 있습니다. 3) 일단 모든 리프 노드가 있으면 동심원 위로 균등하게 분배하십시오. 전체 원을 사용하거나 각도 도메인의 일부만 사용할 수 있습니다. 4) 일단 모든 리프 노드가 풀리면 바깥 쪽에서 트리를 다시지나 가게됩니다.리프 노드가 아닌 각 노드는 레이아웃이 필요합니다. 본질적으로 모든 노드는 자식 노드의 평균 인 각도를 가지고 있습니다. 오프셋은 graph_radius * (depth_of_node/maximum_depth)입니다.

이 코드는 나에게 매우보기 흉하고 인간이 읽을 수있는 배포판을 제공합니다. 화면 사용면에서 매우 효율적인 것은 아닙니다. 내 나무 디스플레이의 애니메이션을 여기에 올렸습니다. GIF anim

관련 문제