Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Геометрический метод решения

Читайте также:
  1. B. Принятия оптимального управленческого решения по наиболее важным вопросам деятельности на рынке.
  2. I. 2.3. Табличный симплекс-метод.
  3. I. 3.2. Двойственный симплекс-метод.
  4. I. Передача параметров запроса методом GET.
  5. I.5.5. Просмотр и анализ результатов решения задачи.
  6. II. Методика работы
  7. II. Методика работы.

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

Сформулируем «Правило треугольника»: Длина оптимального маршрута коммивояжера не может быть меньше удвоенной величины максимального веса ребра, выбранного среди множества всех ребер графа:

L1 + L2 > 2 ri , j max. (16.2)

Приведем словесное описание алгоритма. Примем по умолчанию, что L1 – расстояние между вершинами xi и xk, а L2 – расстояние между вершинами xk и xj.

1°. Определим максимальный элемент матрицы R и вершины xk, xh, расстояние между которыми max.

2°. Строятся треугольники с основанием kh с вершинами i Î I = {1, 2,..., n}, i ¹ k, i ¹ h. Таких треугольников будет n - 2. Вычисляем их периметры по формуле:

П kih = r (k, i) + r (i, h) + r (k, h) (16.3)

3°. Находим Пmax = П klh. Фиксируем вершины xk, xl, xh и выделяем звенья L1 – (kh), L2 – (kl), (lh). Далее оставшиеся n – 3 вершины включаются либо в L1, либо в L2.

4°. Для каждого фиксированного i ¹ l, i ¹ k, i ¹ h вычисляем

DR(k, h) = r (k, i) + r (I, h) – r (k, h).

DR(k, l) = r (k, i) + r (I, l) – r (k, l).

DR(l, h) = r (k, i) + r (I, h) – r (l, h).

Наименьшая DR определит принадлежность xi соответствующему отрезку и xi принадлежит kl.

5°. Отрезки ab заменяем согласно 4° отрезками ac и cb. Если все вершины просмотрены, то к 7°.

6°. Если две вершины xa, xb отнесены к одному отрезку kh ® ka, ah и делают kba или abh.

7°. Определяем длину маршрута.

Например, пусть имеется 6 городов, расстояния между которыми известны. Матрица смежности графа запишется следующим образом:

               
  ¥            
    ¥          
R = 3     ¥       .
        ¥      
          ¥    
            ¥  

Согласно 1° определим пару вершин, расстояние между которыми максимально (наибольший элемент матрицы R).

ri , j max = max(r (i, j)) = r 1,3 = 65.

Фиксируем вершины x 1, x 3 и для отрезка 1 – 3 строим треугольники с вершинами в точках 2, 4, 5 и 6.

2°. Вычисляем периметры построенных треугольников (рис. 162.22) по формуле (16.3). При этом слагаемое r 1,3 можно пропустить, поскольку оно одинаково для всех выражений.

П123 = 30 + 40 = 70,

П143 = 40 + 30 = 70,

П153= 62 + 55 = 117,

П163 = 28 + 60 = 88.

3°. Выбираем треугольник с максимальной величиной периметра П153 и фиксируем вершины x 1, x 5, x 3. Выделяем два звена: L1 – (x 1x 3) и L2 - (x 1x 5 и x 5x 3) (см. рис. 16.22).

Рис. 16.22. Построение пути коммивояжера

4°. Оставшиеся незадействованными вершины x 2, x 4, x 6 отнесем по принадлежности к отрезкам 1 – 3, 1 – 5, 5 – 3. Для этого с учетом правила треугольника, гласящего, что сумма длин двух сторон треугольника всегда больше длины третьей стороны

r (i, j) + r (j, k) > r (i, k), r (i, k) + r (k, j) > r (i, j), r (k, i) + r (i, j) > r (k, j),

используем следующую формулу:

DR(l, h) = r (l, i) + r (i, h) - r (l, h) (16.4)

Начнем с вершины x 2. При этом получим, что k = 1, h = 3, l = 5, i = 2. Тогда имеем:

DR1,3 = r 1,2 + r 2,3r 1,3 = 30 + 40 - 65 = 5,

DR1,5 = r 1,2 + r 2,5r 1,5 = 30 + 40 - 28 = 42,

DR3,5 = r 3,2 + r 2,5r 3,5 = 40 + 40 - 55 = 25.

Так как из всех полученных значений DR1,3 = 5 является наименьшим, то вершину x 2 отнесем к отрезку 1 – 3.

Аналогичные вычисления выполняем для вершин x 4 и x 6. Так, для вершины x 4: k = 1, h = 3, l = 5, i = 4. Тогда

DR1,3 = r 1,4 + r 4,3r 1,3 = 40 + 30 - 65 = 5,

DR1,5 = r 1,4 + r 4,5r 1,5 = 40 + 30 - 28 = 42,

DR3,5 = r 3,4 + r 4,5r 3,5 = 30 + 30 - 55 = 5.

Вершину x 4 можно отнести как к отрезку 1 – 3, так и к отрезку 3 – 5. Отнесем ее к отрезку 3 – 5, так как к отрезку 1 – 3 мы уже отнесли вершину x 2.

Для вершины x 6: k = 1, h = 3, l = 5, i = 6. Тогда

DR1,3 = r 1,6 + r 6,3r 1,3 = 28 + 60 ─ 65 = 23,

DR1,5 = r 1,6 + r 6,5r 1,5 = 28 + 36 ─ 62 = 2,

DR3,5 = r 3,6 + r 6,5r 3,5 = 60 + 36 ─ 55 = 41.

Следовательно, вершину x 6 отнесем к отрезку 1 – 5. Теперь производим включение каждой вершины в маршрут.

5°. Отрезок 1 – 3 заменяем двумя отрезками 1 – 2 и 2 – 3. Аналогично отрезок 3 – 5 заменяем отрезками 3 – 4 и 4 – 5, а отрезок 1 – 5 – отрезками 1 – 6 и 6 – 5.

Если все вершины включены в маршрут, то алгоритм закончен, надо вычислить только длину маршрута и перейти к пункту 7°. В противном случае переход к п. 6°.

Если в процессе работы окажется, что к одному отрезку одновременно отнесено несколько вершин, то в этом случае оставляем вершину, для которой значение DR(k, h) минимально.

6°. Все вершины отнесены к отрезкам kl, kh и lh. Пусть, например, для отрезка kh зафиксированы две вершины xi и xj. Тогда надо отнести вершину xj к одному из отрезков ki или ih.

Для этого вычисляем значения

DR ki = r (k, j) + r (j, i) – r (k, i), DR ih = r (i, j) + r (j, h) - r (i, h).

Минимальная из этих двух величин определяет принадлежность вершины xj к отрезку ki или отрезку ih. Аналогично определяем принадлежность всех остальных вершин для других отрезков и переходим к п. 5°.

7°. Построен следующий маршрут коммивояжера: x 1x 2x 3x 4x 5x 6x 1. Его длина равна 194.

На рис. 16.23 показан ГЦ с весами на ребрах, когда сумма весов пройденных ребер минимальна.

Рис. 16.23. Решение задачи коммивояжера

Алгоритм справедлив только для графа, у которого выполняется правило треугольника.


Дата добавления: 2015-10-26; просмотров: 1556 | Нарушение авторских прав


Читайте в этой же книге: Способы задания графов | Примеры РЕШЕНИЯ ЗАДАЧ | Маршруты, цепи, циклы | ПРИМЕРЫ РЕШЕНИЯ ЗАДАЧ | Алгоритм Форда | ПРИМЕРЫ РЕШЕНИЯ ЗАДАЧ | Эйлеровы и гамильтоновы цепи и циклы | Связь между эйлеровыми и гамильтоновыми графами | ПРИМЕРЫ РЕШЕНИЯ ЗАДАЧ | Алгоритм Робертса ─ Флореса |
<== предыдущая страница | следующая страница ==>
ПРИМЕРЫ РЕШЕНИЯ ЗАДАЧ| Расстояния на графах

mybiblioteka.su - 2015-2024 год. (0.014 сек.)