Strict Standards: Resource ID#25 used as offset, casting to integer (25) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#27 used as offset, casting to integer (27) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#28 used as offset, casting to integer (28) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Нужен алгоритм программы - поиск пути в графе
ТвойWeb » Обо всем понемногу » Ваш компьютер » Нужен алгоритм программы - поиск пути в графе

Страниц (1): [1]
 

1. awep - 18 Декабря, 2008 - 15:59:11 - перейти к сообщению
Люди, помогите сделать курсач!
Задача: найти самый длинный простой путь в графе. Граф неориентированный, ребра веса не имеют.
Язык: С/C++

В интернете я нашел нужный алгоритм и текст программы к нему на паскале, но разобрать не могу...
Где-то читал, что можно использовать алгоритм Дейкстры, но как адаптировать его для поиска длиннейшего пути - нигде не описано.

Самое главное - найти программу, или хотя бы человекопонятный алгоритм для поиска длиннейшего пути между 2мя вершинами, который можно без длительного мозгового штурма закодить.

Помогите кто чем может!
п.с. си знаю плохо.
Сразу приведу найденный алгоритм:
Цитата:
Для решения поставленной задачи будем использовать метод ветвей и границ. Решением задачи является последовательность вершин графа. Пусть R - частичное решение задачи - последовательность длиной Len(R), start - номер вершины, с которой надо начинать строить цепочку, а MinWayLen - минимальная требуемая длина цепочки (максимальная длина из уже построенных цепочек). При выборе очередной вершины и вставки ее в конец последовательности R граф разбивается удалением этой вершины на компоненты связности (связные подграфы). Составим массив таких компонентов ( т.е. множеств вершин). Упорядочим компоненты по убыванию количества вершин. Дальнейший ход алгоритма описывается циклом: 1. Пусть i - первый (следующий) компонент связности. 2. Если Len(i)<=MinWayLen, то выйти из цикла; 3. Решаем задачу внутри i для каждой начальной вершины start из множества вершин i, смежных текущей вершине start; 4. повторять с 1, взяв вместо i следующый компонент. Для того чтобы рассмотреть все возможные длиннейшие пути, надо решать задачу для start = 1,2,...,N и выбрать среди N решений наидлиннейшее.
2. ETC - 18 Декабря, 2008 - 16:25:43 - перейти к сообщению
Вот жешь, по сути как обычно рекурсивные замуты и ничего более интересного.

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0291]     [ Gzipped ]