Содержание

Слайд 2

Основное определение Неориентированный ГРАФ – это упорядоченная пара (V,E), где: V

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

Неориентированный ГРАФ – это упорядоченная пара (V,E), где:
V – множество

вершин (конечное);
E – множество пар вершин (множество ребер).
При этом природа множества V может быть любой.
Слайд 3

Пример графа-1

Пример графа-1

Слайд 4

Пример графа-2

Пример графа-2

Слайд 5

Будет ли ЭТО графом?

Будет ли ЭТО графом?

Слайд 6

А ЭТО?

А ЭТО?

Слайд 7

А ЭТО?

А ЭТО?

Слайд 8

Порядок и размер графа Количество вершин называется порядком графа. Количество ребер называется размером графа.

Порядок и размер графа

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

графа.
Слайд 9

Некоторые термины-1 Пусть R=(a,b) – одно из ребер графа. Тогда вершины

Некоторые термины-1

Пусть R=(a,b) – одно из ребер графа. Тогда вершины a

и b называются концевыми вершинами ребра;
Концевые вершины одного и того же ребра называют соседними;
Два ребра называют смежными, если они имеют общую концевую вершину;
Два ребра называются кратными, если множества их концевых вершин совпадают;
Ребро называется петлей, если его концы совпадают.
Слайд 10

Степенью вершины V обозначается deg(V) называется количество ребер, для которых эта

Степенью вершины V обозначается deg(V) называется количество ребер, для которых эта

вершина является концевой;
Вершина называется изолированной, если она не является концевой ни для одного ребра;
Вершина называется листом, если она является концевой ровно для одного ребра. Для листа q очевидно deg(q)=1.

Некоторые термины-2

Слайд 11

Пример: deg(C)=4 H1,…H4 - Листья

Пример:

deg(C)=4
H1,…H4 - Листья

Слайд 12

Еще пример: Города B и Д – изолированные вершины; Города Г и Е – листья.

Еще пример:

Города B и Д – изолированные вершины; Города Г и

Е – листья.
Слайд 13

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

Полный граф

Граф называется полным, если любые две вершины соединены ребром.
Сколько ребер

у полного графа
порядка n?

У полного графа порядка n число ребер равно Cn2=n!/(2*(n-2)!) =n*(n-1)/2

Слайд 14

Давайте это докажем… Полный граф с двумя вершинами содержит одно ребро

Давайте это докажем…

Полный граф с двумя вершинами содержит одно ребро –

это очевидно.
Подставим n=2 в формулу n*(n-1)/2
Получим:
n*(n-1)/2=1
Формула верна при n=2
Слайд 15

Предположение индукции Предположим, что формула верна для графа c k вершинами.

Предположение индукции

Предположим, что формула верна для графа c k вершинами.
Докажем, что

отсюда следует справедливость формулы для графа c (k+1) вершиной.
Слайд 16

Добавим к полному графу с K вершинами еще одну вершину. И

Добавим к полному графу с K вершинами еще одну вершину.

И соединим

ее с первыми K вершинами…
Слайд 17

Получим:

Получим:

Слайд 18

Считаем, сколько получилось ребер… K*(K-1)/2 + K = K*(K+1)/2 Последнее выражение

Считаем, сколько получилось ребер…

K*(K-1)/2 + K
=
K*(K+1)/2

Последнее выражение получается, если в

формулу n*(n-1)/2 вместо n подставить K+1.
Слайд 19

Из предположения справедливости утверждения при n=k следует справедливость утверждения при n=k+1. Теорема доказана.

Из предположения справедливости утверждения при n=k следует справедливость утверждения при n=k+1.
Теорема

доказана.
Слайд 20

Примеры полных графов

Примеры полных графов

Слайд 21

Важное уточнение Пары, задающие ребра в неориенти-рованном графе, неупорядочены (т.е. пары (a,b) и (b,a) не различают-ся)

Важное уточнение

Пары, задающие ребра в неориенти-рованном графе, неупорядочены (т.е. пары

(a,b) и (b,a) не различают-ся)
Слайд 22

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

Ориентированный граф

Если ребра графа есть множество упорядоченных пар (т.е. (a,b) ≠

(b,a)),
То граф называется ориентированным (или орграфом)

Как придать понятию ориентации наглядный смысл?

Очень просто – ребра снабжаются стрелками (от начала к концу)!

Слайд 23

Пример орграфа

Пример орграфа

Слайд 24

Смешанный граф Смешанный граф – это тройка (V, E, A). V

Смешанный граф
Смешанный граф – это тройка (V, E, A).
V – множество

вершин;
E – множество неориентированных ребер;
A- множество ориентированных ребер.

Кстати, ориентированные ребра называются дугами.

Слайд 25

Изоморфизм графов Пусть имеется два графа G1 и G2 Если имеется

Изоморфизм графов

Пусть имеется два графа G1 и G2
Если имеется взаимно-однозначное соответствие

F между вершинами графов G1 и G2 , такое что:
если в графе G1 есть ребро (a,b), то и в графе G2 есть ребро (F(a),F(b))
если в графе G2 есть ребро (p,q), то и в графе G1 есть ребро (F-1(p),F-1(q))
то графы G1 и G2 называются изоморфными, а соответствие F – изоморфизмом.
Слайд 26

Уточнение Для орграфов и смешанных графов соответствие F должно сохранять ориентацию дуг.

Уточнение

Для орграфов и смешанных графов соответствие F должно сохранять ориентацию

дуг.
Слайд 27

Необходимое условия изоморфизма При каких условиях между элементами двух конечных множеств

Необходимое условия изоморфизма

При каких условиях между элементами двух конечных множеств можно

установить взаимно-однозначное соответствие?

Тогда и только тогда, число их элементов одинаково.

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

Слайд 28

Достаточно ли это условие? Нет, поскольку вершины могут быть соединены по-разному.

Достаточно ли это условие?

Нет, поскольку вершины могут быть соединены по-разному.

Слайд 29

Изоморфны ли эти графы? Число вершин одинаково – необходимое условие соблюдено…

Изоморфны ли эти графы?

Число вершин одинаково – необходимое условие соблюдено…

Слайд 30

Пробуем построить соответствие F… Это – не изоморфизм: в G1 есть

Пробуем построить соответствие F…

Это – не изоморфизм: в G1 есть ребро

(A,Д), а образы этих ребер в G2 не соединены.
Слайд 31

Другая попытка… А это изоморфизм!

Другая попытка…

А это изоморфизм!

Слайд 32

А эти графы изоморфны? Увы, нет…

А эти графы изоморфны?

Увы, нет…

Слайд 33

С точки зрения теории два изоморфных графа – это один и

С точки зрения теории два изоморфных графа – это один и

тот же объект (только, может быть, по-разному изображенный…)
Слайд 34

Пути (цепи): Путь (цепь) это последовательность вершин: a1, a2, … ,

Пути (цепи):

Путь (цепь) это последовательность вершин:
a1, a2, … , an
в которой

соседние вершины ai и ai+1 соединены ребрами.
Длина пути есть число составляющих его ребер
Слайд 35

Примеры путей: (А, Г, В) и (А, Б, Д) – пути.

Примеры путей:

(А, Г, В) и (А, Б, Д) – пути. (А,

Б, В) – не путь.
Слайд 36

Понятие пути для орграфа сохраняет силу, но нуждается в дополнении –

Понятие пути для орграфа сохраняет силу, но нуждается в дополнении –

соседние вершины в последовательности
a1, a2, … , an
должны соединяться дугами.
Слайд 37

Циклы Цикл – это путь, у которого начальная и конечная вершина

Циклы

Цикл – это путь, у которого начальная и конечная вершина совпадают.
Длина

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

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

Компоненты связности

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

любых двух вершин одного класса v1 и v2 существует путь из v1 в v2

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

Эти классы называются компонентами связности.

Слайд 39

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

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

Слайд 40

Матрица смежности Занумеруем вершины графа G последовательными целыми от 1 до

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

Занумеруем вершины графа G последовательными целыми от 1 до n;
Построим

квадратную таблицу n×n и заполним ее нулями;
Если имеется ребро, соединяющее вершины i и j, то в позициях (i,j) и (j,i) поставим единицы;
Полученная таблица называется матрицей смежности графа G.
Слайд 41

Пример

Пример

Слайд 42

Некоторые очевидные свойства матрицы смежности Если вершина изолирована, то ее строка

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

Если вершина изолирована, то ее строка и столбец

будут полностью нулевые;
Количество единиц в строке (столбце) равно степени соответствующей вершины;
Для неориентированного графа матрица смежности симметрична относительно главной диагонали;
Петле соответствует единица, стоящая на главной диагонали.
Слайд 43

Обобщение для орграфа Матрицу смежности для орграфа можно строить аналогичным образом,

Обобщение для орграфа

Матрицу смежности для орграфа можно строить аналогичным образом, но,

чтобы учесть порядок вершин, можно поступить так:
Если дуга исходит из вершины j и входит в вершину k, то в позиции (j,k) матрицы смежности ставить 1, а в позиции (k,j) ставить -1.
Слайд 44

Матрица инцидентности Занумеруем вершины графа G последовательными целыми от 1 до

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

Занумеруем вершины графа G последовательными целыми от 1 до n;
Построим

прямоугольную таблицу с n строками и m столбцами (столбцы соответствуют ребрам графа);
Если j-е ребро имеет концевой вершиной вершину k, то в позиции (k,j) ставится единица. Во всех остальных случаях ставится нуль.
Слайд 45

Матрица инцидентности для орграфа Если j-я дуга исходит из вершины k,

Матрица инцидентности для орграфа

Если j-я дуга исходит из вершины k, то

в позиции (k,j) ставится 1;
Если j-я дуга входит в вершину k, то в позиции (k,j) ставится -1.
В остальных случаях в позиции (k,j) остается нуль.
Слайд 46

Поскольку столбцы матрицы инцидентности описывают ребра, то в каждом столбце может

Поскольку столбцы матрицы инцидентности описывают ребра, то в каждом столбце может

быть не более двух ненулевых элементов
Слайд 47

Пример матрицы инцидентности

Пример матрицы инцидентности

Слайд 48

Список ребер Еще один способ представления графа – двумерный массив (список

Список ребер

Еще один способ представления графа – двумерный массив (список пар).

Количество пар равно числу ребер (или дуг).
Слайд 49

Пример списка ребер

Пример списка ребер

Слайд 50

Сравнение разных способов представления Список ребер самый компактный, а матрица инцидентности

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

Список ребер самый компактный, а матрица инцидентности наименее

компактна;
Матрица инцидентности удобна при поиске циклов;
Матрица смежности проще остальных в использовании.
Слайд 51

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

Обход графа

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

просматривается один раз.
Слайд 52

Соглашение-1 Перед выполнением поиска для графа с n вершинами заведем массив

Соглашение-1

Перед выполнением поиска для графа с n вершинами заведем массив Chk

из n элементов и заполним его нулями.
Если Chk[i] = 0, значит i-я вершина еще не просмотрена.
Слайд 53

Соглашение-2 Заведем структуру данных (хранилище), в котором будем запоминать вершины в

Соглашение-2

Заведем структуру данных (хранилище), в котором будем запоминать вершины в процессе

обхода. Интерфейс хранилища должен обеспечивать три функции:
Занести вершину;
Извлечь вершину;
Проверить не пусто ли хранилище;
Слайд 54

Соглашение-3 Когда вершина j помещается в хранилище, она отмечается как просмотренная (т.е. устанавливается Chk[j]=1)

Соглашение-3

Когда вершина j помещается в хранилище, она отмечается как просмотренная (т.е.

устанавливается Chk[j]=1)
Слайд 55

Алгоритм обхода-1 1) Берем произвольную начальную вершину, печатаем и заносим ее

Алгоритм обхода-1

1) Берем произвольную начальную вершину, печатаем и заносим ее в

хранилище;
2) Хранилище пусто? Если ДА – конец;
3) Берем вершину Z из хранилища;
4) Если есть вершина Q, связанная с Z и не отмеченная, то возвращаем Z в хранилище, заносим в хранилище Q, печатаем Q;
5) Переходим к п.2
Слайд 56

Алгоритм обхода-2 1) Берем произвольную начальную вершину и заносим ее в

Алгоритм обхода-2

1) Берем произвольную начальную вершину и заносим ее в хранилище;
2)

Хранилище пусто? Если ДА – конец;
3) Берем вершину Z из хранилища, печатаем и удаляем из хранилища;
4) Помещаем в хранилище все вершины, связанные с Z и еще не отмеченные;
5) Переходим к п.2
Слайд 57

Какие структуры данных подходят в качестве хранилища? Стек (PUSH – занести;

Какие структуры данных подходят в качестве хранилища?

Стек (PUSH – занести; POP

– извлечь)
Очередь (ENQUE – занести; DEQUE – извлечь)
Обе структуры позволяют проверить наличие данных.
Слайд 58

Алгоритм-1 в сочетании со стеком называется обходом в глубину Алгоритм-2 в

Алгоритм-1 в сочетании со стеком называется обходом в глубину
Алгоритм-2 в сочетании

с очередью называется обходом в ширину
Слайд 59

Возьмем граф:

Возьмем граф:

Слайд 60

В качестве хранилища возьмем СТЕК. Используем Алгоритм-1. Обход начнем с вершины 1

В качестве хранилища возьмем СТЕК. Используем Алгоритм-1.
Обход начнем с

вершины 1
Слайд 61

Первый шаг:

Первый шаг:

Слайд 62

Второй шаг:

Второй шаг:

Слайд 63

Третий шаг:

Третий шаг:

Слайд 64

Четвертый шаг:

Четвертый шаг:

Слайд 65

Пятый шаг:

Пятый шаг:

Слайд 66

Шестой шаг:

Шестой шаг:

Слайд 67

Седьмой шаг:

Седьмой шаг:

Слайд 68

Восьмой шаг: Вершины 8, 7, 4 выталкиваются из стека, т.к. их связи уже обработаны

Восьмой шаг:

Вершины 8, 7, 4 выталкиваются из стека, т.к. их связи

уже обработаны
Слайд 69

Далее все вершины будут вытолкнуты из стека. Получился следующий порядок обхода: 1,2,3,5,4,7,8,6

Далее все вершины будут вытолкнуты из стека.
Получился следующий порядок обхода:
1,2,3,5,4,7,8,6

Слайд 70

Теперь возьмем в качестве хранилища очередь. Будем использовать Алгоритм-2. Обход снова начнем с вершины 1.

Теперь возьмем в качестве хранилища очередь. Будем использовать Алгоритм-2. Обход снова

начнем с вершины 1.
Слайд 71

Шаг первый:

Шаг первый:

Слайд 72

Шаг второй:

Шаг второй:

Слайд 73

Шаг третий:

Шаг третий:

Слайд 74

Шаг четвертый:

Шаг четвертый:

Слайд 75

Шаг пятый:

Шаг пятый:

Слайд 76

Шаг шестой:

Шаг шестой:

Слайд 77

Шаг седьмой:

Шаг седьмой:

Слайд 78

Шаг восьмой:

Шаг восьмой:

Слайд 79

Получился следующий порядок обхода: 1,2,3,4,5,7,6,8

Получился следующий порядок обхода:

1,2,3,4,5,7,6,8

Слайд 80

Замечание Оба алгоритма потребовали одинаковое число шагов. Почему? Потому, что при

Замечание

Оба алгоритма потребовали одинаковое число шагов. Почему?

Потому, что при обходе

каждая вершина печатается один раз.
Слайд 81

Поиск в глубину Перед выполнением поиска в глубину для графа с

Поиск в глубину

Перед выполнением поиска в глубину для графа с

n вершинами заведем массив Chk из n элементов и заполним его нулями.
Если Chk[i] = 0, значит i-я вершина еще не просмотрена.
Слайд 82

Алгоритм поиска в глубину с вершины p. Если Chk[p]=1 – выходим;

Алгоритм поиска в глубину с вершины p.

Если Chk[p]=1 – выходим;
Устанавливаем

Chk[p]=1
Берем по очереди все вершины k, смежные с p;
Применяем к каждой из них указанный алгоритм.
Слайд 83

Пример-1

Пример-1

Слайд 84

Пример-2

Пример-2

Слайд 85

Если граф несвязный В этом случае после обхода останутся непросмотренные вершины.

Если граф несвязный

В этом случае после обхода останутся непросмотренные вершины.
Можно

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

Сложность алгоритма Вычислительная сложность алгоритма O(n+m), где n – число вершин,

Сложность алгоритма

Вычислительная сложность алгоритма
O(n+m),
где n – число вершин, а

m – число ребер графа.