Pseudocode erklären

Reykja

Aktives Mitglied
Hallo, könnte mir jemand evtl folgenden Pseudocode erklären? Das wäre sehr hilfreich. Bei DFSNUM handelt es sich um einen Algorithmus um die Zusammenhangskomponenten im Graphen zu zählen (im Anhang befinden sich dazu Informationen sowie die Angabe des Beispiels).
Java:
value <-- DFSNUM (G)
    Array <-- leer
    a <-- 0
    
    foreach Knoten v Element von V
    Graph F = G \ {v}
    b = DFSNUM (F)
        if (a > value)
            Array [a] <-- v
            a++
        return Array

und warum ist die Laufzeit O (n+m)?
Gruß
 

Anhänge

  • DFSNUM Algorithmus.png
    DFSNUM Algorithmus.png
    103,1 KB · Aufrufe: 24
  • Angabe Bsp.png
    Angabe Bsp.png
    74,5 KB · Aufrufe: 20
Das muss if (b > value) heißen.

In "value" steht die Anzahl der Zusammenhangskomponenten von G.
Dann lässt du versuchsweise jeden Knoten v aus dem Graphen G weg F = G \ {v}
und berechnest die Anzahl der Zusammenhangskomponenten neu. Ist diese größer geworden, merkst du dir den Knoten v (und die Anzahl der Knoten, die die Anzahl der Zusammenhangskomponenten erhöhen).

Um die Laufzeit zu bestimmen, müsste man zunächst die Laufzeit von DFSNUM kennen (habt ihr das vielleicht in der Vorlesung gemacht?).

EDIT: Dein Code ist nicht sauber eingerückt; er müsste etwa so lauten:
Java:
value <-- DFSNUM (G)
Array <-- leer
a <-- 0

foreach Knoten v Element von V
    Graph F = G \ {v}
    b = DFSNUM (F)
    if (b > value)
        Array [a] <-- v
        a++
return Array
 
Zuletzt bearbeitet:

Zurück
Oben