Popište algoritmus DFS, diskutujte jeho konečnost a korektnost a uveďte jeho časovou složitost.
Algortimus DFS je algoritmus sloužící k prohledávání grafů.
→ pokud na tento otevřený vrchol znovu narazí nepřidává ho do fronty
DFS(int start, vector<int> vertices, map<int,vector<int>> edges)
{
// queue of vertices we have yet to traverse
stack<int> queue;
//edges we already discovered
set<int> seen;
//we will push starting vortex to the queue
queue.push(start);
seen.insert(start);
while(!q.empty)
{
int current_edge = q.front();
q.pop();
seen.insert(current_edge)
for(auto& neighbor : map[current_edge])
{
if(!seen.count(neigbort))
{
queue.push(neighbor);
seen.insert(neighbor);
}
}
}
}
