Добавил:
t.me Инфо для ГУАП студентов от меня: https://kafaka.notion.site/99e6d9b70ca74f7baef3daea17839e5a Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Z9411_КафкаРС_ГРАФЫ_ПР1.docx
Скачиваний:
13
Добавлен:
18.06.2024
Размер:
684.25 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное государственное автономное образовательное учреждение высшего образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ

КАФЕДРА 41

ОЦЕНКА

ПРЕПОДАВАТЕЛЬ

старший преподаватель

М. Н. Шелест

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

ПРАКТИЧЕСКАЯ РАБОТА №1

ПРЕДСТАВЛЕНИЕ ГРАФОВ В ЭВМ

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

РАБОТУ ВЫПОЛНИЛ

СТУДЕНТ гр. №

Z9411

Р. С. Кафка

номер группы

подпись, дата

инициалы, фамилия

Студенческий билет №

2019/3603

Шифр ИНДО

Санкт-Петербург 2024

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

Индивидуальный вариант:

Вариант задания №8 представлен на рисунке 1.

Рисунок 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]]

  1. Написал подпрограмму для построения списка ребер по заданной матрицы смежности.

Код подпрограммы и вспомогательной подпрограммы для проверки введенной матрицы смежности в соответствии с листингами 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 – Результат работы подпрограммы построения списка рёбер графа

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