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

Практика 6(СД)

.pdf
Скачиваний:
0
Добавлен:
08.10.2025
Размер:
472.54 Кб
Скачать

Министерство науки и высшего образования Российской Федерации Федеральное государственное автономное образовательное учреждение высшего образования

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

Кафедра комплексной информационной безопасности электронно-

вычислительных систем (КИБЭВС)

ГРАФЫ Отчёт по практической работе №6

по дисциплине «Структуры данных»

Студент гр. 714-1

_______ И.С. Максимов

__.__.2025

Доцент кафедры КИБЭВС

_______ Е.Е. Лунёва

__.__.2025

Томск 2025

 

Оглавление

Введение...................................................................................................................

3

1. Ход работы ....................................................................................................

4

Заключение ..............................................................................................................

9

Приложение А .......................................................................................................

10

2

Введение

Целью работы является реализация программы для работы с графами,

представляющими систему дорог с переменным числом узлов и рёбер.

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

3

1. Ход работы

Была создана основная точка входа в программу, реализующую работу с графом и алгоритм Дейстры.

На рисунке 1.1 представлен фрагмент код.

Рисунок 1.1 – Основная точка входа в программу

Реализованный класс Graph. Часть кода, представленная на рисунке 1.2

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

Рисунок 1.2 – Реализованный класс Graph

4

AddEdge: добавляет ориентированное ребро с весом.

На рисунке 1.3 представлен фрагмент кода.

Рисунок 1.3 – Метод AddEdge

RandomGraph: генерирует случайный граф с заданным числом ребер и весами.

На рисунке 1.4 представлен фрагмент кода.

Рисунок 1.4 – метод RandomGraph

Метод Display: выводит матрицу весов с подписями.

На рисунке 1.5 представлен фрагмент кода.

5

Рисунок 1.5 – метод Display

Метод Dijkstra: ищет минимальные расстояния из start во все остальные вершины.

На рисунках 1.6 и 1.7 представлен фрагмент кода.

Рисунок 1.6 – Начало реализации метода Dijkstra

6

Рисунок 1.7 – Основной цикл метода Dijkstra

Метод MinDistance: служит для нахождения вершины с минимальным dist

среди не посещённых.

На рисунках 1.8 представлен фрагмент кода.

Рисунок 1.8 – Метод MinDistance

Метод PrintPath: строит и выводит полный маршрут от стартовой вершины до j в правильном порядке.

На рисунках 1.9 представлен фрагмент кода.

7

Рисунок 1.9 – Метод PrintPath

8

Заключение

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

9

Приложение А

Листинг кода:

// Класс программы с точкой входа

class Program

{

static void Main()

{

Console.WriteLine("Введите количество узлов в графе:");

int n = int.Parse(Console.ReadLine()); // ввод количества вершин

Graph graph = new Graph(n); // создаём граф

graph.RandomGraph(); // случайно генерируем ребра (без петель)

graph.Display(); // выводим матрицу смежности

Console.WriteLine($"Введите начальный узел для поиска кратчайших путей (от A до {(char)('A' + n - 1)}):");

char startChar = Char.ToUpper(Console.ReadKey().KeyChar); // строка считывает с клавиатуры одну нажатую клавишу, превращает её в заглавный символ и сохраняет в startChar

Console.WriteLine();

int start = startChar - 'A'; // преобразуем букву в индекс

10

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