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

advertisement
Неориентированные
графы
30. Граф - это двойка <V, E>, где V - непустое множество вершин, а Е множество ребер,
связанные
между
соединяющих
эти вершины попарно.
собой ребром,
равноправны,
такие графы называются неориентированными:
и
нет
Две вершины,
именно
поэтому
никакой
разницы
между "началом" и "концом" ребра.
Ориентированные графы
Орграф - это граф, все ребра которого имеют направление. Такие
направленные ребра называются дугами. На рисунках дуги изображаются
стрелочками
.
В отличие от ребер, дуги соединяют две неравноправные вершины: одна из
них называется началом дуги (дуга из нее исходит), вторая - концом дуги
(дуга в нее входит). Можно сказать, что любое ребро - это пара дуг,
направленных
навстречу
друг
другу.
Если в графе присутствуют и ребра, и дуги, то его называют
смешанным.
Все основные понятия, определенные для неориентированных графов
(инцидентность, смежность, достижимость, длина пути и т.п.), остаются в
силе и для орграфов - нужно лишь заменить слово "ребро" словом "дуга". А
немногие исключения связаны с различиями между ребрами и дугами.
Степень вершины в орграфе - это не одно число, а пара чисел: первое
характеризует количество исходящих из вершины дуг, а второе - количество
входящих
дуг.
Путь в орграфе - это последовательность вершин (без повторений), в
которой любые две соседние вершины смежны, причем каждая вершина
является одновременно концом одной дуги и началом следующей дуги.
Взвешенные графы
Взвешенный (другое название: размеченный) граф (или орграф) - это граф
(орграф), некоторым элементам которого (вершинам, ребрам или дугам)
сопоставлены числа. Наиболее часто встречаются графы с помеченными
ребрами. Числа-пометки носят различные названия: вес, длина, стоимость.
Замечание: Обычный (не взвешенный) граф можно интерпретировать как
взвешенный,
все
ребра
которого
имеют
одинаковый
вес
1.
Длина пути во взвешенном (связном) графе - это сумма длин (весов) тех
ребер, из которых состоит путь. Расстояние между вершинами - это, как и
прежде, длина кратчайшего пути.
31. Способы представления графов
Матрица смежности
Матрица смежности Sm - это квадратная матрица размером NxN (N количество вершин в графе), заполненная единицами и нулями по
следующемуправилу:
Если в графе имеется ребро e, соединяющее вершины u и v, то Sm[u,v] = 1, в
противном
случае
Sm[u,v]
=
0.
Заметим, что данное определение подходит как ориентированным, так и
неориентированным графам: матрица смежности для неориентированного
графа будет симметричной относительно своей главной диагонали, а для
орграфа
несимметричной.
-
Задать взвешенный граф при помощи матрицы смежности тоже возможно.
Необходимо
лишь
внести
небольшое
изменение
в
определение:
Если в графе имеется ребро e, соединяющее вершины u и v, то Sm[u,v] =
ves(e),
в
противном
случае
Sm[u,v]
=
0.
Это хорошо согласуется с замечанием, сделанным в предыдущем пункте:
невзвешенный граф можно интерпретировать как взвешенный, все ребра
которого
имеют
одинаковый
вес
1.
Небольшое затруднение возникнет в том случае, если в графе разрешаются
ребра с весом 0. Тогда придется хранить два массива: один с нулями и
единицами, которые служат показателем наличия ребер, а второй - с весами
этих
ребер.
В качестве примера приведем матрицы смежности для трех графов,
изображенных на.
Таблица. Примеры матриц смежности
abcd f 12345
a b c d
a 0 1 1 0 0 1 0 1 0 1 0 a 0 1 10 0
b 1 0 1 1 1 2 0 0 0 0 0 b 1 0 2 10
c 1 1 0 1 1 3 1 1 0 0 1 c 10 2 0 3
d 0 1 1 0 1 4 0 0 1 0 0 d 0 10 3 0
f 0 1 1 1 0 50 0 0 0 0
Удобство матрицы смежности состоит в наглядности и прозрачности
алгоритмов, основанных на ее использовании. А неудобство - в несколько
завышенном требовании к памяти: если граф далек от полного, то в массиве,
хранящем матрицу смежности, оказывается много "пустых мест" (нулей).
Кроме того, для "общения" с пользователем этот способ представления
графов не слишком удобен: его лучше применять только для внутреннего
представления данных.
32.Формы представления графов. Матрица инцидентности
Матрица I(G) размером n x m (n - число вершин, m - число ребер/дуг графа
G), (i,j)-й элемент, которой равен 1, если вершина ni инцидентна ребру eij в
неориентированном графе или если ni есть начало дуги ej равен -1, если
вершина ni есть конец дуги ej (только для ориентированных графов), и равен
0 в остальных случаях.
В данной задаче задается граф и строится его матрица инцидентности:
//Построение матрицы инцидентности
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <iostream.h>
struct elem
{
int num; /* Номер вершины */
int suns; /* Количество сыновей */
char str[20]; /* Строка с номерами сыновей */
elem *next; /* Указатель на следующую вершину */
33.Формы представления графов. Списки смежности.
Списки смежности
Этот способ задания графов подразумевает, что для каждой вершины будет
указан список всех смежных с нею вершин (для орграфа - список вершин,
являющихся концами исходящих дуг). Конкретный формат входного файла,
содержащего списки смежности, необходимо обговорить отдельно.
Например, в нашем случае начальная вершина отделена от списка смежности
двоеточием:
<номер_начальной_вершины>: <номера_смежных_вершин>
Наиболее естественно применять этот способ для задания орграфов,
однако и для остальных вариантов он тоже подходит.
В качестве примера приведем списки смежности, задающие все те же три
графа, изображенные на.
Таблица 11.10. Примеры списков смежности
a: b c
1: 2 4
b: a 1 c 2 d 10
b: c d f
3: 1 2 5
c: a 10 d 3
c: d f
4: 3
d: f
Download