Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алогоритм Флоида, нахождение оптимального пути на графе 
:(
    Опции темы
flor_master
Дата 30.10.2006, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



подскажите поиск оптимального пути на графе с помощью алгоритма Флоида!!!!!
PM MAIL   Вверх
flor_master
Дата 31.10.2006, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



напишите хотябы в какои книге его можно наити или может он имеет еще одно название!!!!!!!!! smile  
PM MAIL   Вверх
maxim1000
Дата 31.10.2006, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



набираем "Флойд" в строке поиска, которая сверху первого сообщения справа и нажимаем Go
получаем список тем
он не такой уж и большой, его можно просмотреть...
P.S.
после беглого просмотра, показалось, что кое-что может быть в этой теме:
http://forum.vingrad.ru/topic-54334/hl/%25...25B4/index.html


--------------------
qqq
PM WWW   Вверх
baye
Дата 22.1.2007, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 22.1.2007

Репутация: нет
Всего: нет



Может разберешься?
Var i,j,n:integer;
    g:array[1..100,1..100] of integer;

Procedure Init;
 Begin
  Assign(input,'input.txt');
   Reset(input);
    Readln(n);
     For i:=1 to n do
      For j:=1 to n do
       Read(g[i,j]);
   Close(input);
 End;

Procedure Solve;
Var k:integer;
 Begin
  For k:=1 to n do
   For i:=1 to n do
    For j:=1 to n do
     if (g[i,j]>g[i,k]+g[k,j]) and (g[i,k]>0) and (g[k,j]>0) Then g[i,j]:=g[i,k]+g[k,j];
 End;

Procedure Done;
 Begin
  Assign(output,'output.txt');
   Rewrite(output);
  For i:=1 To n do begin
   For j:=1 to n do
    Write(g[i,j],' ');
    Writeln;
  End;
   Close(output);
 End;

Begin
 Init;
 Solve;
 Done;
End.
PM MAIL ICQ   Вверх
Rodman
Дата 22.1.2007, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: нет
Всего: 122



еще и в гугле можно было найти че нить...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
ip127001
Дата 23.1.2007, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 24.11.2006
Где: Omsk

Репутация: нет
Всего: -1



неопнимаю таких вопросов....как тебе его подсказать-открой лекции по дискретке...там все отлично написанно и понятно...капец
--------------------
aqua currit et debere currere ut currere solebat
PM MAIL   Вверх
V.A.KeRneL
Дата 23.1.2007, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vadim A. Kazantsev
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 3.12.2006
Где: Moscow, Russia

Репутация: 1
Всего: 14



ip127001, если нужна книжка, то глянь книгу Стивена С. Скиены и Мигеля А. Ревиллы «ОЛИМПИАДНЫЕ ЗАДАЧИ ПО ПРОГРАММИРОВАНИЮ. Руководство по подготовке к соревнованиям» (Steven S. Skiena, Miguel A. Revilla. «PROGRAMMING CHALLENGES. The Programming Contest Training Manual»). 

Скачать электронную версию (5,5 Мб)


Это сообщение отредактировал(а) V.A.KeRneL - 23.1.2007, 14:23


--------------------
«C'est un pense-creux d'ici. C'est le meilleur et le plus irascible homme du monde...» © Ф.М. Достоевский, «Бесы»
---/)/)---(\.../)---(\(\
--(':'=)---(=';'=)---(=':')
(")(")..)-(").--.(")-(..(")(")

PM MAIL IM ICQ AOL YIM MSN   Вверх
comp
Дата 24.1.2007, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 15.11.2006

Репутация: 1
Всего: 1



Внимание вопрос, как оптимизировать флойда для графа из 1000 вершин...???
PM MAIL   Вверх
esperant0
Дата 24.1.2007, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 714
Регистрация: 20.5.2005

Репутация: 4
Всего: 14



Цитата(comp @ 24.1.2007,  17:25)
Внимание вопрос, как оптимизировать флойда для графа из 1000 вершин...???

Чавой?


--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
comp
Дата 24.1.2007, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 15.11.2006

Репутация: 1
Всего: 1



2esperant0: Дан граф, кол-во вершин <= 1000. Дано кол-во запросов t, t <= 100. Вид запроса: <name1> <name2>, где name - имя города. задача: вывести минимальнуй цену переезда из городов, указанных в запросах(в отдельных строчках). \\Запросы сделанны, чтобы никто не додумался решать дэйкстрой.

Это сообщение отредактировал(а) comp - 24.1.2007, 19:52
PM MAIL   Вверх
esperant0
Дата 25.1.2007, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 714
Регистрация: 20.5.2005

Репутация: 4
Всего: 14



Цитата(comp @ 24.1.2007,  19:50)
2esperant0: Дан граф, кол-во вершин <= 1000. Дано кол-во запросов t, t <= 100. Вид запроса: <name1> <name2>, где name - имя города. задача: вывести минимальнуй цену переезда из городов, указанных в запросах(в отдельных строчках). \\Запросы сделанны, чтобы никто не додумался решать дэйкстрой.

Так как в вашем премере все известно. Кроме того какие будут сделана запросы. То в  принципе решение распадется на два этапа 1)preprocessing 2)ответ на запрос.


Соответсвенно временная сложность будет - двойкой (x,y) когда х это сложность препроцесинга а у - сложность запроса.


Например решение флойдом дает (сложность Флойда,O(1))

Решение дайкстрой дает (O(1), сложность дайкстры)


Как вы видете эти два решения не сравнимы. 


какой ответ вам нужен?


--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
comp
Дата 25.1.2007, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 15.11.2006

Репутация: 1
Всего: 1



2esperanto: сложность флойда O(1)?)))))Кто вам такое сказал?)))По-видимому O(N^3), где N - кол-во вершин графа. Сложность дэйкстры также O(1)?!)))Это уже что-то невероятное... самая простая реализация - O(N*M)... насколько я помню... ну да... вытаскивание из очереди сделаем за N... ну и релаксация... кол-во смежных вершин... а... точнее O(N*N)... вот... ну ни как не O(1)... ну и можно догадаться сделать очередь с приоритетами... на основе куч... двоичных... в итоге, мы минимальную вершину будем вытаскивать за O(Log(V))... ну создание кучи, очевидно, за O(V)... в итоге имеем что-то типа O(V*Log(V))... ну и очевидно, при таких ограничениях ни один из алгоритмов не проходит...

Это сообщение отредактировал(а) comp - 25.1.2007, 19:25
PM MAIL   Вверх
Strannik
Дата 25.1.2007, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.1.2007

Репутация: нет
Всего: 2



Цитата

сложность флойда O(1)?)))))Кто вам такое сказал?)))По-видимому O(N^3),

Цитата


Например решение флойдом дает (сложность Флойда,O(1))

Решение дайкстрой дает (O(1), сложность дайкстры)


Товарищ Comp!!Вы не разглядели запятую в посте товарища esperanto. Имелось в виду следующее:
сначала проводим предобработку(В первом случае - Флойд) за сложность Флойда (т.е. за куб) а потом за константу отвечаем на каждый запрос.

Что касается дейкстры... запуская её для каждого запроса получаем время около t*n^2... А дальше всё зависит от TL в этой задаче... если порядка 3-5 сек... может быть и проскочит... 

Ну и конечно запоминать уже найденные пути и не искать их каждый раз и т.д.

И если возможно - выложите условие задачи как оно есть в оригинале...
PM MAIL   Вверх
comp
Дата 26.1.2007, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 15.11.2006

Репутация: 1
Всего: 1



2Strannik: Вот условие, http://www.spoj.pl/problems/SHPATH/
PM MAIL   Вверх
Strannik
Дата 27.1.2007, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.1.2007

Репутация: нет
Всего: 2



Вершин не 1000 а 10000... 
Цитата

n [the number of cities <= 10000]

Если есть надежда что граф разреженный - реализуем для каждого запроса Дейкстру за О(ElogV) , ну и можно попробовать реализацию дейкстры за O(VlogV+E). Экспериментируй в общем.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1539 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.