
- •Матрица смежности представлена в таблице 1.
- •Написал подпрограмму для построения списка ребер по заданной матрицы смежности.
- •Визуализировал заданный граф. Убедился в том, что он совпадает с исходным графом.
- •Написал подпрограмму, позволяющую представить граф в виде массива записей, основываясь на заданной матрице смежности. Каждой вершине графа соответствует запись.
- •Для каждого из представлений (матрица смежности, список ребер, массив записей) написал подпрограммы поиска и вывода на экран:
- •Для каждого из представлений (матрица смежности, список ребер, массив записей) вывести на экран размер содержащего их объекта в байтах.
- •Приложение а. Код программы
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
федеральное государственное автономное образовательное учреждение высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ
КАФЕДРА 41 |
ОЦЕНКА
ПРЕПОДАВАТЕЛЬ
старший преподаватель |
|
|
|
М. Н. Шелест |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ПРАКТИЧЕСКАЯ РАБОТА №1
|
ПРЕДСТАВЛЕНИЕ ГРАФОВ В ЭВМ |
по дисциплине: Построение и анализ графовых моделей |
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ гр. № |
Z9411 |
|
|
|
Р. С. Кафка |
|
номер группы |
|
подпись, дата |
|
инициалы, фамилия |
Студенческий билет № |
2019/3603 |
|
|
|
Шифр ИНДО |
|
Санкт-Петербург 2024
Цель работы: изучение представления графов в ЭВМ при помощи матрицы смежности, множества пар вершин и массива структур. Визуализация графов.
Индивидуальный вариант:
Вариант задания №8 представлен на рисунке 1.
Рисунок
1 – Вариант графа для практической
работы
Ход работы:
Матрица смежности представлена в таблице 1.
Таблица 1 – Матрица смежности
|
King |
Queen |
Bishop |
Pawn |
Knight |
Rook |
King |
0 |
1 |
4 |
7 |
0 |
0 |
Queen |
0 |
0 |
4 |
7 |
0 |
0 |
Bishop |
0 |
0 |
0 |
3 |
1 |
0 |
Pawn |
0 |
0 |
0 |
0 |
0 |
0 |
Knight |
0 |
0 |
0 |
3 |
0 |
2 |
Rook |
0 |
0 |
0 |
5 |
0 |
0 |
Ввёл в ЭВМ матрицу смежности в явном виде. Код в соответствии с листингом 1. Листинг всей программы приведен в Приложении A. Код программы.
Листинг 1 – Матрица смежности в явном виде
peaks = ['King', 'Queen', 'Bishop', 'Pawn', 'Knight', 'Rook'] adjacency_matrix = [[0, 1, 4, 7, 0, 0], [0, 0, 4, 7, 0, 0], [0, 0, 0, 3, 1, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 3, 0, 2], [0, 0, 0, 5, 0, 0]] |
Написал подпрограмму для построения списка ребер по заданной матрицы смежности.
Код подпрограммы и вспомогательной подпрограммы для проверки введенной матрицы смежности в соответствии с листингами 2 – 3, списки использованных в подпрограммах переменных в соответствии с таблицей 2. Результат работы кода представлен на рисунке 2.
Таблица 2 – Список переменных подпрограммы из Листинга 2 и 3
-
Название
Значение
adj_mat
Список значений матрицы смежности
peaks
Список названий вершин
test
Результат проверки матрицы смежности
list_edges
Список ребер графа
row
Итератор по строкам матрицы смежности
col
Итератор по значениям строки матрицы смежности
Листинг 2 – Подпрограмма построения списка рёбер
-
# построение СПИСКА РЕБЕР по матрице смежности
def get_list_edges_by_adjacency_matrix(adj_mat, peaks = [], view = True):
test = adjacency_matrix_check(adj_mat)
if test != True: return test
# проверка матрицы смежности
if not peaks:
peaks = [str(i) for i in range(len(adj_mat))]
# создание списка ребер графа
list_edges = []
for row in range(len(adj_mat)):
for col in range(len(adj_mat[row])):
if adj_mat[row][col] != 0:
if view: list_edges.append((((row ,peaks[row]), (col ,peaks[col])), adj_mat[row][col]))
else: list_edges.append(str(peaks[row]) + ' -> ' + str(peaks[col]) + ': ' + str(adj_mat[row][col])) # другое передставление ребер
return list_edges
Листинг 3 – Подпрограмма проверка корректности ввода матрицы смежности
-
# проверка ввода матрицы смежности
def adjacency_matrix_check(adj_mat):
if len(adj_mat)**2 != sum([len(row) for row in adj_mat]):
return 'Ошибка: !Кол-во строк и столбцов матрицы смежности не равно!'
return True
Рисунок
2 – Результат работы подпрограммы
построения списка рёбер графа