
- •Лекция 3
- •Граф – это множество вершин и соединяющих их ребер.
- •Примеры графов:
- •Представление графов
- •Если в таком виде хранить граф в памяти, нужно описать два параллельных массива
- •2. Матрица смежности –
- •Пример ввода неориентированного графа в виде последовательности ребер и формирования матрицы смежности.
- •3. Матрица весов – квадратная матрица размерности n*n
- •Описание на языке С:
- •4. Матрица инцидентности – это прямоугольная матрица размерности n*r (n – число
- •Для орграфа элемент матрицы инцидентности:
- •Описание на языке С:
- •5. Векторы смежности .
- •Описание на языке С:
- •Эта форма представления графа может быть использована и для ввода графа.
- •6. Списки смежности .
- •Описание на языке С:

4. Матрица инцидентности – это прямоугольная матрица размерности n*r (n – число
вершин, r – число ребер).
Для неориентированного графа элемент матрицы:
1, если i-я вершина инцидентна j-му ребру, mi[i][j] = 2, если j-е ребро – петля i-й вершины,
0, если i-я вершина не инцидентна j-му ребру.
11

Для орграфа элемент матрицы инцидентности:
-1, если j-я дуга выходит из i-й вершины mi[i][j] = 1, если j-я дуга входит в i-ю вершину
2, если j-я дуга – петля i-й вершины,
0, если i-я вершина не инцидентна j-й дуге.
12

Описание на языке С:
#define |
NMAX |
10 |
/* макс. число вершин */ |
|
#define |
RMAX |
100 |
/* макс. число ребер (дуг) */ |
|
int mi[NMAX][ RMAX]; /* м-ца инцидентности */ |
||||
int |
n; |
|
|
/* число вершин */ |
int |
r; |
|
|
/*число ребер */ |
13

5. Векторы смежности .
Для каждой вершины в векторе хранятся номера смежных с ней вершин.
Векторы смежности:
14

Описание на языке С:
#define |
NMAX 10 |
/* макс. число вершин */ |
int vsm[NMAX][ NMAX+1]; |
/* векторы смежности */ |
|
int n; |
|
/* число вершин */ |
Число столбцов матрицы vsm равно NMAX+1, так как последовательность смежных вершин в каждой строке матрицы удобно хранить с признаком конца, например -1. vsm[i] – вектор смежности для i-й вершины.
15

Эта форма представления графа может быть использована и для ввода графа.
Пример.
Введите число вершин: 4 Введите номера смежных вершин
0:1 3 -1
1:0 2 3 -1
2:1 -1
3:0 1 -1
16

6. Списки смежности .
Для каждой вершины хранится список смежных с ней вершин.
17

Описание на языке С:
#define |
NMAX 10 |
/* макс. число вершин */ |
/* тип элемента списка */
struct LIST |
|
{ int v; |
/* вершина */ |
struct LIST *next; |
/* ссылка на следующий |
|
элемент */ |
}; |
|
struct LIST *p [NMAX]; |
/* массив указателей списков |
|
смежности */ |
int n; |
/* число вершин */ |
18