무향 그래프의 균형 잡힌 스패닝 트리 유지


19

그래프에 새 노드 / 에지를 추가함에 따라 그래프의 상대적으로 균형 잡힌 스패닝 트리를 유지하는 방법을 찾고 있습니다.

단일 노드 "루트"로 시작하는 무 방향 그래프가 있습니다.

각 단계에서 새 노드와 그래프에 연결하는 가장자리 또는 두 개의 이전 노드를 연결하는 새 가장자리를 그래프에 추가합니다. 그래프를 키우면 스패닝 트리가 유지됩니다. 대부분 새 노드와 에지를 추가 할 때 새 노드를 연결하는 기존 노드의 하위 노드로 설정합니다.

새 노드가 추가되는 순서를 제어 할 수 없으므로 위의 트리 작성 알고리즘이 분명히 불균형 스패닝 트리로 이어질 수 있습니다.

스패닝 트리를 "상대적으로 균형 잡힌"상태로 유지하면서 재 트리에서 수행되는 작업량을 최소화하는 온라인 휴리스틱에 대해 아는 사람이 있습니까? 트리 구조를 완전히 제어 할 수 있습니다. 내가 제어하지 않는 것은 그래프 연결 또는 새 노드가 추가되는 순서입니다.

'균형', '스패닝'및 '트리'와 같은 용어에 대한 표준 Google 응답은 이진 트리 및 B- 트리 인 것으로 보입니다. 내 그래프 노드는 이웃을 여러 개 가질 수 있으므로 트리 노드는 이진 트리와 같이 2가 아닌 여러 개의 자식을 가질 수 있습니다. B- 트리는 인접 목록을 변경하여 균형을 유지하며 그래프 연결을 변경할 수 없습니다.


3
정적 그래프의 이상적인 균형 스패닝 트리가 무엇인지에 대해 더 구체적으로 설명하면 도움이 될 것입니다. BFS 트리는 균형 잡힌 트리로 자동 선택하는 것이 좋은가요? 각 하위 트리의 노드 수가 트리의 모든 위치에있는 부모의 노드 수보다 일정한 비율만큼 더 작아야합니까? 그렇다면 그러한 트리가없는 그래프에 대해 어떻게해야합니까?
David Eppstein

전체 그래프를 한 번에 제공하여 오프라인으로 실행하는 경우 BFS 트리는 이상적인 균형 잡힌 스패닝 트리입니다. 각 서브 트리의 노드 수는 부모의 노드 수보다 일정한 요소만큼 작을 필요가 없습니다.
슈퍼 일렉트릭

최고 나무를 조사 했습니까? en.wikipedia.org/wiki/Top_tree
Peer Sommerlund

답변:


4

모서리가있는 새로운 정점을 추가 할 때마다 옵션이 없습니다. 새 모서리를 추가 할 때마다 루트까지의 현재 거리가 새 모서리를 통한 거리보다 크면 가장 짧은 경로에서 이전 모서리를 제거하고 새 모서리를 추가합니다. 그렇지 않으면 트리를 변경하지 않고 유지합니다. 이 방법으로 트리의 레벨에 동일한 정점이 포함되고 정점에서 루트까지의 거리가 BFS 트리의 거리와 동일하다는 점에서 BFS 트리와 매우 유사한 것을 얻을 수 있다고 생각합니다. 그래프), 그러나 그것이 "이상적인 균형 잡힌 스패닝 트리"조건을 만족시키기에 충분한 지 모르겠습니다.


2

나는 다음을 끝내었다.

Vinicius Santos의 답변이 그 첫 번째 부분입니다. 그가 말했듯이, 나는 어떤 프레임에서나 새로운 노드와 그것에 연결된 부모-자식 모서리를 추가하거나 두 개의 기존 노드 사이에 교차 모서리를 추가합니다. 부모-자식 모서리는 트리 구조를 변경할 수있는 기회를 제공하지 않으며 교차 모서리 만 가능합니다. 노드 A와 B 사이에 교차 에지 E를 추가하십시오. 여기서 B의 트리 깊이는 더 큽니다. (A.depth + 1) <B.depth 인 경우 A의 자식으로 B.depth를 줄일 수 있습니다.

B의 깊이를 줄인 이제 B의 이웃을 확인하여 B의 자식이되어 깊이를 줄일 수 있는지 확인해야합니다. 따라서 B의 너비 우선 순회를 수행합니다.이 경우 X의 경우 X에서 Y까지의 모서리를 통과합니다. depth + 1 <Y.depth이며 Y를 X의 자식으로 설정합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.