Реализация BFS, DFS и Dijkstra

Верно ли, что реализации BFS, DFS и Дейкстры почти одинаковы, за исключением того, что BFS использует очередь, DFS использует стек, а Дейкстра использует очередь с минимальным приоритетом?

Точнее. Можем ли мы использовать следующий код для всех BFS, DFS и Dijkstra, где Q - это очередь для BFS, стек для DFS и очередь с минимальным приоритетом для Dijkstra? Спасибо!

Init d[]=Inf; // distance from the node s
Init c[]='w'; // color of nodes: 'w':undiscovered, 'g':discovered, 'b':fully explored
Init p[]=null; // previous node in the path
c[s]='g';
d[s]=0;
Q.push(s);
while(!Q.empty()) {
    u = Q.front();
    Q.pop();
    for v in adj[u] {
        if(c(v)=='w') {
            c[v]='g';
            if(d[u]+w(u,v)<d[v]) {
                d[v]=d[u]+w(u,v);
                p[v]=u;
            }
            Q.push(v);
        }
    }
    c[u]='b';
}
13
задан OmG 28 January 2017 в 16:48
поделиться