Коммивояжер - решение алгоритмом муравьёв

  Рет қаралды 12,084

Volodya Mozhenkov

Volodya Mozhenkov

7 жыл бұрын

В этом видео я реализую алгоритм описаной в Exponenta Pro - Математика в приложениях №4(4)/2003 в статье «Муравьиные алгоритмы» автора С.Д. Штовба.
Реализация на языке C++ с некоторыми изменениями.

Пікірлер: 39
@AndersonSilva-dg4mg
@AndersonSilva-dg4mg 7 жыл бұрын
О круто, новое полезное видео, спасибо Владимир, продолжайте пожалуйста дальше, очень нужно
@VladimirMozhenkov
@VladimirMozhenkov 7 жыл бұрын
Буду стараться )))
@javagraf2753
@javagraf2753 7 жыл бұрын
Володя, давай больше высшей математики пожалуйста !!!
@MAKSIM24251
@MAKSIM24251 5 жыл бұрын
Здравствуйте! А можно исходники кода? Очень нужны
@jroslovemonro
@jroslovemonro 7 жыл бұрын
Добрый день! Скажите, пожалуйста, будут ли практические занятия на подобия 23 февраля?
@DenorJanes
@DenorJanes 6 жыл бұрын
Могли бы вы залить код на гит?
@user-iq9sp1fr5i
@user-iq9sp1fr5i 5 жыл бұрын
Будьте добры, расскажите, что находится в Path.cpp, на видео, он лишь на пару секунд показался
@user-tu5wj6jw4e
@user-tu5wj6jw4e 7 жыл бұрын
может не в тему, но хотелось бы посмотреть урок по dll хукам (ну например у нас в приложении есть пустая функция, которая возвращает строку, нужно ее перехватить и вернуть текущее время на компьютере)
@user-uw7tc4ke7p
@user-uw7tc4ke7p 2 жыл бұрын
Почему нет исходников кода?
@user-ye8zh3ep7m
@user-ye8zh3ep7m 4 жыл бұрын
А где пример кода?
@user-is9lr5lz4w
@user-is9lr5lz4w 7 жыл бұрын
Володя, вам не обидно, когда вас называют тем, кого нет, точнее Иисусом. Ну не похож даже, близко. Ну и с нетерпением ждем роликов, всегда ожидается что-то необычное и всегда это приходит.
@Rayvenor
@Rayvenor 7 жыл бұрын
Если задачу минимизации обхода нельзя разделить на более простые, то будет ли различно решение двух разных задач - 1. Обход графа с фиксированного старта и 2. Обход того же графа с того же старта с возвращением на старт? Т.е. можно ли задачу с возвращением на старт разбить на две - обход без возвращения и поиск кратчайшего пути с финиша (найденного предыдущим решением) на старт? Можно ли как-то просто оценить граф и понять, что эти задачи решаются разным порядком обхода или для этого графа задача с возвращением разбиваема на две?
@VladimirMozhenkov
@VladimirMozhenkov 7 жыл бұрын
В самом конце вы задали на самом деле очень интересный вопрос. Это вопрос называется "Проблема остановки". То есть "Можно-ли взять какой-то алгоритм, проанализировать его, и выдать ответ на вопрос 'Выдаст-ли этот алгоритм ответ вообще или нет?'?" Ответ: Вы не можете гарантировать этого. Дело в том, что разбить у вас получится (это просто переменные в коде), но приблизитесь-ли вы при этом к ответу? Теперь про первые вопросы: Фактически это и происходит. Ведь ваш алгоритм нахождения пути обратно к старту может быть алгоритмом муравьёв, и тогда вопрос, а зачем разделять-то... если мы всё равно одно и тоже делаем. К тому-же любой другой алгоритм, который вы придумаете, должен будет унаследовать вектор Табу от предыдущего и активно им пользоваться (иначе вы посетите некоторые города дважды, а некоторые не посетите вообще), а большинство других алгоритмов просто не рассчитаны на посещение промежуточных точек.
@Rayvenor
@Rayvenor 7 жыл бұрын
"а зачем разделять-то" Приходится разделять. В моём распоряжении есть алгоритм нахождения кратчайшего пути между выбранными узлами как чёрный ящик. Я не знаю сам алгоритм и не могу его модифицировать. Точка старта всегда определена, а точка финиша задана быть не может. Для нахождения пути, с обходом всех нужных узлов и возвращением на старт, приходится разбивать задачу на две и использовать этот алгоритм. Поиск кратчайшего пути от финиша к старту производится путём указания всего двух узлов, которые надо посетить. Стартовый узел это финиш, полученный на прошлой подзадаче, а финишный будет неминуемо стартовым в первой подзадаче. Конечно, при таком способе узлы могут быть посещены более одного раза, что не страшно и, как мне кажется, однозначно не является свидетельством неоптимальности маршрута. Сам граф представляет собой большое число узлов, которые соединены чаще всего с двумя узлами, реже с тремя, ещё реже с четырьмя и т.д. Посетить необходимо незначительное число узлов из доступных.
@VladimirMozhenkov
@VladimirMozhenkov 7 жыл бұрын
Вы не сможете использовать алгоритм нахождения пути "как чёрный ящик". Он вас поведёт по уже посещённым узлам или не посетит те, которые надо было посетить.
@Rayvenor
@Rayvenor 7 жыл бұрын
Есть возможность указать какие узлы необходимо посетить. Поэтому в первом прогоне алгоритм выдаёт последовательность узлов, среди которых есть все необходимые к посещению узлы. При втором прогоне для нахождения пути на старт алгоритм ничего не знает про первый прогон. Он и выдаёт путь по уже посещенным узлам, но это не важно, т.к. задача только найти последовательность узлов, которая ведет на изначальный старт.
@Rayvenor
@Rayvenor 7 жыл бұрын
Посмотрел ваши ролики по другим алгоритмам и у меня сложилось впечатление, что в моём случае используется алгоритм Флойда. При том, что заранее он не прогонялся по всем узлам, а отрабатывает с нуля при каждом обращении.
@phat80
@phat80 7 жыл бұрын
Володя, просто интересно. Как твоя жена или девушка относится к бороде? Не мешает ли она вообще в общении с противоположным полом? И по какой причине вообще отращиваешь? Стиль или лень?
@Eugene.Gubanov
@Eugene.Gubanov 7 жыл бұрын
Привет, Володя! Писал тебе на почту по поводу заказа видео - не отвечаешь. :(
@user-ue7ey9wh1j
@user-ue7ey9wh1j 4 жыл бұрын
Я не математик, но очень интересно. Подскажите ваш метод получается из последних слов не доказуем? Рас вы говорите что можно только надеяться, что решение будет хорошим? Но не быстрым? 😄
@crowleyrskraine6300
@crowleyrskraine6300 3 жыл бұрын
Задача коммивояжера вообще быстро не решается, когда N это очень большое целое число.
@user-ue7ey9wh1j
@user-ue7ey9wh1j 3 жыл бұрын
@@crowleyrskraine6300 это примерно тоже самое что и количество вариантов перетасовки карт. Число в степени равным количеству переменных. 😄😄😄
@PAKRULIN
@PAKRULIN 7 жыл бұрын
Алгоритм муравев был первым который я увидел на этом канале.
@denjikminion6307
@denjikminion6307 7 жыл бұрын
Поиск в ширину или в глубину называется то,что ты описываешь
@VladimirMozhenkov
@VladimirMozhenkov 7 жыл бұрын
Нет. Это *совершенно* другие вещи. Вы не можете даже попытаться решить задачу коммивояжера обходом. Это NP задача, она в том-же классе что и шахматы к примеру. Попробуйте найти решение шахматной комбинации обходом, вам жизни всей вселенной не хватит.
@crowleyrskraine6300
@crowleyrskraine6300 3 жыл бұрын
Как называется компилятор из видео?
@ashotvantsyan9028
@ashotvantsyan9028 3 жыл бұрын
g++, с IDE сложно, но что то линкуксовое.
@crowleyrskraine6300
@crowleyrskraine6300 3 жыл бұрын
@@ashotvantsyan9028 Джини IDE называется. Спасибо
@zokirshukurov3944
@zokirshukurov3944 4 жыл бұрын
sochizga klass
@Eugene.Gubanov
@Eugene.Gubanov 7 жыл бұрын
Редко видео стали выходить. :(
@ivanpavlenko64
@ivanpavlenko64 7 жыл бұрын
Евгений Губанов можно же заказывать
@Eugene.Gubanov
@Eugene.Gubanov 7 жыл бұрын
Знаю. Сам заказывал много раз. Но пока новых идей нет. Вся надежда на автора канала. :)
@user-ff3rp9ch5w
@user-ff3rp9ch5w 4 жыл бұрын
Переводят в структуры их поселения ! Марина Первомайская!и по банкам !
@user-vo4yc6th4m
@user-vo4yc6th4m 7 жыл бұрын
почему я здесь?
@VladimirMozhenkov
@VladimirMozhenkov 7 жыл бұрын
потому что место где вы находитесь называется "здесь", все остальные места называются "там". если вы пойдёте "туда", то "там" станет "здесь", а "здесь" превратится в "там". так что вы всегда будете именно "здесь". я рад, что мог вам помочь разобраться в этом лингвистическом вопросе.
@heisenborg_programming
@heisenborg_programming 7 жыл бұрын
C каждым видео у вас лицо темнее и темнее))
@default6508
@default6508 7 жыл бұрын
На яваскрипте слабо?)
@roma.bantikov
@roma.bantikov 7 жыл бұрын
не интересно, Валера.
Роевой интеллект. Муравьиный алгоритм.
20:57
foo52ru ТехноШаман
Рет қаралды 365 М.
How many pencils can hold me up?
00:40
A4
Рет қаралды 17 МЛН
OMG 😨 Era o tênis dela 🤬
00:19
Polar em português
Рет қаралды 10 МЛН
Метод отжига
25:51
Kirsanov2011
Рет қаралды 17 М.
Красно-Чёрные Деревья
23:54
Volodya Mozhenkov
Рет қаралды 54 М.
Минимальное остовное дерево в графе. Алгоритм Краскала.
18:20
Учиться - значит делать!
Рет қаралды 8 М.
Муравьиный алгоритм
37:01
Kirsanov2011
Рет қаралды 44 М.
Решение задачи коммивояжера. Метод ветвей и границ.
9:42
Учим алгоритмы дискретной математики
Рет қаралды 51 М.
7 нерешенных проблем математики
7:30
Chatte Noire
Рет қаралды 11 М.
Массово вызывают на военные сборы 2024!
8:50
Дмитрий Боровик
Рет қаралды 89 М.