Алгоритм Дейкстры

Sdílet
Vložit
  • čas přidán 19. 06. 2012
  • Имеем ориентированный взвешенный граф. Ищем кратчайшие пути от одной из вершин до остальных. Вершинам задаем так называемые "временные" и "постоянные" метки. На каждом этапе наименьшая временная метка становится постоянной, от вершины с этой меткой на следующем этапе разыскиваются пути к доступным (соседним) вершинам. См. книгу Кирсанов М.Н. "Графы в Maple".

Komentáře • 144

  • @user-cy4lp7gn7p
    @user-cy4lp7gn7p Před rokem +14

    Большое спасибо. Это лучшее объяснение данного алгоритма, из тех что я встретил на просторах. Понятно и наглядно👍👍

  • @senya5668
    @senya5668 Před 4 lety +22

    Пасибо , что спасаете ленивых студентов..

  • @annavasileva5688
    @annavasileva5688 Před rokem +2

    Объяснение с прямой линией вижу в первый раз, и это очень удобно. Спасибо большое!

  • @osenyaaPechen
    @osenyaaPechen Před 11 lety +30

    Вы сэкономили мне кучу времени. Спасибо!

  • @RomanOleynik92
    @RomanOleynik92 Před 8 lety +1

    Благодарю вас за информационный, легко усвоиемый видео урок.

  • @user-ls6ko9je3c
    @user-ls6ko9je3c Před 7 lety +1

    Спасибо, всех благ вам за ваши труды :)

  • @Enthe0genic
    @Enthe0genic Před 7 lety +2

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

  • @lif0CLUB
    @lif0CLUB Před 7 lety +1

    Большое спасибо,вам за ваши труды

  • @yehorpanchenko10
    @yehorpanchenko10 Před 7 lety +1

    Посмотрел куча других видео - ничего не понял. Посмотрел ваше - все понял с самого начала. Спасибо за доступное объяснение.

  • @user-go4kn1sy6u
    @user-go4kn1sy6u Před 9 lety

    Спасибо за урок..Всё ясно и понятно!!)нет ничего лишнего - всё по теме!!

  • @Faustism
    @Faustism Před 10 lety +7

    Отлично! Очень доходчиво. Спасибо!

  • @ya_gema
    @ya_gema Před 6 lety

    Спасибо Вам большое, очень доступно и понятно объяснили.

  • @archwarden7004
    @archwarden7004 Před 4 lety +1

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

  • @ellviira
    @ellviira Před 9 lety

    Большое спасибо,все понятно и доступно

  • @user-wg8ty1rg1l
    @user-wg8ty1rg1l Před 9 lety +1

    Большое спасибо за доступное объяснение

  • @leonidsah
    @leonidsah Před 3 lety +2

    Вы просто лучший

  • @raikhantemirova8951
    @raikhantemirova8951 Před 4 lety +2

    Благодаря вам , получил 90 баллов по дискретной математике. Спасибо!!!

  • @andrushabt
    @andrushabt Před 2 lety

    спасибобольшое вам за очень простое обьяснение. здоровья и процветания вам

  • @user-ht1dy9pl7i
    @user-ht1dy9pl7i Před 3 lety

    Спасибо огромное, уже столько времени прошло, а акутально и по сей день:)

  • @iluhanse745
    @iluhanse745 Před 4 měsíci

    Спасибо Вам огромное! Наконец-то окончательно разобрался с этим алгоритмом.

  • @fogrinn7525
    @fogrinn7525 Před 3 lety

    Спасибо большое вам за обьяснение!

  • @s4ygak
    @s4ygak Před 2 lety

    Пересмотрел несколько раз, поставил лайк, алгоритм запомнил, идеально

  • @user-sh2qg9vk4u
    @user-sh2qg9vk4u Před 5 lety

    Отличное объяснение) Спасибо!!

  • @blk8722
    @blk8722 Před 11 lety

    Всё отлично понятно, спасибо за видео)

  • @user-sr8ss2er6r
    @user-sr8ss2er6r Před 4 měsíci

    Огромное спасибо! Вы помогли мне понять этот алгоритм!

  • @user-ub5tj9th1m
    @user-ub5tj9th1m Před 10 lety

    Спасибо автору

  • @Gidrionix
    @Gidrionix Před 9 lety

    Спасибо огромное!!!!!!!!!!!!!!

  • @MySaluto
    @MySaluto Před 11 lety +3

    Хочу заметить, что алгоритм физически напоминает поведение воды когда она накапливается на неровном ландшафте, первым делом заливает пустоты, затем если вокруг высокие препятствия - ищет следующий кратчайший путь повышая уровень воды. Повышение уровня воды - это аналог "удорожания маршрута".

  • @rusg777
    @rusg777 Před 11 lety

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

  • @MsTurugor
    @MsTurugor Před 11 lety +1

    Благодарю) Долго не мог понять, теперь разобрался)

  • @GAVVVR
    @GAVVVR Před 11 lety

    Спасибо большое, все понятно)

  • @DrRofl54
    @DrRofl54 Před 10 lety +1

    Спасибо!

  • @treugolinik
    @treugolinik Před 10 lety +1

    Спасибо!!!

  • @valermann
    @valermann Před 5 lety

    Отличное представление!

  • @Kirsanov2011
    @Kirsanov2011  Před 11 lety +14

    просмотрите еще раз и почитайте книги... Успехов!

  • @Kirsanov2011
    @Kirsanov2011  Před 11 lety +3

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

  • @JeckPot111
    @JeckPot111 Před 8 lety

    Мужик, спасиб большое

  • @user-ey5ch7vu1w
    @user-ey5ch7vu1w Před 8 lety

    благодаря видео я сдела свою контрольную работу по графам))) спасибо БОЛЬШОЕ

    • @Kirsanov2011
      @Kirsanov2011  Před 8 lety

      +Дима Рекун Ради этого я и трудился...

  • @user-yg7jf6jw7r
    @user-yg7jf6jw7r Před 11 lety +4

    Отлично! Разобрался с алгоритмом Дейсктры!
    Нет ли у Вас такого же доступного урока по алгоритмам Форда и Флойда? Не могу разобраться.
    Заранее благодарен!!!

  • @user-of8fj1um1x
    @user-of8fj1um1x Před 7 lety

    Спасибо)

  • @arthuralunts5424
    @arthuralunts5424 Před rokem

    Спасибо, док.

  • @Guveba
    @Guveba Před 11 lety +2

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

  • @ablgmv
    @ablgmv Před 8 lety

    спасибо!

  • @antontelyaev4927
    @antontelyaev4927 Před 7 lety +1

    супер!

  • @IvanGavr
    @IvanGavr Před 9 měsíci +1

    Спасибо. А если так?! Найти все пути из первой точки в последнюю; затем для каждого найденного пути найти расстояние; сохранить все в массиве, отсортировать массив расстояний по возрастанию, то первое значение и будет кратчайшим путём. Это уже будет далеко от алгоритма Дейкстры?!

    • @Kirsanov2011
      @Kirsanov2011  Před 9 měsíci +1

      Вот в том то и дело - как найти ВСЕ пути? Перебором? Думайте. Вопрос не закрыт. Алг Дейкстры - это одно из решений

    • @IvanGavr
      @IvanGavr Před 9 měsíci

      @@Kirsanov2011вот такой у меня получился способ, (без кода) на основе упорядоченной матрицы: czcams.com/video/FBk5vDdusoY/video.html

  • @user-lb7bg6tx3x
    @user-lb7bg6tx3x Před 9 lety

    Спасибо, все понятно. Но у нам в университете используют алгоритм из 6-ти ходов... То еще занятие, но результат тот же значит?

  • @azazelluciferfuck
    @azazelluciferfuck Před 9 lety

    Спасибо большое взглянул на это с другой стороны

  • @trampller
    @trampller Před 11 lety

    Спасибо.

  • @haruhiismygoddess2727
    @haruhiismygoddess2727 Před 11 lety +1

    Никак не мог разобраться, как работает протокол динамической маршрутизации OSPF, он как раз основан на методе Дейкстры. Посмотрел видео, разобрался. Спасибо)

  • @Suuuuuuhovich
    @Suuuuuuhovich Před 10 lety +2

    Могли бы вы рассказать о методе Беллмана-Мура? Для отрицательных весов

  • @kattyrein9900
    @kattyrein9900 Před 8 lety +6

    Отличное видео, все очень понятно! Единственный вопрос, как вычислять сам путь (порядок вершин), а не только длину пути?

    • @Kirsanov2011
      @Kirsanov2011  Před 8 lety +1

      +Katty Rein Пишите каждый раз список предшествующих вершин

  • @FixedA
    @FixedA Před 8 lety

    не могли бы пожалуйста, про D* еще рассказать

  • @vladimirduchenchuk8518
    @vladimirduchenchuk8518 Před 11 lety

    Огромное спасибо! Ни как не мог найти ошибку в своей реализации алгоритма=)

  • @sobolmx
    @sobolmx Před 11 lety

    superb! spassibo!

  • @Kirsanov2011
    @Kirsanov2011  Před 11 lety

    Зачем блок-схема? Могу и саму программу на простом и понятном языке Maple. См. стр. 111 моей книги "Графы в Maple" (книга есть в сети, но уже нет в продаже). Но там задействованы и спец.команды Maple, хотя их назначение довольно ясно...

  • @dailyInfo24
    @dailyInfo24 Před rokem +1

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

  • @BbeeTV
    @BbeeTV Před 11 lety

    Могли бы вы нарисовать блок схему к вашему решению и к алгоритму в целом??
    Очень нужно!
    Заранее спасибо!

  • @Kirsanov2011
    @Kirsanov2011  Před 11 lety +2

    Ничего не изменится, хоть 1000000! Можете еще алгоритмом Флойда воспользоваться, это еще проще, а потом свериться с Дейкстрой, все совпадет. Все эти алгоритмы доказываются, это только я так по-простому все рассказал... См. книги.

  • @user-ih1mm4uv4m
    @user-ih1mm4uv4m Před 8 lety

    спасибо

  • @Kirsanov2011
    @Kirsanov2011  Před 11 lety +3

    Будет и Форд-Флойд. А Форд-Фалкерсон уже есть. Ищите.

  • @Andrea13339
    @Andrea13339 Před 11 lety

    Надо внимательнее, видио-гид очень подробно расписан: шаг за шагом. Спасибо за алгоритм!

  • @flukalpes
    @flukalpes Před 7 lety +11

    А как найти сам путь, а не только его длину?

    • @hskdjs
      @hskdjs Před 7 lety +7

      Как вариант - при обновлении метки сохранять информацию о вершине-предшественнике.

  • @AntonioNeStradivary
    @AntonioNeStradivary Před 11 lety

    Я извиняюсь, просто посмотрел описание на Вики, и уж очень странным оно мне показалось. Под впечатлением, отправил сообщение не по адресу. Прошу извинить.
    Я только одного момента не понял, алгоритм Дейкстры находит именно ВЕЛИЧИНУ пути, в вашем примере, это 5, либо он может найти сам путь, т.е. перечень всех узлов по порядку которые нужно посетить?

  • @batista12001
    @batista12001 Před 10 lety +2

    Назначь длиной каждого ребра единицу, тогда этот алгоритм выведет тебе наименьшее кол-во рёбер от начальной до конечной вершины, а это и есть маршрут.

  • @dudejustdude
    @dudejustdude Před 11 lety

    Сделал лабу четверти группы, спасибо)

  • @BbeeTV
    @BbeeTV Před 11 lety

    просто мне именно блок-схема нужна для курсовой работы
    все объяснение ваше понял, а вот как нарисовать блок-схему не понимаю(

  • @AntonioNeStradivary
    @AntonioNeStradivary Před 11 lety

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

  • @jmnext1338
    @jmnext1338 Před 6 lety

    Здравствуйте. А алгоритм флойда уошера у вас нет? Я ваши видео глянул но ничего такого не встретил. Заранее спасибо

  • @Pancelet
    @Pancelet Před 3 lety

    Мэи с заставкой в начале звучит грандиозно

  • @gudapavella1751
    @gudapavella1751 Před 3 lety +3

    Теперь я понимаю, почему в универе частенько ничего не понимал, этож надо, на 75% видео сказать, я ошибся в самом начале, давайте я за 2 секунды все переделаю.

  • @AntonioNeStradivary
    @AntonioNeStradivary Před 11 lety

    ок, буду дорабатывать. Спасибо.

  • @SahkaP
    @SahkaP Před 11 lety +1

    С этой таблицей я запутался еще сильнее

  • @Kirsanov2011
    @Kirsanov2011  Před 10 lety +12

    См, например, мою книгу "Графы в Maple"

  • @alexandristomin2410
    @alexandristomin2410 Před 8 lety

    Спасибо за видео, всё понятно, но у меня вопрос, что делать если в конце 2 повторяется постоянная вершина 4 ?

    • @Kirsanov2011
      @Kirsanov2011  Před 8 lety +1

      Не совсем ясен вопрос. Постоянная вершина только один раз появляется. Потом ход на нее запрещен.

    • @alexandristomin2410
      @alexandristomin2410 Před 8 lety

      у меня повторяется наименьшее число

    • @Kirsanov2011
      @Kirsanov2011  Před 8 lety +1

      Если два одинаковых наименьших числа - берите любое.

    • @alexandristomin2410
      @alexandristomin2410 Před 8 lety

      Kirsanov2011 ясно, спасибо вам

    • @fenrrisulfr
      @fenrrisulfr Před 11 měsíci

      @@Kirsanov2011 а что делать, если я пришла к определенной вершине (до конечной еще не дошла), но из нее ходы только в постоянные вершины, т.е. тупик?

  • @user-zm2lx8ly2j
    @user-zm2lx8ly2j Před 3 lety

    Здравствуйте,этот алгоритм с первого раза приведет к кратчайшему пути?
    Просто я для интереса выбрала не самый короткий путь на некоторых шагах а в итоге прошла более коротким путем чем если бы я действовала по алгоритму

    • @Kirsanov2011
      @Kirsanov2011  Před 3 lety

      Не может этого быть! Ошиблись.

    • @user-zm2lx8ly2j
      @user-zm2lx8ly2j Před 3 lety

      @@Kirsanov2011 да,ошибка была в сносе,а где обзор на алгоритм Форда-Беллмана?

  • @dm.vortex4171
    @dm.vortex4171 Před 8 lety +3

    я не понял как он с вершины 3 в вершину 2 попал ?

    • @user-sf1pm4jz4j
      @user-sf1pm4jz4j Před 8 lety

      +Дмитрий Вихарев , снес "2" с предыдущей строки так как она весит (мы её не прошли), и сравнил - минимальное в получившейся строчке

  • @SahkaP
    @SahkaP Před 11 lety

    Спасибо, но я просто пытался вспомнить алгоритм.
    Википедия расставила все на своим места

  • @user-xb7fs2uc4f
    @user-xb7fs2uc4f Před 4 lety

    Вопрос такой. Если в одном ряду получилось два одинаковых числа и они оба наименьшие, то что делать?

    • @Kirsanov2011
      @Kirsanov2011  Před 4 lety +1

      Решение бывает не единственным. Поэтому берите любую. Потом для интереса возьмите другую.

  • @AngelVlad100
    @AngelVlad100 Před 10 lety

    А что делать если в ряду 2 одинаковые вершины?Решать относительно каждой?

    • @Kirsanov2011
      @Kirsanov2011  Před 10 lety

      Выбирать любую из них.

  • @dizogdizog2591
    @dizogdizog2591 Před 8 lety

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

    • @MaximumDo
      @MaximumDo Před 4 lety

      имеем 2 массива: дист[n] = [0]*n, tested[n] = [false]*n
      и матрица смежности am[n][n], где, если вершины не связаны, стоит inf
      пока минимальная длина < inf
      tested[minvert] = true
      для всех вершин графа
      если dist[minvert] + am[minvert][i] < dist[i]
      обновляем dist[i]
      ищем вершину с наименьшим дист[i] и tested[i] == false
      minvert = i
      mindist = dist[i]

  • @kriguitar4753
    @kriguitar4753 Před 10 lety

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

    • @bond94g
      @bond94g Před 5 lety

      Жалко, лектор этого не рассказал. Там нужно завести ещё один столбец, в котором указывать номер вершины, получившей постоянную пометку на данном шаге. С помощью этого столбца легко восстанавливается кратчайший путь до любой вершины. Также можно построить т.н. дерево кратчайших путей.

  • @user-wm8st2ni4x
    @user-wm8st2ni4x Před 8 lety

    Находим минимальный путь, а если нужен максимальный путь выбираем на каждом шаге максимум? Спасибо

    • @Kirsanov2011
      @Kirsanov2011  Před 8 lety

      +Марина иванова Минимум функции f(x) совпадает с максимумом A-f(x) - просто перевернуть график

    • @Ilichi
      @Ilichi Před 8 lety

      Можете подробней описать, как найти максимальний путь?

    • @Kirsanov2011
      @Kirsanov2011  Před 8 lety +2

      1. Берете какое-нибудь большое число А, большее, чем вес любой дуги графа.
      2. Все веса f_k графа заменяете на A-f_k
      3. В полученном графе находите минимальный путь. Для исходного графа он будет максимальным.

    • @Ilichi
      @Ilichi Před 8 lety

      Благодарю за ответ!

  • @mcd-ti2wv
    @mcd-ti2wv Před 3 lety

    Самое понятное разъяснение

  • @traxternberg
    @traxternberg Před 5 lety

    Представленный алгоритм неполный, путь по вершинам, образующим минимальное расстояние не фиксируется. И вообще, объяснение не Дейкстры, родной алгоритм предусматривает обход по всем соседним вершинам, на которых еще не был. Далее Обход соседей от соседних вершин и т.д. ...

  • @lerby5512
    @lerby5512 Před 10 lety +2

    Безусловно плюс за ваш труд, но, как мне кажется, не помешало бы сделать метку на видео когда начинается сам алгоритм :)

  • @kyzmitch2
    @kyzmitch2 Před rokem

    у нас в универе никогда не говорили "снести"

  • @DimaasisDas
    @DimaasisDas Před 11 lety

    да это же элементарно! как можно запутаться?

  • @BbeeTV
    @BbeeTV Před 11 lety

    Или хотя бы понятный алгоритм написать, по которому можно будет нарисовать блок-схему

  • @user-bb4xz2ok7z
    @user-bb4xz2ok7z Před 3 lety

    спасибо огромное, у меня завтра экзамен по теории алгоритмов, надеюсь сдам)

  • @ekklesiast
    @ekklesiast Před 7 lety

    Не понимаю, в вики описание отличается.

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil Před 6 lety

      в вики графически представлено и псевдокодом
      там тоже хорошая подача материала

  • @Suuuuuuhovich
    @Suuuuuuhovich Před 10 lety

    Как найти максимальный путь

    • @MrProdagi
      @MrProdagi Před 9 lety

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

  • @Inseidful
    @Inseidful Před 6 lety

    слабо что-то понял, почему 5 если минимальное расстояние 1-3-6?

    • @IvanShulga
      @IvanShulga Před 6 lety

      5 - это минимальное расстояние (минимальная сумма длин ребер), а не номер вершины, т.е длина ребра (1)->(3) = 1; длина ребра (3) -> (6) = 4. итого минимальное расстояние (1)->(3)->(6) = 1+4 = 5

  • @user-jg3xw2hs7i
    @user-jg3xw2hs7i Před 7 lety +2

    Ааа зачем алгоритм дейскры если крускала быстрее

    • @Kirsanov2011
      @Kirsanov2011  Před 7 lety +1

      Алгоритм построения минимального остова? Зачем? или у Крускала есть еще алгоритм, который я не знаю?

    • @user-jg3xw2hs7i
      @user-jg3xw2hs7i Před 7 lety

      чтобы дойти до вершины 6

    • @user-jg3xw2hs7i
      @user-jg3xw2hs7i Před 7 lety

      и кстати за сколько работает алгоритм дейкстры

    • @user-jg3xw2hs7i
      @user-jg3xw2hs7i Před 7 lety

      за квадрат или линию на логарифм

    • @dmitrypetrov8491
      @dmitrypetrov8491 Před 6 lety +5

      1) Алгоритм Крускала используется для построения минимального остова, а не для поиска кратчайших путей в орграфах.
      2) Чтобы говорить об асимптотике алгоритма Дейкстры, нужно определиться со структурами данных, которые Вы собираетесь использовать.
      В самой наивной реализации, если Вы будите хранить граф в виде матрицы смежности, то алгоритм будет работать за O(n^2), где n - число вершин графа. В самом деле, вам нужно будет сделать n шагов, на каждом из которых просматривать n вершин.

  • @john1987742
    @john1987742 Před 3 lety

    ничего не понял

  • @user-ui5ob8cu5u
    @user-ui5ob8cu5u Před 5 lety

    Вообще то это и так видно что кратчайшее расстояние 5 данный зачем формализм?

    • @juneority
      @juneority Před 5 lety +3

      а если там тысячи вершин?

  • @mkdotam
    @mkdotam Před 11 lety

    Если владеете английском посмотрите вот сюда, /watch?v=xT5o1QCeWS8 - очень все четко объяснено.

  • @dizogdizog2591
    @dizogdizog2591 Před 8 lety

    Спасибо посмотрел
    но вот же )))ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D1%8B

    • @Kirsanov2011
      @Kirsanov2011  Před 8 lety +1

      Мне эта инф знакома. Скоро будет новый вариант видео "Модификация алг Дейкстры".

  • @vasyapupkin997
    @vasyapupkin997 Před 4 lety

    угарный чел

  • @AntonioNeStradivary
    @AntonioNeStradivary Před 11 lety

    Гладко было на бумаге...
    А если вес 4-6 будет 1000, что этот алгоритм покажет?
    Я ещё десяток графов могу нарисовать, в которых этот алгоритм не будет работать корректно.

  • @andynaz7044
    @andynaz7044 Před 2 lety

    Бестолково. И абсолютно бесполезно -- понять алгоритм из простой демонстрации его применения невозможно. Вот так надо объяснять: czcams.com/video/7oUt0zhv2sA/video.html