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

  1. Цель работы

Изучение представление графов в ЭВМ при помощи матрицы смежности, множества пар вершин и массива структур. Визуализация графов.

  1. Запись матрицы смежности

Записывается матрица смежности согласно варианту 14, выданным преподавателем. Вариант работы представлен на рисунке 1, матрица смежности на рисунке 2.

Рисунок 1 – Граф, вариант 14

Рисунок 2 – Матрица смежности

  1. Ход работы

Создается функция get_list_edges, которая по матрице смежности, выдаёт список рёбер с её весом. Переменные, используемые в функции, представлены в таблице 1. На рисунке 3 представлен результат работы этой фукнции. Листинг функции представлен в Приложении.

Таблица 1 – Переменные функции get_list_edges

Название

Тип

Комментарий

df

DataFrame

Параметр функции, матрица смежности

edges_list

list

Список рёбер с их весами

Рисунок 3 – Список рёбер функции

Создается функция info_graph, позволяющую представить граф в виде массива записей, основываясь на заданной матрице смежности. Каждой вершине графа соответствует запись. В каждой такой записи обязательным является вывод следующих параметров вершины графа: № вершины, подпись/имя вершины, количество детей / родителей /соседей, номера вершин детей / родителей / соседей, веса исходящих / входящих / инцидентных ребер. Переменные, используемые в функции, представлены в таблице 2. На рисунке 4 представлен результат работы этой функции. Листинг функции представлен в Приложении.

Таблица 2 – Переменные функции info_graph

Название

Тип

Комментарий

df

DataFrame

Параметр функции, матрица смежности

data_list

list

Список всех собранных данных

parents_list

list

Список родителей вершин

child_list

list

Список детей вершин

child_weights_list

list

Список весов ребер к детям

parents_weight_list

list

Список весов ребер к родителям

Рисунок 4 – Матрица записей

Создается функция find_neighbours_matrix, которая по матрице смежности, выдаёт список соседей заданной вершины. Переменные, используемые в функции, представлены в таблице 3. Листинг функции представлен в Приложении.

Таблица 3 – Переменные функции find_neighbours_matrix

Название

Тип

Комментарий

df

DataFrame

Параметр функции, матрица смежности

graph_index

int

Номер вершины, по которой ищутся соседи; параметр функции

neighbours_list

list

Список соседних вершин

Создается функция find_chain_matrix, которая по матрице смежности, выдаёт ответ, есть ли в заданной последовательности вершин цепь. Переменные, используемые в функции, представлены в таблице 4. Листинг функции представлен в Приложении.

Таблица 4 – Переменные функции find_chain_matrix

Название

Тип

Комментарий

df

DataFrame

Параметр функции, матрица смежности

vertexes

list

Последовательность, содержащая набор вершин; параметр функции

Создается функция find_vertexes_edge_sum_matrix, которая по матрице смежности ищет вершины, сумма инцидентных ребер которых больше заданной в матрице. Переменные, используемые в функции, представлены в таблице 5. Листинг функции представлен в Приложении.

Таблица 5 – Переменные функции find_vertexes_edge_sum_matrix

Название

Тип

Комментарий

df

DataFrame

Параметр функции, матрица смежности

fixed_number

int

Заданное значение для сравнения, параметр функции

vertexes

list

Последовательность, содержащая набор вершин

Создается функция find_sum_edges_matrix, которая по матрице смежности ищет количество вершин в графе. Переменные, используемые в функции, представлены в таблице 6. Листинг функции представлен в Приложении.

Таблица 6 – Переменные функции find_sum_edges_matrix

Название

Тип

Комментарий

df

DataFrame

Параметр функции, матрица смежности

sum_edges

int

Количество ребер

На рисунке 5 представлены результаты работы последних четырёх описанных функций.

Рисунок 5 – Результат работы функций с матрицей смежности

Создается функция find_neighbours_edges, которая по списку ребер, выдаёт список соседей заданной вершины. Переменные, используемые в функции, представлены в таблице 7. Листинг функции представлен в Приложении.

Таблица 7 – Переменные функции find_neighbours_edges

Название

Тип

Комментарий

edges_list

DataFrame

Параметр функции, список ребер

vertex

int

Номер вершины, по которой ищутся соседи; параметр функции

neighbours_list

list

Список соседних вершин

Создается функция find_chain_edges, которая по списку ребер, выдаёт ответ, есть ли в заданной последовательности вершин цепь. Переменные, используемые в функции, представлены в таблице 8. Листинг функции представлен в Приложении.

Таблица 8 – Переменные функции find_chain_edges

Название

Тип

Комментарий

edges_list

DataFrame

Параметр функции, матрица смежности

vertexes

list

Последовательность, содержащая набор вершин; параметр функции

count

int

Переменная, хранящее количество ребер в пути

Создается функция find_vertexes_edge_sum_edges, которая по списку ребер ищет вершины, сумма инцидентных ребер которых больше заданной в матрице. Переменные, используемые в функции, представлены в таблице 9. Листинг функции представлен в Приложении.

Таблица 9 – Переменные функции find_vertexes_edge_sum_matrix

Название

Тип

Комментарий

edges_list

DataFrame

Параметр функции, список ребер

fixed_number

int

Заданное значение для сравнения, параметр функции

vertexes

list

Последовательность, содержащая набор вершин

sum

int

Промежуточная переменная

Создается функция find_sum_edges_edges, которая по списку ребер ищет количество вершин в графе. Переменные, используемые в функции, представлены в таблице 10. Листинг функции представлен в Приложении.

Таблица 10 – Переменные функции find_sum_edges_edges

Название

Тип

Комментарий

edges_list

DataFrame

Параметр функции, список ребер

На рисунке 6 представлены результаты работы последних четырёх описанных функций.

Рисунок 6 - Результат работы функций со списком рёбер

Создается функция find_neighbours_datalist, которая по таблице данных, выдаёт список соседей заданной вершины. Переменные, используемые в функции, представлены в таблице 11. Листинг функции представлен в Приложении.

Таблица 11 – Переменные функции find_neighbours_datalist

Название

Тип

Комментарий

data

DataFrame

Параметр функции, таблица данных

vertex_index

int

Номер вершины, по которой ищутся соседи; параметр функции

vertexes

list

Список соседних вершин

Создается find_chain_datalist, которая по таблице данных, выдаёт ответ, есть ли в заданной последовательности вершин цепь. Переменные, используемые в функции, представлены в таблице 12. Листинг функции представлен в Приложении.

Таблица 12 – Переменные функции find_chain_datalist

Название

Тип

Комментарий

data

DataFrame

Параметр функции, таблица данных

vertexes

list

Последовательность, содержащая набор вершин; параметр функции

count

int

Переменная, хранящее количество ребер в пути

Создается функция find_vertexes_edge_sum_datalist, которая по таблице данных ищет вершины, сумма инцидентных ребер которых больше заданной в матрице. Переменные, используемые в функции, представлены в таблице 13. Листинг функции представлен в Приложении.

Таблица 13 – Переменные функции find_vertexes_edge_sum_datalist

Название

Тип

Комментарий

data

DataFrame

Параметр функции, список ребер

fixed_number

int

Заданное значение для сравнения, параметр функции

vertexes

list

Последовательность, содержащая набор вершин

count

int

Промежуточная переменная

Создается функция find_sum_edges_datalist, которая по таблице данных ищет количество вершин в графе. Переменные, используемые в функции, представлены в таблице 14. Листинг функции представлен в Приложении.

Таблица 14 – Переменные функции find_sum_edges_datalist

Название

Тип

Комментарий

data

DataFrame

Параметр функции, список ребер

count

int

Промежуточная переменная

На рисунке 7 представлены результаты работы последних четырёх описанных функций.

Рисунок 7 - Результат работы функций со матрицей данных

Создается функция, выводящую визуализацию графа на основе матрицы смежности. Результат представлен на рисунке 8.

Рисунок 8 – Визуализация графа

Для каждого представления подсчитывается размер содержащего их объекта в байтах. Это представлено на рисунке 9.

Рисунок 9 – Размеры представлений

Однозначным победителем в размере оказался список ребер – он весит меньше всех.

Подсчитывается время выполнения подпрограмм, реализующих различную обработку с разными представлениями, в цикле 100 раз. Результат представлен на рисунке 10.

Рисунок 10 – Результат работы каждой подпрограммы каждого представления

В данном случае первенство лидера берёт список рёбер, так как он занимает меньше места и быстрее выполняется, но для работы и создания функций лучше всего именно матрица записей, так как она нагляднее представляет информацию.

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