18 / 18 / 2
Регистрация: 20.01.2009
Сообщений: 71
1

Печать кратчайшего пути из матрицы последовательности вершин (Алгоритм флойда)

31.05.2009, 21:30. Показов 5760. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, проблема следующая:
не могу получить список вершин из результирующей матрицы. В книге "Структуры данных и алгоритмы" приведен пример алгоритма Флойда, на входе матрица представляющая граф:
0 8 5
3 0 ∞
∞ 2 0
на выходе результирующая матрица(P) представляющая матрицу кратчайших путей всего графа:
0 3 0
0 0 1
2 0 0.
В книге путь выводится с помощью функции path:
Pascal
1
2
3
4
5
6
7
8
9
10
procedure path (i,j:integer);
var
   k:integer;
   begin
k:=P[i,j];
if  k=0 then  return;
path(i,k);
writeln(k);
path(k,j);
end;{path}
К примеру, если требуется вывести путь из 1й вершины в 3ю, то функция сразу прекращает выполняться тк P[i,j] равно 0.
Помогите разобраться с этой проблемой, а то я уже весь день сижу, смотрю и ничего не пойму, то ли я туплю, то ли в книге косяк
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.05.2009, 21:30
Ответы с готовыми решениями:

Алгоритм кратчайшего пути: метод Флойда, StringGrid
Помогите с данной темой , я не понимаю как сделать данную программу . Язык написания Delphi . Был...

Алгоритм Флойда (графы - поиск кратчайшего пути)
Собственно очень нужен алгоритм на VBA. Народ если кто то видел, или у кого то есть, поделитесь...

Найти минимальные пути между всеми парами вершин, используя алгоритм Флойда.
Найти минимальные пути между всеми парами вершин, используя алгоритм Флойда. А л г о р и т м Ф...

Поиск кратчайшего пути в алгоритме флойда! (На графах)
Алгоритм флойда! Нужно найти поиск кратчайшего пути в графе Program Algoritm_Floyda; Const ...

6
68 / 24 / 2
Регистрация: 16.05.2009
Сообщений: 73
22.06.2009, 10:27 2
неправильная у тебя матрица на выходе флойда получилась. ищи косяк в алгоритме... да и процедура вывода пути какая-то странная....
Я так понял здесь не стандартый алгоритм флойда, и в матрице P записаны не кратчайшие расстояния, а след. вершина в кратчайшем пути (исходя из процедуры path). напиши флойда как он там у тебя записан.
0
11 / 11 / 0
Регистрация: 23.06.2009
Сообщений: 8
23.06.2009, 20:41 3
Аллгоритм у тебя действительно какойто стрёмный.

Могу дать ссылку на стандартную реализацию .. может поможет
Флойд
0
18 / 18 / 2
Регистрация: 20.01.2009
Сообщений: 71
25.06.2009, 16:33  [ТС] 4
спасибо за советы, но я уже сам разабрался(нашёл чью-то прогу на паскале) и переделал под себя , вот сама функция печати кратчайшего пути(итерационный метод), может быть ещё кому-нибуть пригодится:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
String^ GetPath(int i/*начало*/,int j /*конец*/)
       {
           int k;
           List<int>^ listNodes=gcnew List<int>();
           String^ strPath="";
           strPath+=String::Format("Длина пути: {0}\nПуть:\n",length->GetValue(i,j));
           while(i!=j)
           {
               k=(int)path->GetValue(i,j);
               listNodes->Add(j+1);
               j=k;
           }
           strPath+=String::Format("{0}",i+1);
           listNodes->Reverse();
           for each(int i in listNodes)
           {
               strPath+=String::Format(" --> {0}",i);
           }
           
           return strPath;
       }
0
5 / 5 / 2
Регистрация: 28.05.2009
Сообщений: 29
14.07.2009, 17:18 5
http://e-maxx.ru/algo/Алгоритм флойда
0
0 / 0 / 0
Регистрация: 24.09.2009
Сообщений: 14
23.10.2009, 01:30 6
а можно весь код программы посмотреть?
что такое
C++
1
k=(int)path->GetValue(i,j);
0
1 / 1 / 0
Регистрация: 04.10.2010
Сообщений: 31
14.03.2011, 19:25 7
да а можете скинуть листинг проги?
0
14.03.2011, 19:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.03.2011, 19:25
Помогаю со студенческими работами здесь

Порядок вершин при поиске кратчайшего пути
Есть алгоритм Дейкстры для поиска кратчайшего пути между вершинами. Прога ищет путь правильно и...

Поиск кратчайшего пути для всех вершин смежных 0
Всем привет. Есть следующий граф: где 0 - это пустая ячейка, которая используется для...

Алгоритм Флойда - Уоршала с восстановлением пути
Написать многопоточный поиск, реализован алгоритм Флойда - Уоршала. Даны два потока, в которых...

Алгоритм кратчайшего пути
Всем привет. Посоветуйте - как решить задачу. Есть теоретический алгоритм трассировки печатных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru