Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Эвклидово дерево MST






Предположим, что даны N точек на плоскости, и мы хо­тим найти кратчайший набор линий, соединяющих все эти точки. Эта геометрическая задача называется задачей поиска эвклидова дерева MST (Euclidian MST) (см. рис. 20.18). Один из подходов к ее решению предусматривает построение полно­го графа с N вершинами и N(N- l)/2 ребрами - одно ребро соединяет каждую пару вершин, а вес этого ребра равен рас­стоянию между соответствующими точками. Затем мы можем при помощи алгоритма Прима найти дерево MST за время, пропорциональное N2.

В общем случае для этого решения характерно низкое бы­стродействие. Эвклидова задача несколько отличается от за­дач на графах, которые мы рассматривали выше, поскольку все ребра определены неявно. Объем входных данных про­порционален N, так что решение, которое мы наметили для этой задачи в первом приближении, есть квадратичный алго­ритм. Исследования показывают, что можно несколько улуч­шить этот показатель. Из рассматриваемой геометрической структуры следует, что большая часть ребер в полном графе не будет использоваться при решении задачи, и нет необхо­димости включать в граф большую часть этих ребер, прежде чем мы построим минимальное остовное дерево (дерево MST).

Свойство 20.13. Мы можем отыскать эвклидово дерево MST для N точек за время, пропорциональное N logN.

Этот факт представляет собой прямое следствие двух важ­ных фактов, касающихся точек на плоскости, которые мы будем рассматривать в части 7. Во-первых, граф, извест­ный как триангуляция Делони (Delauney triangulation), содер­жит дерево MST по определению. Во-вторых, триангуля­ция Делони есть планарный граф, число ребер которого пропорционально N.


РИСУНОК 20.18. ЭВКЛИДОВО ДЕРЕВО MST

Пусть задано множество N точек на плоскости (вверху), тогда эвклидово дерево MST есть кратчай­шее множество линий, которые их соединяют (внизу). Эта задача выходит далеко за рамки задач обработки графов, поскольку нам придется использовать глобальную информацию геометрического характера о точках на плоскости, дабы избежать необходимости обработки всех N2 неявных ребер, соединяющих эти точки.


Глава 20» Минимальные остовные деревья



 


сматриваемом случае существует простая нижняя граница наших возможностей. Свойство 20.14. Вычислить эвклидово дерево MST для N точек не проще, чем сортиров­ка N чисел. Доказательство: Пусть задан список чисел, подлежащих сортировке, преобразуем этот список в список точек, в котором в качестве координаты х берется соответствующее число из списка чисел, а координата у принимается равной 0. Требуется найти дере­во MST для построенного списка точек. Далее (как и в случае алгоритма Крускала) поместите точки в АТД графа и выполните поиск в глубину с целью построения ос­товного дерева, начиная с точки с минимальной координатой х. Это основное дере­во представлено в виде связного списка упорядоченных чисел; таким образом, мы ре­шили задачу сортировки чисел. ■

В принципе, мы можем вычислить триангуляцию Делони за время, пропорциональное N logN, затем либо прогнать алгоритм Крускала, либо метод поис­ка по приоритету с целью вычисления эвклидового дерева MST за время, пропорциональное TV logN. Од­нако написание программы, вычисляющей триангуля­цию Делони — задача не из легких даже для опытно­го программиста, так что в силу сказанного выше подобный подход может оказаться слишком убий­ственным для решения таких задач на практике.

Другие подходы вытекают из геометрических алго­ритмов, которые будут рассматриваться в части 7. Для случайно распределенных точек мы можем поделить плоскость на квадраты таким образом, чтобы каждый квадрат содержал примерно lgN/2 точек, что мы и де­лали в программе 3.20, осуществляющей поиск бли­жайшей точки. Далее, даже если мы включаем в граф только ребра, соединяющие каждую точку с точками из соседних квадратов, то, по-видимому (но отнюдь не обязательно), все эти ребра окажутся в минимальном ос­товном дереве; в этом случае мы можем воспользовать­ся алгоритмом Крускала или реализацией алгоритма Прима с поиском по приоритету, чтобы не снижать производительность на завершающей стадии вычисле­ний. Примеры, который мы использовали на рис. 20.10, рис. 20.13 и рис. 20.16 и других подобных рисунках, были построены с использованием именно этого способа (рис. 20.19). Мы можем разработать новую версию алго­ритма Прима на базе алгоритмов поиска ближайшего соседа, чтобы не обрабатывать отдаленные вершины.

Имея в своем распоряжении богатый выбор под­ходов к решению этой задачи и возможности линей­ных алгоритмов для решения в общем виде задачи отыскания дерева MST, важно отметить, что в рас-


РИСУНОК 20.19. ЭВКЛИДОВЫ ГРАФЫ БЛИЖАЙШИХ СОСЕДЕЙ

Один из способов вычисления эвклидового дерева MST состоит в построении графа, в котором каждое ребро соединяет каждую пару точек, расположенных друг от друга на расстоянии, не превышающем d, подобно графу, изображенному на рис. 20.8 и на ряде других. Тем не менее, этот метод дает слишком много ребер, если расстояние d достаточно велико (диаграмма вверху), при этом нет гарантии того, что существуют все ребра, соединяющие все точки, если d меньше длины самого длинного ребра в дереве MST(диаграмма внизу).








© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.