Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая аисд.docx
Скачиваний:
3
Добавлен:
06.10.2025
Размер:
724.22 Кб
Скачать

7. Список смежности

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

Функция printAdjacencyList выводит список смежности для каждой вершины графа. Сначала функция выводит сообщение о текущем списке смежности. Затем происходит итерация по всем вершинам графа. Для каждой вершины функция выводит ее название, затем проходит по списку смежности этой вершины и выводит названия всех вершин, с которыми эта вершина соединена. Функция использует указатель на голову списка смежности для каждой вершины, который хранится в структуре Graph.

Рис. 8

8. Матрица инцидентности

Матрица инцидентности — одна из форм представления графа, в которой указываются связи между инцидентными элементами графа (ребро(дуга) и вершина). Столбцы матрицы соответствуют ребрам, строки — вершинам. Ненулевое значение в ячейке матрицы указывает связь между вершиной и ребром (их инцидентность).

Функция printIdentityMatrix выводит матрицу инцидентности для графа. Сначала функция выводит сообщение о текущей матрице инцидентности. Затем происходит итерация по всем вершинам графа. Для каждой вершины функция проходит по всем ребрам графа и проверяет, является ли данная вершина начальной или конечной точкой ребра. Если да, то в матрице инцидентности ставится 1, иначе - 0. Функция использует массив ребер, который хранится в структуре Graph.

Рис.9

9. Сортировка ребер в лексикографическом порядке

Функция sortABC выполняет сортировку массива ребер графа по лексикографическому порядку вершин, соединенных каждым ребром.

Первый цикл for итерируется по всем элементам массива, кроме последнего, так как последний элемент уже будет отсортирован после выполнения всех итераций внутреннего цикла.

Второй цикл for итерируется по всем элементам массива, начиная с первого и до n-i-1. Здесь n - это количество элементов в массиве, а i - это номер текущей итерации первого цикла. Это означает, что на каждой итерации первого цикла мы можем сократить количество элементов, которые нужно проверить во втором цикле.

Внутри второго цикла происходит сравнение двух соседних элементов arr[j] и arr[j+1] с помощью функции VertexAlpha. Если результат сравнения равен true, то элементы меняются местами.

Функция VertexAlpha сравнивает две вершины, соединенные ребром, по лексикографическому порядку. Для этого она использует массив строк vertex, который содержит названия всех вершин графа в отсортированном порядке. Функция находит индексы вершин в массиве vertex и сравнивает их лексикографически. Если первая вершина меньше второй, то функция возвращает true, иначе - false.

Таким образом, после выполнения функции sortABC массив ребер будет отсортирован по лексикографическому порядку вершин, соединенных каждым ребром.

Рис.10

Соседние файлы в предмете Алгоритмы и системы данных