/
d ef  BFS (G , source): d ef  BFS (G , source):

d ef BFS (G , source): - PowerPoint Presentation

conchita-marotz
conchita-marotz . @conchita-marotz
Follow
352 views
Uploaded On 2019-06-23

d ef BFS (G , source): - PPT Presentation

for v in G colorv lt WHITE Q lt MAKEQUEUE ADDQ source colorsource lt GRAY while Q not empty ID: 760102

Share:

Link:

Embed:

Download Presentation from below link

Download Presentation The PPT/PDF document "d ef BFS (G , source):" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.


Presentation Transcript

Slide1

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

Slide2

def DIJKSTRA(G, source): for v in G: color[v] <- WHITE dist[v] <- INF parent[v] <- NIL dist[source] <- 0 Q <- MAKE-PRIORITY-QUEUE() ADD(Q, source) color[source] <- GRAY while Q not empty: v <- REMOVE(Q) color[v] <- BLACK for u adjacent to v: if dist[u] > 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)

I

nitialize

Relax

Slide3

def PRIM(G, source): for v in G: color[v] <- WHITE dist[v] <- INF parent[v] <- NIL dist[source] <- 0 Q <- MAKE-PRIORITY-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] != BLACK and dist[u] > weight(u,v): dist[u] = weight(u,v) parent[u] <- v if color[u] == WHITE: color[u] <- GRAY ADD(Q, u)

Initialize

Relax

Slide4

SIMPLIFICATION

(

Dijkstra

)

Slide5

def DIJKSTRA(G, source): for v in G: color[v] <- WHITE dist[v] <- INF parent[v] <- NIL dist[source] <- 0 Q <- MAKE-PRIORITY-QUEUE() ADD(Q, source) color[source] <- GRAY while Q not empty: v <- REMOVE(Q) color[v] <- BLACK for u adjacent to v: if dist[u] > 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)

I

nitialize

Relax

Slide6

def DIJKSTRA(G, source): for v in G: color[v] <- WHITE dist[v] <- INF parent[v] <- NIL dist[source] <- 0 Q <- MAKE-PRIORITY-QUEUE() ADD(Q, source) ADD(Q, all v in G) color[source] <- GRAY while Q not empty: v <- REMOVE(Q) color[v] <- BLACK for u adjacent to v: if dist[u] > 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)

I

nitialize

Relax

Slide7

def DIJKSTRA(G, source): for v in G: color[v] <- WHITE dist[v] <- INF parent[v] <- NIL dist[source] <- 0 Q <- MAKE-PRIORITY-QUEUE() ADD(Q, all v in G) while Q not empty: v <- REMOVE(Q) for u adjacent to v: if dist[u] > dist[v]+weight(u,v) dist[u] = dist[v]+weight(u,v) parent[u] <- v

I

nitialize

Relax

Slide8

SIMPLIFICATION

(PRIM)

Slide9

def PRIM(G, source): for v in G: color[v] <- WHITE dist[v] <- INF parent[v] <- NIL dist[source] <- 0 Q <- MAKE-PRIORITY-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] != BLACK and dist[u] > weight(u,v): dist[u] = weight(u,v) parent[u] <- v if color[u] == WHITE: color[u] <- GRAY ADD(Q, u)

Initialize

Relax

Slide10

def PRIM(G, source): for v in G: color[v] <- WHITE dist[v] <- INF parent[v] <- NIL dist[source] <- 0 Q <- MAKE-PRIORITY-QUEUE() ADD(Q, source) ADD(Q, all v in G) color[source] <- GRAY while Q not empty: v <- REMOVE(Q) color[v] <- BLACK for u adjacent to v: if color[u] != BLACK and dist[u] > weight(u,v): dist[u] = weight(u,v) parent[u] <- v if color[u] == WHITE: color[u] <- GRAY ADD(Q, u)

Initialize

Relax

Slide11

def PRIM(G, source): for v in G: color[v] <- WHITE dist[v] <- INF parent[v] <- NIL dist[source] <- 0 Q <- MAKE-PRIORITY-QUEUE() ADD(Q, all v in G) while Q not empty: v <- REMOVE(Q) color[v] <- BLACK for u adjacent to v: if color[u] != BLACK and dist[u] > weight(u,v): dist[u] = weight(u,v) parent[u] <- v

Initialize

Relax

Slide12

BFS utilizing dist[], parent[] fields

dist[] keeps track of the level

parent[] keep track of how vertex was reached

Slide13

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