e
20 червня 2020 р. 17:58

Обход графов

c++, Code

Поиск в ширину и в глубину

Вход: граф G(V, Е), представленный списками смежности Г.

Выход: последовательность вершин обхода.

for v ∊ V do

x[v]: =0{ вначале все вершины не отмечены}

end for

select v ∊ V{ начало обхода — произвольная вершина }

v → Т{ помещаем v в структуру данных Т ... }

x[v] : = 1{... и отмечаем вершину v }

repeat u← Т{ извлекаем вершину из структуры данных Т ... }

yield u{ ... и возвращаем ее в качестве очередной пройденной вершины }

for w ∊ Г(u) do

if x[w] =0 then

w → Т{ помещаем w в структуру данных Т ... }

x[w]: = 1{ ... и отмечаем вершину w }

end if

end for

until Т = Ø

Если Т — это стек (LIFO — Last In First Out), то обход называется поиском в глубину. Если Т — это очередь (FIFO — First In First Out), то обход называется поиском в ширину.
На входе программы задаётся количество вершин и списки смежности вершин (в порядке возрастания номера вершины). Результат работы программы: последовательность обхода вершин в глубину, через запятую - в ширину.
Есть алгоритм и его необходимо воплотить в программу на С++

2

Вам це подобається? Поділіться в соціальних мережах!

0

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up