Список смежности. Таблица, высота которой равна количеству вершин. В каждой строке перечисляются вершины, в которые из данной есть ребро.
исходная вершина | конечные вершины |
1 | 2 |
2 | 1, 3, 4 |
3 | 4 |
4 | 3 |
Для приведенного примера список смежности будет выглядеть как показано в таблице.
В следующей таблице приведены сравнительные характеристики количества памяти или времени работы программы при каждом способе представления графа. Здесь N – количество вершин, M – количество ребер графа.
Матрица смежности | Список ребер | Списки смежности | |
Требуемая память | O(N2) | O(M) | O(M) |
Поиск ребра | O(1) | O(M) | O(M) |
Перебор всех ребер | O(N2) | O(M) | O(M) |
Добавление/удаление ребра | O(1) | O(1) | O(1) |
Примечания для преподавателей
Данная тема практически не привязана ни к каким другим и может даваться в начале курса (не считая обхода в глубину, который иногда реализуют рекурсивно). В частности, она представляет возможность для шлифовки умений работать в двухмерными массивами, файлами и циклами и может использоваться для этих целей.
В частности, существует достаточно большой набор «технических» задач, которые могут являться элементами более сложных программ, а с другой стороны служить закреплению материала по данной теме. Примеры таких несложных задач приведены ниже.
Задача A. Проверка на неориентированность
По заданной квадратной матрице n*n из нулей и единиц определите, может ли данная матрица быть матрицей смежности простого неориентированного графа.
Формат входных данных
Входной файл содержит число n (1 < n < 100) - размер матрицы, и затем n строк по n чисел, каждое из которых равно 0 или 1 — саму матрицу.
Формат выходных данных
Выведите в выходной файл «YES» если приведенная матрица может быть матрицей смежности простого неориентированного графа и «NO» в противном случае.
Пример
input.txt output.txt
3 0 1 1 1 0 1 1 1 0 | YES |
3 0 1 0 1 0 1 1 1 0 | NO |
3 0 1 0 1 1 1 0 1 0 | NO |
Задача B. Петли
По заданной матрице смежности неориентированного графа определите, содержит ли он петли. Формат входных данных
Входной файл содержит число n (1 < n < 100) — количество вершин графа и затем n строк по n чисел, каждое из которых равно 0 или 1 — его матрицу смежности.
Формат выходных данных
Выведите в выходной файл «YES» если граф содержит петли и «NO» в противном случае.
Пример
input.txt output.txt
3 0 1 1 1 0 1 1 1 0 | NO |
3 0 1 0 1 1 1 0 1 0 | YES |