Шаг 197.
Основы языка Haskell. Реализация алгоритмов на графах... . Построение остовного дерева связного графа с помощью поиска в глубину

    На этом шаге мы рассмотрим реализацию этого алгоритма.

Определение (повторение).
Деревом называется неориентированный связный граф, не содержащий циклов.
Определение.
Остовом графа называется максимальный древесный подграф.

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

    После этих замечаний можно написать функцию, значением которой является список рёбер остовного дерева графа.

    Приведем текст такой функции.

Раскрыть/скрыть текст примера.

    Библиотека для работы с графами, представленными ассоциативными списками смежности.

Раскрыть/скрыть текст библиотеки.

Все файлы можно взять здесь.

    На следующем шаге мы рассмотрим построение остовного дерева связного графа с помощью поиска в ширину.




Предыдущий шаг Содержание Следующий шаг