Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Модификации алгоритмов




 

С помощью алгоритмов поиска в глубину и в ширину легко решаются следующие задачи:

1. Определение числа связных компонент графа.

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

2. Поиск маршрута (пути) между двумя фиксированными вершинами u и v и определение его длины.

Поиск начинается из вершины u и продолжается, пока не встретится вершина v или не произойдет возврат в основную программу. Если поле возврата из процедуры вершина v не найдена, значит нужного маршрута (пути) не существует, и задача не имеет решения. Длиной маршрута (пути) в невзвешенной графе назовем количество ребер (дуг), составляющих маршрут (путь).

Маршрут (путь) может строится с помощью любого алгоритма поиска. При поиске в глубину маршрут (путь) может не быть кратчайшим, но он легко восстанавливается, так как содержится в стеке. Для его вывода достаточно при возврате из рекурсивной процедуры печатать верхний элемент стека, при использовании нерекурсивной процедуры нужно печатать содержимое стека, одновременно очищая его. Для определения длины маршрута (пути) вводим переменную, обозначающую число ребер (дуг), которая увеличивается при каждом вызове рекурсивной процедуры, кроме первого, и уменьшается перед возвратом из нее, если вершина еще не найдена. Аналогичные действия проводятся и в нерекурсивной процедуре поиска.

При поиске в ширину маршрут (путь) является кратчайшим, но его труднее восстанавливать. Для этого нужно организовать массив, i- ым элементом которого является вершина, предшествующая вершине i при обходе, этот элемент заполняется при помещении вершины i в очередь. Для нахождения длина маршрута (пути) вводится переменная – число слоев, которая увеличивается при переходе к новому слою, предварительно необходимо считать число вершин в каждом слое.

3. Построение остова графа.

Напомним, что остовом называется остовный подграф, являющийся деревом. Такой подграф можно построить с помощью алгоритма поиска любого вида. Для этого во время поиска параллельно строится новый граф: если найдена новая еще непомеченная вершина u в списке инцидентности вершины v, то ребро (v,u) добавляется в строящийся граф. Если исходный граф - несвязный, то задача не имеет решения. Для связного исходного графа получим, что построенный граф является связным, так как новые ребра достраиваются к уже просмотреннымвершинам, которые между собой связаны. Этот граф не содержит циклов, так как в него не добавляется ребро оба конца которого просмотрены, то есть связаны маршрутом. Следовательно, построенный граф является деревом.

 

Задание для самостоятельной работы.

 

I. Написать и отладить программу в соответствии с вариантом задания №2 (см. приложение). Содержание программы аналогично заданию п.1.

II. Продемонстрировать работу программы на контрольном примере.

III. Текст программы, граф и исходный файл контрольного примера, результаты работы программы оформить в отчет.

 




Поделиться с друзьями:


Дата добавления: 2015-06-27; Просмотров: 344; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.184 сек.