Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lab1_graphs

.pdf
Скачиваний:
4
Добавлен:
27.08.2024
Размер:
540.9 Кб
Скачать

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

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

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

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

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

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

3.Ход работы

Создается функция get_list_edges, которая по матрице смежности,

выдаѐт список рѐбер с еѐ весом. Переменные, используемые в функции,

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

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

Название

Тип

Комментарий

 

 

 

df

DataFrame

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

 

 

смежности

 

 

 

 

2

 

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. Листинг функции

представлен в Приложении.

Таблица 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

Название

Тип

Комментарий

 

 

 

 

4

 

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

Название

Тип

Комментарий

 

 

 

 

5

 

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

Заданное

значение

для

 

 

сравнения, параметр функции

 

 

 

 

 

 

6

 

 

 

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

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

 

 

 

 

 

 

7

 

 

 

Создается 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

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

 

 

 

 

 

 

8

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

представлены в таблице 14. Листинг функции представлен в Приложении.

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

Название

Тип

Комментарий

 

 

 

data

DataFrame

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

 

 

 

count

int

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

 

 

 

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

Рисунок 7 - Результат работы функций со матрицей данных Создается функция, выводящую визуализацию графа на основе

матрицы смежности. Результат представлен на рисунке 8.

Рисунок 8 – Визуализация графа Для каждого представления подсчитывается размер содержащего их

объекта в байтах. Это представлено на рисунке 9.

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

9

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

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

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

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

4.Дополнительное задание

Также в рамках дополнительного задания создается функция dop_task,

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

15. Листинг функции представлен в Приложении.

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

Название

Тип

Комментарий

 

 

 

data

DataFrame

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

 

 

 

 

10

 

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