Skip to content
Snippets Groups Projects
Verified Commit 21448c4c authored by orestis.malaspin's avatar orestis.malaspin
Browse files

maj cours

parent a214eadd
Branches
No related tags found
No related merge requests found
...@@ -5,6 +5,8 @@ date: "2024-06-04" ...@@ -5,6 +5,8 @@ date: "2024-06-04"
# Rappel (1/2) # Rappel (1/2)
\footnotesize
## Algorithme de Dijkstra: à quoi sert-il? ## Algorithme de Dijkstra: à quoi sert-il?
. . . . . .
...@@ -17,11 +19,11 @@ A trouver le plus court chemin entre deux sommets d'un graphe! ...@@ -17,11 +19,11 @@ A trouver le plus court chemin entre deux sommets d'un graphe!
```C ```C
distance[source] = 0 distance[source] = 0
distance[reste] = inf; distance[reste] = inf
pour sommet dans liste_sommets: pour sommet dans liste_sommets:
fp = enfiler(fp, sommet, w(source, sommet)) // file min fp = enfiler(fp, sommet, w(source, sommet)) // file min
tant !est_vide(fp): tant !est_vide(fp):
sommet_courant, fp = défiler(fp); sommet_courant, fp = défiler(fp)
pour sommet_voisin dans voisinage(sommet_courant): pour sommet_voisin dans voisinage(sommet_courant):
n_dist = distance[sommet_courant] + w(sommet_courant, sommet_voisin) n_dist = distance[sommet_courant] + w(sommet_courant, sommet_voisin)
si distance[sommet_voisin] > n_dist: si distance[sommet_voisin] > n_dist:
...@@ -305,20 +307,22 @@ matrice, matrice floyd_warshall(distance, n, w) ...@@ -305,20 +307,22 @@ matrice, matrice floyd_warshall(distance, n, w)
```C ```C
file_priorité, distance, parent initialisation(graphe) file_priorité, distance, parent initialisation(graphe)
r = aléatoire(graphe) s_initial = aléatoire(graphe)
distance[r] = 0 distance[s_initial] = 0
parent[r] = indéfini parent[s_initial] = indéfini
fp = file_p_vide() fp = file_p_vide()
pour v dans sommets(graphe) pour s_courant dans sommets(graphe)
si v != r si s_courant != s_initial
distance[v] = infini distance[s_courant] = infini
parent[v] = indéfini parent[s_courant] = indéfini
fp = enfiler(fp, v, distance[v]) fp = enfiler(fp, s_courant, distance[s_courant])
retourne fp, distance, parent retourne fp, distance, parent
``` ```
# Algorithme de Prim # Algorithme de Prim
\footnotesize
## Algorithme: Pseudo-code (5min) ## Algorithme: Pseudo-code (5min)
. . . . . .
...@@ -326,15 +330,16 @@ file_priorité, distance, parent initialisation(graphe) ...@@ -326,15 +330,16 @@ file_priorité, distance, parent initialisation(graphe)
```C ```C
sommets, parent prim(file_priorité, distance, parent) sommets, parent prim(file_priorité, distance, parent)
sommets = vide sommets = vide
tant que !est_vide(file_priorité) tant que !est_vide(fp)
u, fp = défiler(file_priorité) s_courant, fp = défiler(fp)
sommets = insérer(sommets, u) sommets = insérer(sommets, s_courant)
pour v dans voisinage de u et pas dans sommets pour s_voinsin dans voisinage(s_courant) et pas dans sommets
// ou dans file_priorité // ou dans fp
si w(u, v) < distance[v] si poids(s_courant, s_voinsin) < distance[s_voinsin]
parent[w] = u parent[s_voinsin] = s_courant
distance[w] = w(u, v) distance[s_voinsin] = poids(s_courant, s_voinsin)
fp = changer_priorité(fp, w, w(u, v)) fp = changer_priorité(fp,
s_voinsin, poids(s_courant, s_voinsin))
retourne sommets, parent retourne sommets, parent
``` ```
...@@ -734,7 +739,7 @@ O(|V|) u, fp = défiler(file_priorité) ...@@ -734,7 +739,7 @@ O(|V|) u, fp = défiler(file_priorité)
* Retirer $(u,v)$ de $E$, * Retirer $(u,v)$ de $E$,
* Si $u\in V_i$ et $v\in V_j$ avec $V_i\cap V_j=\emptyset$: * Si $u\in V_i$ et $v\in V_j$ avec $V_i\cap V_j=\emptyset$:
* Ajouter $(u,v)$ à $A$; * Ajouter $(u,v)$ à $A$;
* Fusionner $U$ et $V$ dans $F$. * Fusionner $u$ et $v$ dans $F$.
# Algorithme de Kruskal: exemple # Algorithme de Kruskal: exemple
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment