1 / 12

CHEMINS DANS LES GRAPHES

CHEMINS DANS LES GRAPHES. Le PCC entre 2 sommets dans un graphe sans poids Le PCC entre un sommet et tous les autres sommets dans un graphe à des poids positifs Le PCC entre un sommet et tous les autres sommets dans un graphe pondéré.

Download Presentation

CHEMINS DANS LES GRAPHES

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CHEMINS DANS LES GRAPHES • Le PCC entre 2 sommets dans un graphe sans poids • Le PCC entre un sommet et tous les autres sommets dans un graphe à des poids positifs • Le PCC entre un sommet et tous les autres sommets dans un graphe pondéré. • Le PCC entre un sommet et tous les autres sommets dans un graphe orienté et sans cycle

  2. GenericShortestPath(G, s) Dist= ∞ for u in G Dists = 0 P =  Ps = s Q =  Q.append(s) whileQ: z = Q.get_and_delete() forxin Adjz: If Distx > Distz+w(z, x): /edge (z,x) is « tense» Distx = Distz+w(z, x) Px = z Q.append(x) Return < P, D >

  3. Le plus court chemin entre 2 sommets • Données: Un grapheG avec des arêtes (arcs) sans poidset 2 sommetss et t de de G. • But: Le plus court chemin entre s et t. Complexité: O(V+E)

  4. ShortestPath(G, s) Dist= ∞ for u in G Dists = 0 P =  Ps = s Q =  Q.append(s) whileQ: z = Q.pop() forxin Adjz: If Px == 0: /edge (z,x) is « tense»!!!! Distx = Distz+1 Px = z Q.append(x) returnpath(P,s,t)

  5. Le plus court chemin: Dijkstra • Données: Un grapheG avec des arêtes (arcs) à des poidspositifset un sommets. • But: Le plus court chemin entre s et les autres sommets du graphe. Complexité: O(V2+E) // O((V+E)log V) // O(E+Vlog V)

  6. The algorithm DIJKSTRA(G,s) Dist= infinity for u in G Dists=0 Ps=s Q = V whileQ: z = Q.delete_min() forxin Adjz: Relax(z, x) ... Return <P, Dist>

  7. Dijkstra1 (G.w, s) Dist= ∞for u in G Dists = 0 Ps = s Q = Makeheap(V) (usingdist-values as keys) whileQ: z = Q.deletemin_key() forxin Adjz: If Distx > Distz+w(z, x): Distx = Distz+w(z, x) Px= z Q.decrease_key(x)

  8. Dijkstra2 (G.w, s) Dist= ∞ for u in G M = 0 for u in G P=  Dists = 0 Ms=1 Ps = s Q.add(s) whileQ: z = Q.delete_min() forxin Adjz: If Distx > Distz+c(z, x) Distx = Distz+c(z, x) Px= z If Mx==0: Mx=1 Q.add(x) elifQ.decrease_key(x)

  9. Le plus court chemin: Bellman-Ford Données: Un graphevaluéG et un sommets sans cycle négatif. But: Le plus court chemin entre s et les autres sommets du graphe. Complexité: O(VE)

  10. Bellman-Ford (G.w, s) Dist= ∞ for u in G M = 0 for u in G P =  Dists=0 Ms=1 Ps=s Q.enqueue(s) whileQ: z = Q.dequeue() Mz=0 forxin Adjz: If Distx > Distz+w(z,x) Distx = Distz+w(z,x) Px= z if Mx==0: Mx=1 Q.enqueue(x)

  11. Le chemin le plus court: DAGs • Données: Un grapheorienté et sans cycle G, et un sommetsde G. • But: Le plus court chemin entre s et les autres sommets du graphe. Complexité: O(V+E)

  12. SHORTEST_PATHS_DAGs(G.w, s) Dist= ∞for u in G Dists =0 Ps = s Q = Topological_sort(G) whileQ: z = Q.pop() forxin Adjz: If Distx > Distz+w(z, x) Distx = Distz+w(z, x)

More Related