Алгоритм Флойда

Поділитися
Вставка
  • Опубліковано 5 лют 2025
  • Алгоритм поиска кратчайших путей Флойда позволяет весьма простым способом создать матрицу выражающую все существующие в графе кратчайшие пути. До просмотра этого урока, пожалуйста, убедитесь, что вы знаете как выражать граф с помощью матрицы (если вы этого ещё не знаете, не беда, посмотрите видео урок как раз на эту тему • Представление графа в ... ).

КОМЕНТАРІ • 73

  • @gleeeb7hop
    @gleeeb7hop 9 років тому +189

    спасибо, Иисус

  • @Bogdan-ef9wz
    @Bogdan-ef9wz 11 років тому +11

    Спасибо за видео. Интересно слушать про всякие алгоритмы. По чаще бы

    • @VladimirMozhenkov
      @VladimirMozhenkov  11 років тому +10

      Благодарю за положительный отзыв. Поверьте мне, если-бы в дне было по 100 часов, то было-б всего на много больше. Я банально не успеваю иногда сделать всё что планирую.
      Алгоритмы - это особенно сложная вещь, так как я их не могу просто с ходу объяснить, надо сначала продумать как это сделать, а на это уходит время. Вот даже это видео записывалось дважды, и то наверное в некоторых местах было совсем не элементарно понимать, что происходит и почему.

  • @sandsnowstorm5940
    @sandsnowstorm5940 7 років тому +1

    Вы очень хорошо и не нудно объясняете, спасибо большое!

  • @oleksandrzaliskyi7540
    @oleksandrzaliskyi7540 8 років тому +1

    Шикарное обьяснение. Автору спасибо.

  • @sektor438
    @sektor438 10 років тому +1

    Спасибо вам большое. Очень помогли понять алгоритм. Всё доступно и красиво объясняете.

  • @user_found_200
    @user_found_200 8 років тому

    Спасибо, Володя, очень добротный материал. Правда, всё исчерпывающе-понятно.

  • @2DKot
    @2DKot 10 років тому

    Спасибо за видео! Только после вашего объяснения смог разобраться с этим алгоритмом.

  • @sova4419
    @sova4419 4 роки тому

    Я перечитала немерено лекций и примеров по этому, но все время какие то моменты оставались не до конца ясны, а тут все идеально, просто как говорят "прожевали и в рот положили". Спасибо за урок))

  • @AizarkLizard
    @AizarkLizard 9 років тому +1

    Красавчик, интересно узнавать что то так наглядно

  • @Allex_0.9
    @Allex_0.9 10 років тому

    Спасибо за видео! Некоторые моменты не понимала, теперь всё понятно.

  • @dmytrosapozhnyk1963
    @dmytrosapozhnyk1963 2 роки тому

    Очень хорошо и понятно изложено. Спасибо!

  • @lif0CLUB
    @lif0CLUB 9 років тому +1

    Спасибо вам за ваш труд.

  • @darsalim1
    @darsalim1 3 роки тому

    Спасибо большое Вам!)

  • @SteelApple01
    @SteelApple01 7 років тому +1

    Большое спасибо, реально помогло представить как работает алгоритм.
    Пы.Сы. за маршрут из узла в узел отдельное спасибо, очень долго не мог придумать как его сделать.
    UPD: Только что закодил это в с++ и столкнулся с недочетом. Необходимо также проверять существование пути из "В" в "С"(может я прослушал этот момент в видео, но в псевдокоде я этого не вижу)

    • @ivanilin43
      @ivanilin43 6 років тому

      Меня это сразу смутило при просмотре видео, что нет такой проверки. Видимо, оправдано.

  • @АнриБайер
    @АнриБайер 9 років тому +4

    Владимир, спасибо за интересный урок!
    Так подробно о Флойде даже на лекции не рассказали. =)
    И реализация с 2мя таблицами очень хороша. Взял себе в копилку мудростей. =)
    Но есть одно пожелание: доску бы побольше, а то информация не влезает, приходится стирать, и при дальнейшем объяснении приходится удерживать в голове нарисованное ранее в дополнении к пониманию объясняемого сейчас.
    Да и так более наглядней будет.
    Например, в данном конкретном уроке можно было бы нарисовать граф, рядышком составить таблицы смежности и истории, реализацию алгоритма, и тут же прогнать его по данному графу с иллюстрацией изменения таблиц. =)

    • @VladimirMozhenkov
      @VladimirMozhenkov  9 років тому

      +Анри Байер На бо́льшую доску не хватает места: ua-cam.com/video/VfpvKrtD7zo/v-deo.html

  • @ДмитрийОбыденков
    @ДмитрийОбыденков 10 років тому +3

    Отличное видео. Просто и доходчиво.
    Но на мой взгляд стоило бы чуть-чуть расшить область представления - использовать вторую доску (или использовать одну, но большего размера) чтобы иметь на виду дополнительную информацию, в данном случае было бы неплохо видеть граф(и на нем было бы удобнее показывать связи) и матрицы.

  • @YanPashkovsky
    @YanPashkovsky 9 років тому +33

    Начинать смотреть с 1:20

  • @ДмитрийПротько-ы7м
    @ДмитрийПротько-ы7м 10 років тому +16

    Крутое видео, но хотелось бы увидеть конкретный пример того, как этот алгоритм решается на бумаге, для большего понимания.

  • @ЕрджаникГаспарян-н5н

    Спасибо большое!

  • @ОлександрГрик
    @ОлександрГрик 9 років тому

    Спасибо большое! Очень хорошо объясняете!

  • @iningard5017
    @iningard5017 5 років тому

    Благодарю за пояснение, теперь вроде как все стало понятно. Я могу ошибаться, но в некоторых случаях одного прохода алгоритма оказывается недостаточно, чтобы пройтись по всем элементам.

  • @artemkalytiuk5611
    @artemkalytiuk5611 8 років тому

    Красава! Спасибо тебе большое. Круто объясняешь!!!!

  • @Chetanoo
    @Chetanoo 6 років тому

    Очень интересно, спасибо.

  • @SI-ho2my
    @SI-ho2my 7 років тому

    Огромное спасибо! Отлично прям и всё понятно! Владимир, а как можно с Вами связаться у меня есть интересная задача про конкретную практическую задачу с электрическими машинами.

  • @EvgeniyZhelenskiy
    @EvgeniyZhelenskiy 7 років тому

    Хорошо объяснили!
    Но одно замечание:
    Всё-таки в истории нужно было хранить b, так как эта вершина будет предыдущей, а не предыдущая от неё, так как иначе будет 0, так как самая первая будет совпадать с последней.

  • @SunLightDH
    @SunLightDH 5 років тому +1

    Автору конечно спасибо, но может я ещё не совсем понял смысл данного алгоритма к графам... но такое впечатление, что если перед нами есть граф, мы видим как он связан, видим вес связей, то цель в том чтобы рассказать компьютеру какой путь короче, чтобы он нам сказал какой путь короче ^_^
    P.S. и как то хотелось бы видеть конкретный нарисованный граф, на котором этот алгоритм объясняется...

  • @KOB6OU23
    @KOB6OU23 8 років тому

    Володя, на 13:25 Вы пишете H[A,C]= H[A,B] . Но это ведь матрица истории, там не указывается вес, поэтому корректнее H[A,C]= B
    И по этой же матрице на 19:01 , чтобы узнать путь от вершины 1 до любой другой следует смотреть числа по горизонтали, а не по вертикали, насколько я понял

    • @kamranhajiyev5381
      @kamranhajiyev5381 7 років тому

      В матрице Н нет веса. Н[A,C] предидющий шаг, а не вес.

  • @1121mdb
    @1121mdb 10 років тому +3

    Если кто-нить попробует реализовать этот алгоритм на практике, то вполне вероятно наткнуться на простую ошибку...
    В псевкокоде в записи (три нижние строки)
    If W[A,C] > W[A,B]+W[B,C]
    W[A,C] = W[A,B]+W[B,C]
    H[A,C] = H[A,B]
    может быть не совсем понятно назначение последней строки.
    Ведь если использовать оператор IF без begin-end, или всё тех же фигурных скобок { ... } то на практике (при такой записи) в нашей программе вторая строка выполниться только при истинном условии, а третья будет срабатывать каждый раз (не зависимо от условия).
    Как вариант отформатировать код с использованием соответствующих операторов начала-конца блока, например так:
    If W[A,C] > W[A,B]+W[B,C]
    {
    W[A,C] = W[A,B]+W[B,C]
    H[A,C] = H[A,B]
    }
    Правильнее даже так:
    If ( W[A,C] > W[A,B]+W[B,C] )
    {
    W[A,C] = W[A,B]+W[B,C]
    H[A,C] = H[A,B]
    }
    Но это только моё мнение, и на него можете не обращать внимания :-)

    • @charlag
      @charlag 10 років тому

      В псевдокоде блоке обозначаются отступами.
      Если в языке, на котором вы это реализуете, это не так - естественно, что нужно выделить этот блок.

    • @1121mdb
      @1121mdb 10 років тому

      Я с псевдокодом не работал, но пару недель назад смотрел код на Питоне - там так же блоки отступами отделяют. Интерестно смотрится.

  • @jankus101
    @jankus101 9 років тому +1

    я не понял один нюанс, в конечном примере я могу пойти с 1-3 вес будет 15, но вы предлагаете, как оптимальный вариант, пойти с 1-5-4-3, тогда вес будет 5+11+8=24

  • @OlgaGalanina
    @OlgaGalanina 7 місяців тому

    Спасибо

  • @Enthe0genic
    @Enthe0genic 8 років тому

    Спасибо!

  • @TatyanaShuvalova
    @TatyanaShuvalova 10 місяців тому

    спасибо)

  • @ddw2022
    @ddw2022 4 роки тому

    Спасибо за видео, очень помогло! А можно ли как-то узнать все возможные пути из одной точки в другую, к примеру:
    А - В, 3
    А - С, 2
    С - В, 1
    Как я могу вывести 2 маршрута, не только один? А => B, A => C => B?

  • @Sw0rdPenc1l
    @Sw0rdPenc1l 8 років тому

    А как насчет того что в графе может быть несколько таких коротких путей? Скажем так из одной вершины в другую может быть два одинаковых по сути пути.

  • @heylic4820
    @heylic4820 Рік тому

    Спасибо тебе, Иисус!

    • @heylic4820
      @heylic4820 Рік тому

      Выступил с семинаром по данной теме, получил 5. Спасибо вам огромное!

  • @igorbalytskyi
    @igorbalytskyi 9 років тому +4

    Никто не сказал главного: в алгоритме ошибка!
    Цикл for each as C нужно поставить на первое место и убать странное if w[a,b]!=inf. Откуда оно там?
    Но все равно спасибо за идею с матрицей истории

    • @igorbalytskyi
      @igorbalytskyi 9 років тому

      +Валя Журавская я сейчас сходу не обосную, почему (нужно опять вникать в него), но проблема в том, что реализованный по данной инструкции алгоритм не работает.

    • @ИринаГром-ф3н
      @ИринаГром-ф3н 9 років тому

      +Валя Журавская Я согласна с Игорем Балицким в том, что вершину С нужно перебирать во внешнем цикле. Если мы рассматриваем вершины А и В с пересадкой в вершине С, то равенство должно выглядеть так АВ>AC+CB. А у нас получается АС>АВ+ВС

  • @МаксимКривицький-ю4н

    Скажите пожалуйста, а у вас уроки про алгоритм Данцига, А то информации о нём мало и сложно разобраться

    • @VladimirMozhenkov
      @VladimirMozhenkov  9 років тому

      Максим Антосюк Этого нет, и в ближайшее время наверно не будет. Времени не хватает снимать серьёзные видео.

  • @levonhakobyan5320
    @levonhakobyan5320 11 років тому

    spasibo za video

  • @ПавелТеплостанский
    @ПавелТеплостанский 9 років тому +1

    работает ли данный алгоритм для неориентированного графа?

    • @VladimirMozhenkov
      @VladimirMozhenkov  9 років тому +2

      +Павел Теплостанский Да, конечно. У вас путь назад никогда не пойдёт, так как значение туда+обратно всегда получится больше первоначального.

    • @EvgeniyZhelenskiy
      @EvgeniyZhelenskiy 7 років тому

      Правда стоит отметить, что в этом случае Флойд - далеко не самый оптимальный алгоритм.

  • @AIRGROUPABLE
    @AIRGROUPABLE 5 років тому +5

    Всегда знал что Иисус программист от Бога.

  • @ВасилийСеров-с4ц
    @ВасилийСеров-с4ц 8 років тому +3

    алгоритм, предложенный автором, не рабочий. в нем есть ошибки

  • @angelinka9268
    @angelinka9268 9 років тому +2

    почему вас нет в моём универе??? =(

  • @elnur9924
    @elnur9924 7 років тому

    Можно на java код ?

  • @atlantpaladin6938
    @atlantpaladin6938 8 років тому

    в js бесконечность Infinity

  • @toneant5675
    @toneant5675 10 років тому +2

    Классное видео, все понятно. Единственный минус - волосы... Их много... Не очень приятно смотреть...

    • @atlantpaladin6938
      @atlantpaladin6938 8 років тому +6

      подстрегитесь если мешают)

  • @BeDbMeK
    @BeDbMeK 9 років тому +1

    ААА сложнааа

  • @indifferent4055
    @indifferent4055 8 років тому +2

    Нифига не понятно

  • @MrSomethingggg
    @MrSomethingggg 8 років тому +1

    Ставь лайк, если экземпляр человеческого класа

  • @levonhakobyan5320
    @levonhakobyan5320 11 років тому

    esli mojno delayte tak chtob s doski bilo vidno xorosho

    • @VladimirMozhenkov
      @VladimirMozhenkov  11 років тому

      Вы имеете ввиде, что отблеск мешает или то, что иногда я перед доской стою? Я знаю, что сейчас у меня не совсем нормальное освещение, но постораюсь следить чуть больше за углом падения света.

    • @levonhakobyan5320
      @levonhakobyan5320 11 років тому

      Da ya govoryu pro osveshenie

  • @jhoebutton4676
    @jhoebutton4676 7 років тому +1

    афтар хиппи

  • @kamranhajiyev5381
    @kamranhajiyev5381 7 років тому

    Спасибо!