IFT2121 – H06 – Devoir 5 Grenon, Nicola
Remise: 2006-03-10 GREN30077303
1.
À postériori, en parcourant de façon classique (récursive) l'arbre obtenu en prenant pour racine un noeud quelconque, i.e.: poids(racine)poids(noeud)
enfants tous les noeuds liés à ce noeud sauf son parent.
Si aucun enfant, alors retourner 0.
Sinon, retourner
( , ) ( )
enfants
w noeud enfant poids enfant
, où w donne le poids de l'arête se trouvant
entre le noeud et cet enfant.
2. Par définition de l'algorithme (dans les deux cas), le choix de l'arête suivante à intégrer à la solution se fait sur une comparaison directe du type min(a1, ..., am) où ai représente soit des arêtes ayant un noeud dans l'arbre en contruction (Prim), soit l'ensemble des arêtes non-encore sélectionnées (Kruskal).
Si l'on suppose que le rang de l'élément retourné par la fonction min n'est pas affecté par l'addition d'une même constante à tous les éléments comparés, on peut conclure que l'affirmation du numéro 2 est vraie, puisque l'algorithme empruntera le même chemin de résolution si l'on additionne au poids de toutes les arêtes l'inverse additif +1 du poids le plus négatif, obtenant ainsi un graphe dont le poids de toutes les arêtes est strictement positif, problème déjà prouvé dans le livre.
Reste à prouver que min retournera la solution du même rang peu importe la translation constante subie par tous les éléments comparés. (Ce qui est passablement évident, mais bon...)
Preuve:
Posons ei, pour i = 1, ..., n, les n éléments comparés dans la fonction min.
Posons k le rang de l'élément le plus petit.
Si on additionne une constante c à tous les ei, on obtient la liste d'éléments e1+c, e2+c, ..., en+c.
Lorsqu'on compare ek+c à n'importe quel autre ei+c, on sait déjà que ek ≤ ei alors on sait (clairement) que ek+c ≤ ei+c .cqfd
3. a) w^ est défini par le résultat de l'addition de la valeur absolue du plus petit des poids au poids de l'arête.
- Si le plus petit des poids était positif, alors comme on ajoute une valeur positive à des nombres positif, on ne peut qu'obtenir un résultat positif. (≥0)
- Si le plus petit des poids était négatif, alors en lui ajoutant sa propre valeur absolue, on obtiendra 0 (≥0).
Tous les autres éléments étant plu grand que lui, alors tous les résultats possibles sont ≥0.
b) Oui, puisque c'est le même arbre de poids minimum qui lui est assurément dans G. J'ai prouvé quelque chose de très similaire dans mon raisonnement du numéro 2. La seule différence est le poids de l'arbre, qui se trouve à être mn trop grand.
c) mn, où n est le nombre d'arêtes dans l'arbre de poids minimum.
d) Non. Je veux dire ici que pour le graphe G^ on trouve les bons chemins... mais ces plus courts chemins ne sont pas valables sur G dans tous les cas s'il avait des arêtes de poids négarif!, ce qui est facilement
prouvable par un contre-exemple:
Les chemins trouvés par l'algorithme sont les mêmes, mais dans G, le plus court chemin entre A et D devrait être A-C-B-D et non A-B-D, alors que c'est le cas dans G^.
e)
Non. La preuve a été faite en d).A
B
C
D 1
2
-4 3
A
B
C
D 5
6 0
7
G G ^
f) «breadth first search»*:
Prendre un noeud de départ arbitrairement et le marquer Q le noeud {Q est une ADT queue}
A le noeud {A est l'arbre solution}
Tant que Q n'est pas vide
Pour tous les voisins du noeud en tête de queue S'il n'est pas marqué
Marquer le voisin L'ajouter à la queue A <-- A + (noeud,voisin) Retourner A
---
* Fortement inspiré de la définition trouvée sur http://www.ics.uci.edu/~eppstein/161/960215.html