Скачать презентацию Задачи на взвешенных графах Тема 12 Формулировка Скачать презентацию Задачи на взвешенных графах Тема 12 Формулировка

Графы - оптимизационные задачи.ppt

  • Количество слайдов: 8

Задачи на взвешенных графах Тема 12 Задачи на взвешенных графах Тема 12

Формулировка основных задач o Задача о нахождении кратчайшей сети (длиннейшей) n o Задача коммивояжера Формулировка основных задач o Задача о нахождении кратчайшей сети (длиннейшей) n o Задача коммивояжера n o Цель: обойти все вершины графа кратчайшим способом Задача о минимальном паросочетании n o Цель: построить остов минимального (максимального) веса Цель: выбрать максимальное количество несмежных ребер с минимальным суммарным весом Задача китайского почтальона n Цель: обойти все ребра графа кратчайшим способом.

Нахождение кратчайшей сети. o o Алгоритм Крускала Взять изолированный подграф T G Упорядочить список Нахождение кратчайшей сети. o o Алгоритм Крускала Взять изолированный подграф T G Упорядочить список ребер графа ej по возрастанию веса, k = 0 Взять очередное ej из списка Добавление ej в Т уменьшает число связных компонент? n n o o o Да: вывод Т – это остов Нет: к п. 3 Алгоритм prima Взять изолированный T G, k = 0 Для всех vi V: n n o Да: добавить ej в Т и к п. 5 Нет: к п. 3 k=k+1 k = n – 1? n o ej = (vi, ai) = Добавление ej в Т уменьшает число связных компонент? n n o Да: добавить ej в Т и к п. 5 Нет: к п. 2 k=k+1, k = n – 1? n o ai – ближайшая вершина к vi bi – вес (vi, ai) Да: вывод Т – это остов Нет: к п. 2

Пример o Найти кратчайшую сеть для графа со следующей матрицей весов: Пример o Найти кратчайшую сеть для графа со следующей матрицей весов:

Задача коммивояжера o o Для гамильтоновых графов задача решается: Полным перебором всех гамильтоновых циклов Задача коммивояжера o o Для гамильтоновых графов задача решается: Полным перебором всех гамильтоновых циклов (поиск в ширину) С помощью жадного алгоритма: n n o o Берется изолированный подграф T G В Т добавляются все ek = (vi, vj): (vi) = 2 или (vj) = 2 Т достраивается до остова (алгоритмом Крускала или prima) Полученный остов T модифицируется с целью достижения всеми вершинами степеней 2 или 1 (см. пример) Если полученный остов T может быть замкнут, цель достигнута, подсчитывается суммарный вес гамильтонова цикла, если нет – остов, полученный в п. 4 снова модифицируется По результатам решения задачи коммивояжера решается задача о минимальном паросочетании путем перебора ребер результирующего цикла: n n 2 варианта при четном количестве вершин графа и N вариантов при N вершинах

Задача коммивояжера o В случае отсутствия гамильтоновых циклов граф необходимо свести к гамильтонову: n Задача коммивояжера o В случае отсутствия гамильтоновых циклов граф необходимо свести к гамильтонову: n n n вершины, мешающие существованию гамильтонова цикла, дублируются (фактически, тем самым обеспечивается их повторный проход) между исходной и дублированной вершиной имеется ребро весом 0 дублированные вершины наследуют все ребра, соединяющие исходную вершину с другими.

Задача китайского почтальона o o Для эйлеровых графов решением является любой эйлеров цикл. В Задача китайского почтальона o o Для эйлеровых графов решением является любой эйлеров цикл. В неэйлеровых графах применяется следующий алгоритм: n n n Выделяется множество {vj} c (vj) % 2 = 1 Строится сужение G* графа G по {vj} G* достраивается до полного графа, вес несуществующего ребра (vk, vl) принимается равным минимальному расстоянию d(vk, vl) в G* В G* выделяется паросочетание минимального веса EН = {ej} В граф G добавляются все ребра {ej} (тем самым обеспечивается их повторный проход) Ищется Эйлеров цикл в G, подсчитывается его вес (см. пример)

Пример o Решить задачу китайского почтальона для графа со следующей матрицей весов: Пример o Решить задачу китайского почтальона для графа со следующей матрицей весов: