Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 700219.doc
Скачиваний:
30
Добавлен:
01.05.2022
Размер:
1.36 Mб
Скачать

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

Пусть W=(ij) – матрица весов графа G(V,E), не имеющего петель. V={1,2,…,n}. Для простоты считается, что вес всех ij неотрицателен. Предполагается, что ij=, если i=j. Производиться нижняя оценка весов гамильтоновых циклов. Для этого в матрице весов находятся минимальные числа каждой строки: 1k1, 2k2, …,nkn. Вес произвольного гамильтонова цикла не меньше 1k1+ 2k2+ …+ nkn. Матрица преобразуется путем вычитания из каждой i-ой строки соответствующего числа iki. В результате получается матрица Wv=(vij), где vij=ij - iki. В полученной матрице ищутся минимальные числа в каждом столбце v11, v22, …,vinn. Матрица преобразуется вычитая из каждого j-го столбца соответствующее i-ое число vijj. В результате получается матрица W*=(*ij), где *ij=vij-vijj. Для любого гамильтонова цикла X справедлива оценка его веса

Далее вводиться обозначение 1, а2, …,ак) {b1,b2,…,bt} – это множество гамильтоновых циклов, в которых первые k вершин

(X): (X) h, где h=1k1+2k2+…+nkn+vi11+vi22+…+vinn.

а1, а2, …,ак а k+1 вершины аk+1 не принадлежат множеству

{b1,b2,…,bt}.

Используя введенное обозначение, разбиваем задачу на две подзадачи, путем разбиения всего множества гамильтоновых циклов на два множества (1, K1) и (1){K1} т.е. множества гамильтоновых циклов, содержащих

  1. вершину 1 и K1

  2. вершину 1 и не содержащих K1.

Каждая из этих подзадач делиться дальше и т.д. В результате дерево имеет сведущий вид:

Рис. 39

При рассмотрении множества (1,K1) отождествим в графе G вершин 1 и K1 и обозначим новую образовавшуюся вершину через x. В результате получается граф G` с множеством вершин {x1,2,…,k1-1,k1+1,…,n}.

Матрица весов имеет следующий вид:

W`=

Для графа G` найдем нижнюю оценку h` весов гамильтоновых циклов аналогично тому, как найдены оценки h. Тогда нижняя оценка h1 весов гамильтоновых циклов множества (1,K1) равна h+h`.

При рассмотрении множества (1){K1} в матрице весов W* элемент заменяется на и по полученной матрице W``` находится нижняя оценка h`` весов гамильтоновых циклов множества (1){K1} равна h+h``.

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

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

12. Потоки в сетях

12.1. Основные определения

Если в графе ориентировать все ребра, то получится орграф, который называется направленным. Направленный орграф, полученный из полного графа, называется турниром.

Если в орграфе полустепень захода некоторой вершины равна нулю, т.е. d+(V)=0, то такая вершина называется источником, если же нулю равна полустепень исхода, т.е. d-(V)=0, то вершина называется стоком. Направленный орграф без петель с одним источником и одним стоком называется (двухполюсной) сетью.

Пусть G (V, E) – сеть, а S и t – соответственно источник и сток сети. На множестве дуг сети определена неотрицательная функция C: ER+, ставящая каждой дуге (U,V) неотрицательное вещественное число C(U, V), называемое пропускной способностью дуги (U, V).

Пусть заданна функция f: ER. Дивергенцией функции f в вершине V называется число div(f,V), которое определяется следующим образом: div(f,V)= -

Функция f: ER называется потоком в сети G, если:

1) (U,V)E 0f(U,V)C(U,V)

2) VV\{s,t} div(f,V)=0

Число (f)=div(f,s) называется величиной потока f.

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

С помощью потоков в сети можно моделировать:

1) автомобильные потоки на дорогах

2) перекачку нефти на нефтепроводе

3) последовательность технологических операций для производства готовых изделий из сырья.

4) передачу информации в компьютерной сети

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

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

Пусть P – (s,t) разрез, PE. Всякий разрез определяется разбиением множества вершин V на два подмножества A и B так, что A,BV, AB=V, AB=0, sA, tB. Разрез обозначается P(A) и представляет собой множество дуг (U,V)E, таких, что UA, VB.

Пропускной способностью разреза называется сумма пропускных способностей входящих в него дуг C\A=

Минимальным разрезом, разделяющим исток s и сток t сети, называется произвольный разрез P(A) sA, tV\A с минимальной пропускной способностью.