АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf ·...

100
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ федеральное государственное бюджетное образовательное учреждение высшего образования «УЛЬЯНОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ» Ю. Е. Кувайскова АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИ Учебное пособие Ульяновск УлГТУ 2017

Upload: others

Post on 12-Aug-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ федеральное государственное бюджетное образовательное учреждение

высшего образования «УЛЬЯНОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

Ю. Е. Кувайскова

АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИ

Учебное пособие

Ульяновск УлГТУ

2017

Page 2: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

УДК 519.176 + 519.72 + 519.713 (075) ББК 22.176 + 32.811.4 + 32.815я73 К 88

Рецензенты: кафедра «Телекоммуникационные технологии и сети»

Ульяновского государственного университета (зав. кафедрой, д-р техн. наук, профессор А. А. Смагин);

Сергеев В. А., д-р техн. наук, доцент, директор УФИРЭ им. В. А. Котельникова РАН

Утверждено редакционно-издательским советом

университета в качестве учебного пособия

Кувайскова, Юлия Евгеньевна

К 88 Алгоритмы дискретной математики : учебное пособие / Ю. Е. Кувайскова. – Ульяновск : УлГТУ, 2017. – 99 с.

ISBN 978-5-9795-1635-6 Учебное пособие посвящено изучению некоторых разделов

дискретной математики: алгоритмы оптимизации на графах, теория кодирования и теория конечных автоматов.

В пособии представлены краткие теоретические сведения, примеры решения задач, задачи для самостоятельного выполнения, а также методические рекомендации и варианты заданий для выполнения расчетно-графической работы.

Пособие предназначено для студентов направления бакалавриата «Прикладная математика», а также студентов других направлений, изучающих курс дискретной математики.

УДК 519.176 + 519.72 + 519.713 (075) ББК 22.176 + 32.811.4 + 32.815я73

Кувайскова Ю. Е., 2017 ISBN 978-5-9795-1635-6 Оформление. УлГТУ, 2017

Page 3: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

ОГЛАВЛЕНИЕ

ВВЕДЕНИЕ ................................................................................................ 5

1. АЛГОРИТМЫ ОПТИМИЗАЦИИ НА ГРАФАХ ............................... 6

1.1. Основные понятия теории графов ................................................. 6

1.2. Алгоритмы поиска кратчайших путей .......................................... 7

1.2.1. Постановка задачи ................................................................... 7

1.2.2. Алгоритм Дейкстры поиска кратчайшего пути .................. 7

1.2.3. Алгоритм Форда ..................................................................... 13

1.2.4. Алгоритм Флойда ................................................................... 15

1.3. Задача о максимальном потоке .................................................... 21

1.3.1. Основные понятия .................................................................. 21

1.3.2. Алгоритм поиска увеличивающей цепи ................................ 21

1.3.3. Постановка задачи о максимальном потоке ...................... 25

1.3.4. Алгоритм Форда-Фалкерсона ............................................... 26

1.4. Задача поиска потока минимальной стоимости......................... 29

1.4.1. Постановка задачи ................................................................. 29

1.4.2. Алгоритм поиска потока минимальной стоимости .......... 31

1.5. Задача коммивояжера ................................................................... 39

1.5.1. Формулировка задачи ............................................................. 39

1.5.2. Условия существования гамильтонова контура ................ 40

1.5.3. Методы расчета нижних границ оптимальных гамильтоновых контуров ................................................................. 41

1.5.4. Метод ветвей и границ .......................................................... 44

1.6. Задачи и упражнения .................................................................... 50

2. ЭЛЕМЕНТЫ ТЕОРИИ КОДИРОВАНИЯ ........................................ 54

2.1. Основные понятия ......................................................................... 54

2.2. Проблема однозначности декодирования .................................. 55

2.3. Оценка длины элементарных кодов ............................................ 57

2.4. Коды с минимальной избыточностью ........................................ 58

2.4.1. Постановка задачи ................................................................. 58

3

Page 4: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

2.4.2. Алгоритм построения кодов с минимальной избыточностью ................................................................................ 61

2.5. Самокорректирующиеся коды ..................................................... 65

2.5.1. Постановка задачи ................................................................. 65

2.5.2. Алгоритм построения самокорректирующихся кодов ...... 66

2.6. Задачи и упражнения .................................................................... 69

3. ЭЛЕМЕНТЫ ТЕОРИИ КОНЕЧНЫХ АВТОМАТОВ ..................... 72

3.1. Понятие конечного автомата ....................................................... 72

3.2. Способы задания конечных автоматов ....................................... 72

3.3. Автомат Мили ................................................................................ 73

3.3.1. Понятие автомата Мили ...................................................... 73

3.3.2. Дешифратор ............................................................................ 74

3.3.3. Задача минимизации автомата Мили .................................. 77

3.4. Автомат Мура ................................................................................ 83

3.5. Задачи и упражнения .................................................................... 86

4. РАСЧЕТНО-ГРАФИЧЕСКАЯ РАБОТА .......................................... 87

4.1. Методические указания ................................................................ 87

4.2. Варианты заданий ......................................................................... 88

Задание 1. Алгоритм Дейкстры ...................................................... 88

Задание 2. Алгоритм Флойда ........................................................... 89

Задание 3. Поток минимальной стоимости ................................. 90

Задание 4. Коды Хаффмана ............................................................. 91

Задание 5. Коды Хэмминга ............................................................... 92

Задание 6. Дешифратор ................................................................... 93

Задание 7. Минимальный автомат ................................................. 94

БИБЛИОГРАФИЧЕСКИЙ СПИСОК .................................................... 99

4

Page 5: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

ВВЕДЕНИЕ Учебное пособие посвящено изучению понятий, задач и методов

теории графов, теории конечных автоматов и теории кодирования,

лежащих в основе информатизации научных исследований.

Пособие включает три теоретических раздела, посвященных

алгоритмам оптимизации на графах, теории кодирования и теории

конечных автоматов, а также раздел, содержащий методические

указания и варианты заданий расчетно-графической работы.

В первом разделе рассматриваются алгоритмы поиска опти-

мального решения некоторых задач на графах: алгоритмы поиска

кратчайших путей, алгоритмы поиска максимального потока и потока

минимальной стоимости, алгоритмы решения задачи коммивояжера.

Второй раздел посвящен вопросам теории кодирования.

Рассмотрены алгоритмы построения кодов с минимальной

избыточностью и самокорректирующихся кодов.

В третьем разделе приводятся основные понятия теории конечных

автоматов, описаны алгоритмы построения автоматов Мили и Мура,

рассмотрен алгоритм построения минимального автомата Мили.

Последний раздел содержит методические рекомендации и

варианты заданий выполнения расчетно-графической работы,

предназначенной для закрепления теоретических сведений и развития

навыков самостоятельных практических расчетов у студентов.

Учебное пособие предназначено для студентов, обучающихся по

направлениям бакалавриата, изучающих курсы дискретной

математики и программирования.

5

Page 6: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

1. АЛГОРИТМЫ ОПТИМИЗАЦИИ НА ГРАФАХ

1.1. Основные понятия теории графов

Граф G = (X, Е) есть конечное множество X, элементы которого называются вершинами, и множество Е его двухэлементных подмножеств, называемых ребрами.

Вершины, составляющие ребро, называются инцидентными этому ребру. Если вершина инцидентна k ребрам, то она имеет степень k.

Граф G = (X, A) – ориентированный граф, где Х – множество вершин, А – множество упорядоченных пар вершин, т. е. ориентированных ребер, которые называются дугами.

Сеть – это граф, каждой дуге которого поставлены в соответствие одно или несколько чисел.

Дуга, начальная и конечная вершина которой совпадают, называется петлей.

Пусть 121 ,,...,, +nn xxxx – произвольная последовательность

вершин. Цепью называется любая последовательность дуг nααα ,...,, 21 ,

такая, что концевыми точками дуги iα являются вершины ix и 1+ix ,

т. е. ),( 1+= iii xxα или ),( 1 iii xx +=α для ni ,...,2,1= .

Вершина 1x называется начальной вершиной цепи, вершина 1+nx

называется конечной вершиной цепи. Цепь, в которой ),( 1+= iii xxα при всех ni ,...,2,1= , представляет

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

Граф, называется связным, если в нем для каждой пары вершин найдется соединяющая их цепь.

6

Page 7: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

1.2. Алгоритмы поиска кратчайших путей

1.2.1. Постановка задачи

Каждой дуге ),( yx исходного графа G ставится в соответствие

число ),( yxa . Если в графе отсутствует некоторая дуга, то полагается,

что ∞=),( yxa . Число ),( yxa называется длиной дуги, или весовым

коэффициентом. Длина пути – сумма длин отдельных дуг, составляющих этот

путь. Для любых двух вершин s и t графа G могут существовать

несколько путей, соединяющих вершину s с вершиной t. Путь, имеющий минимально возможную длину, называется

кратчайшим путем.

1.2.2. Алгоритм Дейкстры поиска кратчайшего пути

Идея. Предполагается, что известны m вершин, ближайших к вершине s (близость любой вершины x к вершине s определяется длиной кратчайшего пути, ведущего из s в х), и кратчайшие пути, соединяющие вершину s с выделенными m вершинами.

Далее определяется (m+1)-я ближайшая вершина к s. Окрашивается вершина s и m ближайших к ней вершин.

Для каждой неокрашенной вершины y строятся пути, непосредственно соединяющие с помощью дуг ),( yx каждую

окрашенную вершину х с у. Из этих путей выбирается кратчайший, который считается условно кратчайшим путем из вершины s в вершину у. Вершина, для которой условно кратчайший путь имеет наименьшую длину, и будет являться (m+1)-й ближайшей вершиной к вершине s.

Начиная с m = 0, описанная процедура повторяется до тех пор, пока не будет получен кратчайший путь из s в t.

7

Page 8: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Алгоритм Дейкстры. Шаг 1. Перед началом выполнения алгоритма все вершины и

дуги не окрашены. Каждой вершине присваивается число )(xd ,

равное длине кратчайшего пути из s в x, включающего только окрашенные вершины.

Пусть 0)( =sd , ∞=)(xd для всех вершин x, отличных от s.

Окрасить вершину s и положить y = s. Шаг 2. Для каждой неокрашенной вершины х пересчитать

величину )(xd по формуле:

)},()(),(min{)( xyaydxdxd += . (1.1)

Если ∞=)(xd для всех неокрашенных вершин х, закончить

процедуру алгоритма: в исходном графе отсутствуют пути из s в неокрашенные вершины. В противном случае окрасить ту из вершин х, для которой величина )(xd является наименьшей, а также окрасить

дугу, ведущую в выбранную на данном шаге вершину x. Положить у = х. Шаг 3. Если у = t, закончить процедуру алгоритма: кратчайший

путь из вершины s в вершину t найден (это единственный путь из s в t, составленный из окрашенных дуг). В противном случае перейти к шагу 2.

Окрашенные дуги образуют в исходном графе ориентированное дерево с корнем в вершине s. Это дерево называется ориентированным деревом кратчайших путей.

Замечание. Алгоритм Дейкстры применяется в предположении неотрицательности длин дуг исходного графа.

Пример 1.1. Применить алгоритм Дейкстры к графу, изображенному на рис. 1.1, для нахождения в нем кратчайшего пути между вершинами s и t.

8

Page 9: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Шаг 1. Окрашивается вершина s. Полагается, что 0)( =sd и

∞=)(xd для всех вершин x, не совпадающих с s.

Рис. 1.1. Пример применения алгоритма Дейкстры

Шаг 2. у = s. По формуле (1.1) пересчитываются величины )(xd для всех

неокрашенных вершин: 5}50,min{)},()(),(min{)( =+∞=+= asasdadad ,

∞=∞+∞=+= }0,min{)},()(),(min{)( bsasdbdbd ,

2}20,min{)},()(),(min{)( =+∞=+= csasdcdcd ,

7}70,min{)},()(),(min{)( =+∞=+= dsasddddd ,

∞=∞+∞=+= }0,min{)},()(),(min{)( tsasdtdtd .

Поскольку величина 2)( =cd является минимальной из величин

)(ad , )(bd , )(cd , )(dd , )(td , вершина с окрашивается. Так же

окрашивается и дуга ),( cs , которая и определяет величину )(cd .

Текущее дерево кратчайших путей состоит из дуги ),( cs (рис. 1.2).

Рис. 1.2. Текущее дерево кратчайших путей,

состоящее из дуги ),( cs

s

c 2

5

s

a b

c d

t

3 2

2 4

7

2

5

9

Page 10: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Шаг 3. Поскольку вершина t остается неокрашенной, осуществляется переход к шагу 2.

Шаг 2. у = с. По формуле (1.1) пересчитываются величины )(xd для всех

неокрашенных вершин: 5}2,5min{)},()(),(min{)( =∞+=+= aсaсdadad ,

7}52,min{)},()(),(min{)( =+∞=+= bсaсdbdbd ,

6}42,7min{)},()(),(min{)( =+=+= dсaсddddd ,

∞=∞+∞=+= }2,min{)},()(),(min{)( tсaсdtdtd .

Поскольку величина 5)( =ad является минимальной из величин

)(ad , )(bd , )(dd и )(td , то окрашивается вершина а и дуга ),( as ,

которая определяет величину )(ad . Текущее дерево кратчайших

путей теперь состоит их дуг ),( cs и ),( as (рис. 1.3).

Рис. 1.3. Текущее дерево кратчайших путей,

состоящее из дуг ),( cs и ),( as

Шаг 3. Поскольку вершина t остается неокрашенной, осуществляется переход к шагу 2.

Шаг 2. у = a. По формуле (1.1) пересчитываются величины )(xd для всех

неокрашенных вершин: 7}35,7min{)},()(),(min{)( =+=+= baaadbdbd ,

6}5,6min{)},()(),(min{)( =∞+=+= daaaddddd ,

5

s

a

c 2

10

Page 11: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

∞=∞+∞=+= }5,min{)},()(),(min{)( taaadtdtd .

Поскольку величина 6)( =dd является минимальной из величин

)(bd , )(dd и )(td , то вершина d окрашивается. Так же окрашивается

и дуга ),( dс , которая определяет величину )(dd .

Текущее дерево кратчайших путей теперь состоит их дуг ),( cs ,

),( as и ),( dc (рис. 1.4).

Рис. 1.4. Текущее дерево кратчайших путей,

состоящее из дуг ),( cs , ),( as и ),( dc

Шаг 3. Поскольку вершина t остается неокрашенной, осуществляется переход к шагу 2.

Шаг 2. у = d. По формуле (1.1) пересчитываются величины )(xd для всех

неокрашенных вершин: 7}6,7min{)},()(),(min{)( =∞+=+= bdaddbdbd ,

8}26,min{)},()(),(min{)( =+∞=+= tdaddtdtd .

Поскольку величина 7)( =bd меньше величины )(td , то вершина

b окрашивается. Так же окрашивается и дуга ),( bс , которая

определяет величину )(bd .

Текущее дерево кратчайших путей теперь состоит их дуг ),( cs ,

),( as , ),( dc и ),( bс (рис. 1.5).

Шаг 3. Поскольку вершина t остается неокрашенной, осуществляется переход к шагу 2.

5

s

a

c d 4 2

11

Page 12: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Рис. 1.5. Текущее дерево кратчайших путей,

состоящее из дуг ),( cs , ),( as , ),( dc и ),( bс

Шаг 2. у = b. По формуле (1.1) пересчитываются величины )(xd для всех

неокрашенных вершин: 8}27,8min{)},()(),(min{)( =+=+= tbabdtdtd .

Итак, вершина t наконец-то окрашивается. Вместе с нею окрашивается дуга ),( td , определяющая величину )(td .

Окончательно построенное дерево кратчайших путей состоит из дуг ),( cs , ),( as , ),( dc , ),( bс и ),( td (рис. 1.6).

Рис. 1.6. Окончательное дерево кратчайших путей

Кратчайший путь, соединяющий вершину s с вершиной t, состоит из дуг ),( cs , ),( dc и ),( td , и имеет длину 2 + 4 + 2 = 8. Это

единственный кратчайший путь между вершинами s и t.

5

s

a b

c d

t 2

4 2

5

5

s

a b

c d 4 2

5

12

Page 13: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

1.2.3. Алгоритм Форда

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

Алгоритм Форда. 1. На шаге 2 алгоритма Дейкстры пересчет величин )(xd

производится для всех вершин, а не только для неокрашенных. Следовательно, числа )(xd могут уменьшаться как для

неокрашенных, так и для окрашенных вершин. 2. Если для некоторой окрашенной вершины х происходит

уменьшение величины )(xd , то с этой вершины и инцидентной ей

окрашенной дуги окраска снимается. 3. Процедура алгоритма заканчивается только тогда, когда все

вершины окрашены и когда после выполнения шага 2 ни одно из чисел )(xd не меняется.

Замечание. Алгоритм Форда не решает задачи при наличии в исходном графе контура, имеющего отрицательную длину. В такой ситуации необходимо учитывать, сколько раз окрашиваются отдельные вершины. Как только число окрашиваний какой-либо вершины достигает величины N, где N – число вершин графа, процедуру алгоритма можно остановить. Если же этого не происходит, то процедура алгоритма Форда заканчивается за конечное число шагов, правильно решая исходную задачу.

Пример 1.2. Применить алгоритм Форда к графу, изображенному на рис. 1.7.

Шаг 1. Окрашивается вершина s. Полагается d(s) = 0, d(a) = ∞ и d(t) = ∞.

13

Page 14: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Рис. 1.7. Пример применения алгоритма Форда

Шаг 2 . у = s. 2}20,min{)},()(),(min{)( =+∞=+= asasdadad ,

1}10,min{)},()(),(min{)( =+∞=+= tsasdtdtd .

Поскольку d(t) меньше, чем d(a), вершина t окрашивается. Вместе с ней окрашивается дуга (s, t), которая и составляет текущее дерево кратчайших путей.

Шаг 3. Поскольку окрашены не все вершины, делается переход к шагу 2.

Шаг 2. у = t. Поскольку из вершины t не исходит ни одной дуги, все числа

d(x) остаются неизменными. Поэтому окрашивается вершина а и дуга (s, а). Дерево кратчайших путей состоит из дуг (s, t) и (s, a).

Шаг 3. Осуществляется возврат к шагу 2 с тем, чтобы попытаться уменьшить числа d(x).

Шаг 2. у = а. 0}22,1min{)},()(),(min{)( =−=+= taaadtdtd ,

0}2,0min{)},()(),(min{)( =∞+=+= saaadsdsd .

Поскольку величина d(t) уменьшается от 1 до 0, с вершины t и дуги (s, t) снимается окраска. Теперь дерево кратчайших путей состоит только из дуги (s, а).

В исходном графе остается неокрашенной только одна вершина – вершина t. Эта вершина окрашивается вместе с дугой (a, t), поскольку в качестве у на данном шаге фигурирует а. Дерево кратчайших путей теперь включает дуги (s, а) и (a, t).

-2

s

a

t

2

1

14

Page 15: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Шаг 3. Осуществляется очередной возврат к шагу 2. Шаг 2 . у = t. Поскольку из вершины t не исходит ни одной дуги, величины

d(x) не меняются. Неокрашенных вершин в исходном графе нет. Шаг 3. Поскольку все вершины графа оказываются

окрашенными и на предыдущем шаге алгоритма ни одну из величин d(x) не удалось уменьшить, процедура алгоритма заканчивается.

Кратчайший путь из вершины s в вершину t состоит из дуг (s, а), (a, t) и имеет длину 2 – 2 = 0.

1.2.4. Алгоритм Флойда

Постановка задачи. Поиск на графе кратчайшего пути между каждой парой вершин.

Вершины исходного графа перенумеровываются целыми числами

от 1 до N. Через mijd обозначается длина кратчайшего пути из

вершины i в вершину j, который в качестве промежуточных может содержать только первые m вершин графа.

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

Если между вершинами i и j не существует ни одного пути

указанного типа, то условно считается, что ∞=mijd .

Величина 0ijd – длина кратчайшего пути из i в j, не имеющего

промежуточных вершин, т. е. длина кратчайшей дуги (i, j).

Полагается, что 0=iid .

Пусть mD – матрица размера N × N, элемент (i, j)-й которой

совпадает с mijd .

15

Page 16: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Если в исходном графе известна длина каждой дуги, то можно

сформировать матрицу 0D .

Цель – определить матрицу ND , представляющую кратчайшие пути между всеми вершинами рассматриваемого графа.

Идея алгоритма. Взять в качестве исходной матрицу 0D , затем

по ней вычислить матрицу 1D , затем по матрице 1D – матрицу 2D и т. д. Процесс повторяется до тех пор, пока не будет вычислена

матрица ND . Предполагается, что известны: а) кратчайший путь из вершины i в вершину m, в котором в

качестве промежуточных допускается использование только первых (m – 1) вершин;

б) кратчайший путь из вершины m в вершину j, в котором в качестве промежуточных допускается использование только первых (m – 1) вершин;

в) кратчайший путь из вершины i в вершину j, в котором в качестве промежуточных допускается использование только первых (m – 1) вершин.

Предположение: исходный граф не может содержать контуров отрицательной длины.

Поскольку по предположению исходный граф не может содержать контуров отрицательной длины, один из двух путей – путь, совпадающий с представленным в пункте в), или путь, являющийся объединением путей из пунктов а) и б), – должен быть кратчайшим путем из вершины i в вершину j, в котором в качестве промежуточных допускается использование только первых m вершин.

Таким образом,

},min{ 111 −−− += mij

mmj

mim

mij dddd . (1.2)

16

Page 17: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Для вычисления элементов матрицы mD необходимо располагать

элементами матрицы 1−mD . Алгоритм Флойда. Шаг 1. Перенумеровать вершины исходного графа целыми

числами от 1 до N. Определить матрицу 0D , задав величину каждого ее элемента (i, j) равной длине кратчайшей дуги, соединяющей вершину i c вершиной j. Если в исходном графе указанные вершины

не соединяются дугами, положить ∞=0ijd . Кроме того, для всех

вершин i положить 00 =iid .

Шаг 2. Для целого m, последовательно принимающего значения

1, 2, 3, .., N, определить по величинам элементов матрицы 1−mD

величины элементов матрицы mD , используя соотношение (1.2). При

определении величины каждого элемента матрицы mD фиксировать соответствующий кратчайший путь.

По окончании данной процедуры величина элемента (i, j)

матрицы ND определяет длину кратчайшего пути, ведущего из вершины i в вершину j.

Пример 1.3. Для графа, изображенного на рис. 1.8, применить алгоритм Флойда.

Рис. 1.8. Пример применения алгоритма Флойда

1

2

3

4

2

4

5 7

2

5

3

3

6

17

Page 18: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Матрица 0D , составленная из длин дуг графа, такова:

∞∞

∞=

0363025047520

0D .

Затем определяются величины элементов матрицы 1D и соответствующие им кратчайшие пути. Соответствующие вычисления приведены в таблице 1.1.

Таблица 1.1. Определение элементов матрицы 1D

},min{ 01

01

01

1jjiij dddd += Соответствующие

пути 00

11111 == dd –

2012

112 == dd (1, 2)

5013

113 == dd (1, 3)

7014

114 == dd (1, 4)

4021

121 == dd (2, 1)

022 =d –

9},54min{},min{ 023

013

021

123 =∞+=+= dddd (2, 1) (1, 3)

5024

124 == dd (2, 4)

2031

131 == dd (3, 1)

4},22min{},min{ 032

012

031

132 =∞+=+= dddd (3, 1) (1, 2)

0133 =d –

3034

134 ==dd (3, 4)

∞== 041

141 dd –

6042

142 ==dd (4, 2)

3043

143 == dd (4, 3)

0144 =d –

18

Page 19: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Тогда матрица 1D имеет вид:

=

036304259047520

1D .

Кратчайшие пути для элементов матрицы 1D :

−−−

−−

)3,4()2,4()4,3()2,1()1,3()1,3()4,2()3,1()1,2()1,2()4,1()3,1()2,1(

.

Аналогичным образом могут быть определены величины

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

Матрица 2D :

=

03610304259047520

2D .

Кратчайшие пути для элементов матрицы 2D :

−−

−−

)3,4()2,4()1,2()2,4()4,3()2,1()1,3()1,3()4,2()3,1()1,2()1,2()4,1()3,1()2,1(

.

19

Page 20: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Матрица 3D :

=

0365304259047520

3D .

Кратчайшие пути для элементов матрицы 3D :

−−

−−

)3,4()2,4()1,3()3,4()4,3()2,1()1,3()1,3()4,2()3,1()1,2()1,2()4,1()3,1()2,1(

.

Матрица 4D :

=

0365304258047520

4D .

Кратчайшие пути для элементов матрицы 4D :

−−

−−

)3,4()2,4()1,3()3,4()4,3()2,1()1,3()1,3()4,2()3,4()4,2()1,2()4,1()3,1()2,1(

.

20

Page 21: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

1.3. Задача о максимальном потоке

1.3.1. Основные понятия

Поток определяет способ пересылки некоторых объектов из одного пункта в другой.

Вершина, из которой начинается перемещение объектов, называется источником s. Вершина, в которой заканчивается перемещение объектов, называется стоком t.

Объекты, которые перемещаются из источника в сток, называются единицами потока.

Если количество единиц потока, которое может проходить по дуге ),( yx ограниченно, то дуга ),( yx имеет ограниченную

пропускную способность. Пусть ),( yxc – максимальная величина пропускной способности,

),( yxa – стоимость перемещения единицы потока по дуге ),( yx ,

),( yxf – поток, т. е. количество единиц проходящих по дуге ),( yx .

1.3.2. Алгоритм поиска увеличивающей цепи

Дуги графа относятся к трем различным категориям: 1) дуги, в которых поток не может ни увеличиваться, ни

уменьшаться (множество таких дуг обозначается через N), 2) дуги, в которых поток может увеличиваться (множество таких

дуг обозначается через I), 3) дуги, в которых поток может уменьшаться (множество таких

дуг обозначается через R). Множеству I принадлежат дуги, в которых поток меньше

пропускной способности. Множеству R принадлежат дуги, по которым уже проходит некоторый поток.

Дуги из множества I называются увеличивающими, а из множества R уменьшающими.

21

Page 22: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Пусть ),( yxi – максимальная величина, на которую может быть

увеличен поток в дуге ),( yx , r(x,y) – максимальная величина, на

которую может быть уменьшен поток в дуге ),( yx .

Тогда ),(),(),( yxfyxсyxi −= , ),(),( yxfyxr = .

Пусть требуется переслать дополнительное количество единиц потока из источника в сток.

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

1) все прямые дуги цепи, имеющие направление от s к t, принадлежат множеству I,

2) все обратные дуги цепи, имеющие направление от t к s, принадлежат множеству R.

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

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

Алгоритм поиска увеличивающей цепи. Шаг 1. Определить состав множеств N, I, R. Дуги множества N из

дальнейшего рассмотрения исключить. Окрасить вершину s. Шаг 2. Окрашивать дуги и вершины в соответствии с

приводимыми ниже правилами до тех пор, пока либо не будет окрашена вершина t, либо окраска новых вершин станет невозможной.

Правила окрашивания вершины у и дуги ),( yx при уже

окрашенной вершине х: 1) если дуга Iyx ∈),( , то окрашивается вершина у и дуга ),( yx ;

2) если дуга Ryx ∈),( , то окрашивается вершина у и дуга ),( xy ;

22

Page 23: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

3) в противном случае окрашивание вершины у и дуги ),( yx не

производится. В случае окрашивания вершины t в сети находится единственная

цепь из s в t, включающая окрашенные дуги. Эта цепь является увеличивающей.

В противном случае, т. е. когда по окончанию процедуры окрашивания вершина t не окрашивается, в сети отсутствуют увеличивающие цепи из s в t.

Пример 1.4. Используя рассмотренный алгоритм, определить увеличивающие цепи в графе, изображенном на рис. 1.9. Рядом с дугами графа указаны буквы N, I, R, устанавливающие принадлежность дуг соответствующим множествам.

Рис. 1.9. Пример применения алгоритма поиска увеличивающей цепи

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

Прежде всего окрашивается вершина s. Из вершины s могут быть окрашены вершина а и дуга (s, а), поскольку Ias ∈),( . Вершина с и

дуга (s, с) не могут быть окрашены, поскольку ( , ) .s c I∉ Это завершает

процедуру окрашивания вершин и дуг из вершины s.

I R

I R

N

R

I

I R

N

R

I

s

a b

c d

t

23

Page 24: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Далее окрашиваются вершины и дуги из вершины а. Вершина b и дуга (а, b) могут быть окрашены, поскольку Iba ∈),( . Вершина с и

дуга (a, c) не могут быть окрашены, поскольку Ica ∉),( . Вершина d и

дуга (d, а) не могут быть окрашены из вершины а, поскольку Rad ∉),( . Это завершает процедуру окрашивания из вершины а.

Далее окрашиваются вершины и дуги из вершины b. Поскольку вершина а уже окрашена, она не рассматривается. Вершина с и дуга (c, b) могут быть окрашены, так как Rbс ∈),( . Вершина d и дуга (b, d),

а также вершина t и дуга (b, t) не могут быть окрашены, так как Idb ∉),( и Itb ∉),( . Это завершает процедуру окрашивания из

вершины b. Далее окрашиваются вершины и дуги из вершины c. Так как

вершины s, а и b уже окрашены, то они не рассматриваются. Вершина d и дуга (с, d) могут быть окрашены, так как Idс ∈),( .

Далее окрашиваются вершины и дуги из вершины d. Так как вершины а, c и b уже окрашены, то они не рассматриваются. Вершина t и дуга (d, t) могут быть окрашены, так как Itd ∈),( .

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

Рис. 1.10. Подграф, состоящий из окрашенных дуг

s

a b

c d

t

24

Page 25: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Из рисунка видно, что увеличивающей цепью из s в t является цепь (s, a), (а, b), (c, b), (c, d), (d, t).

Потоки в прямых дугах найденной цепи, т. е. в дугах (s, а), (а, b), (c, d) и (d, t), могут быть увеличены. В обратной дуге (c, b) поток может быть уменьшен. Последнее подразумевает, что единицы потока, ранее протекавшие по дуге (c, b), «возвращаются» по дуге (c, d), а соответствующая «недостача потока» в вершине b компенсируется за счет единиц потока, пропущенных по дуге (a, b).

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

1.3.3. Постановка задачи о максимальном потоке

Задача о максимальном потоке состоит в поиске способа пересылки максимального количества единиц потока из источника в сток при условии отсутствия превышения пропускных способностей дуг исходного графа.

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

∑ ∑∈ ∈

≠≠=−Xy Xy

txsxxyfyxf ),(0),(),( . (1.3)

Количество единиц потока, проходящих по каждой дуге ),( yx , не

должно превышать пропускной способности этой дуги, т. е. Ayxyxcyxf ∈≤≤ ),(),,(),(0 . (1.4)

25

Page 26: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

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

∑ ∑∈ ∈

=−Xy Xy

vsyfysf ),(),( , (1.5)

∑ ∑∈ ∈

=−Xy Xy

vytftyf ),(),( . (1.6)

Любой поток из источника s в сток t должен удовлетворять всем условиям (1.3) – (1.6).

Задача о максимальном потоке состоит в поиске потока удовлетворяющего условиям (1.3) – (1.6), для которых величина v максимальна.

1.3.4. Алгоритм Форда-Фалкерсона

Идея. Выбирается некоторый начальный поток из s в t с помощью алгоритма поиска увеличивающей цепи. Если он оказывается успешным, то поток вдоль найденной цепи увеличивается до максимально возможного значения. Затем выполняется поиск новой увеличивающей цепи и т. д. Если на каком-то этапе этой процедуры, увеличивающую поток цепь найти не удается, выполнение алгоритма заканчивается, текущий поток из s в t является максимальным.

Алгоритм Форда-Фалкерсона. Шаг 1. Выбрать любой начальный поток из вершины s в t, т. е.

любой набор величин ),( yxf , удовлетворяющих соотношениям

(1.3) – (1.6). Если ни один из начальных потоков из s в t неизвестен, задать

начальный поток, положив для всех дуг ),( yx 0),( =yxf .

Шаг 2. Для всех дуг ),( yx : если ),(),( yxcyxf < , то положить

),(),(),( yxfyxcyxi −= и считать Iyx ∈),( ; если 0),( >yxf , то

положить величину ),(),( yxfyxr = и считать Ryx ∈),( .

26

Page 27: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Шаг 3. На множествах I и R применить к исходному графу алгоритм поиска увеличивающей поток цепи. Если при этом увеличивающую цепь найти не удается, закончить процедуру алгоритма: текущий поток является максимальным.

В противном случае осуществить максимально возможное увеличение потока вдоль найденной увеличивающей цепи. Затем перейти к шагу 2.

Пример 1.5. Применить алгоритм поиска максимального потока к графу, изображенному на рис. 1.11, где рядом с дугами указаны их пропускные способности.

Рис. 1.11. Пример применения алгоритма Форда-Фалкерсона

Шаг 1. Выполнение алгоритма начинается с задания нулевого потока, т. е. для всех дуг ),( yx рассматриваемого графа полагается

0),( =yxf .

Шаг 2. Поскольку для всех дуг оказывается, что ),(),( yxcyxf < ,

то каждая дуга может быть отнесена к множеству I, при этом ),(),(),(),( yxcyxfyxcyxi =−= .

Поскольку для всех дуг 0),( =yxf , на данном шаге ни одну из

дуг нельзя отнести к множеству R. Шаг 3. Используется алгоритм поиска увеличивающей цепи для

определения соответствующей цепи из s в t. На данном этапе выполнения алгоритма на графе имеется несколько таких

2

3

4

4 2

2 s

a

c

t

b

27

Page 28: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

увеличивающих цепей. Предположим, что в используемом на данном шаге алгоритме формируется цепь (s, а), (а, b), (b, t).

Максимальное увеличение потока по этой цепи составляет 2}2,4,2min{)},(),,(),,(min{ ==tbibaiasi .

Итак, поток в каждой из трех дуг полученной цепи увеличивается на две единицы: 2),( =asf , 2),( =baf , 2),( =tbf , 0),( =bsf ,

0),( =caf и 0),( =tcf . После этого осуществляется возврат к шагу 2.

Шаг 2. Для новых значений потока в дугах исходного графа пересчитываются величины ),( yxi и ),( yxr и корректируется состав

множеств I и R.

),,(0),(),,(0),(),,(0),(),,(2),(),,(2),(

),,(2),(

tcctcfcaccafbscbsftbctbfbacbaf

ascasf

<=

<=

<=

==

<=

==

,3),(,),(,4),(,),(,2),(,),(

,),(,2),(,),(

,),(

=∈

=∈

=∈

=∈

tciItccaiIcabsiIbs

ItbbaiIba

Ias

.),(,),(,),(

,2),(,),(,2),(,),(

,,),( 2),(

RtcRcaRbs

tbrRtbbarRba

Ras asr

=∈

=∈

∈ =

Шаг 3. Снова используется алгоритм поиска увеличивающей цепи из s в t, в данном случае увеличивающая поток цепь является единственной – это цепь (s, b), (a, b), (а, с), (с, t).

Максимально возможное увеличение потока вдоль найденной цепи равно

2}3,4,2,2min{)},(),,(),,(),,(min{ ==tcicaibarbsi .

Таким образом, из вершины s в вершину t могут быть переданы дополнительно еще две единицы потока.

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

28

Page 29: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Итак, теперь потоки в дугах рассматриваемого графа будут иметь следующие значения: 2),( =asf , 0),( =baf , 2),( =tbf , 2),( =bsf ,

2),( =caf и 2),( =tcf . Далее осуществляется возврат к шагу 2.

Шаг 2. Для новых значений потока в дугах исходного графа пересчитываются величины ),( yxi и ),( yxr и корректируется состав

множеств I и R.

),,(2),(),,(2),(),,(2),(),,(2),(),,(0),(),,(2),(

tcctcfcaccafbscbsftbctbfbacbafascasf

<=

<=

==

==

<=

==

,1),(,),(,2),(,),(

,),(,),(

,4),(,),(),(

=∈

=∈

=∈

tсiItccaiIca

IbsItb

baiIbaIas

.2),(,),(,2),(,),(,2),(,),(,2),(,),(

,),(,2),(,),(

=∈

=∈

=∈

=∈

=∈

tcrRtccarRcabsrRbstbrRtb

RbaasrRas

Шаг 3. Вновь используется алгоритм поиска увеличивающей цепи из s в t. При этом обнаруживается, что при текущих значениях потока в дугах графа в нем не существует ни одной увеличивающей цепи. Из вершины s не удается окрасить ни одну вершину.

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

Итак, в рассмотренном примере из s в t может быть пропущено 4 единицы потока.

1.4. Задача поиска потока минимальной стоимости

1.4.1. Постановка задачи

Задача. Организация пересылки с минимальными затратами заданного количества v единиц потока из источника в сток в графе с заданными на дугах пропускными способностями и стоимостями прохождения одной единицы потока.

29

Page 30: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Пусть ),( yxa – стоимость прохождения единицы потока по дуге

),( yx . Предполагается, что каждая из величин ),( yxa является

целочисленной. 0),( ≥yxf – количество единиц потока, проходящих

по дуге ),( yx . v – количество единиц потока, которое нужно

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

представлена следующим образом. Найти

),(),(),(min

yxyxfyxa (1.7)

при ограничениях [ ] vsyfysf

y=−∑ ),(),( , (1.8)

[ ] ),(,0),(),( txsxxyfyxfy

≠≠=−∑ , (1.9)

[ ] vtyfytfy

−=−∑ ),(),( , (1.10)

),(),(0 yxcyxf ≤≤ для всех yx, . (1.11)

Сумма, входящая в соотношение (1.7), представляет собой общую стоимость потока. Уравнение (1.8) показывает, что чистый суммарный поток из вершины s должен быть равен v. Уравнение (1.9) показывает, что чистый поток из любой вершины x, не совпадающей ни с источником s, ни со стоком t, должен быть равен 0. Уравнение (1.10) показывает, что чистый поток из стока t равен (–v). Условие (1.11) описывает требование, согласно которому поток в каждой дуге должен иметь величину, находящуюся в интервале от 0 до значения пропускной способности данной дуги.

Соотношение (1.7) можно заменить следующим:

− ∑),(

),(),(maxyx

yxfyxap , (1.12)

30

Page 31: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

где p – достаточно большое число. Если интерпретировать величину р как доход, получаемый в

результате пересылки одной единицы потока из s в t, то величину, определяемую соотношением (1.12), можно интерпретировать как максимально возможный чистый доход от пересылки v единиц потока из s в t за вычетом стоимости их пересылки через исходную сеть.

Идея решения. Вначале из s в t пересылаются как можно больше единиц потока, полная стоимость прохождения по сети каждой из которых равна 0. Затем из s в t пересылается как можно больше единиц потока, полная стоимость прохождения по сети каждой из которых составляет единицу. Далее процедура выполнения алгоритма продолжается аналогичным образом, при этом полная стоимость прохождения единицы потока каждый раз увеличивается на единицу. Работа алгоритма заканчивается либо когда через сеть удается пропустить заданное число v единиц потока, либо когда ни одной дополнительной единицы потока по сети пропустить нельзя.

Иначе говоря, в алгоритме поиска потока минимальной стоимости многократно решается задача, задаваемая соотношениями (1.7) – (1.12) сначала для р = 0, затем р = 1, затем р = 2 и т. д.

1.4.2. Алгоритм поиска потока минимальной стоимости

Шаг 1. Задание начальных условий. Принять значения ),( yxf в каждой дуге ),( yx равной 0, р(х) = 0

для всех вершин х. Шаг 2. Выявление дуг, в которых допускается изменение потока. Сформировать множество I, включив в него дуги ),( yx , для

которых ),()()( yxaxpyp =− и ),(),( yxcyxf < .

Сформировать множество R, включив в него дуги, для которых

31

Page 32: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

),()()( yxaxpyp =− и 0),( >yxf .

Сформировать множество N, включив в него дуги, не вошедшие ни в I, ни в R.

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

Следовательно, потоки могут изменяться только в тех дугах, для которых выполняется соотношение

),()()( yxaxpyp =− .

Шаг 3. Изменение потока. Применить алгоритм поиска максимального потока к исходной

сети при найденном на шаге 2 распределении ее дуг по множествам I, R и N.

Выполнение данного алгоритма заканчивается либо тогда, когда оказывается, что из s в t уже передано v единиц потока, либо тогда, когда выясняется, что при текущем разбиении дуг по множествам I, R и N полученный поток максимален.

В первом случае, закончить выполнение процедуры алгоритма: полученный поток заданной суммарной величины v является потоком минимальной стоимости.

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

Шаг 4. Изменение вершинных чисел. Исходной информацией для выполнения данного шага являются

результаты окрашивания вершин в алгоритме поиска увеличивающей цепи. Увеличить на +1 вершинные числа р(х) для всех неокрашенных вершин, затем вернуться к шагу 2.

32

Page 33: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Пример 1.6. Применить описанный алгоритм для поиска потока минимальной стоимости на графе, изображенном на рис. 1.12.

Первое число у каждой дуги представляет собой стоимость, а второе – ее пропускную способность.

Рис. 1.12. Пример применения алгоритма поиска потока минимальной стоимости

Шаг 1. Первоначально для всех дуг ),( yx рассматриваемого

графа полагается 0),( =yxf и все вершинные числа р(х) = 0.

Все вершины являются неокрашенными. Шаг 2. Поскольку для всех дуг не выполняется условие

),()()( yxaxpyp =− , то на данном этапе все дуги будут принадлежать

множеству N. Шаг 3. Используется алгоритм поиска максимального потока к

исходной сети при текущем распределении дуг по множествам I, R и N. Окрашивается вершина s. Так как все дуги принадлежат множеству N, то увеличивающую поток цепь найти не удается, осуществляется переход к шагу 4.

Шаг 4. Вершинные числа р(х) увеличиваются на единицу для всех неокрашенных вершин a, b и t. Осуществляется возврат к шагу 2.

Шаг 2. Формируются множества I, R и N. Для этого для каждой дуги проверяется выполнение условия ),()()( yxaxpyp =− .

1,4

2,1 2,3 4,2

1,2

s

a

t

b

33

Page 34: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

RasIasascasfasaspap ∉∈⇒<===−=− ),(,),(),(0),(),,(101)()( , ,),(),(0),(),,(101)()( Nbsbscbsfbsaspbp ∈⇒<=≠=−=− ,),(),(0),(),,(011)()( Nababcabfababpap ∈⇒<=≠=−=−

,),(),(0),(),,(011)()( Ntatactaftaaaptp ∈⇒<=≠=−=−

Ntbtbctbftbabptp ∈⇒<=≠=−=− ),(),(0),(),,(011)()( .

Шаг 3. Продолжается алгоритм поиска максимального потока к исходной сети при текущем распределении дуг по множествам I, R и N. Из вершины s окрашивается вершина a и дуга (s, a). Так как все остальные дуги принадлежат множеству N, то увеличивающую поток цепь найти не удается, осуществляется переход к шагу 4.

Шаг 4. Для всех неокрашенных вершин на единицу увеличиваются числа р(х), т. е. р(s) = 0, р(a) = 1, р(b) = 1 + 1 = 2, р(t) = 1 + 1 = 2. Осуществляется возврат к шагу 2.

Шаг 2. Формируются множества I, R и N. Для каждой дуги проверяется выполнение условия ),()()( yxaxpyp =− .

RasIasascasfasaspap ∉∈⇒<===−=− ),(,),(),(0),(),,(101)()( ,

RbsIbsbscbsfbsaspbp ∉∈⇒<===−=− ),(,),(),(0),(),,(202)()( , ,),(),(0),(),,(121)()( Nababcabfababpap ∈⇒<=≠−=−=−

RtaItatactaftaaaptp ∉∈⇒<===−=− ),(,),(),(0),(),,(112)()( ,

Ntbtbctbftbabptp ∈⇒<=≠=−=− ),(),(0),(),,(022)()( .

Шаг 3. Продолжается алгоритм поиска максимального потока к исходной сети при текущем распределении дуг по множествам I, R и N. Из вершины a окрашивается вершина t и дуга (a, t). Так как вершина t окрашена, то алгоритм поиска увеличивающей поток цепи заканчивается, формируемая цепь имеет вид (s, а), (a, t).

Максимальное увеличение потока по этой цепи составляет 2}4,2min{)},(),,(min{ ==taiasi , т. е. посылается две единицы потока

из s в t по пути (s, a), (a, t) стоимостью 2·(1+1) = 4 единицы.

34

Page 35: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

В результате 2),( =asf , 2),( =taf . Окраска со всех вершин

снимается. Осуществляется возврат к шагу 2. Шаг 2. Формируются множества I, R и N.

RasIasascasfasaspap ∈∉⇒====−=− ),(,),(),(2),(),,(101)()( ,

RbsIbsbscbsfbsaspbp ∉∈⇒<===−=− ),(,),(),(0),(),,(202)()( , ,),(),(0),(),,(121)()( Nababcabfababpap ∈⇒<=≠−=−=−

RtaItatactaftaaaptp ∈∈⇒<===−=− ),(,),(),(2),(),,(112)()( ,

Ntbtbctbftbabptp ∈⇒<=≠=−=− ),(),(0),(),,(022)()( .

Шаг 3. Продолжается алгоритм поиска максимального потока к исходной сети при текущем распределении дуг по множествам I, R и N. Окрашивается вершина s. Из вершины s окрашивается вершина b и дуга (s, b). Из вершины b не удается окрасить ни одну вершину, т. е. увеличивающую поток цепь найти не удается. Осуществляется переход к шагу 4.

Шаг 4. Для всех неокрашенных вершин на единицу увеличиваются числа р(х), т. е. р(s) = 0, р(a) = 1 + 1 = 2, р(b) = 2, р(t) = 2 + 1 = 3. Осуществляется возврат к шагу 2.

Шаг 2. Формируются множества I, R и N.

Nasascasfasaspap ∈⇒==≠=−=− ),(),(2),(),,(202)()( ,

RbsIbsbscbsfbsaspbp ∉∈⇒<===−=− ),(,),(),(0),(),,(202)()( , ,),(),(0),(),,(022)()( Nababcabfababpap ∈⇒<=≠=−=−

RtaItatactaftaaaptp ∈∈⇒<===−=− ),(,),(),(2),(),,(123)()( ,

Ntbtbctbftbabptp ∈⇒<=≠=−=− ),(),(0),(),,(123)()( .

Шаг 3. Продолжается алгоритм поиска максимального потока к исходной сети при текущем распределении дуг по множествам I, R и N. Из вершины b не удается окрасить ни одну вершину, т. е.

35

Page 36: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

увеличивающую поток цепь найти не удается. Осуществляется переход к шагу 4.

Шаг 4. Для всех неокрашенных вершин на единицу увеличиваются числа р(х), т. е. р(s) = 0, р(a) = 2 + 1 = 3, р(b) = 2, р(t) = 3 + 1 = 4. Осуществляется возврат к шагу 2.

Шаг 2. Формируются множества I, R и N.

Nasascasfasaspap ∈⇒==≠=−=− ),(),(2),(),,(303)()( ,

RbsIbsbscbsfbsaspbp ∉∈⇒<===−=− ),(,),(),(0),(),,(202)()( , ,),(),(0),(),,(123)()( Nababcabfababpap ∈⇒<=≠=−=−

RtaItatactaftaaaptp ∈∈⇒<===−=− ),(,),(),(2),(),,(134)()( ,

Ntbtbctbftbabptp ∈⇒<=≠=−=− ),(),(0),(),,(224)()( .

Шаг 3. Продолжается алгоритм поиска максимального потока к исходной сети при текущем распределении дуг по множествам I, R и N. Из вершины b не удается окрасить ни одну вершину, т. е. увеличивающую поток цепь найти не удается. Осуществляется переход к шагу 4.

Шаг 4. Для всех неокрашенных вершин на единицу увеличиваются числа р(х), т. е. р(s) = 0, р(a) = 3 + 1 = 4, р(b) = 2, р(t) = 4 + 1 = 5. Осуществляется возврат к шагу 2.

Шаг 2. Формируются множества I, R и N.

Nasascasfasaspap ∈⇒==≠=−=− ),(),(2),(),,(404)()( ,

RbsIbsbscbsfbsaspbp ∉∈⇒<===−=− ),(,),(),(0),(),,(202)()( , ,),(,),(),(0),(),,(224)()( RabIababcabfababpap ∉∈⇒<===−=−

RtaItatactaftaaaptp ∈∈⇒<===−=− ),(,),(),(2),(),,(145)()( ,

Ntbtbctbftbabptp ∈⇒<=≠=−=− ),(),(0),(),,(325)()( .

Шаг 3. Продолжается алгоритм поиска максимального потока к исходной сети при текущем распределении дуг по множествам I, R и

36

Page 37: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

N. Из вершины b окрашивается вершина a и дуга (b, a). Из вершины a окрашивается вершина t и дуга (a, t). Так как вершина t окрашена, то алгоритм поиска увеличивающей поток цепи заканчивается, формируемая цепь имеет вид (s, b), (b, a), (a, t).

Максимальное увеличение потока по этой цепи составляет 1}2,1,3min{)},(),(),,(min{ ==taiabibsi , т. е. посылается одна единица

потока из s в t по пути (s, b), (b, a), (a, t) стоимостью 1·(2+2+1) = 5 единиц.

В результате 1),( =bsf , 1),( =abf , 312),( =+=taf . Окраска со

всех вершин снимается. Осуществляется возврат к шагу 2. Шаг 2. Формируются множества I, R и N.

Nasascasfasaspap ∈⇒==≠=−=− ),(),(2),(),,(404)()( ,

RbsIbsbscbsfbsaspbp ∈∈⇒<===−=− ),(,),(),(1),(),,(202)()( , ,),(,),(),(1),(),,(224)()( RabIababcabfababpap ∈∉⇒====−=−

RtaItatactaftaaaptp ∈∈⇒<===−=− ),(,),(),(3),(),,(145)()( ,

Ntbtbctbftbabptp ∈⇒<=≠=−=− ),(),(0),(),,(325)()( .

Шаг 3. Продолжается алгоритм поиска максимального потока к исходной сети при текущем распределении дуг по множествам I, R и N. Окрашивается вершина s. Из вершины s окрашивается вершина b и дуга (s, b). Из вершины b не удается окрасить ни одну вершину, т. е. увеличивающую поток цепь найти не удается. Осуществляется переход к шагу 4.

Шаг 4. Для всех неокрашенных вершин на единицу увеличиваются числа р(х), т. е. р(s) = 0, р(a) = 4 + 1 = 5, р(b) = 2, р(t) = 5 + 1 = 6. Осуществляется возврат к шагу 2.

Шаг 2. Формируются множества I, R и N.

Nasascasfasaspap ∈⇒==≠=−=− ),(),(2),(),,(505)()( ,

RbsIbsbscbsfbsaspbp ∈∈⇒<===−=− ),(,),(),(1),(),,(202)()( ,

37

Page 38: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

,),(),(1),(),,(325)()( Nababcabfababpap ∈⇒==≠=−=−

RtaItatactaftaaaptp ∈∈⇒<===−=− ),(,),(),(3),(),,(156)()( ,

RtbItbtbctbftbabptp ∉∈⇒<===−=− ),(,),(),(0),(),,(426)()( .

Шаг 3. Продолжается алгоритм поиска максимального потока к исходной сети при текущем распределении дуг по множествам I, R и N. Из вершины b окрашивается вершина t и дуга (b, t). Так как вершина t окрашена, то алгоритм поиска увеличивающей поток цепи заканчивается, формируемая цепь имеет вид (s, b), (b, t).

Максимальное увеличение потока по этой цепи составляет 2}2,2min{)},(),,(min{ ==tbibsi , т. е. посылается две единицы потока

из s в t по пути (s, b), (b, t) стоимостью 2·(2+4) = 12 единиц. В результате 321),( =+=bsf , 2),( =tbf . Окраска со всех

вершин снимается. Осуществляется возврат к шагу 2. Шаг 2. Формируются множества I, R и N.

Nasascasfasaspap ∈⇒==≠=−=− ),(),(2),(),,(505)()( ,

RbsIbsbscbsfbsaspbp ∈∉⇒====−=− ),(,),(),(3),(),,(202)()( , ,),(),(1),(),,(325)()( Nababcabfababpap ∈⇒==≠=−=−

RtaItatactaftaaaptp ∈∈⇒<===−=− ),(,),(),(3),(),,(156)()( ,

RtbItbtbctbftbabptp ∈∉⇒====−=− ),(,),(),(2),(),,(426)()( .

Шаг 3. Продолжается алгоритм поиска максимального потока к исходной сети при текущем распределении дуг по множествам I, R и N. Окрашивается вершина s.

Так как дуги ),( as и ),( bs являются насыщенными, т. е. по ним

уже проходит максимальное количество единиц потока, то ни одна дополнительная единица потока не может быть передана из s в t.

Следовательно, полученный поток из пяти единиц является максимальным потоком, имеющим минимальную стоимость прохождения по исходному графу, равную 4 + 5 + 12 = 21 единице.

38

Page 39: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

1.5. Задача коммивояжера

1.5.1. Формулировка задачи

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

Задача коммивояжера может быть сформулирована как задача на графе в следующей постановке: построить граф ),( AXG = , вершины

которого соответствуют городам в зоне коммивояжера, а дуги соединяют пары городов.

Пусть 0),( ≥yxa длина каждой дуги Ayx ∈),( равна расстоянию,

стоимости или времени. Контур, включающий каждую вершину графа G хотя бы один

раз, называется маршрутом коммивояжера. Контур, включающий каждую вершину графа G ровно один раз, называется гамильтоновым контуром.

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

Теорема. Если для каждой пары вершин ),( yx графа G

выполняется условие ),(),(),( yzazxayxa +≤ для всех yzxz ≠≠ , , (1.13)

то гамильтонов контур является решением общей задачи коммивояжера на графе G .

Данное условие говорит о том, что расстояние непосредственно от вершины x до вершины y никогда не превышает расстояния от

вершины x до вершины y через любую другую вершину .z

Это условие называется неравенством треугольника.

39

Page 40: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Если граф G не удовлетворяет неравенству треугольника, то следует заменить длину ),( yxa каждой дуги ),( yx , не

удовлетворяющей этому неравенству, длиной кратчайшего пути от вершины x к вершине y .

1.5.2. Условия существования гамильтонова контура

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

Граф называется сильно связным, если в нем для любых вершин yx, существует путь от вершины x к вершине y .

Подмножество вершин ix некоторого графа называется сильно

связным, если для любых пар вершин ixx∈ и ixy∈ существует путь

из вершины x в вершину y и ix не является подмножеством никакого

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

называется сильно связной компонентой исходного графа.

Пусть через )(xD− обозначено множество всех таких вершин x

графа G , что Ayx ∈),( , т. е. множество всех вершин «падающих на»

вершину x . Пусть через )(xD+ обозначено множество всех таких

вершин y графа G , что Ayx ∈),( , т. е. множество всех вершин

«падающих из» вершины x .

Вершины, принадлежащие множествам )(xD− и )(xD+ ,

называются соответственно предшественниками и преемниками вершины x .

Пусть )()()( xDxDxD +− ∪= , )()( xDxd −− = , )()( xDxd ++ = ,

)()( xDxd = , n – число вершин в графе G .

40

Page 41: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Теорема Гуйя-Ури. Если граф ),( AXG = удовлетворяет

условиям: 1) граф ),( AXG = сильно связный,

2) nxd ≥)( для всех Xx∈ ,

то он содержит гамильтонов контур. На практике условие 1) проверяется применением к каждой паре

вершин алгоритма Флойда для построения кратчайших путей. Условие 1) выполняется, если для каждой пары вершин в графе существует связывающий их путь конечной длины.

Условие 2) легко проверяется подсчетом числа дуг, инцидентных каждой вершине графа.

1.5.3. Методы расчета нижних границ оптимальных гамильтоновых контуров

Дуги, входящие в гамильтонов контур, должны обладать следующими свойствами:

1) каждая вершина должна быть инцидентна двум дугам, одна из которых направлена к ней, а другая из нее;

2) все дуги должны быть связаны. Дуги, входящие в любое множество не связанных контуров,

содержащих все вершины, обладают свойством 1. Любое связанное множество дуг обладает свойством 2. И только гамильтонов контур обладает свойствами 1 и 2 одновременно.

Рассматривается семейство F всех подмножеств множества A, обладающих свойством 1. Предполагается, что F не пусто. Каждый гамильтонов контур входит в F. Таким образом, нижней границей длины оптимального гамильтонова контура является наименьшее значение суммы длин дуг, образующих подмножества в F. Через 1L

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

41

Page 42: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Алгоритм вычисления нижней границы. Шаг 1. Построить граф )','(' AXG = . Для этого каждой вершине

Xx∈ поставить в соответствие пару вершин '1 Xx ∈ и '2 Xx ∈ .

Каждой дуге Ayx ∈),( поставить в соответствие промежуточную

дугу '),( 21 Ayx ∈ . Пусть каждая промежуточная дуга имеет

пропускную способность, равную 1, и стоимость, равную длине соответствующей дуги в A .

Ввести вершину-источник s и вершину-сток t и соединить вершину s, направленными из нее дугами ),( 1xs с каждой из вершин

'1 Xx ∈ . Соединить вершину t с каждой из вершин '2 Xx ∈

направленными в нее дугами ),( 2 tx . Пусть каждая из дуг ),( 1xs и

),( 2 tx для всех '1 Xx ∈ и '2 Xx ∈ имеет пропускную способность,

равную единице, и нулевую стоимость. Шаг 2. Определить на графе 'G максимально возможный поток

из s в t, имеющий минимальную общую стоимость с помощью алгоритма построения потока минимальной стоимости. Получить 1L

нижнюю границу длины оптимального гамильтонова контура в графе G , равную стоимости полученного потока.

Пример 1.7. Вычислить нижнюю границу длины оптимального гамильтонова контура в графе G , представленном на рис. 1.13.

Рис. 1.13. Пример применения алгоритма вычисления нижней границы

1 1

1

1 3

3

a

b

c

d

42

Page 43: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Шаг 1. Строится граф )','(' AXG = . Вводится вершина-источник s

и вершина-сток t. Каждой вершине графа G ставится в соответствие пара вершин: a – 1a и 2a , b – 1b и 2b , c – 1c и 2c , d – 1d и 2d .

Каждой дуге графа G ставятся в соответствие промежуточные дуги: ),( ba – ),( 21 ba , ),( da – ),( 21 da , ),( cb – ),( 21 cb , ),( bc – ),( 21 bc ,

),( dc – ),( 21 dc , ),( ad – ),( 21 ad .

Пусть каждая промежуточная дуга имеет пропускную способность, равную 1, и стоимость, равную длине соответствующей дуги в A .

Соединяется вершина s направленными из нее дугами с каждой из вершин 1a , 1b , 1c и 1d . Далее соединяется вершина t с каждой из

вершин 2a , 2b , 2c и 2d направленными в нее дугами. Пусть каждая из

дуг ),( 1xs и ),( 2 tx для всех '1 Xx ∈ и '2 Xx ∈ имеет пропускную

способность, равную единице, и нулевую стоимость. На рис. 1.14 показан полученный граф )','(' AXG = .

Рис. 1.14. Граф 'G

43

Page 44: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

На графе 'G указаны стоимости дуг, пропускные способности всех дуг равны единице.

Из источника s в t в графе 'G может протекать не более четырех единиц потока, так как пропускная способность всех направленных к стоку дуг равна четырем. При этом стоимость каждой промежуточной дуги не ниже единицы. Поскольку граф 'G имеет небольшую размерность, поток минимальной стоимости удобнее найти посредством простого просмотра, а не с помощью алгоритма построения потока минимальной стоимости.

Поток минимальной стоимости дает следующие характеристики:

Количество Путь Стоимость 1 единица ),(),,(),,( 2211 tddaas 0 + 1 + 0 = 1

1 единица ),(),,(),,( 2211 tccbbs 0 + 1 + 0 = 1

1 единица ),(),,(),,( 2211 tbbccs 0 + 1 + 0 = 1

1 единица ),(),,(),,( 2211 taadds 0 + 1 + 0 = 1

Суммарная стоимость этого потока равна четырем, следовательно, 41 =L . Дугами в графе G , соответствующими дугам с

ненулевым потоком в графе 'G , являются ),( da , ),( ad , ),( cb , ),( bc .

Вершины в этих контурах обладают свойством 1, но не обладают свойством 2, поэтому множество этих дуг входит в F, но не образуют гамильтонов контур.

1.5.4. Метод ветвей и границ

Для получения нижней границы 1L длины гамильтонова контура

наименьшей длины на графе ),( AXG = может быть использован

алгоритм построения потока минимальной стоимости. Если полученный с помощью этого алгоритма оптимальный поток

44

Page 45: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

соответствует некоторому одному контуру на графе G , то этот контур является оптимальным гамильтоновым контуром, и на этом решение задачи коммивояжера заканчивается.

Однако, если полученный оптимальный поток будет соответствовать нескольким несвязным контурам, то произвольно выбирается один контур и через

},...,,{ 21 kc xxxX =

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

cXx ∈1 , перемещается либо в вершину, принадлежащую множеству

cX , либо в вершину, не входящую в множество cX . Если он пришел

в вершину cXx∈ , то из нее он снова перемещается либо в вершину

из множества cX , либо в вершину, не принадлежащую cX , и т. д.

Таким образом, оптимальное решение должно быть представлено по крайней мере в одном из следующих графов:

1. Графе 1G , из которого исключены все дуги ),( 1 yx , cXy∈ .

2. Графе 2G , из которого исключены все дуги ),( 1 yx , cXy∉ и

дуги ),( 2 zx , cXz∈ .

3. Графе 3G , из которого исключены все дуги ),( 1 yx , ),( 2 yx ,

cXy∉ и дуги ),( 3 zx , cXz∈ .

… k. Графе kG , из которого исключены все дуги ),( 1 yx , ),( 2 yx , …,

),( 1 yxk− , cXy∉ и дуги ),( zxk , cXz∈ .

Исключение дуги из графа эквивалентно приписыванию ей бесконечной длины.

Поскольку длина каждой дуги в графе iG ki ,...,2,1= не меньше

длины соответствующей дуги в графе G , длина оптимального гамильтонова контура в графе iG не может быть меньше длины

оптимального гамильтонова контура в графе G . Более того,

45

Page 46: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

оптимальное решение на графе G является также оптимальным решением, по крайней мере, на одном из графов 1G , 2G ,..., kG .

Далее определяется с помощью алгоритма нахождения потока минимальной стоимости нижняя граница 1L длины оптимального

гамильтонова контура для каждого из графов 1G , 2G ,..., kG : )( 11 GL ,

)( 21 GL ,..., )(1 kGL .

Если полученный для некоторого графа cG оптимальный поток

протекает по дугам, образующим гамильтонов контур, то в дальнейшем не рассматривается никакой граф jG , для которого

)()( 11 cj GLGL ≥ , так как )(1 cGL является достижимой нижней

границей. Таким путем некоторые из графов 1G , 2G ,..., kG

исключаются из дальнейшего рассмотрения. Для каждого из графов iG , для которых нижняя граница имеет

меньшее значение, чем )(1 cGL , повторяется описанная выше

процедура. При этом граф iG заменяется графами 1iG , 2iG ,... .

На каждом из графов ijG вычисляется нижняя граница )(1 ijGL длины

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

В конце концов, один граф, в котором найден гамильтонов контур минимальной длины, исключит из дальнейшего рассмотрения все оставшиеся графы. Этот гамильтонов контур должен быть гамильтоновым контуром минимальной длины в исходном графе G .

Рассмотренный метод решения задачи коммивояжера называется методом ветвей и границ.

Пример 1.8. Найти методом ветвей и границ оптимальный гамильтонов контур в графе, изображенном на рис. 1.15.

46

Page 47: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Рис. 1.15. Пример использования метода ветвей и границ для нахождения

оптимального гамильтонова контура

В результате использования алгоритма нахождения потока минимальной стоимости на графе G получается поток, соответствующий двум контурам (a, b), (b, c), (с, а) и (f, е), (е, d), (d, f), изображенным на рис. 1.16.

Общая длина этих двух контуров равна 11. Таким образом, 11)(1 =GL .

Рис. 1.16. Контуры минимальной стоимости графа G

2

2

1 2

2 2

a

e

d f

b

c

2

2

1 2

5 4 9 2 5 2

2 2

a

e

d f

b

c

47

Page 48: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Используя вершины },,{ cbaX c = первого контура, строятся три

графа aG , bG , cG . Граф aG (рис. 1.17) получается путем исключения

из графа G дуги, направленной из а в b или с, т. е. дуги (а, b).

Рис. 1.17. Граф aG

Граф bG (рис. 1.18) получается путем исключения из графа G

всех дуг, направленных из а в d, e, f, и всех дуг, направленных из b в а и с, т. е. дуг (a, d) и (b, с).

Рис. 1.18. Граф bG

2 2

2

2

4 9 2 5 2

2 2

a

e

d f

b

c

2

2

1 2

5 4 9 2 5 2

2

a

e

d f

b

c

48

Page 49: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Граф сG (рис. 1.19) получается путем исключения из графа G

всех дуг, направленных из а и b в d, e, f, и всех дуг, направленных из с в а и b, т. е. дуг (a, d), (b, e) и (e, а).

Рис. 1.19. Граф сG

Использование алгоритма нахождения потока минимальной стоимости приводит к следующим контурам и нижним границам длины оптимальных гамильтоновых контуров в графах aG , bG , сG .

Граф Контур Нижняя граница

aG

bG

сG

),( da , ),( fd , ),( ef , ),( be , ),( cb , ),( ac

),( ba , ),( eb , ),( de , ),( fd , ),( сf , ),( aс

),( ba , ),( cb , ),( fc , ),( ef , ),( de , ),( ad

21)(1 =aGL

12)(1 =bGL

16)(1 =cGL

Так как 12)(1 =bGL меньше, чем 21)(1 =aGL и 16)(1 =cGL , то

графы aG и сG могут в дальнейшем не рассматриваться.

Следовательно, гамильтонов контур ),( ba , ),( eb , ),( de , ),( fd ,

),( сf , ),( aс является оптимальным гамильтоновым контуром в

исходном графе G и является решением задачи коммивояжера.

2

1 2

4 9 5 2

2 2

a

e

d f

b

c

49

Page 50: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

1.6. Задачи и упражнения

1. В графе, изображенном на рис. 1.20, найти кратчайший путь из вершины s в вершину t, используя алгоритм Дейкстры.

Рис. 1.20. Граф к задаче 1

2. В графе, изображенном на рис. 1.21, найти кратчайший путь из вершины s в вершину t, используя алгоритм Дейкстры. Значения длин дуг приведены в таблице 1.2.

Рис. 1.21. Граф к задаче 2

Таблица 1.2. Длины дуг графа Дуга sa se ab ac ad ed ef eg bc dc df gf ct ft Вес 3 1 4 2 5 3 2 4 5 1 3 2 4 3

3. Для графа, изображенного на рис. 1.22, найти кратчайшие пути между всеми парами вершин, используя алгоритм Флойда.

1

s

a b

c d

t

3 3

2 4

4

2

5

2 1

s

a с

e f

t

b

g

d

50

Page 51: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Рис. 1.22. Граф к задаче 3

4. Составить список всех увеличивающих поток цепей из s в t в графе (рис. 1.23) (рядом с дугами указаны текущие значения потока и пропускные способности).

Рис. 1.23. Граф к задаче 4

5. Составить список всех увеличивающих поток цепей из s в t в графе (рис. 1.24). Рядом с дугами графа указаны буквы N, I, R, устанавливающие принадлежность дуг соответствующим множествам.

Рис. 1.24. Граф к задаче 5

1

2

3

4

1

4

5 2

2

3

4

2

4

I R

I R

I

N

IR

I

I

R

I

s

a b

c d

t

1,2 1,1

2,4

2,3

1,3 0,2

1,2

s

a

с

b

t

51

Page 52: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

6. Используя алгоритм Форда-Фалкерсона, найти максимальный поток на графе, изображенном на рис. 1.25, рядом с дугами указаны их пропускные способности.

Рис. 1.25. Граф к задаче 6

7. Используя алгоритм Форда-Фалкерсона, найти максимальный

поток на графе, изображенном на рис. 1.26, рядом с дугами указаны их пропускные способности.

Рис. 1.26. Граф к задаче 7

8. Построить поток минимальной стоимости из вершины из s в

вершину t в графе (рис. 1.27), используя алгоритм поиска потока минимальной стоимости.

Рядом с дугами указаны стоимости прохождения единицы потока, пропускные способности всех дуг равны 1.

3 3

3

2 4 1 s

c

t a b

3

3

2 4

2

3

4

4 2

2

s

d

b

t

e

a

c

52

Page 53: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Рис. 1.27. Граф к задаче 8

9. Найти методом ветвей и границ оптимальное решение задачи коммивояжера на графе (рис. 1.28). Значения длин дуг приведены в таблице 1.3.

Рис. 1.28. Граф к задаче 9

Таблица 1.3. Длины дуг графа

Дуга ab ae ba bc be bf cb cd dc df ea ed ef fa fc fd Вес 1 2 2 1 1 4 2 1 2 2 1 3 10 6 1 3

2

4 5

5

3 2 1 4

1 2 1

s

d

b t

a

e

f c

a

f

b d

e

c

53

Page 54: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

2. ЭЛЕМЕНТЫ ТЕОРИИ КОДИРОВАНИЯ

2.1. Основные понятия

Алфавит – конечное множество А },...,,{ 21 naaa= , элементами

которого являются буквы ),...,2,1( niai = . Количество элементов

алфавита – мощность |А| = n. Слово над алфавитом А – произвольная непустая

последовательность букв kaaaw ...21= , где ∈ia А. Число k называется

длиной слова и обозначается )(wl . Пустое слово обозначается Λ,

0)( =Λl .

W = W(A) – множество всех слов над алфавитом А. Подмножество Wʹ = Wʹ(A) W⊂ называется множеством сообщений над алфавитом А.

Пусть задан алфавит B },...,,{ 21 qbbb= .

Кодирование – процесс преобразований слов над одним алфавитом в слова над другим алфавитом.

Отображение →':WF W(B) называется кодовым отображением, слово )(wF – кодом слова w , т. е. )(wFw→ .

Пусть задано некоторое соответствие Σ: А → W(B), ставящее каждому символу ia исходного алфавита вполне определенное слово

∈iB W(B), ni ,...,2,1= . Это соответствие называется схемой

кодирования. Кодовое отображение, задаваемое правилом

kiiii BBBaF ...:21

→ , (2.1)

называется алфавитным кодированием. Слова iB ( ni ,...,2,1= ) –

элементы кода. Декодирование – обратный процесс кодированию,

восстанавливающий исходное сообщение по его коду.

54

Page 55: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Декодирование слова Σ∈WB происходит следующим образом:

слово B раскладывается на элементарные коды kiii BBBB ...

21= , а

затем каждый элементарный код заменяется соответствующим символом исходного алфавита ia .

2.2. Проблема однозначности декодирования

Задана схема алфавитного кодирования для алфавитов А и В

nn Ba

Ba

−Σ...

: 11

, (2.2)

и полагается Wʹ(A) = W(A), т. е. источник сообщений порождает множество всех слов в алфавите A.

Алфавитное кодирование порождает отображение множества W(A) в множество W(B). Пусть WΣ(B) является образом множества W(A) в этом отображении.

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

Условия однозначности декодирования. Для однозначного декодирования необходимо и достаточно

выполнения двух условий: 1) отображение Σ обратимо; 2) любое слово из WΣ однозначным образом раскладывается на

элементы коды. Предполагается, что первое условие выполнимо. Далее устанавливается выполнение второго условия и,

следовательно, однозначности декодирования. Пусть слово В имеет вид В = Вʹ Вʺ, тогда Вʹ называется началом,

или префиксом, слова В, а Вʺ – концом, или аффиксом, слова В.

55

Page 56: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Пустое слово Λ считается префиксом и аффиксом любого другого слова. Тогда само слово является как своим аффиксом, так и своим префиксом В = ΛВ = ВΛ.

Все аффиксы и префиксы данного слова В, кроме самого слова В и Λ, называются собственными аффиксами и префиксами.

Схема Σ обладает свойством префикса, если не один элементарный код не является собственным префиксом другого элементарного кода, т. е. разложение вида Вi = Вj Вʹ возможно тогда и только тогда, когда i = ϳ и Вʹ = Ʌ.

Схема Σ обладает свойством аффикса, если не один элементарный код не является собственным аффиксом другого элементарного кода, т. е. разложение вида Вi = Вʹ Вj возможно тогда и только тогда, когда i = ϳ и Вʹ = Ʌ.

Пример 2.1. Выяснить, обладает ли схема Σ = {a, ba, bb, bbba} свойством префикса.

Схема Σ обладает свойством префикса, если не один элементарный код не является собственным префиксом другого элементарного кода. Первый элементарный код схемы Σ «a» не является собственным префиксом ни одного другого элементарного кода. Аналогично, элементарный код «ba» также не является собственным префиксом кодов «bb» и «bbba». А элементарный код «bb» является собственным префиксом кода «bbba». Следовательно, схема Σ не обладает свойством префикса.

Теорема. Если схема Σ обладает свойством префикса, то порождаемое ею алфавитное кодирование будет однозначно декодируемым. Аналогично для свойства аффикса.

Замечание. Префиксность и аффиксность не являются необходимыми условиями однозначности декодирования, т. е. если схема однозначно декодируется, то не обязательно, что она обладает свойством префикса или аффикса.

56

Page 57: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

2.3. Оценка длины элементарных кодов

Пусть задано алфавитное кодирование со схемой Σ:

nn Ba

Ba

−Σ...

: 11

.

Пусть q – число букв в алфавите В и li = l(Bi) – длина i-го кодового слова ( ni ,...,2,1= ).

Теорема (неравенство Макмиллана). Если алфавитное кодирование со схемой Σ обладает свойством взаимной однозначности, то

111

≤∑=

n

iliq

. (2.3)

Следствие 1. Неравенство Макмиллана является необходимым и достаточным условием существования алфавитного кодирования, у которого схема обладает свойством префикса, и длины элементарных кодов предписаны (заданы).

Следствие 2. Если существует взаимно однозначное алфавитное кодирование с заданными длинами элементарных кодов, то существует также алфавитное кодирование со схемой, обладающей свойством префикса, и с теми же длинами элементарных кодов.

Пример 2.2. С помощью неравенства Макмиллана выяснить, может ли набор чисел L = (1, 2, 2, 3) быть набором длин кодовых слов однозначно декодируемого кода в 2-значном алфавите.

По условию задачи q = 2, l1 = 1, l2 = 2, l3 = 2, l4 = 3. Проверим выполнение неравенства (2.3).

1125,121

21

21

211

32211

>=+++=∑=

n

iliq

.

Неравенство Макмиллана не выполнено, следовательно, набор чисел L = (1, 2, 2, 3) не может быть набором длин кодовых слов однозначно декодируемого кода в 2-значном алфавите.

57

Page 58: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

2.4. Коды с минимальной избыточностью

2.4.1. Постановка задачи

Пусть задан алфавит А = {a1, a2, …, an}, (n ≥ 2), набор

вероятностей p1, p2, …, pn (∑=

=n

iip

11) появлений символов a1, a2, …, an

и алфавит В = {b1, b2, …, bq}, (q ≥ 2). Можно построить целый ряд схем Σ алфавитного кодирования,

обладающих свойством взаимной однозначности. Для каждой схемы Σ вводится средняя длина lср, определяемая как

математическое ожидание длины элементарного кода, т. е.

∑=

⋅=n

iiiср lpl

1, )( ii Bll = . (2.4)

1≥срl показывает, во сколько раз увеличивается средняя длина

слова при кодировании со схемой Σ. Пример 2.3. Пусть n = 4, q = 2 и p1 = 0,40, p2 = 0,25, p3 = 0,20,

p4 = 0,15. Пусть Σ′ и Σ ′′ две схемы алфавитного кодирования, обладающие

свойством взаимной однозначности:

11100100:

4

3

2

1

−−−−Σ′

aaaa

,

001000011:

4

3

2

1

−−−−Σ ′′

aaaa

.

Значения их средних длин имеют вид:

.95,1315,0320,0225,0140,0

,2215,0,220,0225,0240,0

=⋅+⋅+⋅+⋅=′′

=⋅+⋅+⋅+⋅=′

ср

ср

l

l

Таким образом, средняя длина может изменяться при переходе от одной схемы алфавитного кодирования к другой.

58

Page 59: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Ввиду этого для данного источника сообщений вводится величина *l , которая достигается на некоторой схеме Σ и может быть

определена как

Σ

Σ= срll min* . (2.5)

Коды, определяемые схемой Σ с *llср = , называются кодами с

минимальной избыточностью, или кодами Хаффмана. Коды с минимальной избыточностью дают в среднем

минимальное увеличение длин слов при соответствующем кодировании.

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

При построении кодов с минимальной избыточностью каждому алфавитному кодированию со свойством префикса можно сопоставить кодовое дерево.

Пример 2.4. Пусть задана схема Σ следующего вида (n = 8, q = 4):

4248

147

416

3245

214

113

32

311:

bbbabbabba

bbbabbabba

babba

−−−−−−−−Σ

,

06,008,009,010,011,014,020,022,0

8

7

6

5

4

3

2

1

========

pppppppp

.

Данная схема определяет код со свойством префикса и 96,1)06,010,0(3)08,009,011,014,022,0(220,0 =+⋅+++++⋅+=срl .

59

Page 60: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Элементарные коды определяют кодовое дерево (рис. 2.1).

Рис. 2.1. Кодовое дерево

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

Кодовое дерево, у которого концевым вершинам приписаны вероятности, задает схему алфавитного кодирования со свойством префикса.

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

В случае, когда в насыщенном дереве нет исключительной вершины, считается, что q0 = q.

Для определения q0 вычисляется остаток от деления n на (q – 1) и полагается

−=

.2,,1,,0,1

0

онеслиостаткуравеностатокеслиqравеностатокеслиq

q (2.6)

В случае двухбуквенного алфавита q0 = 2.

b3 b4 p5 p8

b1 b2 b3 b4 b1 b2 p3 p4 p1 p6 p7

b1 b3 b4

p2

60

Page 61: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Теорема редукции. Пусть один префиксный код преобразуется в другой путем замены в кодовом дереве концевой вершины пучком из s ребер. Далее, пусть концевым вершинам кодового дерева второго кода приписаны вероятности

p1, p2, …, pn, причем концевым вершинам указанного пучка – вероятности

)...1(,..., 11niipp sii s

≤<<≤ ,

т. е. концевым вершинам кодового дерева первого кода – вероятности ppppppp niiii ss

,,...,,,...,,,..., 11111 11 +−+− ,

где sii ppp ++= ...

1.

Тогда справедливо следующее. I. Если второй код имеет минимальную избыточность, то первый

код также имеет минимальную избыточность. II. Если первый код имеет минимальную избыточность и при

этом выполнены условия

npp ≥≥ ...1 , 0qs = , 101 +−= qni pp ,…, ni pps= , ( nqn ppp ++= +− ...10

),

то второй код также имеет минимальную избыточность.

2.4.2. Алгоритм построения кодов с минимальной избыточностью

I этап. С помощью формулы (2.6) определить q0. В случае двухбуквенного алфавита q0 = 2.

II этап. На первом шаге список вероятностей p1,…, pn, где npp ≥≥ ...1 ,

заменить списком вероятностей ppp qn ,,...,

01 − , где nqn ppp ++= +− ...10,

который после упорядочивания превращается в список

0,...,,,,..., 11 qnjj ppppp −+ , где

0...... 11 qnjj ppppp −+ ≥≥≥≥≥≥ .

61

Page 62: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Второй и все последующие шаги второго этапа выполнять аналогично с той лишь особенностью, что для них всегда qq =0 .

Выполнение второго этапа закончить, когда число вероятностей в списке становится не больше q.

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

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

Пример 2.5. Построить код с минимальной избыточностью для данных: n = 4, B = {0, 1}, p1 = 0,45, р2 = 0,25, p3 = 0,20, р4 = 0,10.

Так как алфавит B содержит две буквы, то q0 = 2. Процесс построения представляется следующим образом:

→ 0,55 0 p1 0,45 0,45 0,45 1

→ 0,30 0 p2 0,25 0,25 1 p3 0,20 0 p4 0,10 1

Имеется два шага, связанные с редукцией. Квадратными скобками отмечены объединяемые члены. Для построения кодов для каждой скобки выбирается взаимно однозначное соответствие между вероятностями и подмножеством символов из алфавита B. Верхнему числу сопоставляется 0, нижнему – 1. Затем осуществляется

62

Page 63: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

движение в обратном направлении к символам p1,…, pn и, проходя скобки, выписывается соответствующий код.

Например, путь 0,55 – 0,30 – 0,10 – р4 дает код 001. Таким образом, получается следующая схема кодов с

минимальной избыточностью:

001000011:

4

3

2

1

−−−−Σ

aaaa

.

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

Пример 2.6. Построить код с минимальной избыточностью для следующих данных: n = 8, q = 4 и p1 = 0,22, р2 = 0,20, р3=0,14, р4= 0,11, р5 = 0,10, р6 = 0,09, р7 = 0,08, р8 = 0,06; B = {0, 1, 2, 3}.

Редукцию можно осуществить здесь двумя способами. По формуле (2.6) находится 0q . Вычисляется остаток от деления

n на (q – 1), в остатке получается 2, следовательно, 20 =q .

1 способ. → 0,44 0

p1=0,22 0,22 0,22 1 p2=0,20 0,20 0,20 2 → 0,14 0,14 3

p3=0,14 0,14 0 p4=0,11 0,11 1 p5=0,10 0,10 2 p6=0,09 0,09 3 p7=0,08 0 p8=0,06 1

63

Page 64: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

2 способ. → 0,44 0

p1=0,22 0,22 0,22 1 p2=0,20 0,20 0,20 2 p3=0,14 0,14 0,14 3

→ 0,14 0 p4=0,11 0,11 1 p5=0,10 0,10 2 p6=0,09 0,09 3 p7=0,08 0 p8=0,06 1

Отсюда получаются две схемы алфавитного кодирования

(нумеруя члены в скобках сверху вниз числами 0, 1, 2, 3) с одинаковыми значениями средней длины элементарного кода срl .

31300302010021:

8

7

6

5

4

3

2

1

−−−−−−−−Σ′

aaaaaaaa

,

001000030201321:

8

7

6

5

4

3

2

1

−−−−−−−−Σ ′′

aaaaaaaa

.

.58,13)06,008,0(2)09,010,011,0(1)14,020,022,0(

;58,12)06,008,009,010,011,014,0(1)20,022,0(

=⋅++⋅+++⋅++=′′

=⋅++++++⋅+=′

ср

ср

l

l

64

Page 65: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

2.5. Самокорректирующиеся коды

2.5.1. Постановка задачи

Пусть А={0, 1}, },...,,{ 21 nAAA – множество всех слов вида

mA αα ...1= в алфавите А, имеющих фиксированную длину m ( mn 2= ).

Предполагается, что в канале связи действует источник помех, который в словах },...,,{ 21 nAAA может вызвать ошибки не более чем в

p символах. Если передать исходное сообщение (без предварительного кодирования), то на выходе канала невозможно будет установить, какое сообщение фактически было передано. В связи с этим возникает вопрос, нельзя ли осуществить кодирование слов из множества },...,,{ 21 nAAA так, чтобы по коду, полученному на

выходе канала, можно было однозначно восстановить этот код и исходное сообщение?

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

Построение самокорректирующихся кодов было осуществлено Хэммингом. Им подробно были рассмотрен случай при р = 1.

Сообщения mαα ...1 кодировались наборами lββ ...1 , где l – длина

кода и l = m + k. При наличии данного источника помех возможны следующие

варианты получения кодов на выходе:

На входе На выходе

lβββ ...21

lβββ ...21

lβββ ...21

lβββ ...21

lβββ ...21

65

Page 66: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Следовательно, число вариантов равно l + 1. Для того чтобы дополнительных разрядов в коде lββ ...1 хватало

для кодирования перечисленных l + 1 случаев передачи кода, необходимо, чтобы

12 +≥ lk или 1

22+

≤l

lm . (2.7)

Из этих соображений выбирается l, как наименьшее целое число, удовлетворяющее неравенству (2.7).

2.5.2. Алгоритм построения самокорректирующихся кодов

I этап. Описание алгоритма кодирования. Пусть V – произвольное натуральное число (1 ≤ V ≤ l) и 1...VVk –

его двоичная запись. Отрезок натуральных чисел l...,,2,1 разбить на k

последовательностей следующим образом: 1) последовательность, содержащая все числа V с 11 =V :

1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, … 2) последовательность, содержащая все числа V с 12 =V :

2, 3, 6, 7, 10, 11, 14, 15, 18, 19, 22, 23, 26, 27… 3) последовательность, содержащая все числа V с 13 =V :

4, 5, 6, 7, 12, 13, 14, 15, 20, 21, 22, 23, 28… 4) последовательность, содержащая все числа V с 14 =V :

8, 9, 10, 11, 12, 13, 14, 15, 24, 25, 26, 27, 28… 5) последовательность, содержащая все числа V с 15 =V :

16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28 … … k) последовательность, содержащая все числа V с 1=kV :

,12,2 11 +−− kk …

66

Page 67: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Первыми членами этих последовательностей являются числа 110 2...,,22,21 −== k ,

т. е. степени двойки, причем lk ≤−12 , а 12 +≥ lk . Члены iβ набора lββ ...1 , у которых индекс i принадлежат

множеству ( 12...,,2,1 −k ), называются контрольными членами, а

остальные информационными. Контрольных членов будет k, а информационных – (l – k) = m. Для построения набора lββ ...1 сначала определить

информационные члены

....,,,

36

25

13

αβαβαβ

===

(2.8)

Таким образом, набор из информационных членов, расположенных в естественном порядке, совпадает с набором mαα ...1 .

Далее определить контрольные члены.

....),2(mod...),2(mod...),2(mod...

7654

7632

7531

⊕⊕⊕=⊕⊕⊕=⊕⊕⊕=

ββββββββββββ

(2.9)

Суммирование ведется по последовательностям, построенным выше. В этих формулах правые части состоят из информационных членов, которые определены ранее.

II этап. Обнаружение ошибки в кодах. Пусть при передаче кода lββ ...1 произошла ошибка в S-м члене.

Тогда на выходе канала было принято слово ''...1 lββ , где

lsl βββββ ......''... 11 = .

67

Page 68: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Пусть 1...SSS k= – запись числа S в двоичном счислении. Тогда

по коду ''...1 lββ определить число S по формулам

.......,''''...,''''

...''''

76543

76322

75311

⊕⊕⊕⊕=⊕⊕⊕⊕=⊕⊕⊕⊕=

ββββββββββββ

SSS

(2.10)

Число S позволяет узнать, произошла ли ошибка при передаче и, если произошла, то найти номер члена S, который исказился помехой. Если при передаче кода ошибки не произошло, то S = 0. В противном случае произвести коррекцию ошибки: член 'sβ заменить членом 'sβ .

III этап. Декодирование. Этот шаг состоит в построении исходного сообщения mαα ...1 по

коду lββ ...1 . Для этого достаточно взять информационные члены кода

lββ ...1 .

Пример 2.7. Закодировать данное слово α = 111 1110 0000 кодом Хэмминга.

Сначала находится наименьшее число l, удовлетворяющее неравенству (2.7), где m = 11,

,1

2211

+≤

l

l .

122048+

≤l

l

Отсюда получается, что l = 15 и k = l – m= 4. Затем по формуле (2.8) определяются информационные члены

,1,1,1,1,1,1

610

59

47

36

25

13

============

αβαβαβαβαβαβ

.0,0

,0,0,0

1115

1014

913

812

711

==========

αβαβαβαβαβ

Далее определяются контрольные члены по формулам (2.9).

68

Page 69: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

.00000011,10000111,00001111

,00001111

15141312111098

151413127654

151411107632

15131197531

=⊕⊕⊕⊕⊕⊕=⊕⊕⊕⊕⊕⊕==⊕⊕⊕⊕⊕⊕=⊕⊕⊕⊕⊕⊕==⊕⊕⊕⊕⊕⊕=⊕⊕⊕⊕⊕⊕==⊕⊕⊕⊕⊕⊕=⊕⊕⊕⊕⊕⊕=

ββββββββββββββββββββββββββββββββ

Следовательно, закодированное сообщение будет иметь вид 000001101111001=β .

Пример 2.8. По каналу связи передавалось кодовое слово, построенное по методу Хэмминга β = 011 1110. Восстановить исходное сообщение (декодировать код β).

Сначала вычисляется номер члена S, в котором произошла ошибка. Пусть 123 SSSS = – запись числа S в двоичном счислении.

Тогда по формулам (2.10) определяется число S

.10111'''',10111'''',00110''''

76543

76322

75311

=⊕⊕⊕=⊕⊕⊕==⊕⊕⊕=⊕⊕⊕==⊕⊕⊕=⊕⊕⊕=

ββββββββββββ

SSS

Следовательно, 6202121110 012 =⋅⊕⋅⊕⋅==S , т. е. ошибка произошла в шестом члене.

Исправляется ошибка в шестом элементе, т. е. число 1 заменяется числом 0, получается исправленный код

β = 011 1100. Для восстановления исходного сообщения α берутся

информационные члены кода β ( 653 ,, βββ и 7β ), получается

α = 1100.

2.6. Задачи и упражнения 1. Выяснить, обладает ли схема Σ свойством префикса. 1) Σ = {a, ba, bb, bbba}; 2) Σ = {ab, bb, ba, aab}; 3) Σ = {ac, c, bb, abc, bac, abb, abcb};

69

Page 70: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

4) Σ = {a, ba, cab, acb}; 5) Σ = {a, ba, bba, …, (b)na, …}; 6) Σ = {a, ba, …, c(a)n, …}.

2. С помощью неравенства Макмиллана выяснить, может ли набор чисел L быть набором длин кодовых слов однозначно декодируемого кода в q-значном алфавите.

1) L = (1, 2, 2, 3), q = 2; 2) L = (1, 2, 2, 3), q = 3; 3) L = (2, 2, 2, 4, 4, 4), q = 2; 4) L = (1, 2, 2, 2, 3, 3, 3, 3), q = 3; 5) L = (1, 1, 2, 2, 3, 3, 3), q= 3; 6) L = (1, 1, 1, 2, 2, 2, 2, 3), q = 4.

3. Построить двоичный префиксный код с заданной последовательностью L длин кодовых слов.

1) L = (1, 2, 3, 3); 2) L = (1, 2, 4, 4, 4, 4); 3) L = (2, 2, 3, 3, 4, 4, 4, 4); 4) L = (2, 2, 2, 4, 4, 4); 5) L = (2, 2, 3, 4, 4); 6) L = (2, 3, 3, 3, 4, 4).

4. C помощью процедуры Хаффмана построить код с минимальной избыточностью для заданных P и q. Определить среднюю длину кодового слова. Построить кодовое дерево.

1) P = (0,2; 0,2; 0,2; 0,2; 0,2); q = 2; 2) P = (0,3; 0,3; 0,2; 0,04; 0,03; 0,03; 0,03; 0,03; 0,03; 0,01); q = 2; 3) P = (0,4; 0,1; 0,1; 0,1; 0,1; 0,08; 0,06; 0,06), q = 3; 4) P = (0,4; 0,2; 0,1; 0,1; 0,1; 0,1), q = 3; 5) P = (0,20; 0,15; 0,15; 0,13; 0,12; 0,11; 0,11; 0,03), q = 4; 6) P = (0,23; 0,22; 0,18; 0,17; 0,08; 0,04; 0,02; 0,02; 0,02; 0,02), q=4.

70

Page 71: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

5. Закодировать данное слово α кодом Хэмминга. 1) α = 001 2) α = 110; 3) α = 1011; 4) α = 1001; 5) α = 001 0001; 6) α = 010 0111.

6. По каналу связи передавалось кодовое слово, построенное по методу Хэмминга β. Восстановить исходное сообщение.

1) β = 100 1110; 2) β = 110 0111; 3) β = 101 0000; 4) β = 100 1011 1110 1000; 5) β = 110 0110 1101 0001; 6) β = 110 1000 1111 1100.

71

Page 72: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

3. ЭЛЕМЕНТЫ ТЕОРИИ КОНЕЧНЫХ АВТОМАТОВ

3.1. Понятие конечного автомата

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

Конечным автоматом называется набор ),,,,( λδVQAS = , (3.1)

где VQA ,, – конечные множества,

},...,{ 1 naaA = – входной алфавит,

{ }mqqQ ,...1= – множество внутренних состояний,

},...,{ 1 kvvV = – выходной алфавит,

QAQ →×:δ – функция перехода,

VAQ →×:λ – функция выхода.

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

3.2. Способы задания конечных автоматов

1. Таблица состояний автомата Q A

1q … jq … mq

1a ),( 11 qaδ , ),( 11 qaλ … ),( 1 jqaδ , ),( 1 jqaλ … ),( 1 mqaδ , ),( 1 mqaλ

… … … … … …

ia ),( 1qaiδ , ),( 1qaiλ … ),( ji qaδ , ),( ji qaλ … ),( mi qaδ , ),( mi qaλ

… … … … … …

na ),( 1qanδ , ),( 1qanλ … ),( jn qaδ , ),( jn qaλ … ),( mn qaδ , ),( mn qaλ

72

Page 73: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

2. Диаграмма состояний автомата Диаграмма состояний автомата представляет собой m кругов,

внутри каждого из которых указывается один символ jq из алфавита

{ }mqqQ ,...1= (внутри различных кругов пишутся различные

символы). Далее рассматриваются всевозможные состояния ),( ji qa , где

Qq j ∈ , Aai ∈ , },...,{ 1 naaA = .

Для каждой пары от круга, в котором записан символ iq ,

проводится стрелка к кругу, в котором записан символ, соответствующий ),( ji qaδ . Этой стрелке приписывается пара

)),(,( jii qaa λ , т. е. от каждого круга исходит ровно n стрелок.

3.3. Автомат Мили

3.3.1. Понятие автомата Мили

Автоматом Мили называется пятерка объектов ),,,,( λδVQAS = , (3.2)

где },...,{ 1 naaA = – входной алфавит;

},...,{ 1 mqqQ = – множество внутренних состояний;

},...,{ 1 kvvV = – выходной алфавит;

QQA →×:δ – функция переходов;

VQA →×:λ – функция выхода.

Автомат Мили называется инициальным, если он всегда начинает свою работу из одного и того же состояния.

Автомат Мили называется неинициальным, если он может начинать свою работу из любого своего состояния.

73

Page 74: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

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

Работа автомата Мили над словом α, записанным на входной ленте, проходит следующим образом:

1) считав символ в ячейке входной ленты, обозреваемой считывающим устройством автомата Мили, он печатает в ячейку входной ленты символ, найденный с помощью функции выхода λ, двигается вдоль ленты вправо и переходит в состояние, определяемое с помощью функции перехода δ;

2) работа автомата продолжается до тех пор, пока все ячейки, содержащие символы данного слова, не будут пройдены.

3.3.2. Дешифратор

Дешифратором называется инициальный конечный автомат, выходным алфавитом которого является множество {0, 1}, причем на вход подается бесконечная последовательность символов некоторого алфавита, и символ 1 печатается в том и лишь в том случае, если в данный момент времени считывающее устройство автомата обозревает последний символ уже считанного слова α, фиксированного для данного автомата, а на ленте записано слово, в которое входит α. Слово α называется кодовой комбинацией этого автомата.

Алгоритм построения дешифратора. Шаг 1. По количеству символов кодовой комбинации m

определить количество внутренних состояний дешифратора. Шаг 2. Определить функцию выхода λ , принимающую значение

1, если автомат находится в последнем состоянии mq и обозревает

последний символ кодовой комбинации, для остальных случаев положить значение функции выходов равное 0.

74

Page 75: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Шаг 3. Определить функцию переходов δ . Если kxxx ...21 (k ≠ m)

– начало кодовой комбинации, то 1),( += kkk qqxδ , в остальных

случаях pkk qqx =),(δ , где р – наименьший номер, такой, что слово

kpp xxx ...1+ является начальным отрезком кодовой комбинации.

Шаг 4. Записать построенный автомат таблицей состояний и диаграммой состояний.

Пример 3.1. По данной кодовой комбинации α = хуухxуyх построить дешифратор с входным алфавитом {х, у} и записать его диаграммой состояний и таблицей состояний.

Шаг 1. Так как количество символов кодовой комбинации α равно 8, то число внутренних состояний дешифратора также равняется 8.

Шаг 2. Последний символ кодовой комбинации – х, следовательно, функция выхода 1),( 8 =qxλ , для остальных случаев

значение функции выходов равно 0. Шаг 3. Для определения функции переходов δ последовательно

рассматриваются всевозможные ситуации слов на входе при всех внутренних состояниях автомата.

Пусть автомат находится в состоянии 1q . Рассматриваются две

ситуации: 1) на входе имеется символ х, являющийся началом кодовой

комбинации, тогда согласно алгоритму автомат переходит в следующее состояние 2q , т. е. 21),( qqx =δ ;

2) на входе имеется символ y, так как символ y не является началом кодовой комбинации, то автомат остается в состоянии 1q ,

т. е. 11),( qqy =δ .

Далее рассматривается состояние 2q . В состояние 2q автомат

может перейти, если на входе уже имеется слово х. Рассматриваются две ситуации:

75

Page 76: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

1) на входе имеется слово xх, слово xх не является началом кодовой комбинации, однако последний символ х может служить началом кодовой комбинации, а по одному символу х автомат переходит в состояние 2q , т. е. 22 ),( qqx =δ ;

2) на входе имеется слово xy, которое является началом кодовой комбинации, тогда автомат переходит в следующее состояние 3q , т. е.

32 ),( qqy =δ .

Аналогично последовательно рассматриваются все ситуации, результаты приводятся в таблице 3.1.

Таблица 3.1. Значения функции перехода дешифратора

Состояние автомата Слова на входе Функция перехода

1q x 21),( qqx =δ

y 11),( qqy =δ

2q xx 22 ),( qqx =δ

xy 32 ),( qqy =δ

3q xyx 23 ),( qqx =δ

xyy 43),( qqy =δ

4q xyyx 54 ),( qqx =δ

xyyy 14 ),( qqy =δ

5q xyyxx 65 ),( qqx =δ

xyyxy 35 ),( qqy =δ

6q xyyxxx 26 ),( qqx =δ

xyyxxy 76 ),( qqy =δ

7q xyyxxyx 27 ),( qqx =δ

xyyxxyy 87 ),( qqy =δ

8q xyyxxyyx 28 ),( qqx =δ

xyyxxyyy 18 ),( qqy =δ

76

Page 77: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Таблица состояний дешифратора имеет вид таблицы 3.2.

Таблица 3.2. Таблица состояний дешифратора

Q A 1q 2q 3q 4q 5q 6q 7q 8q

x 0,2q 0,2q 0,2q 0,5q 0,6q 0,2q 0,2q 1,2q y 0,1q 0,3q 0,4q 0,1q 0,3q 0,7q 0,8q 0,1q

Далее строится диаграмма состояний дешифратора (рис. 3.1):

Рис. 3.1. Диаграмма состояний дешифратора

3.3.3. Задача минимизации автомата Мили

Неинициальный автомат называется сильно связным, если для любых состояний автомата qi и qj найдется слово α такое, что автомат, начавший работу в состоянии qi, при считывании слова α переходит в состояние qj.

Состояния qj и qk неинициальных автоматов А1 и А2 называются эквивалентными, если для любого слова α, составленного из букв входного алфавита, выходные слова, полученные при работе

q1 q4

q5 q8

q3

q6

q2

q7 y, 0 y, 0 x, 0

x, 0 y, 0 y, 0

y, 0 x, 1 x, 0 x, 0 y, 0 x, 0

y, 0 x, 0

y, 0

x, 0

77

Page 78: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

автоматов А1 и А2 , запущенных соответственно из состояний qi и qk над словом α, равны.

Автоматы А1 и А2 называются эквивалентными, если для любого состояния qi автомата А1 найдется эквивалентное ему состояние qk

автомата А2, а также, если для любого состояния *kq автомата А2

найдется эквивалентное ему состояние *iq автомата А1.

Автомат Amin называется минимальным для автомата А, если он является эквивалентным автомату А и содержит наименьшее число внутренних состояний среди всех автоматов, эквивалентных автомату А.

Алгоритм минимизации автомата Мили. Шаг 1. Определить, является ли автомат сильно связным.

Для этого построить диаграмму состояний автомата. Если в построенном графе возможно построение циклического маршрута, то граф является сильно связным, в противном случае граф не является сильно связным.

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

Из этого правила записи есть два исключения: 1) не выписывать пары одинаковых состояний; 2) не выписывать пары, соответствующие заполняемой клетке. Если внутри какой-нибудь клетки выписана пара,

соответствующая зачеркнутой ранее клетке, то клетку с этой парой

78

Page 79: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

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

Шаг 3. Выявленные пары эквивалентных состояний объединить в классы эквивалентности, построить минимальный автомат с меньшим числом внутренних состояния.

Пример 3.2. Для конечного автомата, заданного таблично, с множеством внутренних состояний {1, 2, 3, 4, 5, 6, 7, 8, 9}, входным алфавитом {а, b} и выходным алфавитом {х, у} построить эквивалентный минимальный автомат и проверить работу исходного и минимального автоматов над словом «bbаbаааb».

Таблица состояний исходного автомата имеет вид таблицы 3.3.

Таблица 3.3. Таблица состояний автомата

Q A

1 2 3 4 5 6 7 8 9

a 5,х 3,у 7,х 5,х 6,у 9,х 6,у 4,у 1,у

b 2,у 1,х 9,у 8,у 7,х 5,у 5,х 3,х 4,х

Шаг 1. Определяется, является ли автомат сильно связным. Для этого строится диаграмма состояний данного автомата (рис. 3.2), опуская пометки дуг и объединяя пары противоположно направленных дуг, соединяющих одинаковые вершины графа.

Рис. 3.2. Диаграмма состояний автомата

1 7

6 9

3

5

2

4

8

79

Page 80: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

В полученном графе строится циклический маршрут: 193849657321 →→→→→→→→→→→ .

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

Шаг 2. Для построения минимального эквивалентного автомата выявляются все пары эквивалентных состояний данного автомата. Для этого строится треугольная таблица, где каждой паре различных состояний соответствует одна клетка. Если для какой-нибудь пары состояний одному значению входного сигнала соответствуют различные выходные символы, следовательно, эта пара состояний не является эквивалентной, и соответствующая клетка зачеркивается. Получится следующая таблица (таблица 3.4).

Таблица 3.4. Треугольная таблица пар состояний автомата

2

3

4

5

6

7

8

9

1 2 3 4 5 6 7 8

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

80

Page 81: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Таблица 3.5. Пары состояний автомата

2

3 57 29

4 28 57 89

5 36 17

6 59 25 79

59 58 59

7 36 15

8 34 13 46

37 46 35

9 13 14 16

47 16 45

14 34

1 2 3 4 5 6 7 8

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

Таблица 3.6. Таблица пар эквивалентных состояний автомата

2

3 57 29

4 28 57 89

5 36 17

6 59 25 79

59 58 59

7 36 15

8 34 13 46

37 46 35

9 13 14 16

47 16 45

14 34

1 2 3 4 5 6 7 8

81

Page 82: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Выписываются выявленные пары эквивалентных состояний автомата, которые соответствуют незачеркнутым клеткам: 1 и 4, 1 и 3, 2 и 9, 2 и 8, 3 и 4, 5 и 7, 8 и 9.

Шаг 3. Выявленные пары эквивалентных состояний объединяются в классы эквивалентности:

1'= {1, 3, 4}; 2'= {2, 8, 9}; 3'= {5, 7}; 4' = {6}. Строится минимальный автомат с четырьмя внутренними

состояниями 1', 2', 3', 4'. Для нахождения значений функций перехода и выхода,

например, на наборе (а,1'), из класса эквивалентности 1' выбирается любой представитель, например 3. Из таблицы состояний исходного автомата находится значение функции выхода xa =)3,(λ ,

следовательно, значение функции выхода минимального автомата также равно λ(а,1') = х. Аналогично из таблицы состояний исходного автомата находится значение функции переходов δ(а,3) = 7. Так как состояние '3}7,5{7 =∈ , следовательно, значение функции переходов

минимального автомата δ(а,1') = 3'. Аналогично находятся значения функций перехода и выхода на

всех остальных наборах переменных. Таблица состояний минимального автомата имеет вид

(таблица 3.7).

Таблица 3.7. Таблица состояний минимального автомата

Q' A

1' 2' 3' 4'

а 3',х 1',у 4',у 2',х b 2',у 1',х 3',х 3',у

Далее проверяется работа исходного и минимального автоматов над словом «bbаbаааb».

Пусть исходный автомат начинает свою работу, например, из 1 состояния:

82

Page 83: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Входное слово Состояния Выходное слово

Так как '1}4,3,1{1 =∈ , то минимальный автомат запускается из

состояния 1'. Получается:

Входное слово Состояния Выходное слово

Результатом работы исходного и минимального автоматов над словом «bbаbаааb» является одно и то же слово ухххухуу.

3.4. Автомат Мура

Автомат, у которого функция выходов фиктивно зависит от второй переменной, т. е. независимо от входного сигнала, автомат, находившийся в определенном состоянии qi, выдает один и тот же символ rv , называется конечным автоматом Мура.

Для автомата такого вида в диаграмме состояний каждой стрелке приписывается только первый символ из пары (aj, rv ), а второй

элемент (символ алфавита V) записывается внутри круга. Автомат Мура записывается в виде пятерки S = (A, Q, V, δ, μ), (3.3)

где },...,{ 1 naaA = − входной алфавит;

},...,{ 1 mqqQ = − множество внутренних состояний;

},...,{ 1 kvvV = − выходной алфавит;

QQA →×:δ − функция переходов;

VQ →:µ − функция отметок.

b b а b а а а b 1 2 1 5 7 6 9 1 2 у х х х у х у у

b b а b а а а b 1' 2' 1' 3' 3' 4' 2' 1' 2' у х х х у х у у

83

Page 84: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Пример 3.3. Написать таблицу состояний автомата, заданного диаграммой состояний. Считая автомат неинициальным, построить эквивалентный автомат Мура. Проверить работу данного и построенного автоматов над одним и тем же словом.

Пусть исходный автомат задан диаграммой состояний (рис. 3.3):

Рис. 3.3. Диаграмма состояний автомата

Таблица данного автомата записывается в виде таблицы 3.8.

Таблица 3.8. Таблица состояний автомата

А Q 1 2 3 4

а 3,0 3,0 4,0 3,1 b 2,0 2,1 1,0 4,1

По данному неинициальному автомату Мили S строится эквивалентный ему автомат Мура 'S следующим образом. Автомат 'S содержит 4 ∙ 2 + 4 = 12 состояний, каждое из которых помечается двумя символами. Состояния автомата 'S обозначаются так: *1, *2, *3, *4, a1, b1, а2, b2, а3, b3, а4, b4.

Функция отметок µ на состояниях *1, *2, *3, *4 не определена, а ее значения на состояниях al, b1,...,b4 задаются с помощью функции выходов λ автомата S:

µ(ui) = λ(u,i), где l ≤ i ≤ 4, },{ bau∈ ,

то есть 1)4,()4(,...,0)1,()1( ==== bbaa λµλµ .

Функция переходов δ' на состояниях, содержащих в изображении символ *, определяется так:

a,0 b,0 b,0

1 3 2 4 a,0 a,1

b,1

b,1

a,0

84

Page 85: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

},,{,),*(' bauuiiu ∈=δ 1 ≤ i ≤ 4.

В остальных случаях первый символ имени нового состояния совпадает со считываемым символом входного алфавита, а второй символ имени нового состояния определяется с помощью функции переходов δ автомата S:

ujviu =),('δ , где ),(},,{, ivjbavu δ=∈ .

Получается: 2)1,(',1)1,*(' babaa == δδ , так как 2)1,( =aδ , и т. д.

Таблица состояний полученного автомата Мура имеет вид таблицы 3.9.

Таблица 3.9. Таблица состояний автомата Мура

µ – – – – 0 0 0 1 0 0 1 1

A Q *1 *2 *3 *4 а1 b1 а2 b2 а3 b3 а4 b4

а al а2 а3 а4 а3 а2 а3 a2 a4 al а3 а4

b b1 b2 b3 b4 b3 b2 b3 b2 b4 b1 b3 b4

Далее проверяется работа исходного автомата Мили и построенного автомата Мура над словом bаabа. Пусть исходный автомат запускается из 2 состояния:

Входное слово Состояния Выходное слово

Построенный автомат Мура запускается из состояния *2:

Входное слово Состояния Выходное слово

Результаты работы обоих автоматов совпали.

b a a b a 2 2 3 4 4 3 1 0 0 1 1

b a a b a *2 b2 a2 а3 b4 а4 1 0 0 1 1

85

Page 86: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

3.5. Задачи и упражнения 1. По кодовой комбинации α = yуухух построить дешифратор с

входным алфавитом {х, у} и записать его диаграммой состояний и таблицей состояний.

2. Для конечного автомата, заданного таблично, с множеством внутренних состояний {1, 2, 3, 4, 5, 6, 7, 8, 9}, входным алфавитом {а, b} и выходным алфавитом {х, у} построить эквивалентный минимальный автомат и проверить работу исходного и минимального автоматов над словом «bbаbаbаbb».

Таблица 3.10. Таблица состояний автомата

Q A

1 2 3 4 5 6 7 8 9

a 1,х 3,x 1,х 3,y 6,x 5,х 7,x 9,x 8,x

b 2,у 7,х 5,x 4,x 4,х 4,x 4,х 7,х 6,х

3. Написать таблицу состояний автомата, заданного диаграммой

состояний (рис. 3.4):

Рис. 3.4. Диаграмма состояний автомата

Считая автомат неинициальным, построить эквивалентный автомат Мура. Проверить работу данного и построенного автоматов над одним и тем же словом.

a,1

b,0 a,0 1 3 2 4

a,0 b,1

b,0

b,1 a,0

86

Page 87: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

4. РАСЧЕТНО-ГРАФИЧЕСКАЯ РАБОТА

4.1. Методические указания

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

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

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

К каждому заданию прилагаются 20 вариантов исходных данных. Номер варианта определяется в соответствии с номером обучающегося в общем списке группы.

Расчетно-графическая работа оформляется виде пояснительной записки на бумаге формата А4. Законченная расчетно-графическая работа в бумажном виде предъявляется руководителю. После проверки работы студенту назначается время защиты. В случае обнаружения недочетов, неверно решенных задач, а также в случае наличия в тексте пояснительной записки большого числа грамматических ошибок, работа возвращается на доработку.

Среднее время самостоятельной работы студента на выполнение расчетно-графических работ составляет 20 часов.

87

Page 88: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

4.2. Варианты заданий

Задание 1. Алгоритм Дейкстры

В графе, изображенном на рис. 4.1, найти кратчайший путь из вершины s в вершину t, используя алгоритм Дейкстры. Значения длин дуг приведены в таблице 4.1.

Рис. 4.1. Граф к заданию 1

Таблица 4.1. Длины дуг графа

Вариант Длины дуг

sa sc sd ab af ag bc bg ct df fg gt 1 5 4 5 3 3 1 5 5 4 1 3 7 2 4 4 2 4 2 1 4 4 2 1 1 5 3 2 1 4 2 5 5 3 2 1 2 3 7 4 3 2 6 1 6 5 2 5 1 5 1 5 5 6 5 2 1 4 5 1 1 2 2 4 2 6 4 2 3 2 5 2 1 5 4 2 2 1 7 2 5 1 2 2 1 2 4 3 1 2 6 8 5 2 4 1 4 1 3 1 4 2 1 4 9 6 5 2 2 5 4 4 6 4 1 2 1 10 3 4 3 3 1 1 5 5 4 1 2 6 11 2 5 4 4 2 2 4 6 3 2 4 8 12 3 3 4 1 3 3 1 5 3 2 3 1 13 2 3 5 5 2 2 2 4 5 1 3 4 14 3 3 2 2 4 1 3 3 2 1 2 6 15 4 5 3 3 2 2 6 2 3 2 2 5

s

a c

d g

t

b

f

88

Page 89: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Таблица 4.1. Окончание

Вариант Длины дуг

sa sc sd ab af ag bc bg ct df fg gt 16 5 2 5 3 5 5 2 3 5 1 3 4 17 4 3 4 2 6 2 3 4 4 2 4 2 18 7 1 2 2 5 3 1 5 2 3 5 7 19 4 4 3 3 4 4 3 2 3 4 1 5 20 1 2 3 4 4 5 3 6 1 4 2 6

Задание 2. Алгоритм Флойда

Найти кратчайшие пути между всеми парами вершин графа, изображенного на рис. 4.2, используя алгоритм Флойда. Значения длин дуг приведены в таблице 4.2.

Рис. 4.2. Граф к заданию 2

Таблица 4.2. Длины дуг графа

Вариант Длины дуг

(1,2) (1,3) (1,4) (2,1) (2,4) (3,1) (3,4) (4,2) (4,3) 1 2 3 6 5 2 4 4 5 4 2 1 3 4 4 1 5 3 4 5 3 3 3 5 6 4 3 2 3 6 4 4 5 4 8 4 2 2 2 4 5 3 2 6 2 5 4 2 3 7 6 2 3 5 4 6 7 3 4 3

1

2

3

4

89

Page 90: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Таблица 4.2. Окончание

Вариант Длины дуг

(1,2) (1,3) (1,4) (2,1) (2,4) (3,1) (3,4) (4,2) (4,3) 7 1 1 4 6 5 1 1 5 4 8 2 4 3 4 4 3 3 2 5 9 3 2 7 3 4 4 3 6 6 10 4 6 5 8 1 3 5 4 1 11 4 5 6 5 1 3 4 2 2 12 5 6 2 4 5 1 2 1 4 13 1 5 1 2 5 1 5 1 7 14 2 2 2 1 5 6 1 2 2 15 3 4 3 2 1 6 4 2 3 16 3 4 1 3 2 6 4 1 7 17 2 1 2 2 1 2 3 5 2 18 3 2 2 1 5 3 1 4 3 19 3 4 3 4 4 1 2 5 4 20 3 5 7 2 5 2 3 6 5

Задание 3. Поток минимальной стоимости

Построить поток минимальной стоимости из вершины s в вершину t в графе, изображенном на рис. 4.3, используя алгоритм поиска потока минимальной стоимости. Значения стоимостей (первое число) и пропускных способностей (второе число) дуг приведены в таблице 4.3.

Рис. 4.3. Граф к заданию 3

s

b

d

t

e

a

c

90

Page 91: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Таблица 4.3. Стоимости и пропускные способности дуг графа

Вариант Стоимости и пропускные способности дуг

sa sb ad ac cd ce be dt et 1 2, 3 3, 4 2, 2 2, 3 4, 3 3, 4 3, 4 2, 3 3, 4 2 3, 2 2, 1 1, 1 3, 1 2, 3 1, 2 2, 1 3, 4 4, 3 3 1, 2 3, 2 4, 2 3, 2 1, 2 4, 3 3, 2 4, 3 2, 3 4 3, 4 1, 1 2, 3 2, 3 3, 2 2, 3 3, 1 2, 1 3, 3 5 2, 3 3, 1 2, 1 3, 4 4, 3 1, 2 2, 1 2, 1 4, 2 6 3, 4 2, 1 3, 1 3, 1 2, 2 3, 2 1, 1 3, 2 3, 2 7 1, 2 1, 1 2, 2 3, 2 1, 2 1, 2 2, 3 3, 1 2, 2 8 4, 3 2, 2 2, 3 3, 4 1, 2 3, 4 3, 4 2, 1 2, 3 9 2, 3 1, 2 3, 4 2, 3 4, 3 1, 1 4, 3 1, 1 3, 2 10 1, 2 1, 2 4, 3 2, 2 3, 3 2, 2 2, 1 2, 2 3, 3 11 3, 2 3, 1 2, 1 2, 1 4, 2 1, 2 3, 4 2, 3 2, 3 12 4, 3 2, 1 3, 2 3, 4 3, 1 1, 2 4, 3 3, 4 1, 3 13 3, 3 2, 2 2, 3 4, 3 2, 2 2, 1 2, 1 2, 3 2, 3 14 4, 2 1, 2 2, 1 2, 1 2, 3 3, 2 2, 2 1, 2 3, 4 15 3, 3 1, 2 4, 1 2, 3 3, 4 2, 3 2, 3 2, 3 4, 3 16 2, 2 1, 1 3, 1 3, 4 2, 3 2, 1 3, 4 2, 2 2, 3 17 1, 2 1, 3 3, 2 1, 2 1, 2 3, 1 2, 3 2, 3 3, 4 18 2, 2 2, 2 3, 4 4, 3 3, 2 3, 2 1, 2 3, 4 4, 3 19 1, 2 2, 3 4, 1 1, 2 4, 3 2, 3 2, 4 2, 3 2, 3 20 1, 3 2, 2 4, 2 3, 2 3, 2 3, 4 2, 2 1, 2 3, 4

Задание 4. Коды Хаффмана

C помощью процедуры Хаффмана построить код с минимальной избыточностью для заданных P и q (таблица 4.4). Определить среднюю длину кодового слова. Построить кодовое дерево.

Таблица 4.4. Набор P и q Вариант P q

1 Р = (0,20; 0,15; 0,15; 0,13; 0,12; 0,11; 0,11; 0,03) 3 2 Р = (0,4; 0,2; 0,1; 0,1; 0,05; 0,05; 0,05; 0,05) 3

91

Page 92: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Таблица 4.4. Окончание Вариант P q

3 Р = (0,5; 0,1; 0,1; 0,1; 0,1; 0,1) 2 4 Р = (0,3; 0,2; 0,1; 0,1; 0,06; 0,06; 0,06; 0,06; 0,06) 4 5 Р = (0,4; 0,2; 0,1; 0,1; 0,1; 0,1) 3 6 Р = (0,2; 0,20; 0,17; 0,15;0,13; 0,08; 0,04; 0,03) 4 7 Р = (0,3; 0,3; 0,1; 0,1; 0,1; 0,1) 3 8 Р = (0,23; 0,22; 0,21; 0,14; 0,09; 0,03; 0,02; 0,02; 0,02; 0,02) 4 9 Р = (0,3; 0,2; 0,1; 0,1; 0,1; 0,1; 0,1) 4 10 Р = (0,4; 0,1; 0,1; 0,1; 0,1; 0,08; 0,06; 0,06) 3 11 Р = (0,23; 0,22; 0,18; 0,17; 0,08; 0,04; 0,02; 0,02; 0,02; 0,02) 4 12 Р = (0,3; 0,3; 0,2; 0,04; 0,03; 0,03; 0,03; 0,03; 0,03; 0,01) 4 13 Р = (0,2; 0,2; 0,1; 0,1; 0,1; 0,1; 0,08; 0,06; 0,06) 3 14 Р = (0,24; 0,21; 0,20; 0,15; 0,08; 0,04; 0,02; 0,02; 0,02; 0,02) 3 15 Р = (0,4; 0,2; 0,1; 0,08; 0,06; 0,04; 0,04; 0,04; 0,04) 3 16 Р = (0,5; 0,2; 0,1; 0,09; 0,08; 0,03) 2 17 Р = (0,24; 0,21; 0,20; 0,15; 0,08; 0,04; 0,02; 0,02; 0,02; 0,02) 4 18 Р = (0,3; 0,2; 0,2; 0,1; 0,1; 0,05; 0,05) 2 19 Р = (0,21; 0,20; 0,17; 0,16;0,12; 0,08; 0,04; 0,02) 4 20 Р = (0,4; 0,3; 0,08; 0,06; 0,04; 0,04; 0,04; 0,04) 2

Задание 5. Коды Хэмминга

1) Закодировать данное слово α кодом Хэмминга. 2) По каналу связи передавалось кодовое слово, построенное по

методу Хэмминга β. Восстановить исходное сообщение. 3) Пользуясь кодом Хэмминга, найти ошибку в сообщении γ. Исходные данные приведены в таблице 4.5.

Таблица 4.5. Исходные данные к заданию 5 Вариант α β γ

1 101 0011 1101 010 1001 001 1101 1000 1111 2 100 0011 0110 000 1010 011 1100 0000 0001 3 100 1011 1001 101 0011 000 1110 1100 0001

92

Page 93: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Таблица 4.5. Окончание

Задание 6. Дешифратор

По данной кодовой комбинации α (таблица 4.6) построить дешифратор с входным алфавитом {x, y} и записать его диаграммой состояний и таблицей состояний.

Таблица 4.6. Исходные данные к заданию 6

Вариант α β γ 4 010 0111 1100 111 1000 110 1011 0010 1010 5 110 0011 0011 001 1101 111 0000 0101 0000 6 100 1111 0011 101 1000 010 1100 0000 1011 7 110 0011 1001 011 0010 011 0001 0001 0101 8 100 0110 1010 100 1101 101 0100 0100 0000 9 001 0011 1101 110 0101 010 1101 0001 0101 10 110 0111 0001 000 1111 110 1010 0110 1101 11 101 0100 1111 111 0011 101 0010 1001 0010 12 100 1110 0010 001 1100 010 1100 1110 1100 13 010 1110 0111 100 0101 111 0010 0001 0001 14 011 0100 1000 001 1110 000 0101 0010 1010 15 101 1110 1110 111 1011 011 1010 0010 0100 16 101 1001 1000 111 0010 111 1100 1010 1110 17 110 1100 1100 001 1000 010 1010 1000 1001 18 011 1110 1001 110 1011 010 0100 1010 1011 19 110 1001 0101 010 1110 111 1100 1101 0101 20 011 1100 1011 100 0111 000 0001 1001 0101

Вариант α Вариант α 1 xxyxxyyy 8 xxyyyyyx 2 yyyxxyxy 9 xyyyyyxy 3 xxyyxxyx 10 yxyxyxxy 4 yyxxxyxy 11 yxxyyxxx 5 xyxyxxyx 12 xxyyxyyy 6 xxyyyxxy 13 yxxxyyyy 7 yyyxyyxx 14 yyxxxyxy

93

Page 94: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Таблица 4.6. Окончание

Задание 7. Минимальный автомат

Для данного конечного автомата, заданного таблично, со множеством внутренних состояний {1, 2, 3, 4, 5, 6, 7, 8, 9}, входным алфавитом {a, b} и выходным алфавитом {x, y} (таблица 4.7) построить эквивалентный минимальный автомат и проверить работу исходного и минимального автоматов над словом «baababb».

Таблица 4.7. Исходные данные к заданию 7

Вариант α Вариант α 15 xyyxyxyy 18 yxyyxyyy 16 yyxyxxyx 19 xyxyyyxy 17 xyxxxyyx 20 yxyxxxyx

Вариант Таблица состояний автомата

1

Q

A

1 2 3 4 5 6 7 8 9

a 4,х 3,у 7,х 5,х 8,х 7,х 2,у 5,х 2,у

b 7,у 4,y 9,x 9,у 7,y 9,у 8,х 9,y 5,х

2

Q

A

1 2 3 4 5 6 7 8 9

a 2,х 1,x 3,y 5,х 4,х 8,х 3,у 6,х 3,у

b 3,x 4,x 1,x 2,x 3,x 3,x 8,y 8,x 4,y

3

Q

A

1 2 3 4 5 6 7 8 9

a 2,х 6,y 8,y 7,y 4,y 3,х 4,x 2,х 3,у

b 5,y 9,x 9,x 5,x 6,x 7,y 8,y 6,y 8,x

94

Page 95: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Таблица 4.7. Продолжение

Вариант Таблица состояний автомата

4

Q

A

1 2 3 4 5 6 7 8 9

a 2,х 4,x 2,х 2,х 9,x 9,y 8,x 7,х 7,x

b 3,x 6,x 1,x 3,y 3,y 7,x 1,y 6,x 6,x

5

Q

A

1 2 3 4 5 6 7 8 9

a 2,х 4,x 4,х 3,х 6,y 7,x 6,x 7,х 7,x

b 5,x 3,x 2,x 5,y 6,y 5,y 7,x 5,x 5,x

6

Q

A

1 2 3 4 5 6 7 8 9

a 2,х 3,x 4,х 5,х 4,x 4,x 8,x 5,х 8,x

b 1,y 7,y 3,y 7,y 5,y 7,x 6,x 9,y 9,x

7

Q

A

1 2 3 4 5 6 7 8 9

a 2,х 1,x 4,х 5,х 4,y 7,x 6,y 6,х 6,x

b 3,x 3,x 5,x 6,y 9,y 4,y 8,y 7,x 5,x

8

Q

A

1 2 3 4 5 6 7 8 9

a 2,y 4,y 9,y 5,y 4,y 7,y 9,y 3,y 8,x

b 7,y 3,y 2,y 3,y 7,y 9,x 4,y 9,x 9,y

95

Page 96: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Таблица 4.7. Продолжение

Вариант Таблица состояний автомата

9

Q

A

1 2 3 4 5 6 7 8 9

a 3,x 8,x 4,x 1,x 8,x 7,y 6,y 9,y 9,y

b 2,x 5,x 5,x 5,x 2,x 8,y 8,y 8,x 8,y

10

Q

A

1 2 3 4 5 6 7 8 9

a 5,x 3,y 7,x 8,x 1,y 9,x 4,y 3,y 4,y

b 8,y 6,x 5,y 7,y 7,y 1,y 8,y 5,y 6,x

11

Q

A

1 2 3 4 5 6 7 8 9

a 2,x 7,x 7,x 3,x 3,x 5,x 6,y 4,x 1,x

b 1,x 3,x 2,x 5,x 4,x 7,y 7,y 7,y 7,y

12

Q

A

1 2 3 4 5 6 7 8 9

a 2,y 6,y 5,y 4,x 6,y 8,x 8,y 9,y 8,x

b 9,y 3,y 6,y 3,x 3,y 4,y 6,y 7,y 4,x

13

Q

A

1 2 3 4 5 6 7 8 9

a 2,x 4,x 2,x 2,x 9,x 9,y 8,x 7,x 7,x

b 3,x 6,x 1,x 3,y 3,y 7,x 1,y 6,x 6,x

96

Page 97: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Таблица 4.7. Продолжение

Вариант Таблица состояний автомата

14

Q

A

1 2 3 4 5 6 7 8 9

a 3,y 2,y 1,y 5,x 5,y 7,y 7,y 8,y 5,y

b 7,y 3,x 7,y 4,x 6,y 5,y 3,y 9,y 8,y

15

Q

A

1 2 3 4 5 6 7 8 9

a 2,x 4,x 4,x 3,x 5,y 7,x 6,x 7,x 7,x

b 1,x 5,x 5,x 5,y 6,y 5,y 5,x 9,x 8,x

16

Q

A

1 2 3 4 5 6 7 8 9

a 1,y 1,y 4,y 3,y 6,x 5,y 8,y 7,x 4,y

b 2,x 5,x 2,x 9,x 8,x 2,y 9,y 5,x 8,x

17

Q

A

1 2 3 4 5 6 7 8 9

a 4,x 5,x 3,x 9,x 3,y 6,x 6,y 7,x 9,x

b 2,x 2,x 5,y 2,x 8,y 7,y 8,y 2,x 8,x

18

Q

A

1 2 3 4 5 6 7 8 9

a 2,y 1,y 2,y 5,x 3,y 6,x 8,y 7,y 5,y

b 1,y 4,y 3,y 4,y 4,y 9,x 4,y 9,y 8,y

97

Page 98: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Таблица 4.7. Окончание

Вариант Таблица состояний автомата

19

Q

A

1 2 3 4 5 6 7 8 9

a 1,x 3,x 2,x 6,x 5,x 4,y 7,x 9,x 8,y

b 2,x 9,x 6,x 5,y 6,x 5,x 5,x 3,y 3,x

20

Q

A

1 2 3 4 5 6 7 8 9

a 2,y 1,y 6,y 4,y 7,y 3,y 7,x 7,y 7,y

b 3,y 3,y 2,x 6,y 5,y 4,x 8,x 9,y 8,y

98

Page 99: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Аляев, Ю. А. Дискретная математика и математическая логика : учебник для студ. вузов, обучающихся по спец. «Прикл. информатика (по обл.)» и др. экон. спец. / Ю. А. Аляев, С. Ф. Тюрин. – Москва : Финансы и статистика, 2006. – 365 с.

2. Гаврилов, Г. П. Задачи и упражнения по дискретной математике / Г. П. Гаврилов, А. А. Сапоженко. – 3-е изд., перераб. – Москва : Физматлит, 2006. – 416 с.

3. Иванов, Б. Н. Дискретная математика. Алгоритмы и программы. Расширенный курс / Б. Н. Иванов. – Москва : Известия, 2011. – 512 с.

4. Кузнецов, О. П. Дискретная математика для инженера : учебник / О. П. Кузнецов. – 6-е изд., стер. – Санкт-Петербург [и др.] : Лань, 2009. – 395 с.

5. Майника, Э. Алгоритмы оптимизации на сетях и графах / Э. Майника. – Москва : Мир, 1981. – 325 с.

6. Новиков, Ф. А. Дискретная математика : учебник для вузов / Ф. А. Новиков. – 2-e изд. – Санкт-Петербург [и др. ] : Питер, 2014. – 399 с. – (Стандарт третьего поколения).

7. Тишин, В. В. Дискретная математика в примерах и задачах / В. В. Тишин. – Санкт-Петербург : БХВ-Петербург, 2008. – 352 с.

8. Шевелев, Ю. П. Дискретная математика : учебное пособие для вузов / Ю. П. Шевелев. – Санкт-Петербург [и др.] : Лань, 2008. – 591 с.

9. Яблонский, С. В. Введение в дискретную математику / С. В. Яблонский. – 4-е изд., стер. – Москва : Высшая школа, 2003. – 384 с.

99

Page 100: АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИvenec.ulstu.ru/lib/disk/2017/28.pdf · 2017-02-07 · 1.1. Применить алгоритм Дейкстры к графу,

Учебное электронное издание

КУВАЙСКОВА Юлия Евгеньевна

АЛГОРИТМЫ ДИСКРЕТНОЙ МАТЕМАТИКИ

Учебное пособие

Редактор Н. А. Евдокимова

ЭИ № 840. Объем данных 5,15 Мб.

ЛР №020640 от 22.10.97 Печатное издание

Подписано в печать 07.02.2017. Формат 60×84/16. Усл. печ. л. 5,81. Тираж 100 экз. Заказ №120.

Ульяновский государственный технический университет

432027, Ульяновск, ул. Северный Венец, д. 32. ИПК «Венец» УлГТУ, 432027, ул. Северный Венец, д. 32.

Тел.: (8422) 778-113 E-mail: [email protected]

http://www.venec.ulstu.ru