Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГОСЫ / ГОСБилеты.odt
Скачиваний:
139
Добавлен:
05.06.2015
Размер:
1.54 Mб
Скачать

Билет 3.

1. Графы. Основные определения. Машинное представление графов в последовательной памяти и связанной памяти.

Граф - нелинейная многосвязная динамическая структура, отображающая свойства и связи сложного объекта, обладающая следующими свойствами:

на каждый элемент (узел, вершину) может быть произвольное количество ссылок;

каждый элемент может иметь связь с любым количеством других элементов;

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

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

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

Граф, все связи которого ориентированные, называется ориентированным или орграфом. Граф со всеми неориентированными связями называется неориентированным, а граф со связями обоих типов - смешанным графом. Обозначение связей: неориентированных - (A,B), ориентированных - <A,B>. Примеры изображений графов приведены на рис. 6.1. Скобочное представление имеет вид: а). ((A,B),(B,A)) и б). (< A,B >,< B,A >).

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

(B)

(A)

(B)

(A)

а). б).

Рис. 6.1. Граф неориентированный (а) и ориентированный (б).

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

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

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

Существует несколько способов графического изображения деревьев (рис. 6.1).

V0

V1

V2

V5

V6

V3

V4

V7

V8

V9

V10

(V0)

(V1)

(V7)

(V8)

(V9)

(V3)

(V2)

(V4)

(V5)

(V6)

а). б).

(V10)

V0

V1

V2

V7

V9

V8

V1

V7

V2

V3

V4

V9

V5

V6

V10

V10

V5

V6

V3

V4

V0

V8

в). г).

Рис.

6.2. Представление дерева: а) исходное дерево,б) оглавление книг, в) граф, г) диаграмма Венна.

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

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

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

При представлении в виде списочной структуры, используется два типа списков - список вершин и список ребер. Элемент списка вершин содержит поле данных и два указателя. Один указатель связывает данный элемент с элементом другой вершины. Второй указатель связывает элемент списка вершин со списком ребер, связанных с данной вершиной.

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

a

b

c

d

а).

(c,d)

(b,d)

(a,d)

(a,c)

(a,b)

A

B

C

D

список дуг, связанных с вершиной a

элементы списка дуг

б).

Рис. 6.3. Представление графа (а) в виде списочной структуры (б).

Распространенным способом представления графов является матричный способ (рис. 6.4). Для ненаправленных графов обычно используют матрицы смежности, а для ориентированных графов - матрицы инцидентности. Обе матрицы имеют размерность n*n, где n-число вершин в графе.

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

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

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

b

c

e

a

d

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

a

b

c

d

e

a

0

0

1

1

0

b

0

0

1

0

0

c

0

1

0

1

1

d

1

0

1

0

1

e

1

0

1

1

0

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

a

b

c

d

e

a

0

0

1

1

0

b

0

0

1

0

0

c

0

0

0

1

1

d

0

0

0

0

1

e

0

0

0

1

0

Рис. 6.4. Граф и его матричное представление.

Правила построения матрицы инцидентности аналогичны правилам построения матрицы инцидентности. Разница состоит в том, что единица в позиции m(i,j) означает выход дуги из вершины i и вход дуги в вершину j.

В некоторых матричных алгоритмах обработки графов используются матрицы путей. Под путем длиной k из вершины i в вершину j будем понимать возможность попасть из вершины i в вершину j за k переходов, каждому из которых соответствует одна дуга. Одна матрица путей mk содержит сведения о наличии всех путей одной длины k в графе. Единичное значение в позиции (i,j) означает наличие пути длины k из вершины i в вершину j.

Матрица m1 полностью совпадает с матрицей инцидентности. По матрице m1 можно построить m2 , а по матрице m2 можно построить m3 и т.д. Если граф является ациклическим, то число матриц путей ограничено. В противном случае матрицы будут повторяться до бесконечности с некоторым периодом, связанным с длиной циклов. Матрицы путей не имеет смысла вычислять до бесконечности. Достаточно остановиться в случае повторения матриц.

Матрица путей m1.

a

b

c

d

e

a

0

0

1

1

0

b

0

0

1

0

0

c

0

0

0

1

1

d

0

0

0

0

1

e

0

0

0

1

0

Матрица путей m2.

a

b

c

d

e

a

0

0

0

1

1

b

0

0

0

1

1

c

0

0

0

1

1

d

0

0

0

1

0

e

0

0

0

0

1

Матрица путей m3.

a

b

c

d

e

a

0

0

0

1

1

b

0

0

0

1

1

c

0

0

0

1

1

d

0

0

0

0

1

e

0

0

0

1

0

Соседние файлы в папке ГОСЫ