Теория:
Нагруженный граф — это граф, у которого каждому ребру сопоставлено некоторое число. В некоторых задачах это число может обозначать расстояние между вершинами, или время перехода от одной вершины к другой, или еще что-либо. Ненагруженным графом называется тот, у которого каждому ребру поставлено число \(1\).
Способы представления графов:
- Перечисление всех ребер графов;
- Таблица смежности.
Таблица смежности — таблица, в клетке которой на пересечении строки и столбца, соответствующих данных вершинам, указанно, соединены эти вершины ребром или нет.
Пример:
Изображен граф на рисунке 1. Запишем его представления двумя способами.
Рис. 1
1 способ (перечисление всех ребер графа):
.
2 способ (таблица смежности):
Таблица 1.
Вершина | A | B | C | D | E |
A | 0 | 0 | 8 | 10 | 0 |
B | 0 | 0 | 0 | 4 | 1 |
C | 8 | 0 | 0 | 1 | 3 |
D | 10 | 4 | 1 | 0 | 0 |
E | 0 | 1 | 3 | 0 | 0 |
Для ненагруженного графа в таблице смежности везде вместо чисел, указывающих нагрузку (т.е. отличных от \(0\)), стояло бы число \(1\).
Далее в заданиях на составления алгоритма, любым из двух способов обрабатывающего графа, вершины графа будут перенумерованными натуральными числами от \(1\) до \(n\).
1 способ. Если граф задается перечислением всех его ребер, то список ребер для нагруженного графа задается как двумерный массив , где в первой строке соответствующей этому массиву таблицы указывается один конец ребра, во второй — другой его конец, а в третьей — величина нагрузки (здесь \(n\) — число ребер в графе). А для ненагруженного графа соответствующий массив содержит только первые две строчки.
2 способ. Если граф задается таблицей смежности, то значение первого индекса считается номером первой вершины, а второго индекса — номером второй вершины; сами номера вершин в массиве не присутствуют. Для графа на рисунке 1 при естественной нумерации вершин \(A\) — \(1\), \(B\) — \(2\), \(C\) — \(3\), \(D\) — \(4\) и \(E\) — \(5\) список ребер задается массивом, который можно изобразить в виде таблицы 2.
Таблица 2.
1 | 1 | 2 | 2 | 3 | 3 |
3 | 4 | 4 | 5 | 4 | 5 |
8 | 10 | 4 | 1 | 1 | 3 |
А таблица смежности имеет вид таблицы 3.
Таблица 3.
Вершина | 1 | 2 | 3 | 4 | 5 |
1 | 0 | 0 | 8 | 10 | 0 |
2 | 0 | 0 | 0 | 4 | 1 |
3 | 8 | 0 | 0 | 1 | 3 |
4 | 10 | 4 | 1 | 0 | 0 |
5 | 0 | 1 | 3 | 0 | 0 |
Алгоритм обработки графов.
Алгоритм Случайный граф
цел:
{ Запросить ; (* запрашивается количество вершин *)
Запросить ; (* запрашивается количество ребер *)
Если
то { Сообщить «Такой граф строить нельзя»; }
иначе
{ Делать от до
{ Делать от до
{
}
} (* Первоночальное заполнение таблицы смежности нулями *)
Делать от до
{
Делать пока
{
}
} (* случайное добавление одного ребра *)
Сообщить «Вот таблица смежности»;
Сообщить ; (* в реальной программе это действие оформляется двойным циклом *)
Сообщить «Вот список ребер»;
Сообщить ; (* в реальной программе это действие оформляется двойным циклом *)
}
}
Источники:
Гейн А.Г., Сенокосов А.И. Информатика и ИКТ: учебник для общеобразовательных учреждений. - Москва: Просвещение, 2012. -224 с.