def BFS(G, source): for v in G: color[v] <- WHITE Q <- MAKE-QUEUE() ADD(Q, source) color[source] <- GRAY while Q not empty: v <- REMOVE(Q) color[v] <- BLACK for u adjacent to v: if color[u] == WHITE color[u] = GRAY ADD(Q, u) Initialize Relax
def DIJKSTRA(G, source): for v in G: color[v] dist[v]+weight(u,v) dist[u] = dist[v]+weight(u,v) parent[u] <- v if color[u] == WHITE: color[u] <- GRAY ADD(Q, u) Initialize Relax
def PRIM(G, source): for v in G: color[v] weight(u,v): dist[u] = weight(u,v) parent[u] <- v if color[u] == WHITE: color[u] <- GRAY ADD(Q, u) Initialize Relax
SIMPLIFICATION (Dijkstra)
def DIJKSTRA(G, source): for v in G: color[v] dist[v]+weight(u,v) dist[u] = dist[v]+weight(u,v) parent[u] <- v if color[u] == WHITE: color[u] <- GRAY ADD(Q, u) Initialize Relax
def DIJKSTRA(G, source): for v in G: color[v] dist[v]+weight(u,v) dist[u] = dist[v]+weight(u,v) parent[u] <- v if color[u] == WHITE: color[u] <- GRAY ADD(Q, u) Initialize Relax
def DIJKSTRA(G, source): for v in G: color[v] dist[v]+weight(u,v) dist[u] = dist[v]+weight(u,v) parent[u] <- v Initialize Relax
SIMPLIFICATION (PRIM)
def PRIM(G, source): for v in G: color[v] weight(u,v): dist[u] = weight(u,v) parent[u] <- v if color[u] == WHITE: color[u] <- GRAY ADD(Q, u) Initialize Relax
def PRIM(G, source): for v in G: color[v] weight(u,v): dist[u] = weight(u,v) parent[u] <- v if color[u] == WHITE: color[u] <- GRAY ADD(Q, u) Initialize Relax
def PRIM(G, source): for v in G: color[v] weight(u,v): dist[u] = weight(u,v) parent[u] <- v Initialize Relax
BFS utilizing dist[], parent[] fields dist[] keeps track of the level parent[] keep track of how vertex was reached
def DIJKSTRA(G, source): for v in G: color[v] <- WHITE dist[v] <- INF parent[v] <- NIL dist[source] <- 0 Q <- MAKE-QUEUE() ADD(Q, source) color[source] <- GRAY while Q not empty: v <- REMOVE(Q) color[v] <- BLACK for u adjacent to v: if color[u] == WHITE: dist[u] = dist[v]+1 parent[u] <- v color[u] <- GRAY ADD(Q, u) Initialize Relax