![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 15.12.2013
Сообщений: 414
|
![]()
Здравствуйте. Прочитав следующую статью возник вопрос по поводу определения кратчайших путей.http://hci.fenster.name/304y/lab5/
Там сказано,чтобы для того чтобы найти вершины,через которые лежит кратчайший путь, нужно присвоить некое значение специальной матрице С и т.д. Сделала все как там сказано, вот часть кода. Выводит совсем не то,что нужно. Саму логику нахождения именно путей графа не очень понимаю. Буду очень благодарна,если объясните как можно реализовать путь по вершинам Код:
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Вкратце алгоритм Флойда методом перебора находит кратчайшие расстояния между всеми вершинами. То есть сначала между двумя, потом между тремя (с учетом уже вычисленного расстояния между двумя предыдущими и т.д.).
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#3 | |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
![]() Цитата:
Потом это расстояние может быть улучшено, не? |
|
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]() Цитата:
![]()
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 25.01.2015
Сообщений: 474
|
![]()
Пояснения есть, например, на e-maxx.ru, здесь и здесь. Также можно задать поиск в интернет по фразе "Floyd-Warshall".
Мне трудно ориентироваться в программе на С++, но ощущение, что инициализация матрицы C должна происходить до начала поиска, а не в самом внутреннем его цикле, также вывод результатов - по окончании работы, и ещё непонятны оба условия в обоих if - таких и близко нет в описаниях. Последний раз редактировалось FPaul; 31.01.2015 в 09:55. |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 15.12.2013
Сообщений: 414
|
![]()
Сделала отдельный цикл инициализации матрицы С перед началом выполнения алгоритма
Код:
|
![]() |
![]() |
![]() |
#7 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
![]()
Дык все просто
Сначала задаем матрицу смежности : Код:
Прекрасно Давайте теперь бахнем Флойда <тут код> Потом делаем такую вот красоту Код:
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 15.12.2013
Сообщений: 414
|
![]()
Poma][a,спасибо за ответ.
Я внутри главного цикла сделала следующее Код:
|
![]() |
![]() |
![]() |
#9 | |
Форумчанин
Регистрация: 25.01.2015
Сообщений: 474
|
![]()
Цитирую e-maxx
Цитата:
Кажется, что задача поиска пути между i и j сводится к 1. Пусть нашу рекурсивную проседуру вызывают так RestorePath(i, j). Дальше идёт оаисание самой подпрограммы. 2. Зная i и j получаем k:=p[i][j]. 3.1. Если между i и k путь короткий, то печатаем его. 3.2. Иначе вызываем рекурсивно подпрограмму RestorePath(i, k) 4.1. Если между k и j путь короткий, то печатаем его. 4.2. Иначе вызываем рекурсивно подпрограмму RestorePath(k, j) Короткий путь - наличие дуги между i и k по матрице смежности. Наверное так. |
|
![]() |
![]() |
![]() |
#10 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
![]()
Не понял..
Вы хотите вывести весь путь? Мол путь из вершины A в вершину B проходит через вершины c1, c2, .., ck? |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ПОстроение графа по заданным вершинам | Otar4ik | Общие вопросы C/C++ | 6 | 11.09.2014 21:47 |
создание графа по матрице и поиск кратчайшего пути из одного графа в другой | lexflax | Общие вопросы C/C++ | 1 | 06.09.2012 07:32 |
Построить ломаную линию по заданныи вершинам. Вершины указываются с клавиатуры по «методу резиновой нити». | HollywoodStar | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 17.12.2011 14:36 |
по заданной матрице смежности простого графа построить каркас этого графа с использованием поиска вширь | d1m2o3n4 | Помощь студентам | 0 | 22.06.2011 22:43 |
проход по дереву на c++ | Skilluser | Помощь студентам | 18 | 20.11.2010 19:34 |