Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МОТС / практикаГРАФЫ.doc
Скачиваний:
94
Добавлен:
22.03.2015
Размер:
1.03 Mб
Скачать
  1. Лекция: Графы и способы их представления

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

Введение

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

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

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

Так в виде ориентированных графов можно представить любую логическую или функционально - логическую схему (рис. 1.1,а). На таких графовых моделях можно, например, оценить быстродействие схемы. Блок-схема алгоритма может быть представлена вероятностным графом (рис. 1.1,б), который позволяет оценить временные характеристики алгоритма, затраты процессорного времени, трудоемкость и другие. Графом типа "дерево" можно отобразить практически любую структуру организации или предприятия (рис. 1.1,в).

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

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

a

б

в

Рис. 1.1. Графическая интерпретация применения графовых структур: а – орграф; б – вероятностный граф; в – граф-дерево

Графы и способы их представления

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

Граф задается множеством точек или вершинх1, х2, ..., хnи множеством линий или реберa1, a2, ... , am, соединяющих между собой все или часть точек. Формальное определение графа может быть дано следующим образом.

Графомназывается двойка вида

G = (X, A),

где X = {xi}, i = 1, 2, ..., n– множество вершин графа,A = {ai}, i = 1, 2,... , m– множество ребер графа.

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

Рис. 1.2.

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

Дуга ai может быть представлена упорядоченной парой вершин(хn, хk), состоящей из начальнойхnи конечнойхkвершин. Например, дляграфаG1(рис. 1.2,а) дугаa1 задается парой вершин(x2, x1), а дугаа3парой(x2, x3). Еслихnk– концевые вершины дугиai, то говорят, что вершиныхnихkинцидентны дугеaiили дугаai инцидентна вершинамхnихk.

Дуга, у которой начальная и конечная вершины совпадают, называется петлей. В графе G3 (рис. 1.2,в) дугаa7 является петлей.

Каждая вершина орграфахi может характеризоватьсяполустепенью исходаd0iполустепенью заходаdti).

Полустепенью исходавершиныхi—d0i)называется количество дуг, исходящих из этой вершины. Например, дляорграфаG1(рис. 1.2,а) характеристики полустепеней исхода следующие:d01)=1,d02)=2,d03)=2,d04 )=1.

Полустепенью заходавершиныхi—dti)называется количество дуг, входящих в эту вершину. Например, дляорграфаG1:dt1)=2,dt2)=1,dt3)=2,dt4 )=1.

Очевидно, что сумма полустепеней исхода всех вершин графа, а также сумма полустепеней захода всех вершин графа равна общему числу дуг графа, т. е.

ni=1d0(xi)= ni=1dt(xi)=m

где n– число вершин графа,m– число дуг.

Каждая вершина неориентированного графахi может характеризоваться степенью вершиныd(хi).

Степенью вершины хi–d(хi)называется количество ребер, инцидентных этой вершине. Например, дляорграфаG1(рис. 1.2,б) характеристики степеней следующие:d(х1)=2,d(х2)=3,d(х3)=3,d(х4 )=2.

Способы описания графов

Теоретико-множественное представление графов

Графописывается перечислением множества вершин и дуг. Примеры описания приведены дляорграфовна рис. 1.3 и рис. 1.4.

G4 = (Х, А),

где Х = {хi},i = 1, 2, 3, 4– множество вершин;А = {ai },i = 1, 2, ..., 6– множество дуг, причемА = {(х1, х2), (х4, х2), (х2, х4 ), (х2, х3), (х3, х3), (х4 , х1)}.

Рис. 1.3.

G5 = (X, A),

где X = {B, C, D, E, F}– множество вершинграфа,A = {ai},i = 1, 2, ..., 5– множество дугграфа, причемa1 = (F, B),a2 = (B, E),a3 = (F, D),a4 = (E, C),a5 = (C, D).

Рис. 1.4.

Задание графов соответствием

Описание графовсостоит в задании множества вершинХи соответствияГ, которое показывает, как между собой связаны вершины.

Соответствием Гназывается отображение множестваХвХ, аграфв этом случае обозначается паройG = (X, Г).

Отображением вершины хi —Г(хi)является множество вершин, в которые существуют дуги из вершиныхi, т. е.Г(хi) = { хj: дуга (хi, хj) A}.

Так для орграфана рис. 1.3 описание заданием множества вершин и соответствия выглядит следующим образом:

G4=(X, Г),

где X = {хi},I = 1, 2, ..., 4– множество вершин,Г(х1) = { х2 },Г(х2) = { х3, х4 },

Г(х3) = { х3 },Г(х4) = { х1, х2 }– отображения.

Для неориентированного или смешанного графовпредполагается, что соответствиеГ задает такой эквивалентный ориентированныйграф, который получается из исходногографазаменой каждого неориентированного ребра двумя противоположно направленными дугами, соединяющими те же самые вершины. Например, дляграфана рис. 1.2,бГ(х2) = { х1, х3, х5 },Г(х4) ={ х3, х5}и т. д.

Матричное представление графов

Для обработки на ЭВМ графыудобно представлять в видематриц смежностииинциденций.

Матрица смежности– это квадратная матрица размерностьюn xn, (гдеn– число вершинграфа), однозначно представляющая его структуру.

A = {aij},i, j = 1, 2, ..., n, а каждый элемент матрицы определяется следующим образом:

aij = 1, еслидуга(хi, хj),

aij = 0, если нет дуги(хi, хj).

Матрица инциденцийпредставляет собой прямоугольную матрицу размеромn x m, гдеn– количество вершинграфа, аm– количество дугграфа. Обозначается матрица инциденцийB = {bij},i = 1, 2, ..., n,j = 1, 2, ..., m.

Каждый элемент матрицы определяется следующим образом:

bij = 1, еслихi является начальной вершиной дугиaj,

bij = –1, еслихiявляется конечной вершиной дугиaj,

bij = 0, еслихiне является концевой вершиной дугиajили еслиajявляется петлей.

На рис. 1.5, а,б приведен графи егоматрица смежности, по которой можно найти характеристики вершин. Так сумма элементовi-ой строки матрицы даетполустепень исхода вершиныхi, а сумма элементовi-го столбца даетполустепень заходавершиныхi. Поматрице смежностиможно найти прямые и обратные отображения. Рассмотримi-ю строку матрицы. Если элементaij=1, то элементграфахjвходит в отображениеГ(хi). Например, во 2-й строке матрицыА(рис. 1.5,б) единицы стоят в 2-м и 5-м столбцах, следовательно,Г(х2) = { х2, х5}.

Рис. 1.5. Орграфи его матричное представление: а –орграф; б – матрица смежности; в – матрица инциденций

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

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

  1. Лекция: Операции над графами

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

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

Объединение графовG1 иG2, обозначаемое какG1 G2, представляет такой графG3 = (Х1 Х2, A1 A2), что множество его вершин является объединениемХ1иХ2, а множество ребер – объединениемA1иA2. ГрафG3, полученный операцией объединения графовG1иG2, показан на рис. 2.1,д, а его матрица смежности – на рис. 2.1,е. Матрица смежности результирующего графа получается операцией поэлементного логического сложения матриц смежности исходных графовG1иG2.

Рис. 2.1.

Пересечение графовG1иG2, обозначаемое какG1 G2, представляет собойграфG4 = (Х1 Х2, A1 A2). Таким образом, множество вершинграфаG4состоит из вершин, присутствующих одновременно вG1иG2. Операция пересеченияграфов G1 G2показана на рис. 2.2,в, а результирующая матрица смежности получается операцией поэлементного логического умножения матриц смежности исходныхграфовG1иG2. показана на рис. 2.2.г.

Рис.2.2. Операция пересечения и кольцевой суммы: а – граф G1; б – графG2;

в – граф G1 G2; г – матрица смежности графаG1 G2; д – графG1 G2; е – матрица смежности графаG1 G2

Кольцевая суммадвухграфовG1иG2, обозначаемая какG1 G2, представляет собойграфG5, порожденный на множестве реберA1 A2. Другими словами,графG5не имеет изолированных вершин и состоит только из ребер, присутствующих либо вG1 , либо вG2, но не в обоих одновременно. Кольцевая суммаграфовG1иG2 показана на рис. 2.2,д, а результирующая матрица смежности получается операцией поэлементного логического сложения поmod 2матриц смежности исходных графовG1иG2. показана на рис. 2.2.е.

Легко убедиться в том, что три рассмотренные операции коммутативны

т. е. G1 G2 = G2 G1, G1 G2 = G2 G1, G1 G2 = G2 G1 ,

и многоместны,

т. е. G1 G2 G3 G4 ...,G1G2 G3G4 ...и так далее.

Рассмотрим унарные операции на графе.

Удаление вершины. Еслихi-вершина графаG = (X, A), тоG–хi-порожденный подграфграфаGна множестве вершинX–хi, т. е.G–хiявляетсяграфом, получившимся после удаления изграфаG вершиныхi и всех ребер, инцидентных этой вершине. Удаление вершиных3 показано на рис. 2.3,б (для исходного графа, изображенного на рис. 2.3,а). Матрица смежности исходногографа представлена на таблице 2.1а). Результирующая матрица смежностиграфа после выполнения операции удаления вершиныхiполучается путем удаления соответствующегоi- го столбца иi-ой строки из исходной матрицы и "сжимания" матрицы по вертикали и горизонтали начиная с(i+1)- го столбца и(i+1)-ой строки (таблица 2.1б). В дальнейшем элементы графа могут быть переобозначены.

Рис. 2.3.

Удаление ребраилиудаление дуги. Еслиai -дугаграфаG = (X, A),тоG-ai – подграфграфаG, получающийся после удаления изGдугиai. Заметим, что концевые вершины дугиai не удаляются. Удаление изграфамножества вершин или дуг определяется как последовательное удаление определенных вершин или дуг. Удаление дугa4 иa7показано на рис. 2.3,в. Результирующая матрица смежностиграфапосле выполнения операции удаления дуги ai получается путем удаления соответствующих элементов из исходной матрицы (таблица 2.1в).

Замыкание или отождествление. Говорят, что пара вершинхi иxjвграфеGзамыкается (или отождествляется), если они заменяются такой новой вершиной, что все дуги вграфеG, инцидентныехiиxj, становятся инцидентными новой вершине. Например, результат замыкания вершиных1 их2показан на рис. 2.3,г дляграфаG(рис. 2.3,а). Матрица смежностиграфапосле выполнения операции замыкания вершинхiиxj получается путем поэлементного логического сложенияi- го иj- го столбцов иi-ой иj- строк в исходной матрице и "сжимания" матрицы по вертикали и горизонтали (таблица 2.1г).

Стягивание. Под стягиванием подразумевают операцию удаления дуги или ребра и отождествление его концевых вершин.Граф, изображенный на рис. 2.3,д получен стягиванием дугиa1, а на рис. 2.3,е – стягиванием дугa1 ,a6 иa7. Соответствующие результирующие матрицы смежности показаны в таблицах 2.1д и 2.1е.

3.Лекция: Многозначные отображения и транзитивные замыкания

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

Многозначные отображения

Прямые отображения

Прямым отображением 1-го порядка вершины хi является множество таких вершинграфа, для которых существует дуга(хi, xj), т. еГ1( хi ) = {xj : дуга (хi, xj) A}дляграфа

G = (X, A), гдеX ={ хi },i =1, 2, ..., n– множество вершин, аA = {ai},i = 1, 2, ..., m– множество дуг.

Прямое отображение 2-го порядка вершины хi – это прямое отображение от прямого отображения 1-го порядка, т. е.Г+2( хi ) = Г+( Г+1 ( хi ) ).

Аналогично можно записать для прямого отображения 3-го и т. д. n-го порядка.

Г+3(xi)= Г++2(xi))= Г+++1(xi)))

...

Г+n(xi)=Г++(n-1)(xi)).

Рис. 3.1. Орграф G

Прямые многозначные отображения для графа на рис. 3.1 находятся следующим образом:

Г+1(x1)=(x2,x3),

Г+2(x1)=Г++1(x1))=Г+(x2,x3)=(x3,x5),

Г+3(x1)=Г++2(x1))=Г+(x3,x5)=(x3,x1)и т. д.

Обратные отображения

Обратным отображением 1-го порядка для вершины хiявляется множество элементовxj таких, что существует дуга(xj, хi), принадлежащая множеству дуг графа, т. е.

Г-1i ) = { xj : дуга (хj, хi) А }.

Обратные отображения 2-го, 3-го и т. д. n-го порядка определяются следующим образом:

Г-2(xi)= Г--1(xi)),

Г-3(xi)= Г--2(xi)),

...

Г-n(xi)= Г--(n-1)(xi)).

Для графа на рис. 3.1 обратные многозначные отображения вершины х1 находятся следующим образом:

Г-1(x1)=x5,

Г-2(x1)= Г--1(x1))=Г-(x5)= x2,x4,

Г-3(x1)= Г--2(x1))=Г-(x2x4)= x1,

Г-4(x1)= Г--3(x1))=Г-(x1)= x5и т.д.

П р и м е ч а н и я:

  1. Когда отображение действует не на одну вершину, а на множество вершин

Хq = { х1, х2, ..., хq }, то подГ(Хq)понимают объединение

Г(х1) Г(х2) ...Г(хq).

2. Многозначное отображениедля неориентированногографастроится, если представить каждое ребро двумя противоположно направленными дугами (рис. 3.2).

Рис. 3.2. Граф: а – неориентированный; б – тождественный ему ориентированный

http://images.google.com/imgres?imgurl=http://www.intuit.ru/department/algorithms/ingrth/5/05-04.gif&imgrefurl=http://www.intuit.ru/department/algorithms/ingrth/5/&usg=__KPXfdLHNyY_u3OpFt0mrYtULRVQ=&h=358&w=315&sz=9&hl=ru&start=3&um=1&tbnid=vTFUql_rFlKhIM:&tbnh=121&tbnw=106&prev=/images%3Fq%3D%25D0%25B3%25D1%2580%25D0%25B0%25D1%2584%25D1%258B%26hl%3Dru%26client%3Dopera%26rls%3Dru%26sa%3DX%26um%3D1

Транзитивные замыкания

Прямое транзитивное замыкание

Прямым транзитивным замыканиемнекоторой вершиныхi – T+( хi )является объединение самой вершиныхiс прямыми отображениями 1-го порядка, второго порядка и т. д., т. е.

T+( хi ) = хi Г+1 ( хi ) Г+2( хi ) ...

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

Так, для графа на рис. 3.1.

Г+1 ( х1 ) = { х2, х3 }, Г+2( х1 ) = { х3, х5 }, Г+3( х1 ) = { х3, х1 }, Г+4( х1 ) = { х2, х3 }.

Отображение четвертого порядка содержит те же элементы, что и отображение 1-го порядка, следовательно, других элементов в последующих отображениях не появится. Транзитивное замыканиедля вершиных1получается следующим образом:

T+( х1 ) = х1 { х2, х3 } { х3, х5 } { х3, х1 } = { х1, х2, х3, х5 }.

Проанализировав множество вершин, входящих в T+( хi ), можно сделать вывод:прямое транзитивное замыканиесодержит вершины, в которые есть пути из вершиныхi. Таким образом, можно дать второе определениеT+( хi ).

Прямое транзитивное замыканиенекоторой вершиныхiT+( хi ) – это множество вершин, достижимых из вершиныхi, т. е.T ( хi ) = { хj | путь из хi в хj }.

Обратное транзитивное замыкание

Обратным транзитивным замыканиемнекоторой вершиныхi –T-( хi )является объединение этой вершины с обратными отображениями 1-го, 2-го и т. д.n-го порядка, т. е.

T-( хi ) = хi Г-1i ) Г-2i ) ...

Иначе, обратное транзитивное замыкание для некоторой вершины хi –T-( хi )– это множество вершин, из которых достижима вершина хi,

т. е. T-( хi ) = { xj | путь из xj в хi }.

Рассмотрим построение обратного транзитивного замыкания для графа на рис. 3.1.

Г-11) = { х5 }, Г-21) = { х2, х4 }, Г-31) = { х1 }, Г-41) = { х5 },

T-1) = х1 { х5 }{ х2, х4 } { х1 } { х5 } = {х1, х2, х4, х5}.

Нахождение транзитивных замыканий по матрице смежности

Рассмотрим метод нахождения прямого транзитивного замыкания по матрице смежности, показанной на рис. 3.3,а для вершины х2графа, изображенного на рис. 3.3,б. На 1-м шаге итерации заносим 0 в столбецТ+для элементах2и просматриваем 2-ю строку матрицы. Находим, что элементыa22=1 иa25=1. Заносим 1 в 5-ю клеткуТ+. 2-я клетка уже занята нулем, поэтому 1 не заносим. 2-й шаг начинается просмотром 5-й строки матрицы смежности, соответствующий вершинех5графа. Находим, что элементыa51=1иa54=1, т. е. из вершиных5имеются дуги в вершиных1их4или иначе из вершиных2имеются пути длиной 2 в вершиных1их4. Длину пути 2 заносим в 1-ю и 4-ю клетки столбцаT+2). На 3-м шаге анализируются 1-я и 4-я строки матрицы смежностиА. Находим элементыa12=1,a13=1,a43=1. В соответствующие свободные клетки

Рис. 3.3. Построение прямого (а) и обратного (в) транзитивных замыканий для графа(б)

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

Таким образом, в столбце T+2)стоят числа равные длине пути от вершиных2к соответствующим вершинамграфа. Путь отх2кх3равный 3 показан штриховой линией на рис. 3.3,б. В столбцеT+( х2 )отмечены все вершины, достижимые из вершиных2, следовательно, они входят вT+( х2 ).

T+( х2 ) = { х1, х2, х3, х4, х5 }.

Во втором столбце показано построение прямого транзитивного замыканиявершиных1 – T+( х1 ).

T+( х1 ) = { х1, х2, х3, х4, х5 }.

Нахождение обратного транзитивного замыканияпо матрице смежности показано на рис. 3.1,в. Рассмотрим нахождениеобратного транзитивного замыканиявершиных3– T-( х3 ), которое начинается с занесения 0 в 3-ю клетку строкиT-( х3 ). На 1-м шаге алгоритма, помеченного стрелкой с цифрой 1, просматриваем 3-й столбец матрицыА. Определяем элементы равные 1, т. е.a13=1иa43=1. Следовательно, вграфеиз вершинх1их4есть дуги в вершинух3. Заносим 1 в 1-ю и 4-ю клеткиT-3). На втором шаге просматриваем 1-й и 4-й столбцы матрицыA. Находимa51=1,a61=1,a54=1и проставляем 2 (так как длина пути от этих вершин до вершиных3равна 2) в свободные клеткиT-3), т. е. в 5-ю и 6-ю клетки. 3-й шаг заключается в просмотре 5-го и 6-го столбцов матрицыA. Элементыa25=1,a65=1,a66=1позволяют поставить 3 во 2-ю клетку строкиT-( х3 ). 4-й шаг просмотра 2-го столбца дает элементыa12 = 1иa22 = 1, уже вошедшие вT-3). Итак, сформировано обратное транзитивное замыкание для вершиных3.

T-( х3 ) = { х1, х2, х3, х4, х5, х6 }.

Числа, стоящие в клетках T-( х3 ), показывают длину кратчайшего пути от соответствующих вершин до вершиных3.

Во второй строке показано формирование обратного транзитивного замыкания вершины х1.

T-( х1 ) = { х1, х2, х5, х6 }.