Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Дискретные задачи оптимизации в экономике, планировании и управлении. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
935 Кб
Скачать

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

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

Графы и псевдографы могут выражать бинарные (парные) отношения. В графовом представлении речь идет только о наличии парных связей, выражающих какое-либо отношение, а не о качестве этих связей. Рассмотрение отношений под этим углом зрения хорошее известно из математики (отношения <, = , ≤ и т.д. между числовыми значениями). В таком же плане можно рассматривать отношения на некотором множестве людей (факт наличия и отсутствия), такие как «знакомство», «доверие», «родственная связь». Некоторые из указанных отношений выражаются набором двусторонних связей (равенство, знакомство), причем в первом случае обязательно вводятся связи-петли (значение равно самому себе). В других случаях часть связей может быть односторонними (доверие, уважение). Формальное рассмотрение отношений как графов имеет значение не только для выполнения вычислений, но может применяться и в управлении социально-экономическими и коммуникационными процессами. Рассмотрение графа знакомств позволяет выяснить, например, возможности распространения информации по каналам межличностной коммуникации и тем самым – формирование мнений.

Перейдем к дальнейшим определениям. Вершины называются смежными, если они являются концами какого-либо ребра, и несмежными – в противном случае. По отношению к каждому из своих концов ребро называется инцидентным, а концы ребра – инцидентными этому ребру. Степенью вершины считается количество смежных вершин. В графе, показанном на рис. 1.2, вершины 1, 5, 6 и 7 имеют степень 1, вершины 2 и 4 – степень 2, вершина 3 и 8 – степень 3, 9 – степень 4.

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

11

узлов-перекрестков наиболее типичной является степень 4; то же значение имеют полустепени захода и выхода. А вот при пересечении улиц с односторонним движением полустепени захода и выхода равны 2. Например, статья Артемьева цитирует три другие статьи и не цитируется в других статьях, соответственно, ее полустепень выхода равна трем, полустепень захода – нулю.

Последовательности ребер { (v1e , v2e ) , e = e1,..., eN}, для которых v1ek +1 = v2ek , k = 1,..., N-1, можно понимать как путь (маршрут) на графе, соединяющий начало первого ребра и конец последнего. Если не рассматривать мультиграфы, маршрут однозначно определяется последовательностью смежных вершин. Если игнорировать направление ребер, то последовательность неориентированных ребер указанного вида называется цепью. Длиной цепи называется количество входящих в нее ребер. Маршрут, у которого начальная и конечная вершины совпадают, называется контуром, а цепь с тем же свойством – циклом.

Важнейшим свойством графа является связность. Связным называется граф, у которого любые две вершины соединены цепью. Диаметром связного графа называется максимальная длина простых цепей между его вершинами. Общепризнанным считается установленное эмпирическим путем утверждение, что граф знакомств между всеми людьми связен и его диаметр равен шести («теория шести рукопожатий»). Это значит, что каждая пара людей либо знакома (одно рукопожатие), либо имеет общих знакомых (два рукопожатия), либо кто-то из знакомых первого человека знаком с кем-то из знакомых второго (три рукопожатия) и т.д. В рассматриваемых примерах связность имела место всегда, но легко привести и примеры, когда ее нет. Например, если в жилище есть помещения с отдельным входом, изолированные от остальных, то граф, подобный представленному на рис. 1.2, окажется несвязным. Если ограничиться примером на рис. 1.1, 1.2, можно сказать, что если дверь между помещениями 8 и 9 закрыть, то граф утратит связность. То же самое произойдет в случае пожара в помещении 9.

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

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

12

достаточно, чтобы из любого пункта можно было попасть в любой другой. Но для улично-дорожной сети (УДС) в городе, где узлами служат перекрестки, характерно наличие улиц с односторонним движением. Поэтому нормально спроектированная УДС является сильно связным графом.

Граф (орграф) либо является связным, либо распадается на компоненты связности (сильной связности), являющиеся связными

(сильно связными) суграфами. Легко понять, что всякое ребро принадлежит единственной компоненте связности, иначе бы разные компоненты связности, которым принадлежали бы его концы, объединялись бы в одну. Для сильной связности это не так. По орграфу можно построить факторизованный орграф G0, в котором компоненте связности исходного графа соответствует одна вершина, а набору ребер, начала и концы которых принадлежат соответственно компонентам K1 и K2, – одно ребро, связующее K1 и K2. На рис. 1.5. мы видим исходный орграф, имеющий три компоненты сильной связности K1, K2 и K3, обведенные кружками, и соединяющие их ребра, а также фактор-граф, в котором K1, K2 и K3 служат вершинами, а ребра показаны жирными стрелками.

 

K2

K 1

K 3

Рис. 1.5. Орграф, имеющий три компоненты сильной связности

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

Рассмотрим способы описания конечного графа. Будем считать, что вершины графа занумерованы, дуги – также. Простыми и универсальными способами представления графа являются: 1) матрица смежности A и 2) матрица инцидентности I.

13

В первом случае Aij = 1, если i-я и j-я вершины смежны, иначе Aij = 0. Для ориентированного графа Aij = 1, если i-я вершина – начало, а j-я вершина – конец ребра. Чтобы использовать информацию о номерах ребер, нужно вместо 1 использовать номер ребра, соединяющего i-ю и j-ю вершины. Во втором случае Iij = 1, если i-я вершина инцидентна j-му ребру (для орграфа Iij = 1, если i-я вершина является началом j-го ребра, и Iij = -1, если i-я вершина является его концом), иначе Iij = 0. Поскольку для связных графов n>m-1, то матрица I, по крайней мере, почти столь же велика по своим размерам, как и матрица A, а для рассматриваемых нами сетей она, как правило, в несколько раз больше. При этом каждый столбец матрицы I содержит лишь два отличных от нуля элемента. Таким образом, матрица I всегда разреженная. Для графа связей между помещениями квартиры матрицы смежности и инцидентности представлены в следующих таблицах.

 

 

 

 

 

 

 

 

 

 

Таблица 1.1

 

 

 

 

Матрица смежности

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

3

 

4

5

 

6

7

8

9

1

0

0

1

 

1

0

 

0

0

0

0

2

0

0

1

 

0

0

 

0

0

0

0

3

1

1

0

 

0

0

 

0

0

0

0

4

0

1

0

 

0

0

 

0

0

1

0

5

0

0

0

 

0

0

 

0

0

0

1

6

0

0

0

 

0

0

 

0

0

0

1

7

0

0

0

 

0

0

 

0

0

0

1

8

0

0

0

 

1

0

 

0

0

0

1

9

0

0

0

 

0

1

 

1

1

1

0

 

 

 

 

 

 

 

 

 

 

Таблица 1.2

 

 

 

Матрица инцидентности

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1–2

2–3

2–4

 

3–8

4–8

 

5–9

6–9

7–9

8–9

1

1

0

0

 

0

0

 

0

0

0

0

2

1

1

1

 

0

0

 

0

0

0

0

3

0

1

0

 

1

0

 

0

0

0

0

4

0

0

1

 

0

1

 

0

0

0

0

5

0

0

0

 

0

0

 

1

0

0

0

6

0

0

0

 

0

0

 

0

1

0

0

7

0

0

0

 

0

0

 

0

0

1

0

8

0

0

0

 

1

1

 

0

0

0

1

9

0

0

0

 

0

0

 

1

1

1

1

14

Достоинства использования обеих форм представления для больших сетей обесцениваются из-за огромных размеров. Если взять, например, всемирную сеть авиасообщений с количеством узлов (гражданских аэропортов) в несколько тысяч, а дуг (маршрутов) в несколько десятков тысяч, то видно, что уже само заполнение матриц A и I представляет собой значительную вычислительную работу.

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

Вопросы и упражнения

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

 

 

 

 

 

 

Таблица 1.3

 

 

Постоянные посетители

 

 

 

 

 

Посетители

 

 

 

 

 

 

 

Заведения

Иван

Федор

Наталья

 

Евгения

Олег

Каток

1

1

0

 

0

0

Гастроном

0

1

1

 

1

0

Отделение банка

1

1

0

 

0

1

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

2.Занумеровав ребра графа, заданного табл. 1.3, построить по этим данным матрицу инцидентности.

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

4.Может ли быть связным (сильно связным):

а) неориентированный граф; б) орграф, если в нем имеется вершина со степенью 1?

15

2. ЗАДАЧА О КРАТЧАЙШЕМ ОСТОВНОМ ДЕРЕВЕ И ЕЕ ПРАКТИЧЕСКОЕ ЗНАЧЕНИЕ

2.1. Понятие дерева и корневого дерева

Деревья – важнейший частный случай графов, имеющий самые разнообразные применения. Только в области информационных поисковых систем определено порядка дюжины различных типов деревьев. Обычно дерево представляется в виде корневого дерева, т.е. дерева с выделенной вершиной в качестве корня. Всевозможные иерархии, как естественные (классификация организмов, например, или потомки одной пары), так и искусственные (от организации властных структур до файловых систем), представляются в виде деревьев. Но в математике введено и более широкое понятие дерева, без выделения корня. Два главных свойства определяют дерево в общем случае: вопервых, связность и, во-вторых, ацикличность. Деревом называется связный граф без циклов, а лесом – произвольный граф без циклов. Формально следует признать деревом и граф из единственной вершины (такой граф не может иметь ребер).

Корневым деревом называется граф, в котором ребрам можно придать ориентацию таким образом, что:

1)единственная выделенная вершина, называющаяся корнем дерева, не является концом никакого ребра;

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

концевой вершиной, или листом.

Легко убедиться, что при выборе любой вершины v в качестве корня дерево превращается в корневое. Прежде всего отметим, что любые две вершины дерева соединяются единственной цепью (если бы цепь была не одна, то существовал бы цикл, что противоречит определению дерева). Далее отметим, что при выделенной вершине v все ребра принадлежат цепям, соединяющим v с другими вершинами. В самом деле, если бы какое-то ребро было бы «не при деле», оно соединяло бы две вершины, пути в которые из v уже известны, а значит, вместе с этими путями образовывала бы цикл.

Уровнем вершины назовем длину цепи, соединяющей ее с v. У ребер, инцидентных v, будем считать v начальной вершиной, ее уровень – 0. Конечные вершины таких ребер – вершины уровня 1. Заметим, что каждая вершина уровня i + 1 смежна хотя бы одной вершине

16

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

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

 

2

 

 

1

4

7

6

 

 

 

 

 

 

 

5

 

3

 

9

 

8

 

 

Рис. 2.1. Пример дерева

Назначим корнем дерева, скажем, вершину 5. Ей инцидентно ребро 5-9. Его конец – 9-я вершина – единственная вершина уровня 1. Уровень 2 имеют вершины 6, 7 и 9.

Введенный выше уровень вершины корневого дерева называется высотой вершины. Максимальная высота вершины называется высотой дерева H(T).

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

1.В произвольном дереве количество ребер на единицу меньше количества вершин.

2.Если из произвольного дерева удалить хотя бы одно ребро, получившийся граф будет несвязным (распадется на два дерева).

3.Если соединить ребром две вершины дерева, которые не были соединены ребром, в получившемся графе будет иметься цикл, причем только один.

Лесом называется объединение деревьев, не имеющих общих вершин и ребер.

17

5

9

6

8

7

 

3

1

2

 

4

Рис. 2.2. Превращение дерева в корневое дерево

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

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

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

18

Если таблица упорядочена по одному столбцу, то поиск значения из этого столбца в ней выполняется методом половинного деления и требует приблизительно log2N операций сравнения. Если N = 1024, что по меркам современных информационных систем очень немного, то log2N = 10. Как видим, разница очень существенная. Однако при поиске значения из другого столбца никаких преимуществ по сравнению с неупорядоченной таблицей нет. К тому же, если в такую таблицу нужно добавить или удалить строку, то в среднем нужно переместить N/2 строк. Поэтому для часто обновляемых таблиц или разнообразных запросов такой способ хранения также мало подходит.

Если же располагать данные в виде так называемого сбалансированного двоичного дерева (например, АВЛ-дерева), то при количестве значений N дерево будет иметь высоту порядка log2N. Легко видеть, что имеющее вид пирамиды симметричное двоичное дерево с 2N – 1 вершинами будет иметь высоту N – 1 (на нулевом уровне 1 вершина, на первом 2, на (N – 1)-м – 2N–1). Но оказывается, что и в общем случае высота сбалансированного дерева с N вершинами не превышает приблизительно log1,6N (так называемые деревья Фибоначчи). Детали организации информационного АВЛ-дерева и поиска на нем представлены в следующем разделе разделе. Применительно к вопросу об эффективности операций с двоичным деревом высоты H важно лишь следующее: операция поиска в нем требует выполнить сравнения не более, чем H пар чисел или строк, а восстановление сбалансированности после добавления или удаления вершин в нем – выполнить не более чем по 2H сравнений и пересылок. Такого же рода оценки количества операций справедливы и для других древовидных структур данных, например, 2–3 деревьев. Установлено, что в общем случае невозможно улучшить эти оценки, т.е. предложить более эффективный способ хранения данных.

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

В дополнение нужно сказать, что и упорядочение (сортировка) значений также наиболее эффективно выполняются с помощью алгоритмов, которые могут быть представлены древовидными структурами. Таковы алгоритмы фон Неймана и метод пирамидальной сортировки. Трудоемкость сортировки списка длины N эффективными методами составляет порядка . Nlog2N.

19

2.3. Задача о кратчайшем остовном дереве

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

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

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

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

Различие состоит в том, что в алгоритме Прима строится последовательность деревьев – подграфов T(r) искомого дерева T, в которой T(0) состоит из произвольно назначенной вершины графа и не имеет ребер, а очередное ребро er должно добавлять к множеству V(r–1) вершин T(r–1) новую вершину. Следовательно, один его конец должен принадлежать V(r–1), а другой не должен. Итак, очередное ребро имеет минимальный вес среди всех ребер, один конец которого принадлежит V(r–1), а другой не принадлежит.

Напротив, в алгоритме Краскала частичный подграф T(r–1) искомого дерева T до завершения его построения является лесом, множество вершин которого совпадает с V. Первоначально каждое дерево представляет собой одиночную вершину графа, на очередной итерации в дерево добавляется ребро er, соединяющее два дерева леса в одно. Итак, очередное ребро имеет минимальный вес среди всех ребер, концы которых принадлежит разным деревьям леса V(r–1).

Последовательность решения задачи обоими алгоритмами можно рассмотреть на примере (рис. 2.3–2.6). Для 8 итераций по алгоритму Прима имеем то же самое, что и по алгоритму Краскала, за вычетом изолированных вершин.

20

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]