1
ALGORITHMIQUE LI311
Licence 3
Mini-Projet : Arbre Steiner
Rapport sur la partie théorique
Réalisé par : - Julien GOURRAU...
2
Question 1 :
On cherche à monter qu’un arbre Steiner minimum d’un graphe G est :
Un sous graphe de G
 Car un arbre est ...
3
Donc d(x,z) <= d(x,y) + d(y,z).
Question 5 :
On suppose qu’on a une chaine qui relie deux sommets x et y qui est de cout...
4
La complexité est donc de O(n) + (O(n log n)) + O(n3) = O(n3) .
ii) On a |N|=2
Cela consiste à faire un parcours du prem...
5
Un arbre Steiner contenant au maximum |N|-2 sommets Steiner est appelé un arbre
Steiner complet ainsi, son existence est...
Prochain SlideShare
Chargement dans…5
×

Rapport - Partie th‚orique

116 vues

Publié le

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
116
Sur SlideShare
0
Issues des intégrations
0
Intégrations
24
Actions
Partages
0
Téléchargements
2
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Rapport - Partie th‚orique

  1. 1. 1 ALGORITHMIQUE LI311 Licence 3 Mini-Projet : Arbre Steiner Rapport sur la partie théorique Réalisé par : - Julien GOURRAUD - Belkacem KAID Encadré par : - Olivier SPANJAARD 04/12/14
  2. 2. 2 Question 1 : On cherche à monter qu’un arbre Steiner minimum d’un graphe G est : Un sous graphe de G  Car un arbre est un sous graphe Il est connexe  Car un arbre est toujours connexe Son cout est min  Car pour couvrir des sommets, il suffit de prendre les arêtes de cout minimum en utilisant des algorithmes qui génère des arbres couvrant de poids minimum (par exemple Prim). Il contient tous les terminaux  Car d’après la définition, les terminaux N sont inclus dans les sommets S’ qui est lui-même inclus dans les sommets S du graphe G.  De plus, si on suppose qu’il n’existe aucun sommet Steiner dans le graphe il devrait forcément contenir tous les sommets terminaux Question 2 : Déterminer le routage d’alimentation revient à chercher un arbre Steiner car c’est un arbre qui couvre tous les terminaux (les composantes du circuit nécessaires), et qui atteint les bornes de l’alimentation (sommets Steiner). Ainsi lors du premier parcours en partant du « + » (respectivement du « - »), on choisit le minimum des sommets Steiner. On aura alors fait deux parcours et on obtiendra deux arbres Steiner minimaux. Question 3 : Soit la plus courte chaine entre x et y est l’arête (x,y) alors d(x,y) = c(x,y) . Soit il existe une autre chaine entre x et y dont la valeur est inférieur au coût de l’arête alors d(x,y) < c(x, y). Donc d(x,y) <= c(x,y) Question 4 : Soit la chaine empruntée pour calculer la distance d(x,z) passe par le sommet y, alors d(x,z) = d(x,y) + d(y,z). Soit la chaine empruntée pour calculer la distance d(x,z) ne passe pas par le sommet y, alors d(x,z) < d(x,y) + d(y,z).
  3. 3. 3 Donc d(x,z) <= d(x,y) + d(y,z). Question 5 : On suppose qu’on a une chaine qui relie deux sommets x et y qui est de cout min, sachant que cette chaine n’est pas inclue dans notre graphe D(S), or il existe un arbre Steiner min inférieur à l’arbre Steiner min obtenu à partir du graphe des distances D(S), alors que TD est l’arbre Steiner min de D(S), autrement dit il n’existe aucune arête autre que celle reliant x et y dans D(S) (représentant un chemin ou une chaine de distance minimale reliant un couple de sommets ), et cela contredit notre supposition. Donc toute arête de D(S) représente exactement la plus courte distance entre tout couple de sommets, ainsi d(TD) est la somme des substitutions des arêtes de T (arbre Steiner min de G). Donc le parcours constituant un arbre Steiner min dans G est exactement le même dans D(S) (car D(S) contient tous les sommets terminaux de G). On obtient donc : c(T) = d(TD) avec c(T) = ∑ (x,y) ∈ T c(x,y) et d(TD) = ∑ (x,y) ∈ TD d(x,y) Question 6 : Dans cet algorithme, on construit un graphe H, contenant les plus courtes chaînes reliant tous couple de sommets, en faisant la substitution des arêtes {x,y} de TD par une plus courte chaîne de x à y dans G. Ainsi H contient exactement les distances minimales entre tous couple de sommet. L’arbre couvrant minimum T dans H est obtenu suite au parcours fait par un algorithme qui retourne un arbre couvrant de poids minimum (Prim par exemple) qui contient tous les sommets terminaux. Puis le fait d’ôter les sommets Steiner de degré 1 répond toujours aux propriétés d’un arbre Steiner de cout minimum. Question 7 : i) On a |N|=S Considérons alors l'algorithme Transfert suivant pour un sous-ensemble 𝑆′ ∈ 𝑆 contenant tous les terminaux ( 𝑁 ⊂ 𝑆′). - Remplacer chaque arête {x,y} de TD par une plus courte chaîne de x à y dans G. On nomme H le graphe résultant de cette opération (une même arête n'apparaissant qu'au plus une fois dans H). Ici, on appelle m fois l’algorithme de Prim. Pour un arbre couvrant M = N-1. Donc la complexité est en O(n-1) * O(n2) = O(n3) (en supposant que l’on utilise pas la structure de Tas pour l’algorithme de Dijkstra) - Trouver un arbre couvrant minimum T dans H : (Algorithme de Prime) (O(n log n)) - Ôter itérativement de T les sommets Steiner de degré 1 (O(n))
  4. 4. 4 La complexité est donc de O(n) + (O(n log n)) + O(n3) = O(n3) . ii) On a |N|=2 Cela consiste à faire un parcours du premier sommet au deuxième sommet terminal, et cela en utilisant l’algorithme de Dijkstra avec une matrice d’adjacence comme structure de donnée, ce qui donne une complexité de O(n3). Question 8 : On suppose qu’on a un sommet Steiner transitoire pour au moins trois sommets terminaux, or le passage par ce sommet Steiner nous ramène à avoir un cout min pour atteindre les sommets terminaux, ainsi dans notre arbre si chaque sommet Steiner répond à cette condition, on pourrait avoir un arbre Steiner de cout mini du graphe des distances D(S) ou chaque sommet Steiner est de degré au moins 3, donc il pourrait exister un tel arbre Steiner min. Par exemple : Les sommets terminaux sont sphères de bleu. Les sommets Steiner sont des cercles bleus. Question 9 : On suppose qu’on a K sommet Steiner, or (|N|+K-1) arête (nombre d’arêtes d’un arbre), et chaque sommet Steiner est de degré 3 ou chaque arête est connectée à un sommet terminal. Le nombre des arêtes est donc : (3K+|N|)/2 : La division par 2 est due au fait que chaque arête contient 2 sommets. Ainsi : |N|+K-1 ≥ (3K+|N|)/2 2|N|+2K-2 ≥ 3K+|N| Donc |N|-2 ≥ K
  5. 5. 5 Un arbre Steiner contenant au maximum |N|-2 sommets Steiner est appelé un arbre Steiner complet ainsi, son existence est démontrée. Question 10 : On peut déduire de la question précédente que l'algorithme suivant fournit un arbre Steiner minimum pour G. - Énumérer tous les ensembles S⊂ (S N) d'au plus |N| - 2 sommets Steiner : 2|N| -1 ( -1 pour l’ensemble vide ) - Pour chacun de ses sous-ensembles S0, déterminer un arbre couvrant minimum dans le graphe des distances D(N U S’). O((n log n)m) - Retenir l'arbre couvrant minimum parmi tous. O(1) car on prend l’arbre pour lequel l’algorithme de Prim a renvoyé le plus petit cout. - Par l'algorithme transfert, transformer cet arbre en un arbre Steiner de G de même coût. O(n3) Donc la complexité est en 2|N| -1 + O(1) + O((n log n)m)+ O((n)m) = (2|N|-1) Si |N| = O(1) alors il n’y aura qu’un seul appel à l’algorithme de Prim. La complexité sera alors en O(1) + O(1) + O(n log n) + O((n)) = O(n log n) Question 11 : Si on a 1000 sommets, dont 500 terminaux, l’algorithme durera (2500-1)*0,01 = > impossible Si on dispose d’un ordinateur 100 fois plus rapide, l’algorithme durera (2500- 1)*0,0001 =>impossible Question 12 : Algorithme Méthode approchée : _ Construire le graphe des distances D(N) limité aux sommets terminaux. (O(n*m)) _ Déterminer un arbre couvrant minimum TD de D(N). O(n log n) (Algorithme de Prim) _ Remplacer chaque arête fx; yg de TD par une plus courte chaîne de x à y dans G. On nomme H le graphe résultant de cette opération (une même arête n'apparaissant qu'au plus une fois dans H). O(n2 log n) _ Trouver un arbre couvrant minimum T dans H. O(n log n) _ Ôter itérativement de T les sommets Steiner de degré 1. O(1) Complexité :O(n²logn).

×