Как Работает Алгоритм Дейкстры [Spanning Tree]

Поділитися
Вставка
  • Опубліковано 25 лис 2024

КОМЕНТАРІ • 60

  • @АнтонСамойлов-л3ц
    @АнтонСамойлов-л3ц 3 місяці тому +22

    Мне понравилось, всё чётко и ясно объяснено. Осталось сделать самостоятельную работу и запрограммировать дейкстру

  • @МаксимСебелев-х5я
    @МаксимСебелев-х5я 3 місяці тому +18

    Анимация божественна и это не шутка

    • @skrupidonn
      @skrupidonn 3 місяці тому +1

      украл с англ канала)

  • @Алексей-н1и9г
    @Алексей-н1и9г 3 місяці тому

    Годная локализация, автору респект.

  • @demidovmaxim1008
    @demidovmaxim1008 3 місяці тому +1

    Большое спасибо, это гениально

  • @testpu
    @testpu 3 місяці тому +1

    Очень доходчиво, спасибо

  • @firstmain52
    @firstmain52 2 місяці тому

    Очень милая анимация

  • @EnergizerTheWhite
    @EnergizerTheWhite 3 місяці тому +3

    Преступно мало просмотров и лайков! И подписчиков. Призывай подписаться в конце видео, это работает

  • @savvior3654
    @savvior3654 3 місяці тому +1

    Шикарное видео!

  • @belxsi
    @belxsi 3 місяці тому +3

    Вот где ты был когда я информатику сдавал?

  • @MrSergioPalermo
    @MrSergioPalermo 3 місяці тому

    А - Ижевск С - Пермь Е -Екатеринбург D - Тюмень В - Курган G - Челябинск F - Уфа ))))))

  • @skatler5741
    @skatler5741 3 місяці тому

    Почему это видео не попалось мне раньше ? )

  • @tawerteam9804
    @tawerteam9804 3 місяці тому

    Топчик

  • @JesseJames-mh5kb
    @JesseJames-mh5kb 3 місяці тому

    Кратчайший путь на вертолёте муахахаха))0)0)

  • @iliaastafev5029
    @iliaastafev5029 3 місяці тому +2

    Хм, непонятно. Давай чуть поменяем веса: CD = 2 а EB = 3. Тогда находясь в С мы имеем оценку для E = 4 а для D = 5 и идем в E. Но в реальности маршрут ACEB окажется длиннее чем ACDB. Получается нам нужно делать оценку всех возможных следующих вершин из всех предыдущих - а это в любом случае экспоненциальная сложность.

    • @АлександрТитов-в8щ
      @АлександрТитов-в8щ 3 місяці тому +1

      Мне кажется, что вам необходимо алгоритм реализовать на бумажке, т.к. в голове тяжело одновременно удерживать большое кол-во переменных. Если вес граней изменить, то при проверке вершины "С" у вас "E" = 4, а "D" = 5. Вы проверите "Е" и увидите на вершине "B"=7, но вы не достигните конечного пункта. Т.к. на вершине "D" будет 5. И вам необходимо будет идти в вершину "D" и смотреть её пути. Вы увидите, что из "D" в "B" дорога будет занимать 6. И перезапишите. В оставшихся вариантах, у вас будет выбор идти в "B" или в "G", но в "G"=7, а в "B"=6. И вы достигните конечной вершины.

    • @iliaastafev5029
      @iliaastafev5029 3 місяці тому

      @@АлександрТитов-в8щ ну то есть как я и говорю - полный перебор графа. Я даже если на очередном шаге при проверке следующих вершин нашел самую дешевую то мне все равно нужно будет зайти и во все остальные и сделать проверки там. Сложность остается экспоненциальной.

    • @wilcodit
      @wilcodit  3 місяці тому

      Пример c ACEB и ACDB:
      Когда мы пришли в Е, мы еще не нашли кратчайший маршрут в B. Кратчайший маршрут до вершины мы находим в тот момент, когда эта вершина становится самой ближайшей среди неиследованных.
      Нам не нужно делать оценку из всех во все. Чтобы разобраться, можно еще раз посмотреть как происходит обновление оценок)
      Если каким-то образом получилась экспоненциальная сложность вместо полиномиальной - это уже точно не Дейкстра^_^

    • @iliaastafev5029
      @iliaastafev5029 3 місяці тому

      @@АлександрТитов-в8щ а я кстати понял. На 0:35 не совсем верно сформулирована задача возможно. Алгоритм Дейкстры не для того чтобы найти кратчайшее расстояние от А до Б, он для того чтобы найти кратчайшее расстояние от A до всех вершин.

    • @iliaastafev5029
      @iliaastafev5029 3 місяці тому +1

      @@wilcodit ты прав - теоретически получается O(V+E). Если при программировании мы все поиски и обновления сделаем за O(1) например инициализировав граф в виде хэш-таблицы, то итоговая сложность останется и на практике около O(V+E).

  • @vadimnosurname
    @vadimnosurname 3 місяці тому

    Очень круто объяснил. Спасибо. Только 1 вопрос: если у нас получится такая ситуация, что расстояние от точки А до D составило бы 5. А расстояние от Е до В доставило бы 3. Тогда по этой задаче, мы бы точку D не проверили? Или мы бы сравнили полученное в итоге время в конечной точке с временем в не изученных городах?

    • @vadimnosurname
      @vadimnosurname 3 місяці тому

      Уже обсуждался этот вопрос) надо сравнивать время)

  • @yeunborn
    @yeunborn Місяць тому

    привет, увидел твое видео насчёт олимпиадного программирования, хотел узнать, почему c# не подойдёт? он же вроде быстрый(не как плюсы, но уж в разы быстрее питона),у меня есть хорошая база на нем в ооп(промышленном программировании), думаю все же на нем писать всош, высшую пробу и т.д.😊

  • @-BezNika-
    @-BezNika- 3 місяці тому

    Лайк паписка. Желаю больше просмотров

  • @Djegur
    @Djegur 3 місяці тому

    Оч круто

  • @namibo
    @namibo 3 місяці тому

    Добрый, применял такой подход в своей игре. А ты можешь так же А Star алгоритм объяснить?)

  • @vovanikotin
    @vovanikotin 3 місяці тому

    Как работает А-Life?

  • @Andrey-vz1fe
    @Andrey-vz1fe 3 місяці тому

    Если бы FB весил 3, то алгоритм пропустил бы оптимальный маршрут. Есть улучшенный алгоритм Дейкстры

    • @IronBruh
      @IronBruh 3 місяці тому

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

  • @Leonard_Gray
    @Leonard_Gray 3 місяці тому

    Это применяется в компьютерных играх для ИИ?
    Или где например? 🤔

    • @doctor_livsi_pod_phonk
      @doctor_livsi_pod_phonk 3 місяці тому

      В интернете чекни, мега много где, если даже не прям на нем, то на версии его.

    • @Leonard_Gray
      @Leonard_Gray 3 місяці тому +1

      Этот алгоритм универсален, поэтому его можно использовать в разных сферах.
      Например, в навигационных системах и картографии алгоритм Дейкстры может помочь проложить маршрут для пешеходов или автомобилей, избегая пробок и выбирая оптимальные дороги.
      В робототехнике этот алгоритм применяется для планирования движения роботов, чтобы они могли перемещаться в пространстве используя кратчайшие пути и обходя препятствия.
      В системах бронирования для поиска наиболее быстрых и дешевых билетов с учетом возможных пересадок.
      В компьютерных сетях алгоритм Дейкстры используется для определения оптимального маршрута передачи данных между узлами сети, минимизируя задержки и повышая эффективность передачи.

    • @Leonard_Gray
      @Leonard_Gray 3 місяці тому

      Маршрутизаторы в этих ваших интернетах на нём основаны разве? 🤔

    • @doctor_livsi_pod_phonk
      @doctor_livsi_pod_phonk 3 місяці тому

      @@Leonard_Gray я говорю загуглил, в этом плане я сказал...

  • @ЕвгенийСупремо
    @ЕвгенийСупремо 3 місяці тому

    Обьснение достаточно плохое потому что нужно не только анимацию делать, а еще и например показывать на примере отрезков выписанных растояние и тд. А в конце с графом и престановкой это вообще epic fail

  • @ЕвгенийСупремо
    @ЕвгенийСупремо 3 місяці тому

    Как по мне дучше чем остальные но обьяснение хромает

  • @priusfoxoriginal3061
    @priusfoxoriginal3061 3 місяці тому

    Вот вопрос, если бы, например cd было бы меньше чем ce,но bd было бы большим,то вроде как алгоритм не нашел кратчайшего пути

    • @Арт-ч2д
      @Арт-ч2д 3 місяці тому +3

      Дело в том, что алгоритм выбирает точку с наименьшим значением среди ВСЕХ неисследованных, и если эта точка и является конечной, то алгоритм останавливается, так как другие пути гарантированно длиннее (ведь путь к одной из ПРОМЕЖУТОЧНЫХ точек другого маршрута дольше, чем весь путь от начальной к конечной) .
      Например, будь, CD=0,5 и весь путь к D равнялся бы 3,5. Пусть даже BD=3, и тогда значение в точке B было бы равно 7,5 на этой итерации (если было бы больше или равно 8, то путь не установился, так как путь A-F-B был бы короче).
      Однако, в таком случае алгоритм не остановился бы, так как оставалась бы неисследованная точка E, значение в которой равно 4 (что меньше 7,5 в точке B и в других точках). Снова бы произошло "раскрытие" данного пути, и значение в точке B стало бы равно 6, что меньше любой другой неисследованной точки и, так как эта точка является конечной, гарантировалось бы, что данный путь кратчайший.

    • @ankofl
      @ankofl 3 місяці тому

      Да, но это не было оговорено в ролике, и с другими значениями ребер алгоритм работал бы неверно

    • @plotoh5087
      @plotoh5087 3 місяці тому

      ​@@ankoflвсе оговорено, по этому алгоритму на подобном примере все легко совершается. при условии что расстояние не меньше 0

  • @anonsd5521
    @anonsd5521 3 місяці тому

    Как по мне слишком затратный алгоритм, гораздо оптимальнее будет просто аннигилировать связи вершины, а связи везде суммировать. Например между городами C и B находится город D, который можно аннигилировать и получить сумму его связей, значит путь от C до B будет 5. Затем мы убираем C, между которыми 3 и 5, получаем 8 от А до В, 4 от А до Е, и 4 от А до А, что мы исключаем ввиду образования круга. Дальше так продолжаем, пока не останутся все возможные варианты добраться от А до В исключительно в виде связей, без вершин.

    • @evgenii_orwell
      @evgenii_orwell 3 місяці тому

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

    • @wilcodit
      @wilcodit  3 місяці тому +1

      Легким движением руки получаем О(n^3), вместо О(m log n)

    • @anonsd5521
      @anonsd5521 3 місяці тому

      @@wilcodit Если не трудно, откуда O(n^3)?

    • @wilcodit
      @wilcodit  3 місяці тому

      @@anonsd5521 Если хотим путь V -> T -> U заменить на ребро V -> U, то нужно перебирать вершины V, T, U

    • @anonsd5521
      @anonsd5521 3 місяці тому

      @@wilcodit Хорошо, спасибо за пояснение.

  • @nihonam
    @nihonam 3 місяці тому

    А как может ребро быть с отрицательным весом?

    • @Leonard_Gray
      @Leonard_Gray 3 місяці тому

      Как воздушный шарик! \(^▽^)/
      Он имеет самую обычную массу, но отрицательный вес.

    • @nihonam
      @nihonam 3 місяці тому

      @@Leonard_Gray но ведь тут речь идёт о потраченном на дорогу времени. оно не может быть отрицательным

    • @wilcodit
      @wilcodit  3 місяці тому +1

      Можно такой пример представить:
      Вес ребра - это его стоимость, если вес положительный, нужно заплатить, проходя по ребру, а если отрицательный, наоборот, получить деньги

    • @Leonard_Gray
      @Leonard_Gray 3 місяці тому

      Представьте себе, отрицательные значения люди представляли себе не всегда, как и ноль!
      ... Не знаю, к чему я это сказал. Просто любопытно это всё.

    • @МихаилПапурин
      @МихаилПапурин 3 місяці тому

      @@wilcodit С отрицательными весами тоже можно - добавится один проход по всему графу с запоминанием наименьшего отрицательного веса. И при учете ребра - из веса ребра вычитаем это значение.