Tolérance aux ruptures sur les canaux de communication d’un ordinateur (Réparations de réseaux) I les réseaux On symbolise un réseau d’ordinateur par un graphe : Chaque ordinateur est représenté par un point qu’on appelle nœud Ces nœuds s’envoient des informations par des canaux de communications à sens unique représentés par des segments fléchés. Un nœud D joue un rôle particulier Le graphe est dit D-ciblé si, chaque nœud du graphe peut envoyer des informations à D Le nœud D ne fait que recevoir des informations Exemple de graphe D-ciblé : On s’intéresse aux graphes possédants les propriétés suivantes : Graphes connexes : Le graphe est en un seul morceau, pas d’ordinateurs ou de groupes d’ordinateurs isolés Graphes ne possédant pas de cycles orientés : l’information provenant d’un noeud ne peut lui revenir Graphes ne possédant pas de puits autres que D : Un puits est un nœud qui ne fait que recevoir des informations (Toutes ses connexions sont orientées vers lui) Cycle orienté Puits Propriété : Soit G un graphe connexe et sans cycles orientés, G est D-ciblé si et seulement si G ne possède pas d’autres puits que D. Démonstration : Si G possède un puits autre que D, alors ce nœud ne pourra pas envoyer d’informations donc D-ciblé implique sans puits. On considère G sans puits autre que D Soit N1 un nœud de G : N1 n’est pas un puits donc N111 est connecté à au moins un nœud N2 N2 n’est pas un puits donc il est connecté à au moins un nœud N3, différent de N1, G ne possédant pas de cycle orienté (Si N1=N3 alors N1 reçoit des informations de lui-même). N3 n’est pas un puits donc il est connecté à au moins un nœud N4, différent de N2 et de N1, G ne possédant pas de cycle orienté. De manière générale, le nœud Nn est connecté à au moins un nœud Nn+1 sauf si Nn est D, différent de Nn-1, de Nn-2, de Nn-3 … Donc G ne possède pas d’autre puits que D implique G est D-ciblé. II Le Problème : On considère un graphe respectant les conditions énoncées précédemment et on supprime une des connexions. On considère que le graphe résultant reste connexe. Exemple : Le graphe obtenu n’est plus D-ciblé : on observe la création d’un autre puits que D (P = puits) (Ce n’est pas toujours vrai) On cherche un algorithme permettant de réparer le graphe obtenu, que l’on puisse appliquer sans avoir une vision globale du graphe. Nous avons tenté de démontrer que l’algorithme suivant fonctionne : Retourner le sens des connexions de chaque puits jusqu’à résolution du graphe On ne retourne jamais le sens des connexions de D III Première approche : Lors de la cassure, on ne peut créer au maximum qu’un seul puits. En effet on ne touche aux connexions que de 2 nœuds. Pour créer 2 puits il faudrait qu’un des 2 nœuds soit déjà un puits. On ne peut créer un cycle orienté lors de la cassure. En effet, en partant d’un graphe comportant un cycle orienté qui serait le résultat de la cassure, on ne peut rajouter une arrête et obtenir un graphe sans cycle orienté qui serait le graphe avant la cassure. De plus, on ne peut créer de cycle orienté en appliquant l’algorithme. En effet, si on crée un cycle le puits que l’on vient de retourner appartient à ce cycle or il a toutes ses connexions sortantes alors que dans un cycle orienté, chaque nœud du cycle a au moins une connexion sortante et une connexion rentrante Les noeuds voisins de D ne deviendront jamais des puits. En effet, la connexion entre D et eux est toujours orientée vers D. Le graphe en ligne : On appelle graphe en ligne le graphe de la forme suivante (il peut être plus long) : On rompt l’arrête du dessus et on obtient le graphe suivant avec un puits au bout : On applique l’algorithme : Le graphe est résolu, chaque point peut envoyer des informations à D. On distingue 2 phases : La distance entre le puits et le nœud connecté à D le plus proche diminue puis, lorsqu’elle est égale à 1 le nombre de nœuds connectés à D augmente. Nous avons rédigé une démonstration sur ce principe mais elle s’est révélée impossible à généraliser puisque, avec les croisements, les puits ne se rapprochaient pas forcément de D. Nous avons donc opté pour une autre approche. IV Démonstration : Nous avons observé, dans les graphes en ligne que les points situés loin de D sont plus souvent des puits que les autres. Nous avons donc conjecturé la propriété suivante : Un nœud à distance d de D est un puits au maximum d-1 fois Nous l’avons démontré par récurrence : Initialisation : Soit N un nœud à distance 1 de D (donc voisin de D). On n’applique jamais l’algorithme sur D donc ce nœud ne sera jamais un puits. Soit N2 un nœud à distance 2 de D et voisin de N à distance 1. On a 2 possibilités : Soit l’arrête entre N2 et N est orientée vers N dans ce cas puisque N n’est jamais un puits, L’arrête N-N2 est toujours orientée vers N et N2 n’est jamais un puits. Soit l’arrête N-N2 est orientée vers N2 et donc si N2 devient un puits, cette arrête sera orientée vers N on revient au cas précédent, N2 ne sera plus jamais un puits. Donc le nœud N2 à distance 2 de D est un puits au maximum 1 fois. Hérédité : Lemme : Soit N et N’ 2 nœuds voisins. Entre 2 fois où N est un puits, N’ l’est une fois : N est un puits, on applique l’algorithme, la connexion N-N’ est dirigée vers N’. Pour que N redevienne un puits il faut que cette connexion soit dirigée vers N donc que N’ devienne un puits. Soit Nd un nœud à distance d de D et Nd+1 un nœud à distance d+1 de D, voisin de Nd. On suppose que Nd est un puits d-1 fois au maximum. On raisonne par l’absurde : Nd+1 est un puits d+1 fois ou plus, ce qui implique d’après le lemme que Nd est un puits d fois ou plus. C’est impossible donc Nd+1 est un puits au maximum d fois. La propriété est donc démontrée. A chaque fois que l’on applique l’algorithme, on retire au moins un au total du nombre de fois qu’un nœud peut être un puits. Lorsqu’il n’y a plus de puits le graphe est D-ciblé comme le dit une propriété précédente. Donc l’algorithme fonctionne KALOUGINE Anne, TRAN Benoît, LAVENANT Hugo Lycée Blais Pascal Orsay session 2007-2008