Практика 6(СД)
.pdfМинистерство науки и высшего образования Российской Федерации Федеральное государственное автономное образовательное учреждение высшего образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра комплексной информационной безопасности электронно-
вычислительных систем (КИБЭВС)
ГРАФЫ Отчёт по практической работе №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
