Поиск…


Вступление

Все алгоритмы, связанные с обходами Графа. Их сложности, как время выполнения, так и пространство

Глубина первого поиска

Глубина Первый обход (или поиск) для графика похож на глубину первого обхода дерева. Единственный улов здесь, в отличие от деревьев, графики могут содержать циклы, поэтому мы снова можем вернуться к одному и тому же узлу. Чтобы избежать обработки узла более одного раза, мы используем булевский массив.

Ниже алгоритм представляет шаги для обхода графика с использованием DFS:

Алгоритм DFS (v);

Вход : вершина v в графе

Вывод : маркировка краев как «открытий» ребер и «опор»,

for each edge e incident on v do

    if edge e is unexplored then

    let w be the other endpoint of e
    if vertex w is unexplored then
        label e as a discovery edge
        recursively call DFS(w)
    else
    label e as a backedge

Иллюстрация DFS

введите описание изображения здесь

Поиск в ширину

Алгоритм BFS (G)

Входной граф G

Выводная маркировка ребер и разбиение вершин G

    for all u ∈ G.vertices()
        setLabel(u, UNEXPLORED)
    for all e ∈ G.edges()
    setLabel
    (e, UNEXPLORED)
    for all v ∈ G.vertices()
        if getLabel(v) = UNEXPLORED
            BFS(G, v)

демонстрация

Демонстрация продолжалась

Демонстрация продолжалась



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow