engineerklub | Дата: Понедельник, 28.10.2024, 07:09 | Сообщение # 1 |
Генералиссимус
Группа: Администраторы
Сообщений: 29399
Статус: Offline
| Дискретная математика - Поиск компонент связности графа
Тип работы: Работа Лабораторная Сдано в учебном заведении: ДО СИБГУТИ
Описание: Лабораторная работа № 3 Поиск компонент связности графа.
Граф задан его матрицей смежности. Требуется определить количество компонент связности этого графа (по материалам главы 3, п. 3.2.3 и 3.4). При этом должны быть конкретно перечислены вершины, входящие в каждую компоненту связности. Выбор алгоритма поиска компонент связности – произвольный. Например, приветствуется использование одного из видов обхода (поиск в глубину или поиск в ширину по материалам п. 3.4.3). Пользователю должна быть предоставлена возможность редактировать исходную матрицу, т.е. изменять исходный граф без выхода из программы. Предусмотреть также возможность изменения количества вершин. При выполнении работы разрешается (даже рекомендуется!) использовать матрицу бинарных отношений из лабораторной работы №1. Вход программы: число вершин графа и матрица смежности. Выход: разбиение множества вершин на подмножества, соответствующие компонентам связности. Дополнительно: Заданный граф рассматривать как ориентированный. Выполнять поиск компонент сильной связности. Описание работы Программа работает с неориентированным графом. Для поиска компонент связности введем массив состояний вершин графа, в котором будем отмечать уже просмотренные вершины. Если вершина просмотрена, то в соответствующий элемент массива записываем значение True. В основном цикле поиска компонент связности перебираем все вершины по порядку. Если вершина еще не просмотрена, т.е. пока не вошла ни в какую компоненту связности, то запускаем алгоритм поиска всей компоненты связности, начиная с этой вершины, т.е. поиска компоненты связности, в которую входит эта вершина. Все вершины компоненты связности определяем путем поиска в глубину, используя для этого рекурсию. При этом все вершины, принадлежащие этой компоненте связности, помечаем как просмотренные. После нахождения очередной вершины текущей компоненты связности выводим номер вершины на экран.
СКАЧАТЬ
|
|
| |