Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Типовой_расчетдораб.docx
Скачиваний:
27
Добавлен:
13.03.2016
Размер:
1.09 Mб
Скачать

Типовой расчет 1

Найдите максимальное и минимальное назначение для задачи с матрицей

2

4

1

4

7

2

1

3

6

8

3

4

7

9

6

N

2

9

2N

8

8

N

7

9

N

Решение

Найдем максимальное назначение

Шаг 1:  Преобразуем матрицу, заменив каждый элемент матрицы разностью максимального элемента этой строки и самого элемента.

5

3

6

3

0

Max=7

6

7

5

2

0

Max=8

6

5

2

0

3

Max=9

N

2N -2

2N -9

0

2N -8

Max=2N

N -8

0

N -7

N -9

0

Max=N



Шаг 2.

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

0

3

4

3

0

1

7

3

2

0

1

5

0

0

3

N-1

2N -2

2N -11

0

2N -8

N -9

0

N -9

N -9

0

Шаг 3.

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

0

3

4

3

0

1

7

3

2

0

1

5

0

0

3

N-1

2N -2

2N -11

0

2N -8

N -9

0

N -9

N -9

0

Получили матрицу с пятью нулями, по одному в каждой строке и столбце, следовательно, можно провести назначения (распределение работ и т.д.) по матрице:

1

0

0

0

0

0

0

0

0

1

0

0

1

0

0

0

0

0

1

0

0

1

0

0

0

И стоимость (рациональность, время работ и т.д.) такого назначения составит:

Найдем минимальное назначение

2

4

1

4

7

2

1

3

6

8

3

4

7

9

6

N

2

9

2N

8

8

N

7

9

N

Шаг 1:  Преобразуем матрицу, заменив каждый элемент матрицы разностью самого элемента и минимального элемента строки.

1

3

0

3

6

1

0

2

5

7

0

1

4

6

3

N-2

0

7

2N-2

6

1

N-7

0

2

N-7

Шаг 2.

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

1

3

0

1

3

1

0

2

3

4

0

1

4

4

0

N-2

0

7

2N-4

3

1

N-7

0

0

N-10

Шаг 3.

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

1

3

0

1

3

1

0

2

3

4

0

1

4

4

0

N-2

0

7

2N-4

3

1

N-7

0

0

N-10

Не удалось отметить 0 в четвертой строке.

Проводим модификацию матрицы. Вычеркиваем строки и столбцы с возможно большим количеством нулевых элементов: строки 5,3 столбец 2, Получаем сокращенную матрицу (элементы не выделены).

1

3

0

1

3

1

0

2

3

4

0

1

4

4

0

N-2

0

7

2N-4

3

1

N-7

0

0

N-10

Минимальный элемент сокращенной матрицы (1) вычитаем из всех ее элементов:

0

3

0

0

2

0

0

1

2

3

0

1

4

4

0

N-3

0

6

2N-5

2

1

N-7

0

0

N-10

Затем складываем минимальный элемент с элементами, расположенными на пересечениях вычеркнутых строк и столбцов:

0

3

0

0

2

0

0

1

2

3

0

2

4

4

0

N-3

0

6

2N-4

2

1

N-6

0

0

N-10

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

0

3

0

0

2

0

0

1

2

3

0

2

4

4

0

N-3

0

6

2N-4

2

1

N-6

0

0

N-10

Получили матрицу с пятью нулями, по одному в каждой строке и столбце, следовательно, можно провести назначения (распределение работ и т.д.) по матрице:

0

0

0

1

0

1

0

0

0

0

0

0

0

0

1

0

1

0

1

0

0

0

1

0

0

И стоимость (рациональность, время работ и т.д.) такого назначения составит:

Типовой расчет 2. Решите задачу коммивояжера жадным алгоритмом и алгоритмом удвоения ребер минимального остова для матрицы расстояний между всеми парами из пяти вершин.

0

4

1

4

7

4

0

3

6

8

1

3

0

9

6

4

6

9

0

N

7

8

6

N

0

Решение

Самый очевидный алгоритм решения задачи коммивояжера — жадный: из текущего города иди в ближайший из тех, куда ещё не ходил. Если выполняется неравенство треугольника, нетрудно доказать, что этот алгоритм ошибается не более, чем в два раза. Трудоемкость этого алгоритма O(V2).

Запускаем жадный алгоритм из вершины 1, кратчайшее расстояние до вершины 3, равное 1. Из вершины 3 кратчайшее расстояние до вершины 2( за исключением уже посещенной вершины 1) равное 3. Из вершины 2 кратчайшее расстояние( до оставшихся вершин 4 и 5 ) расстояние до вершины 4 , равное 6, от вершины 4 до вершины 5 расстояние равно N. Расстояние от вершины 5 до вершины 1 равно 7. Длина полученного цикла 1,3,2,4,5,1 равна 1+3+6+N+7=N+17.

Построим дерево-остов минимального веса с помощью алгоритма Прима.

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

Начнем с вершины с номером 1, добавим ребро {1,3} , которое имеет минимальный вес среди ребер, инцидентных вершине 1равный 1, затем ребро {3,2} веса 3, {2,4} веса 6, {4,5} веса N получим минимальное дерево-остов Т.Построим мультиграф, путем удвоения ребер в дереве Т.

Рис.1

Длина полученного цикла равна 1+3+6+N+N+6+3+1=2N+20.

Типовой расчет 3,4. Задан следующий орграф.

Дуга (s,v1) c весом 8, дуга(s,v2) c весом 9, дуга (v1, v2) c весом N, дуга (v1,t) c весом 4, дуга (v2,t) c весом 1, дуга (s,t) c весом 20. Найдите максимальный поток и минимальный разрез в сети, считая вес дуги ее пропускной способностью. Найдите минимальный путь из вершины s в вершину t.

Решение.

Нарисуем граф.

Рис.1.

Простой, связный орграф G будем называть транспортной сетью (или просто сетью), если выполняются следующие условия: - существует вершина s (источник), в которую не входит ни одна дуга, - существует вершина t (сток), из которой не выходит ни одна дуга, - каждой дуге eij приписано целое число сij≥0, называемое пропускной способностью дуги. Потоком в сети называют функцию, сопоставляющую каждой дуге целое неотрицательное число fij≥0(значение потока через дугу) так, чтобы

1) fij≤ сij, т.е. не превышало пропускной способности дуги

2) Для каждой промежуточной вершины (любой вершины, кроме s и t) выполнялось условие: сумма значений потоков по входящим в вершину дугам была равна сумме значений потоков по исходящим из неё дугам.

3) Для вершины s сумма исходящих потоков равна сумме потоков, входящих в вершину t.

Величиной потока, обозначают Val f, называют сумму значений потока на всех дугах, выходящих из источника s, равную сумме значений потока на всех дугах, входящих в сток t. Поток называется максимальным, если его величина наибольшая из возможных. Дуга eij называется насыщенной, если fij= сij, т.е. значение потока через дугу равно пропускной способности дуги.

Теорема Форда – Фолкерсона. Величина максимального потока в сети из вершины s в вершину t равна величине минимального сечения между этими вершинами.