![]() |
|
|
![]()
|
|
| ~FoX~ |
|
||||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
Kurt
Юзверь возвращаться будет? Есть способы приближенного решения - алгоритм Прима например.
время на решение O(E*logV), (где E — мощность множества ребер, а V — множества вершин) |
||||
|
|||||
| Fedor |
|
||||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: 2 Всего: 32 |
Посмотри, там сразу после цикла инициализации есть строчка
в которой мы показываем, что путь из s в s равен 0. Далее в этом цикле мы возьмем вершину mI, в которой значение d будет минимальным (на первом шаге это будет именно s). Делаем пометки в массивы про эту вершину типа Q[mI]=0. Потом для каждой вершины, соединенной ребром с mI мы обновим значение d если это будет нужно. Ну и дальше делаем все с начала... То есть работает по жадному методу (когда выбираем mI). Массив W вроде действительно не нужен. (Я видимо когда писал этот код записывал в W порядок следования найденых вершин mI - вот что именно отображает этот массив). Код точно работает правильно - протестировал. Это сообщение отредактировал(а) Morpheus - 20.10.2004, 16:38 -------------------- Мы - Днепряне. Мы всех сильней. |
||||
|
|||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
А реальны пересадки с автобуса на автобус?
-------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: 2 Всего: 32 |
neutrino В смысле если ехать из Киева в Москву через Чикаго двумя самолетами, то конечно реально... Это и есть метод "релаксации"
-------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Извините, А этот Дийкстра - это разве не кротчайший путь в графе из точки А в точку Б? А как же пересадки?
-------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: 2 Всего: 32 |
neutrino Смотри.
Граф задаем так: если есть автобус из A в B, то есть дуга AB, вес которой - стоимость проезда. Тогда Дейкстра как раз и найдет минимальной по стоимости проезда путь. При этом количество пересадок - количество вершин, пройденных по пути. З.Ы. Важно, что Дейкстра ищет именно минимальный по стоимости цикл а не колличеству пересадок. То есть если будет дешевле выходить на каждой остановке с учетом того, что кондуктор не успеет взять за проезд и стоимость между двумя соседними остановками будет 0, то дейкстра заставит постоянно выходить из автобуса и ждать следующего. -------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
ВОТ Я ДУРАК!!!
Это ведь так просто! А я со своим Г.А. га га га га Спасибо, Morpheus -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Оказалось не все так просто ... Сложность получается O(2^n*n^2). Н в квадрате дает Дейкстра, плюс на каждой из н остановок можно либо выйти либо войти в автобус. И того 2 варианта на н остановок - 2 в степени н. Для ста тысяч остановок комп заглохнет надолго ... Без эвристик не обойтись ...
-------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: 2 Всего: 32 |
Мы друг друга не понимаем -------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Я что-то не понял. А кто из вас Федор и кто Морфеус? А на счет сложности алгоритма - попробуй анализировать. У меня получилось именно так. Ведь на каждой остановке можно либо выйти либо остаться в автобусе. 2 варианта. А остановок n значит всего вариантов 2^n. Да еще и Дийкстра дает n в квадрате. -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: 2 Всего: 32 |
Ну... Федор==Морфеус. -------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |