En mathĂ©matiques, et plus prĂ©cisĂ©ment en thĂ©orie des graphes, un code identifiant dâun graphe est un sous-ensemble de ses sommets tel que chaque sommet du graphe est identifiĂ© de façon unique par lâensemble de ses voisins dans le code.
Historique
[modifier | modifier le code]La thĂ©orie des graphes est un domaine combinant mathĂ©matiques discrĂštes et informatique. Son histoire remonte peut-ĂȘtre aux travaux dâEuler au XVIIIe siĂšcle et trouve son origine dans lâĂ©tude de certains problĂšmes, tels que le cĂ©lĂšbre problĂšme des ponts de Königsberg qui consiste Ă dĂ©terminer sâil existe un parcours tel quâil permettrait de faire le tour de la ville, et ce en partant dâun quartier au choix, en ne traversant quâune seule et unique fois chaque pont de cette ville et de revenir au point de dĂ©part, ou encore celui du voyageur de commerce ainsi que le problĂšme de coloriage de cartes (ThĂ©orĂšme des quatre couleurs). La thĂ©orie des graphes sâest alors dĂ©veloppĂ©e dans diverses disciplines telles que la chimie, la biologie, les sciences sociales. Depuis le dĂ©but du XXe siĂšcle, elle constitue une branche Ă part entiĂšre des mathĂ©matiques, grĂące aux travaux de König, Menger, Cayley puis de Berge et dâErdös.
De maniĂšre gĂ©nĂ©rale, un graphe permet de reprĂ©senter la structure, les connexions dâun ensemble complexe en exprimant les relations entre ses Ă©lĂ©ments : rĂ©seaux de communication, rĂ©seaux routiers, interaction de diverses espĂšces animales, circuits Ă©lectriques, etc. Les graphes constituent donc une mĂ©thode de pensĂ©e qui permet de modĂ©liser une grande variĂ©tĂ© de problĂšmes en se ramenant Ă lâĂ©tude de sommets et dâarcs. Les derniers travaux en thĂ©orie des graphes sont souvent effectuĂ©s par des informaticiens, du fait de lâimportance quây revĂȘt lâaspect algorithmique.
En 1998, M. Karpovsky, K. Charkrabary et Lev B. Levitin ont abordĂ© le problĂšme de couverture des sommets dâun graphe G de telle façon que lâon peut identifier dâune façon unique nâimporte quel sommet de G. Ce fut lĂ la premiĂšre fois oĂč la notion de codes identifiants a Ă©tĂ© utilisĂ©e.
Ces codes identifiants ont largement Ă©tĂ© Ă©tudiĂ©s depuis lâintroduction du concept en 1998, oĂč la thĂ©orie a Ă©tĂ© appliquĂ©e dans la modĂ©lisation du problĂšme dâidentification de processeurs dĂ©fectueux dans les rĂ©seaux multiprocesseurs, et ultĂ©rieurement en 2003, par Ray et al. dans des rĂ©seaux de capteurs dâurgences.
Généralité sur les codes identifiants
[modifier | modifier le code]Codes couvrants et codes séparateurs
[modifier | modifier le code]Codes couvrants
[modifier | modifier le code]
Soit un graphe non orientĂ© et C un sous-ensemble de sommets du graphe G. Si C est tel que tout sommet v de V est voisin dâau moins un sommet de C, on dira alors que C est un code couvrant de G. Un code couvrant est aussi appelĂ© dominant du graphe. Pour un sommet v de G, on dĂ©finit le voisinage fermĂ© de v comme lâensemble :
Un sous-ensemble de sommets C est un code couvrant de G si et seulement si pour tout v â V on a :
On dira quâun sommet c â C couvre le sommet v sâil appartient au voisinage fermĂ© de v.
Codes séparateurs
[modifier | modifier le code]Un sous-ensemble Câ de sommet du graphe G est un code sĂ©parateur de G si et seulement si :
ce qui est équivalent à dire :
Î
OĂč Î dĂ©signe la diffĂ©rence symĂ©trique de deux ensembles: A Î B = (A\ B) âȘ (B\ A) = (AâȘ B) \ (A â© B)
On dira quâun sommet c â C' sĂ©pare les sommets u et v sâil appartient Ă la diffĂ©rence symĂ©trique de et .
Autrement dit, un code séparateur de G sépare toutes les paires de sommets distincts du graphe G.
La recherche dâun code sĂ©parateur dâun graphe G revient Ă rĂ©soudre un problĂšme de couverture par tests dont lâinstance est la matrice dâadjacence de G.
Définition d'un code identifiant
[modifier | modifier le code]Un sous-ensemble C de sommets de G qui est Ă la fois un code couvrant et un code sĂ©parateur est appelĂ© un code identifiant de G. Tous les sommets du graphe G sont donc couverts et sĂ©parĂ©s. On appelle pour chaque sommet v ensemble identifiant lâensemble . On notera cet ensemble ou .
On a donc C qui est un code identifiant de G si et seulement si lâapplication :
est une injection dont lâimage ne contient pas lâensemble vide.
Applications pratiques
[modifier | modifier le code]Le problĂšme dâidentification de processeurs dĂ©fectueux
[modifier | modifier le code]Comme nous lâavons mentionnĂ© plus haut, les codes identifiants ont Ă©tĂ© introduits pour modĂ©liser un problĂšme pratique dâidentification de processeurs dĂ©fectueux dans des rĂ©seaux multiprocesseurs.
On suppose que chaque processeur p dâun rĂ©seau est capable dâexĂ©cuter une procĂ©dure test(p), qui sâapplique Ă p ainsi quâaux processeurs voisins de p. La procĂ©dure test(p) teste le bon fonctionnement de p ainsi que celui de ses voisins, et retourne une rĂ©ponse de type binaire : 0 si une dĂ©faillance a Ă©tĂ© dĂ©tectĂ©e sur p ou sur lâun de ses voisins, et 1 sinon. En supposant quâĂ tout moment, au plus un processeur du rĂ©seau soit dĂ©fectueux, le problĂšme est de dĂ©terminer un sous-ensemble de processeurs C tel que :
- Si au moins un des processeurs de C renvoie 0 aprĂšs lâexĂ©cution de test, alors il y a un unique processeur dĂ©fectueux dans le rĂ©seau, que nous sommes en mesure de localiser dâaprĂšs les rĂ©sultats des exĂ©cutions de test sur C
 - Si tous les processeurs de C renvoient 1 aprĂšs lâexĂ©cution de test, alors tous les processeurs du rĂ©seau sont en bon Ă©tat de marche
 
Il est facile de voir quâun sous-ensemble de processeurs C vĂ©rifie ces deux conditions si et seulement si lâensemble de sommets correspondant C est un code identifiant du graphe associĂ© au rĂ©seau.
En effet, la deuxiÚme condition est réalisée par le fait que C est couvrant, et la premiÚre condition s'appuie sur le fait que C est identifiant pour permettre d'isoler le processeur défectueux.
Le problÚme de détection de feu
[modifier | modifier le code]Le problĂšme est de retrouver une piĂšce oĂč un incendie sâest dĂ©clarĂ© grĂące aux rĂ©ponses donnĂ©es par les dĂ©tecteurs placĂ©s dans certaines piĂšces. Cela revient Ă chercher un sommet particulier, sâil existe, parmi tous les sommets dâun graphe G donnĂ©. On suppose que si un tel sommet existe il est unique. Savoir oĂč placer les dĂ©tecteurs revient Ă savoir quels sommets du graphe questionner. Pour cela nous allons choisir un ensemble C de sommets à « interroger », en posant la question suivante au sommet choisi : « existe-t-il un sommet en feu dans ton voisinage ? » :
- Si la rĂ©ponse est 1 (oui), le sommet en feu peut ĂȘtre tout aussi bien lui que lâun de ses voisins.
 - Si la rĂ©ponse est 0 (non), on peut affirmer quâil nây a pas de sommet en feu dans lâensemble C.
 
En supposant que C est un code identifiant, alors : aprĂšs avoir interrogĂ© tous les sommets du graphe, on puisse toujours affirmer : « il y a un sommet en feu et câest celui-là » ou bien « il nây a pas de sommet en feu dans ce graphe », et ce, quel que soit lâendroit oĂč lâincendie peut se dĂ©clarer.

En prenant lâexemple de la figure, si on dĂ©cide dâinterroger un ensemble de sommet C (les sommets en noir) du graphe G et on aura les rĂ©ponses suivantes :
| Sommet | Réponse | 
|---|---|
| 2 | Oui | 
| 3 | Non | 
| 4 | Non | 
| 5 | Non | 
| 6 | Oui | 
Ces rĂ©ponses nous permettent dâaffirmer quâil y a au moins un sommet en feu, qui est voisin Ă la fois du sommet « 6 » et du sommet « 8 »; il y a donc seulement deux possibilitĂ©s : lâun (ou plusieurs) des sommets « 1 » et « 2 » « 7 » « 8 » est en feu. Or les sommets « 2 » et « 7 » sont voisins du sommet « 5 » dont la rĂ©ponse est non, ce qui exclut ces deux sommets, donc les sommets en feu sont les sommets « 1 » et « 8 ». Pour que lâensemble C soit un code identifiant, il faut quâil fonctionne pour retrouver nâimporte quel sommet en feu.
Jeux et stratégies
[modifier | modifier le code]
Le problĂšme de recherche dâun sommet particulier (processeur dĂ©fectueux ou piĂšce en feu) peut aussi sâappliquer sous une forme adaptative. Contrairement Ă la recherche dâun code identifiant oĂč les sommets de lâensemble sont interrogĂ©s un par un successivement, il sâagit ici dâadapter le code au fur et Ă mesure des rĂ©ponses donnĂ©es. Dans ce cas, la recherche dâune solution optimale revient Ă minimiser le nombre dâinterrogations. Ă lâimage de nombreux jeux de devinettes populaires ou de jeux commerciaux comme le « Qui est-ce ? », expliquĂ© dans ce qui suit :
- des personnes : a, b, c, d, e, f ;
 - des caractéristiques : femme, jeune, lunettes ;
 - les caractĂ©ristiques qui identifient le personnage mystĂšre : il est jeune, mais ce nâest pas une femme.
 
Bibliographie
[modifier | modifier le code]- Mark G Karpovsky, Krishnendu Chakrabarty et Lev B. Levitin, « On a new class of codes for identifying vertices in graphs », Information Theory, IEEE Transactions on, vol. 44, no 2,â , p. 599-611 (lire en ligne)
 - T. LEHOUILLIER, Codes identifiants dans les graphes, Travaux Ătudes Recherches, Grenoble INP-ENSIMAG, 2009-2010.
 - F. FOUCAUD, S. GRAVIER, R. NASERASI, A. PARREAU, P. VALICOV. Identifying codes in line graphs. LaBRI, Université de Bordeaux, CNRS. 2011. https://arxiv.org/abs/1107.0207
 - F. FOUCAUD, R. NASERASR et A. PARREAU, Characterizing external digraphs for identifying codes and external cases of Bondyâs theorem on induced subsets. Graphs and Combinatorics manuscript. January 2012. http://www.lri.fr/~reza/pdfs/MaxIDCodeDigraph.pdf
 - S. RAY, R. UNGRANGSI, F. De PELLEGRINI, A. TRACHTENBERG, et D. STAROBINSKY, Robust Location Detection in Emergency Sensor Networks, 2003. http://ipsit.bu.edu/documents/location_web.pdf http://ipsit.bu.edu/documents/jsac_web.pdf
 - M. PASTORI. Les codes identifiants ou comment sauver le palais des flammes ? Découverte N°369. juillet-. p. 56-59
 - Abdellah MALLEK, Codes identifiants dans les graphes : Théorie et applications, mémoire de Licence en Recherche Opérationnelle à l'Université des sciences et de la technologie Houari-Boumediene, proposé par M. Ahmed SEMRI, 2011-2012.
 
