Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Билеты по ММПР 70 вопросов.docx
Скачиваний:
4
Добавлен:
01.03.2025
Размер:
359.09 Кб
Скачать

41. Кратчайший путь на графе

Задачи поиска кратчайших и длиннейших путей на графах возникают в различных областях управления.

Задача о кратчайшем пути. Пусть задана сеть из n + 1 вершины, то есть ориентированный граф, в котором выделены две вершины – вход (нулевая вершина) и выход (вершина с номером n). Для каждой дуги заданы числа, называемые длинами дуг. Длиной пути (контура) называется сумма длин входящих в него дуг (если длины дуг не заданы, то длина пути (контура) определяется как число входящих в него дуг). Задача заключается в поиске кратчайшего пути (пути минимальной длины) от входа до выхода сети.

Известно, что для существования кратчайшего пути необходимо и достаточно отсутствия в сети контуров отрицательной длины. Предположим, что в сети нет контуров. Тогда всегда можно пронумеровать вершины таким образом, что для любой дуги (i, j) имеет место j > i. Такая нумерация называется правильной. Легко показать, что в сети без контуров всегда существует правильная нумерация.

Обозначим – длину дуги (i; j). Кратчайший путь в сети, имеющей правильную нумерацию, определяется следующим алгоритмом.

Алгоритм 1.

Шаг 0: Помечаем нулевую вершину индексом λ0 = 0;

Шаг k: помечаем вершину k индексом

Индекс выхода будет равен длине кратчайшего пути. Когда индексы (называемые в некоторых задачах потенциалами вершин) установятся, кратчайший путь определяется методом обратного хода от выхода к входу, то есть кратчайшим является путь μ = (0; i1; i2; ...; in-1; n), такой, что и т.д.

Следующий алгоритм дает возможность определять кратчайший путь в общем случае (то есть при произвольной нумерации вершин).

Алгоритм 2 (алгоритм Форда).

Шаг 0: Помечаем нулевую вершину индексом = 0, все остальные вершины индексами

;

Шаг k: Рассматриваем все дуги. Если для дуги (i; j) , , то вычисляем новое значение

Индексы устанавливаются за конечное число шагов. Обозначим { } – установившиеся значения индексов, которые обладают следующим свойством: величина { } равна длине кратчайшего пути из нулевой вершины в вершину i. Кратчайший путь из вершины 0 в вершину i определяется методом обратного хода.

42. Задача коммивояжера

Комбинаторика – раздел математики, посвящённый решению задач выбора и расположения элементов некоторого, обычно конечного множества в соответствии с заданными правилами.

Задача коммивояжера является одной из знаменитых задач теории комбинаторики. Она была поставлена в 1934 году.

Существует несколько частных случаев общей постановки задачи, в частности:

  • геометрическая задача коммивояжёра (когда матрица расстояний отражает расстояния между точками на плоскости);

  • треугольная задача коммивояжёра (когда на матрице стоимостей выполняется неравенство треугольника);

  • симметричная и асимметричная задачи коммивояжёра.

Простейшие методы решения задачи коммивояжера

Задачи коммивояжера решаются посредством различных методов, выведенных в результате теоретических исследований. Все эффективные методы (сокращающие полный перебор) — методы эвристические. В большинстве эвристических методов находится не самый эффективный маршрут, а приближённое решение. Зачастую востребованы так называемые any-time алгоритмы, то есть постепенно улучшающие некоторое текущее приближенное решение.

Выделяют следующие группы методов решения задач коммивояжера, которые относят к простейшим:

Полный перебор;

Полный перебор (или метод «грубой силы») — метод решения задачи путем перебора всех возможных вариантов. Сложность полного перебора зависит от количества всех возможных решений задачи. Если пространство решений очень велико, то полный перебор может не дать результатов в течение нескольких лет или даже столетий.

Случайный перебор;

Обычно выбор решения можно представить последовательностью выборов. Если делать эти выборы с помощью какого-либо случайного механизма, то решение находится очень быстро, так что можно находить решение многократно и запоминать «рекорд», т. е. наилучшее из встретившихся решений. Этот наивный подход существенно улучшается, когда удается учесть в случайном механизме перспективность тех или иных выборов, т. е. комбинировать случайный поиск с эвристическим методом и методом локального поиска. Такие методы применяются, например, при составлении расписаний для Аэрофлота.

Жадные алгоритмы (метод ближайшего соседа, метод включения ближайшего города, метод самого дешевого включения);

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

Метод минимального остовного дерева (деревянный алгоритм);

В основе алгоритма лежит утверждение: «Если справедливо неравенство треугольника, то для каждой цепи верно, что расстояние от начала до конца цепи меньше (или равно) суммарной длины всех ребер цепи».

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

Метод имитации отжига;

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

На практике применяются различные модификации более эффективных методов:

Метод ветвей и границ; Метод генетических алгоритмов; Алгоритм муравьиной колонии.