La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

CHEMINS DANS LES GRAPHES Le PCC entre un sommet et tous les autres sommets dans un graphe sans poids Le PCC entre un sommet et tous les autres sommets.

Présentations similaires


Présentation au sujet: "CHEMINS DANS LES GRAPHES Le PCC entre un sommet et tous les autres sommets dans un graphe sans poids Le PCC entre un sommet et tous les autres sommets."— Transcription de la présentation:

1 CHEMINS DANS LES GRAPHES Le PCC entre un sommet et tous les autres 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 Dist = for u in G Dist s = 0 P = P s = s Q = Q.append(s) while Q: z = Q.get_and_delete() for x in Adj z : If Dist x > Dist z +w(z, x): / the edge(z, x) is « tense » Dist x = Dist z +w(z, x) P x = z Q.append(x) Return

3 Le plus court chemin entre 2 sommets Données: Un graphe G avec des arêtes (arcs) sans poids et sommet s de G. But: Le plus court chemin entre s et les autres sommets du graphe Complexité : O(V+E)

4 Dist = for u in G Dist s = 0 P s = s Q = Q.append(s) while Q: z = Q.pop() for x in Adj z : If P x == 0: Dist x = Dist z +1 P x = z Q.append(x) return path(P)

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

6 Dist = for u in G Dist s =0 P s =s Q = V while Q: z = Q.delete_min() for x in Adj z : Relax(z, x)... Return

7 Dist = for u in G Dist s = 0 P s = s Q = Makeheap(V) (using dist-values as keys) while Q: z = Q.deletemin_key() / extract min operation for x in Adj z : If Dist x > Dist z +w(z, x) Q.decrease_key(x) / Dist x = Dist z +w(z, x), P x = z

8 M = 0 for u in G Dist = for u in G Dist s = 0 P s = s Q.add(s) / altenatively, Q={s} and insert nodes when reached while Q: z = Q.delete_min() for x in Adj z : If Dist x > Dist z +w(z, x) Q.decrease_key(x) / Dist x = Dist z +w(z, x), P x = z If M x ==0: M x =1 Q.add(x)

9 Opérations: Extract-Min Decrease-Key # ops: V E Temps/Op. Array: O(V) O(1) Heap: O(logV) O(logV) Fibonacci Heap: O(logV) O(1) (amortie) Complexité totale en Temps: Array: O(V 2 ) Heap: O((V+E)logV) Fibonacci Heap: O(E+VlogV) COMPLEXITE

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

11 M = 0 for u in G Dist = for u in G M s =1 Dist s =0 Q.enqueue(s) P s =s while Q: z = Q.dequeue() M z =0 for x in 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)

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

13 Dist = for u in G Dist s =0 P s = s Q = Topological_sort(G) while Q: z = Q.pop() for x in Adj z : If Dist x > Dist z +w(z, x) Dist x = Dist z +w(z, x) P x = z

14 Détection des Cycles négatifs Données: Un graphe G et un sommet s. But: G posséde t-il un cycle négatif? Complexité: O(VE )

15 M = 0 for u in G, Dist = for u in G, Dist s =0, a =1, Q.enqueue(s), Q.enqueue( ) while Q: z = Q.dequeue() if z == : if a < n : Q.enqueue( ) a+=1 elif Q: PRINT G contains a negative cycle break for x in Adj z : If Dist x > Dist z +w(z, x): Dist x = Dist z +w(z, x) if M x a: M x = a Q.enqueue(x) G does not contains a negative cycle

16 Currency conversion. Given currencies and exchange rates, what is best way to convert one ounce of gold to US dollars ? 1 oz. Gold US Dollar. 1 oz. gold UKPound US Dollar [ x ] 1 oz. gold Francs Euros UKPound [ x x ] Currency UKPound Euro JapYen Swiss US Dollar Gold (oz.) UKPound Euro JapYen Swiss US Dollar Gold(oz.) Shortest paths application: Currency conversion


Télécharger ppt "CHEMINS DANS LES GRAPHES Le PCC entre un sommet et tous les autres sommets dans un graphe sans poids Le PCC entre un sommet et tous les autres sommets."

Présentations similaires


Annonces Google