Was für eine Laufzeit und was für einen Speicheraufwand hat dieser Tiefensuche Algorithmus?
DFS(node, goal)
{
if (node == goal)
{
return node;
}
else
{
stack := expand (node)
while (stack is not empty)
{
node' := pop(stack);
DFS(node', goal);
}
}
}
Ich hätte gedachte O(|V| + |E|) für die Laufzeit und O(|V|) für den Speicher. Stimmt das denn auch, wegen der rekursiven Aufrufe überhaupt?
1 Antwort
![](https://images.gutefrage.net/media/default/user/6_nmmslarge.png?v=1438863662000)
Die Laufzeit des Tiefensuche-Algorithmus (DFS) beträgt O(|V| + |E|), wobei |V| die Anzahl der Knoten und |E| die Anzahl der Kanten im Graphen ist. Der Speicheraufwand beträgt O(|V|), da der Algorithmus eine Markierung für jeden Knoten im Graphen speichern muss, um zu verfolgen, ob er bereits besucht wurde oder nicht.