
Лабораторный Практикум по Дискрмат2
.pdfВариант 1. E = {(1, 2), (1, 4), (2, 4), (2, 3), (2, 5), (4, 5), (3, 6), (5, 6)}, a=2, b =4, c =3, d =1, e =2, f =1, g =5, h =7.
Вариант 2. E = {(1, 3), (1, 6), (2, 5), (2, 3), (2, 5), (3, 5), (3, 6), (2, 6)}, a=3, b =2, c =1, d =1, e =5, f =3, g =1, h =7.
Вариант 3. E = {(1, 4), (1, 5), (2, 4), (2, 3), (2, 6), (4, 5), (3, 6), (4, 6)}, a=2, b =2, c =3, d =1, e =5, f =3, g =2, h =6.
Вариант 4. E = {(1, 5), (1, 5), (2, 4), (2, 3), (2, 5), (4, 5), (3, 6), (5, 6)}, a=2, b =3, c =5, d =2, e =4, f =1, g =1, h =7.
Вариант 5. E = {(1, 6), (1, 5), (3, 4), (2, 3), (2, 5), (4, 5), (3, 6), (5, 6)}, a=2, b =2, c =4, d =1, e =4, f =3, g =3, h =8.
Вариант 6. E = {(1, 2), (1, 5), (3, 4), (2, 3), (2, 5), (3, 5), (3, 6), (4, 6)}, a=3, b =4, c =2, d =1, e =1, f =3, g =1, h =2.
Вариант 7. E = {(1, 4), (1, 5), (1, 6), (2, 3), (2, 5), (4, 5), (4, 6), (5, 6)}, a=2, b =3, c =2, d =4, e =4, f =3, g =2, h =7.
Вариант 8. E = {(1, 4), (3, 5), (3, 4), (2, 3), (2, 5), (4, 5), (1, 6), (5, 6)}, a=5, b =1, c =2, d =3, e =4, f =3, g =2, h =8.
Вариант 9. E = {(1, 3), (1, 6), (2, 4), (2, 3), (2, 5), (4, 5), (3, 6), (3, 5)}, a=1, b =3, c =2, d =3, e =4, f =3, g =2, h =4.
Вариант 10. E = {(1, 4), (1, 5), (2, 4), (2, 3), (2, 6), (4, 6), (3, 6), (3, 4)}, a=2, b =4, c =2, d =1, e =5, f =3, g =1, h =6.
Вариант 11. E = {(1, 5), (1, 4), (2, 4), (2, 3), (2, 5), (4, 6), (3, 6), (4, 5)}, a=3, b =3, c =5, d =1, e =3, f =3, g =2, h =3.
Вариант 12.E = {(1, 3), (2, 4), (2, 5), (3, 4), (3, 5), (4, 5), (3, 6), (5, 6)}, a=2, b =2, c =3, d =4, e =4, f =1, g =1, h =5.
Вариант 13.
E = {(1, 4), (1, 5), (2, 5), (2, 6), (3, 5), (4, 5), (3, 4), (5, 6)}, a=4, b =3, c =4, d =3, e =1, f =2, g =1, h =2.
Вариант 14.
E = {(1, 5), (2, 5), (2, 4), (2, 3), (3, 5), (4, 5), (4, 6), (5, 6)}, a=1, b =3, c =2, d =1, e =3, f =2, g =2, h =5.
121
Вариант 15.
E = {(1, 3), (1, 5), (1, 4), (2, 4), (2, 5), (4, 5), (3, 6), (4, 6)}, a=3, b =1, c =3, d =2, e =5, f =3, g =1, h =6.
Вариант 16.
E = {(1, 4), (1, 5), (2, 4), (2, 3), (2, 6), (4, 6), (4, 5), (5, 6)}, a=3, b =1, c =4, d =2, e =4, f =1, g =2, h =3.
Вариант 17.
E = {(1, 2), (1, 3), (1, 4), (2, 4), (2, 5), (4, 5), (3, 6), (4, 6)}, a=5, b =4, c =2, d =3, e =1, f =2, g =3, h =5.
Вариант 18.
E = {(1, 2), (2, 3), (2, 4), (2, 5), (3, 5), (4, 6), (3, 6), (5, 6)}, a=1, b =2, c =4, d =2, e =2, f =2, g =1, h =8.
Вариант 19.
E = {(1, 2), (1, 5), (1, 4), (2, 3), (2, 5), (4, 5), (3, 6), (2, 6)}, a=2, b =4, c =5, d =1, e =3, f =1, g =2, h =3.
Вариант 20.
E = {(1, 3), (1, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6), (4, 6)}, a=3, b =4, c =2, d =3, e =4, f =2, g =2, h =1.
Вариант 21.
E = {(1, 5), (1, 6), (2, 3), (2, 5), (2, 6), (4, 3), (4, 5), (5, 6)}, a=1, b =1, c =3, d =2, e =4, f =5, g =3, h =8.
Вариант 22.
E = {(1, 4), (1, 5), (2, 3), (2, 6), (3, 5), (3, 6), (4, 6), (5, 6)}, a=1, b =3, c =3, d =1, e =2, f =4, g =2, h =5.
Вариант 23.
E = {(1, 3), (1, 4), (2, 4), (2, 3), (3, 5), (4, 5), (3, 6), (4, 6)}, a=2, b =5, c =4, d =1, e =2, f =2, g =1, h =3.
Вариант 24.
E = {(1, 4), (1, 5), (2, 5), (2, 6), (2, 1), (4, 5), (3, 6), (1, 6)}, a=3, b =2, c =3, d =2, e =1, f =4, g =1, h =6.
Вариант 25.
E = {(1, 2), (1, 6), (2, 3), (2, 4), (3, 4), (3, 5), (3, 6), (4, 6)}, a=4, b =5, c =1, d =2, e =2, f =1, g =2, h =5.
Практическое занятие № 6
ПОЛНЫЕ ЦИКЛЫ И ПОЛНЫЕ ГРАФЫ. АЛГОРИТМ ПЕРЕЧИСЛЕНИЯ ПОЛНЫХ ПРОСТЫХ ЦИКЛОВ ПОЛНОГО ГРАФА. ЗАДАЧА КОММИВОЯЖЕРА
122
Цель работы
Составить программу перечисления всех простых циклов полного графа. На алгоритмическом языке составить программу решения задачи коммивояжера и решить задачу для заданных стоимостей маршрутов.
Краткая теория
Циклом данного графа называется последовательность ребер, которая начинается с некоторой вершины и завершается на этой же вершине. Цикл называется простым, если цикл не имеет повторяющихся ребер. Полным простым циклом графа G называются простые циклы графа G, содержащие все его вершины. Граф называется полным, если каждая его вершина связана ребром с каждой другой вершиной данного графа. Рассмотрим задачу перечисления всех полных простых циклов графа G. Решение задачи перечисления полных циклов дает алгоритм оптимизации маршрутов в некоторых сетевых задачах.
Моделирование многих отношений между реальными объектами часто приводит к комбинаторным математическим задачам. В этих случаях, как правило, оказываются полезными те математические объекты, которые комбинаторными являются по своему определению. Рассмотрим такую взаимосвязь на примере матриц или их определителей. Каждому
ребру, соединяющему вершины i и j, сопоставим элемент матрицы aij , а
каждому полному простому циклу графа - последовательность элементов матрицы, образующую некоторый элемент определителя матрицы. Например, для полного графа, имеющего пять вершин, простому циклу (12345) сопоставим элемент определителя матрицы. Легко понять, что все полные простые циклы исчерпываются всеми слагаемыми определителя пятого порядка. В самом деле, каждая вершина полного простого цикла соединена ровно двумя соседними вершинами, что соответствует выбору из каждой строки и каждого столбца равно по одному элементу. Известно, что число слагаемых определителя порядка n равно n!. Однако, часть из них не соответствует полным простым циклам, а соответствует циклам, распадаютщимся на независимые циклы. Рассмотрим это на примере полного простого графа, имеющего четыре вершины. Разложим определитель четвертого порядка по первой строке:
123

0 |
a12 |
a13 |
a14 |
|
a21 |
a23 |
a24 |
|
a21 |
0 |
a24 |
|
a21 |
0 |
a24 |
|
|
|
|
||||||||||||||
a21 |
0 |
a23 |
a24 |
|
|
|
||||||||||
a12 |
a31 |
0 |
a34 |
a13 |
a31 |
a32 |
a34 |
a14 |
a31 |
a32 |
0 |
|||||
a31 |
a32 |
0 |
a34 |
|||||||||||||
|
a41 |
a43 |
0 |
|
a41 |
a42 |
0 |
|
a41 |
a42 |
a43 |
|||||
a41 |
a42 |
a43 |
0 |
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
= a12 a24 a43 a31 a13 a31a24 a42 a12 a23 a34 a41 a13 a32 a24 a41 a12 a21a34 a43 a13 a34 a42 a21
-
a14 a43a32 a21 a14 a42 a23a31 a14 a41a32 a23 .
Согласно числу элементов определителя, количество всех циклов будет равно 9. Изобразим соответствующие им графы:
а) 1 |
2 |
б) 1 |
2 |
в) |
1 |
2 |
4 |
3 |
|
4 |
3 |
|
4 |
3 |
г) 1 |
|
2 |
д) 1 |
2 |
е) |
1 |
2 |
4 |
3 |
4 |
3 |
4 |
3 |
ж) 1 |
2 |
з) 1 |
2 |
и) |
1 |
2 |
х3 |
|
|
|
|
|
4 |
3 |
4 |
3 |
4 |
3 |
Рис.22. Циклы полного графа, имеющего четыре вершины.
124

Согласно рисункам а) – и) среди изображенных графов полными простыми циклами являются только а), в), г), е) ,ж), з). Остальные графы не являются связанными. Аналогично, разложением определителя пятого порядка
0 |
a12 |
a13 |
a14 |
a15 |
|
a21 |
a23 |
a24 |
a25 |
|
a21 |
0 |
a24 |
a25 |
|
|
|
||||||||||||||
a21 |
0 |
a23 |
a24 |
a25 |
|
|
|||||||||
|
a31 |
0 |
a34 |
a35 |
|
a31 |
a32 |
a34 |
a35 |
||||||
a31 |
a32 |
0 |
a34 |
a35 |
a12 |
a13 |
|||||||||
a41 |
a43 |
0 |
a45 |
a41 |
a42 |
0 |
a45 |
||||||||
a41 |
a42 |
a43 |
0 |
a45 |
|
a51 |
a53 |
a54 |
0 |
|
a51 |
a52 |
a54 |
0 |
|
a51 |
a52 |
a53 |
a54 |
0 |
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
a21 |
0 |
a23 |
a25 |
|
a21 |
0 |
a23 |
a24 |
|
|
|
|
||||||||
a |
a31 |
a32 |
0 |
a35 |
a |
a31 |
a32 |
0 |
a34 |
. |
14 |
a41 |
a42 |
a43 |
a45 |
15 |
a41 |
a42 |
a43 |
0 |
|
|
a51 |
a52 |
a53 |
0 |
|
a51 |
a52 |
a53 |
a54 |
|
можно убедиться, что все полные простые циклы полного графа с пятью вершинами можно получить в виде следующих элементов определителя:
a12 a23a34 a45a51 , a12 a23a35a54 a41 , a12 a23a31a45a54 , a12a43a24a35a51 , a12a43a31a25a54 ,
a12a43a25a34a51 , a12 a43a21a35a54 , a12a53a21a34a45 , a12a53a24a35a41 , a12a53a34a41a25 , a12 a53a31a24 a45 , a13a21a34 a45 a52 , a13a21a42 a35 a54 , a13a21a32 a45 a54 , a13a24 a32 a45 a51 , a13a24 a41a52 a35 , a13a24 a35 a42 a51 , a13a24 a31a52 a45 , a13a25 a31a42 a54 , a13a25 a52 a41a34 , a13a25 a34 a42 a51 , a13a25 a41a32 a54 , a14 a21a43a35 a53 , a14 a21a52 a43a35 , a14 a21a32 a45 a53 , a14 a23a32 a45 a51 , a14 a23a41a35 a52 , a14 a23a35 a42 a51 , a14 a23a31a45 a52 , a14 a25 a31a42 a53 , a14 a25 a32 a43a51 , a14 a25 a31a43a52 , a14 a25 a41a32 a53 , a15 a21a32 a43a54 , a15 a21a42 a53a34 , a15 a21a52 a43a34 , a15 a23a31a42 a54 , a15 a23a41a52 a34 , a15 a23a51a42 a34 , a15 a23a32 a41a54 ,
a15a24 a31a42 a53 , a15 a24 a32 a43a51 , a15 a24 a31a43a52 , a15 a24 a41a32 a53 .
Двадцать четыре из этих элементов образуют полные простые циклы:
a12 a23a34 a45 a51 , a12 a23a35 a54 a41 , a12 a43a24 a35 a51 , a12 a43a31a25 a54 , a12 a53a34 a41a25 , a12 a53a31a24 a45 , a13a21a34 a45 a52 , a13a21a42 a35 a54 , a13a24 a32 a45 a51 , a13a24 a41a52 a35 , a13a25 a34 a42 a51 , a13a25 a41a32 a54 , a14 a21a52 a43a35 , a14 a21a32 a45 a53 , a14 a23a35 a42 a51 , a14 a23a31a45 a52 , a14a25a31a42a53 , a14 a25 a32 a43a51 , a15 a21a32 a43a54 , a15 a21a42 a53a34 , a15 a23a31a42 a54 , a15 a23a41a52 a34 , a15 a24 a31a43a52 , a15 a24 a41a32 a53 .
125

Таким образом, для полного графа с четырьмя вершинами полных простых циклов шесть, а для полного графа с пятью вершинами таких циклов будет 24. Не трудно доказать, что число таких циклов для графа с n вершинами будет равно S(n) (n 1)!. В самом деле, так как исходная вершина произвольная и выбирать ее не надо, то число таких циклов будет равно числу перестановок из (n -1) элементов, то есть (n 1)!.
Метод перечисления всех простых полных циклов, основанный на вычислении элементов определителей, позволяет построить наиболее простой алгоритм решения задачи перечисления. Ввиду значительного увеличения числа простых циклов с ростом числа вершин графа, для решения задачи предполагается применение компьютерных вычислений. Алгоритм решения будет состоять в программной реализации и выполнении следующих шагов:
1. Составить произведения элементов матрицы в виде
A(1,i) A(i, j)
A( j,k)
...
A(s,1) .
2. Выбрать только произведения, для которых i j k ... s .
3.По оставшимся произведениям составить маршруты (1, i, j ,k,..., s,1) .
4.Составим список всех маршрутов. Эти маршруты и будут представлять собой все полные простые циклы.
Вкачестве приложения рассматриваемого алгоритма рассмотрим ее применение к решению задачи коммивояжера. Задача коммивояжера состоит в следующем:
Туристическое агентство для путешествий выбирает города в количестве n и маршруты путешествия. Предполагается, что все возможные маршруты проходят через каждый город ровно один раз и возвращаются в исходный пункт. Стоимости всех маршрутов известны. Агентству необходимо выбрать наиболее выгодный по стоимости маршрут путешествия.
Существуют различные методы решения этой задачи, называемые методами ветвей и границ. Однако, рассматриваемый здесь метод представляется более простым для компьютерной реализации алгоритма решения. Алгоритм решения задачи коммивояжера состоит в следующем:
1.Применяя алгоритм перечисления всех полных простых, составить полный список всех возможных маршрутов;
2.Присвоить элементам матрицы A(i, j) весовые коэффициенты
соответствующих ребер (i, j) (стоимостей отдельных маршрутов);
3. Определить минимум среди сумм вида A(1,i) A(i, j) A( j,k) ... A(s,1) для всех маршрутов полного списка;
4. Все минимальные стоимости и соответствующие им маршруты представляют собой решения задачи коммивояжера.
Порядок выполнения работы
126
1.При помощи алгоритма перечисления всех полных простых циклов составить полный список маршрутов путешествия в задаче коммивояжера.
2.Составить программу перечисления простых циклов на алгоритмическом языке.
3.Составить программу решения задачи коммивояжера и решить задачу для заданных стоимостей маршрутов.
Образец выполнения заданий
В условиях задачи коммивояжера стоимости маршрутов заданы в виде следующей матрицы:
120 322 116 643 671
337 122 345 321 533
351 246 754 212 245
357 678 553 754 785
223 334 553 335 769
Определить маршруты минимальной стоимости и стоимости этих маршрутов.
Решение. Согласно алгоритму перечисления, число полных простых циклов полного графа из пяти вершин равно 24. При помощи алгоритма перечисления простых циклов составим программу на алгоритмическом языке (Приложение 2). Результатами расчета являются список всех маршрутов, представляющих собой полные простые циклы соответствующего графа. Маршруты их стоимости приведены в таблице 9.
|
|
|
|
|
Таблица.9. |
|
|
|
Маршруты и их стоимости. |
|
|
||
|
|
|
|
|
|
|
№ |
маршрут |
стоимость |
№ |
маршрут |
стоимость |
|
1 |
12345 |
1887 |
13 |
14235 |
2134 |
|
2 |
12354 |
1604 |
14 |
14253 |
2758 |
|
3 |
12435 |
1664 |
15 |
14325 |
2198 |
|
4 |
12453 |
2332 |
16 |
14352 |
2112 |
|
5 |
12534 |
1977 |
17 |
14523 |
2458 |
|
6 |
12543 |
2094 |
18 |
14532 |
2564 |
|
7 |
13245 |
1691 |
19 |
15234 |
1919 |
|
8 |
13254 |
1587 |
20 |
15243 |
2230 |
|
9 |
13425 |
1762 |
21 |
15324 |
2148 |
|
10 |
13452 |
1784 |
22 |
15342 |
2451 |
|
11 |
13524 |
1373 |
23 |
15423 |
2380 |
|
12 |
13542 |
1711 |
24 |
15432 |
2142 |
|
127

Для того чтобы определить число маршрутов, имеющих минимальную стоимость, построим график стоимости маршрутов (Рис. 23). Согласно этому графику, минимальную стоимость имеет только один маршрут (13524) и его стоимость – 1373. Найденный маршрут и его стоимость является решением задачи коммивояжера.
Рис.23. График стоимости маршрутов.
Контрольные вопросы
1.Что называется графом?
2.Определите понятие геометрической реализации графа.
3.Определите понятия остова, веса остова.
4.Чем отличаются методы Крускала и метод полного перечисления остовов?
Литература: [2], Часть 5, с. 81 – 99; [7], гл. 4, стр. 88 –131. [6], гл. 2, стр.
108 –163.
Задания для самостоятельной работы
В условиях задачи коммивояжера стоимости маршрутов заданы в виде матрицы A. Определить маршруты минимальной стоимости и стоимости этих маршрутов.
Вариант 1. |
Вариант 2. |
128
230 |
321 |
432 |
442 |
533 |
621 |
320 |
334 |
219 |
673 |
651 |
344 |
762 |
224 |
456 |
776 |
443 |
622 |
632 |
511 |
299 |
877 |
446 |
840 |
332 |
542 |
631 |
761 |
432 |
112 |
532 |
762 |
544 |
226 |
331 |
633 |
422 |
773 |
533 |
721 |
652 |
567 |
238 |
232 |
645 |
761 |
354 |
631 |
562 |
130 |
341 |
432 |
442 |
533 |
621 |
320 |
334 |
249 |
673 |
651 |
344 |
162 |
224 |
456 |
776 |
443 |
622 |
632 |
511 |
249 |
877 |
446 |
840 |
332 |
342 |
631 |
761 |
432 |
112 |
532 |
362 |
144 |
226 |
331 |
633 |
422 |
773 |
533 |
721 |
652 |
567 |
238 |
232 |
545 |
761 |
354 |
631 |
262 |
|
|
|
|
Вариант 3. |
|
|
|
Вариант 4. |
||||
430 |
351 |
432 |
142 |
533 |
421 |
320 |
||||||
334 |
219 |
673 |
651 |
344 |
762 |
224 |
||||||
456 |
776 |
643 |
522 |
632 |
511 |
299 |
||||||
877 |
346 |
240 |
332 |
542 |
631 |
761 |
||||||
432 |
112 |
532 |
562 |
504 |
226 |
331 |
||||||
633 |
422 |
773 |
533 |
421 |
652 |
567 |
||||||
238 |
232 |
745 |
361 |
354 |
631 |
762 |
||||||
270 |
621 |
432 |
642 |
533 |
221 |
120 |
||||||
234 |
219 |
773 |
651 |
344 |
762 |
224 |
||||||
456 |
706 |
443 |
622 |
332 |
511 |
299 |
||||||
877 |
446 |
840 |
302 |
542 |
631 |
761 |
||||||
432 |
112 |
532 |
462 |
544 |
226 |
331 |
||||||
533 |
422 |
770 |
533 |
721 |
652 |
467 |
||||||
238 |
232 |
645 |
761 |
354 |
631 |
362 |
||||||
|
|
|
|
Вариант 5. |
|
|
|
Вариант 6. |
129
130 |
321 |
432 |
442 |
533 |
321 |
390 |
||||||
334 |
219 |
173 |
651 |
144 |
762 |
224 |
||||||
456 |
776 |
443 |
622 |
632 |
511 |
299 |
||||||
877 |
446 |
840 |
132 |
542 |
631 |
761 |
||||||
432 |
112 |
532 |
762 |
544 |
226 |
331 |
||||||
633 |
422 |
773 |
533 |
721 |
652 |
567 |
||||||
238 |
232 |
645 |
761 |
354 |
631 |
562 |
||||||
330 |
321 |
432 |
442 |
533 |
621 |
320 |
||||||
334 |
219 |
673 |
651 |
344 |
762 |
224 |
||||||
456 |
776 |
443 |
622 |
632 |
511 |
299 |
||||||
877 |
446 |
840 |
302 |
542 |
631 |
761 |
||||||
432 |
112 |
532 |
762 |
544 |
226 |
331 |
||||||
633 |
422 |
773 |
533 |
721 |
652 |
567 |
||||||
238 |
232 |
645 |
761 |
354 |
631 |
562 |
|
|
|
|
Вариант 7. |
|
|
|
Вариант 8. |
||||
430 |
121 |
432 |
842 |
533 |
621 |
520 |
||||||
334 |
619 |
673 |
651 |
344 |
762 |
424 |
||||||
456 |
776 |
443 |
622 |
632 |
511 |
299 |
||||||
877 |
446 |
840 |
332 |
542 |
631 |
761 |
||||||
432 |
112 |
532 |
762 |
544 |
226 |
331 |
||||||
633 |
422 |
173 |
633 |
721 |
652 |
467 |
||||||
238 |
232 |
645 |
261 |
354 |
331 |
762 |
||||||
630 |
321 |
432 |
400 |
733 |
621 |
120 |
||||||
334 |
219 |
673 |
651 |
344 |
762 |
224 |
||||||
456 |
776 |
443 |
602 |
632 |
511 |
290 |
||||||
877 |
446 |
840 |
332 |
542 |
631 |
761 |
||||||
432 |
112 |
132 |
762 |
544 |
226 |
331 |
||||||
630 |
422 |
333 |
533 |
721 |
652 |
167 |
||||||
238 |
232 |
445 |
761 |
354 |
631 |
262 |
||||||
|
|
|
|
Вариант 9. |
|
|
|
Вариант 10. |
130