Szukaj…


Wprowadzenie

Wszystkie algorytmy związane z przechodzeniem przez wykresy. Ich złożoność, zarówno czas działania, jak i przestrzeń

Głębokie pierwsze wyszukiwanie

Głębokość pierwszego przejścia (lub Wyszukaj) dla wykresu jest podobna do głębokości pierwszego przejścia drzewa. Jedynym haczykiem jest to, że w przeciwieństwie do drzew, wykresy mogą zawierać cykle, więc możemy ponownie dojść do tego samego węzła. Aby uniknąć przetwarzania węzła więcej niż jeden raz, używamy boolowskiej tablicy odwiedzin.

Poniższy algorytm przedstawia etapy przechodzenia przez wykres za pomocą DFS:

Algorytm DFS (v);

Dane wejściowe : wierzchołek v na wykresie

Wyjście: a oznakowanie krawędzi jak „odkrycie” krawędzi „i” backedges

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

Ilustracja DFS

wprowadź opis zdjęcia tutaj

Szerokość Pierwsze wyszukiwanie

Algorytm BFS (G)

Wykres wejściowy G

Wyjściowe etykietowanie krawędzi i podział wierzchołków 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)

Demonstracja

Demo kontynuowane

Demo kontynuowane



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow