Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 
Вернуться
Тема: Люди пожалуйста объясните человеческим языком алгоритм флойда.(с кодом если не трудно)
1
  1  ~SupernaturaL_kz~, 22 апреля 2011 г. 7:44:04
      Динамически находит кратчайшие пути между всеми парами вершин.

for k:=1 to n do
for i:=1 to n do
for j:=1 to n do
a[i,j]:=min(a[i,j],a[i,k]+a[k,j]);

Если что я его в тупую выучил, там больше ничего и не надо.
     Я бы посоветовал понять, почему он работает. Это ни что иное, как динамическое программирование. Когда знаешь и понимашь почему это правильно, никогда не забудешь и сможешь вывести сам. Самая типичная ошибка на эту тему, это использование цикла по k внутри, что приводит к тому, что найденные пути могут быть не оптимальными.
1

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2026, ИНН 246305493507, E-mail: admin@acmp.ru