Docsity
Docsity

Prépare tes examens
Prépare tes examens

Étudies grâce aux nombreuses ressources disponibles sur Docsity


Obtiens des points à télécharger
Obtiens des points à télécharger

Gagnz des points en aidant d'autres étudiants ou achete-les avec un plan Premium


Guides et conseils
Guides et conseils


Exercices de mathématiques sur l'algorithmique de base, Exercices de Mathématiques Appliquées

Exercices de mathématiques sur sur l'algorithmique de base. Les principaux thèmes abordés sont les suivants: exercices de 1 à 8.

Typologie: Exercices

2013/2014

Téléchargé le 28/01/2014

Caroline_lez
Caroline_lez 🇫🇷

4.3

(109)

1.2K documents

1 / 2

Toggle sidebar

Cette page n'est pas visible dans l'aperçu

Ne manques pas les parties importantes!

bg1
Algorithmique de base 2011 2012
Feuille de TD n˚4
Exercice 1. Appliquez l’algorithme de recherche des composantes fortement connexes
au graphe ci-dessous, en détaillant les parcours en profondeur effectués.
A
B
C D
E
F
G
H
Exercice 2. Le but de cet exercice est de démontrer la validité de l’algorithme de calcul
des composantes fortement connexes étudié en cours.
1. Montrer que si deux sommets se trouvent dans la même composante fortement
connexe, tous les chemins de l’un à l’autre restent dans cette composante fortement
connexe.
On définit l’aïeul φ(u)d’un sommet ucomme étant le sommet qui, parmi ceux accessibles
à partir de u, termine le premier parcours en profondeur en dernier.
2. Montrer que φ(u)est un ancêtre de uselon le premier parcours en profondeur (c’est-
à-dire qu’il existe un chemin rouge 1de φ(u)vers u).
3. Montrer que uet vsont dans la même composante fortement connexe si et seulement
si φ(u) = φ(v).
Soit ule sommet par lequel on a fini le premier parcours en profondeur. C’est aussi celui
par lequel on commence le second parcours.
4. Montrer que φ(u) = u.
Soit vun sommet dont uest un ancêtre dans le deuxième parcours en profondeur.
5. Montrer que φ(v) = u. En déduire que vet usont dans la même composante fortement
connexe.
6. Montrer que l’algorithme calcule les composantes fortement connexes.
Exercice 3. Trouver un algorithme qui détermine si un graphe orienté contient un cycle.
Exercice 4. Trouver un exemple de graphe ayant des arêtes de poids négatif (mais sans
cycle de poids négatif) pour lequel l’algorithme de Dijkstra donne un résultat faux.
Pour traiter le cas des graphes ayant des arêtes de poids négatif, on considère l’al-
gorithme de Bellman-Ford, qui calcule les plus courts chemin du sommet sà chacun
des sommets accessibles depuis s, dans un graphe ne contenant pas de cycle de poids
négatif :
1: initialiser sà0et les autres sommets à +.
2: pour i= 1 à|S(G)| 1faire
1. C’est-à-dire formé d’arêtes que l’on a suivies au cours du parcours. Ce n’est pas une terminologie
standard.
1
docsity.com
pf2

Aperçu partiel du texte

Télécharge Exercices de mathématiques sur l'algorithmique de base et plus Exercices au format PDF de Mathématiques Appliquées sur Docsity uniquement!

Algorithmique de base 2011 – 2012

Feuille de TD n˚ 4

Exercice 1. Appliquez l’algorithme de recherche des composantes fortement connexes au graphe ci-dessous, en détaillant les parcours en profondeur effectués.

A

B

C D

E

F

G

H

Exercice 2. Le but de cet exercice est de démontrer la validité de l’algorithme de calcul des composantes fortement connexes étudié en cours.

1. Montrer que si deux sommets se trouvent dans la même composante fortement connexe, tous les chemins de l’un à l’autre restent dans cette composante fortement connexe.

On définit l’aïeul φ ( u ) d’un sommet u comme étant le sommet qui, parmi ceux accessibles à partir de u , termine le premier parcours en profondeur en dernier.

2. Montrer que φ ( u ) est un ancêtre de u selon le premier parcours en profondeur (c’est- à-dire qu’il existe un chemin rouge 1 de φ ( u ) vers u ). 3. Montrer que u et v sont dans la même composante fortement connexe si et seulement si φ ( u ) = φ ( v ).

Soit u le sommet par lequel on a fini le premier parcours en profondeur. C’est aussi celui par lequel on commence le second parcours.

4. Montrer que φ ( u ) = u.

Soit v un sommet dont u est un ancêtre dans le deuxième parcours en profondeur.

5. Montrer que φ ( v ) = u. En déduire que v et u sont dans la même composante fortement connexe. 6. Montrer que l’algorithme calcule les composantes fortement connexes.

Exercice 3. Trouver un algorithme qui détermine si un graphe orienté contient un cycle.

Exercice 4. Trouver un exemple de graphe ayant des arêtes de poids négatif (mais sans cycle de poids négatif) pour lequel l’algorithme de Dijkstra donne un résultat faux.

Pour traiter le cas des graphes ayant des arêtes de poids négatif, on considère l’al- gorithme de Bellman-Ford, qui calcule les plus courts chemin du sommet s à chacun des sommets accessibles depuis s , dans un graphe ne contenant pas de cycle de poids négatif :

1: initialiser s à 0 et les autres sommets à +∞. 2: pour i = 1 à | S ( G )| − 1 faire

  1. C’est-à-dire formé d’arêtes que l’on a suivies au cours du parcours. Ce n’est pas une terminologie standard.

docsity.com

3: pour chaque arc ( u, v ) faire 4: si valeur( v ) > valeur( u ) + poids( u, v ) alors 5: valeur( v ) = valeur( u ) + poids( u, v ) 6: fin si 7: fin pour 8: fin pour 9: pour chaque arc ( u, v ) faire 10: si valeur( v ) > valeur( u ) + poids( u, v ) alors 11: retourner faux 12: fin si 13: fin pour 14: retourner vrai

Exercice 5. Exécutez cet algorithme sur le contre-exemple que vous avez trouvé à l’exercice 4. Que constatez-vous?

Exercice 6. Dans quel cas cet algorithme renvoie-t-il « faux »?

Exercice 7. Soit v un sommet. Montrer que s’il existe un plus court chemin de s à v en au plus k étapes, alors après la k -ième étape dans la première boucle, la valeur de v est égale à la distance minimale entre s et v. En déduire la validité de l’algorithme de Bellman-Ford.

Exercice 8. Calculer la complexité de cet algorithme.

docsity.com