Прямолинейное остовное дерево: различия между версиями
Irina (обсуждение | вклад) |
Irina (обсуждение | вклад) |
||
Строка 24: | Строка 24: | ||
'''Определение 2'''. Пусть имеется точка s; область R обладает свойством единственности относительно s, если для каждой пары точек <math>p, q \in R \;</math>, ||pq|| < max(||sp||, ||sq||). Разбиение пространства на | '''Определение 2'''. Пусть имеется точка s; область R обладает свойством единственности относительно s, если для каждой пары точек <math>p, q \in R \;</math>, ||pq|| < max(||sp||, ||sq||). Разбиение пространства на конечное множество непересекающихся областей обладает свойством единственности относительно s, если каждая из этих областей обладает свойством единственности относительно s. | ||
Версия от 16:58, 28 апреля 2016
Ключевые слова и синонимы
Метрическое минимальное остовное дерево; прямолинейный остовный граф
Постановка задачи
Пусть дано множество из n точек на плоскости. Остовное дерево представляет собой множество ребер, соединяющее все точки и не содержащее циклов. Если каждому ребру приписан вес при помощи некоторой метрики, связанной с расстоянием между инцидентными точками, то метрическим минимальным остовным деревом будет минимальное остовное дерево (МОД) с минимальной суммой этих весов. Если используется евклидово расстояние
Минимальные остовные деревья на взвешенных графах хорошо изучены. Обычный подход к построению метрического МОД заключается в определении взвешенного графа на множестве точек и затем в построении на его основе остовного дерева.
Подобно тому, как для поиска по лабиринту строится граф связей [4], для построения минимального остовного дерева можно определить остовный граф.
Определение 1. Пусть дано множество точек V на плоскости. Неориентированный граф G = (V, E) называется остовным графом, если он содержит минимальное остовное дерево для точек V на плоскости.
Поскольку остовные графы с меньшим числом ребер обеспечивают более эффективное построение минимального остовного дерева, мощность остовного графа определяется как количество ребер в нем. Легко увидеть, что полный граф на множестве точек содержит все остовные деревья и, в силу этого, является остовным графом. Однако мощность подобного графа составляет
Алгоритмы построения МОД обычно используют два свойства, позволяющие включать ребра в минимальное остовное дерево и исключать их. Первое свойство, известное как свойство разрезов, гласит, что ребро с минимальным весом, рассекающее любое разбиение множества вершин на два подмножества, принадлежит к МОД. Второе свойство называется свойством циклов и утверждает, что ребро любого цикла графа, имеющее наибольший вес, можно безопасно удалить. Поскольку эти два свойства сформулированы в контексте построения минимального остовного дерева, они оказываются полезными для остовного графа.
Основные результаты
На базе терминологии, данной в работе [3], определим свойство единственности следующим образом.
Определение 2. Пусть имеется точка s; область R обладает свойством единственности относительно s, если для каждой пары точек
Нотация ||sp|| используется для представления расстояния между s и p согласно метрике
Лемма 1. Пусть имеется точка s на плоскости. Восьмиугольное разбиение относительно s обладает свойством единственности.
Доказательство. Чтобы показать, что разбиение обладает свойством единственности, необходимо доказать, что каждая область разбиения обладает этим свойством. Поскольку области
Точки в области
Предположим, что имеются точки p и q в
Рис. 1. Восьмиугольное разбиение и свойство единственности.
Пусть даны две точки p, q в одном и том же сегменте (октанте) восьмиугольного разбиения плоскости относительно точки s. Согласно свойству единственности, ||pq|| < max(||sp||; ||sq||). Рассмотрим цикл с точками s, p и q. Согласно свойству циклов, только одну точку с минимальным расстоянием до s необходимо соединить с s. Интересное свойство восьмиугольного разбиения заключается в том, что контур равноудаленных от s точек формирует отрезок прямой в каждой области. В областях
Для каждой точки s необходимо найти ближайшего к ней соседа в каждом октанте. Опишем, как эффективно вычислить соседей в октанте
Таким образом, будет добавлено ребро sp и точка s будет удалена из активного множества. После обработки этих активных точек точка p будет добавлена в активное множество. Каждая точка будет добавлена в активное множество и удалена из него только один раз.
Фундаментальной операцией алгоритма с заметающей прямой является нахождение подмножества активных точек, такого, что заданная точка p принадлежит к их областям
Лемма 2. Для любых двух точек p, q в активном множестве должно выполняться
Основываясь на этом свойстве, можно упорядочить активное множество в соответствии с возрастанием x. Из этого следует неубывающий порядок x - y. Пусть дана точка s; точки, для которых s находится в их областях
Чтобы найти подмножество активных точек, для которых s находится в их областях
Внимательное рассмотрение также позволяет прийти к выводу, что после заметания области
for (i = 0; i < 2; i + +) { if (i == 0) отсортировать точки согласно x + y; else отсортировать точки согласно x - y; A[l] = A[2] =for каждой точки согласно порядку { найти точки в А[1], А[2], такие, что p находится в их областях и , соответственно; соединить p с ближайшей точкой каждого подмножества; удалить подмножества из A[1], A[2], соответственно; добавить p к A[1], A[2]; } }
Рис. 2. Алгоритм вычисления прямолинейного остовного графа.
Корректность этого алгоритма устанавливает следующая теорема.
Теорема 3. Пусть имеется n точек на плоскости. Алгоритм вычисления прямолинейного остовного графа строит остовный граф за время O(n log n), при этом количество ребер графа составляет O(n).
Доказательство. Алгоритм может рассматриваться как механизм удаления ребер из полного графа. Как было отмечено выше, все удаленные ребра являются избыточными согласно правилу циклов. Таким образом, граф на выходе алгоритма будет содержать по меньшей мере одно прямолинейное минимальное остовное дерево.
За время работы алгоритма каждая точка будет добавлена в активное множество и удалена из него только один раз для каждой из областей
Применение
Алгоритм построения прямолинейного минимального остовного дерева широко применяется в САПР для проектирования СБИС. Он часто используется в качестве метрики для оценки длины кабелей в процессе размещения. Прямолинейные МОД нередко вычисляются для аппроксимации дерева Штейнера и являются ключевым компонентом многих эвристик дерева Штейнера. Также они использовались для аппроксимации задачи коммивояжера, которая может применяться для генерации цепей сканирования в процессе тестирования. Важно подчеркнуть, что в реальных приложениях размеры входных объектов обычно очень велики. Поскольку эта задача будет вычисляться сотни тысяч раз и во многих случаях на очень больших входных значениях, для вычисления прямолинейного МОД нужен очень эффективный алгоритм.
Экспериментальные результаты
Экспериментальные результаты построения прямолинейного остовного графа на основе алгоритма Крускала для вычисления прямолинейного МОД были представлены Чжоу и др. [5]. В сравнении участвовали два других подхода. Первый подход использовал полный граф на множестве точек в качестве входного для алгоритма Крускала. Второй подход представлял собой реализацию концепции, предложенной в [3]: для каждой точки просканировать все остальные точки, но установить связь только с ближайшей точкой в каждом квадранте. В эксперименте использовались множества от 1000 до 20000 точек, сгенерированные случайным образом. Результаты эксперимента представлены в таблице 1. В первом столбце указано количество сгенерированных точек; во втором – количество различающихся точек. Для каждого подхода приведены количество ребер в заданном графе и общее время исполнения. Если количество точек на входе было больше 10000, подходу на основе полного графа попросту не хватало памяти.
Вход | Полный | С огр. степени | ПОГ | ||||
---|---|---|---|---|---|---|---|
исх. | разл. | кол-во ребер | время | кол-во ребер | время | кол-во ребер | время |
1000 | 999 | 498501 | 5,095 с | 3878 | 0,299 с | 2571 | 0,112 с |
2000 | 1996 | 1991010 | 24,096 с | 7825 | 0,996 с | 5158 | 0,218 с |
4000 | 3995 | 7978015 | 2 м 7,233 с | 15761 | 3,452 с | 10416 | 0,337 с |
6000 | 5991 | 17943045 | 5 м 54,697 с | 23704 | 7,515 с | 15730 | 0,503 с |
8000 | 7981 | 31844190 | 13 м 7,682 с | 31624 | 13,141 с | 21149 | 0,672 с |
10000 | 9962 | 49615741 | - | 39510 | 20,135 с | 26332 | 0,934 с |
12000 | 11948 | - | - | 47424 | 32,300 с | 31586 | 1,052 с |
14000 | 13914 | - | - | 55251 | 46,842 с | 36853 | 1,322 с |
16000 | 15883 | - | - | 63089 | 1 м 3,759 с | 42251 | 1,486 с |
18000 | 17837 | - | - | 70876 | 1 м 19,812 с | 47511 | 1,701 с |
20000 | 19805 | - | - | 78723 | 1 м 45,792 с | 52732 | 1,907 с |
Таблица 1. Экспериментальные результаты.
См. также
Литература
1. McCreight, E.M.: Priority search trees. SIAM J. Comput. 14, 257-276(1985)
2. Pugh, W.: Skip lists: A probabilistic alternative to balanced trees. Commun. ACM 33,668-676 (1990)
3. Robins, G., Salowe, J.S.: Low-degree minimum spanning tree. Discret. Comput. Geom. 14,151-165 (1995)
4. Zheng, S.Q., Lim, J.S., Iyengar, S.S.: Finding obstacle-avoiding shortest paths using implicit connection graphs. IEEE Trans. Comput. Aided Des. 15,103-110 (1996)
5. Zhou, H., Shenoy, N., Nicholls, W.: Efficient minimum spanning tree construction without delaunay triangulation. In: Proc. Asian and South Pacific Design Automation Conference, Yokohama, Japan (2001)
6. Zhou, H., Shenoy, N., Nicholls, W.: Efficient spanning tree construction without delaunay triangulation. Inf. Proc. Lett. 81, 271-276(2002)