Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_ОАиПрг_2курс_лекции.doc
Скачиваний:
0
Добавлен:
28.12.2019
Размер:
4.02 Mб
Скачать
  1. Матрица смежности.

    Матрица смежности - это матрица размером n×n, в которой  cij=1, если существует ребро из i в j и cij=0 в противном случае.

Например, составим для вышеприведенного графа матрицу смежности:

 

1

2

3

4

5

1

0

1

1

0

0

2

1

0

0

1

1

3

1

1

0

0

1

4

1

1

1

0

1

5

0

1

0

1

0

Для неориентированного графа справедливо cij=cji  и матрица называется симметрической.

Представление в виде матрицы смежностей удобно для тех алгоритмов на графах, которым часто нужно знать, есть ли в графе данное ребро, ибо время, необходимое для определения наличия ребра, фиксировано.    Основным преимуществом матрицы смежности является тот факт, что за один шаг можно получить ответ на вопрос "существует ли ребро из v в w?".

Недостаток этого способа заключается в том, что способ пригоден только для простых графов.

2. Массив ребер.

    Массив ребер – это массив, в котором ребра хранятся парами вершин, которые они соединяют.

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

Например, для графа, приведенного на рис.6 массив ребер будет следующий: (1,2), (1,3), (2,1), (2,4), (2,5), (3,1), (3,2), (3,5), (4,1), (4,2), (4,3), (4,5), (5,2), (5,4).

Если априорно известно, что граф не ориентированный, то включая описание (v, w) не включается описание (w, v).

3. Списки инцидентности.

    Для каждой вершины графа создаются три списка:

ü      v 0: только неориентированные ребра, инцидентные вершине;

ü      v +: исходящие ребра;

ü      v -: входящие ребра.

    Ели граф ориентирован, то для каждой вершины v достаточно списков v + и v -. Если граф неориентированный, то достаточно списков v 0.

Например,

10:

(1,2),(1,3)

1+:

 

1-:

 

20:

(2,1), (2,4), (2,5)

2+:

 

2-:

(3,2)

30:

(3,1)

3+:

(3,2), (3,5)

3-:

(4,3)

40:

(4,2), (4,5)

4+:

(4,1), (4,3)

4-:

 

50:

(5,4), (5,2)

5+:

 

5-:

(3,5)