270 likes | 368 Views
Construction du graphe de Spehner. Différentes étapes. 1) Alphabet. 2) Langage. 3) Création des sommets du graphe de Spehner. 4) Ajout des différents arcs. 5) Recherche d’un circuit. 6) Mots en double décomposition si le langage n’est pas un code. Alphabet.
E N D
Différentes étapes 1) Alphabet. 2) Langage. 3) Création des sommets du graphe de Spehner. 4) Ajout des différents arcs. 5) Recherche d’un circuit. 6) Mots en double décomposition si le langage n’est pas un code.
Alphabet Notre Alphabet que l’on nommera A sera composé pour notre exemple des lettres a et b. A={a,b}
Langage Après avoir défini notre alphabet, nous construisons notre langage L défini sur l’alphabet A={a,b} précédemment créé. Notre langage sera constitué des mots a, ab et ba. L={a,ab,ba}
Création des sommets Tout d’abord, nous créons l’ensemble K contenant les sommets du graphe. K={a, b, ε}.
Construction des arcs : Les arcs sont construits à partir de chaque sommet de notre graphe. Un arc entre les sommets (u,v) d’étiquette (x,y) est ajouté si : x=u.y.v avec x Є L et y Є L*, u.y ≠ ε et y.v ≠ ε, u,v Є K.
Ajout des différents arcs : (ab,a) (ba,ε) ε b a (ba,a) (ab,ε) Voici le graphe de Spehner associé au langage L={ab,ba,a}
Le graphe de Spehner nous permet de conclure que le langage n’est pas un code s’il existe un circuit menant du sommet ε à lui-même. Recherchons ce circuit. Pourquoi ce n’est pas un code? (ab,a) (ba,ε) ε b a (ba,a) (ab,ε) Il existe un arc de ε vers b.
Le graphe de Spehner nous permet de conclure que le langage n’est pas un code s’il existe un circuit menant du sommet ε à lui-même. Recherchons ce circuit. Pourquoi ce n’est pas un code? (ab,a) (ba,ε) ε b a (ba,a) (ab,ε) Mais aussi un arc de b vers ε. Nous venons donc de trouver un circuit de ε vers ε. Ce qui prouve que le langage L={a, ba, ab} n’est pas un code!
Mais le graphe de Spehner permet aussi de trouver les mots ayant une double décomposition grâce aux étiquettes des différents arcs se trouvant sur un circuit de ε vers ε. Reprenons l’exemple précédent : Mots ayant une double décomposition (ab,a) (ba,ε) ε b a (ba,a) (ab,ε) L’équation associée à ce circuit est : a.ba = ab.a donc le mot aab de L* possède une double décomposition. Cette équation est donnée grâce aux différents arcs traversés lors de ce circuit.
Présentation des primitiveset des algorithmes Présentation des primitives Exemples d’algorithmes 1°)Alphabet 2°) Mots 3°) Langage 4°) Graphe 5°) Matrice d’adjacence 1°) Obtention d’un circuit 2°) Engendrer des mots
Alphabet • Clonage • Ajout de lettres • Test de contenance • Engendrement • Égalité • Union • Retrait de lettres
Mot • Test des préfixes et suffixes • Comparaison lexicographique • Concaténation • Égalité • Obtention des préfixes et suffixes • Soustraction d’éléments
Langage • Ajout de mots, d’ensembles • Test d’engendrement • Générateur minimum: test et obtention • Intersection • Langage préfixe, suffixe • Retrait de mots
Graphe • Implantation séparée: • Arcs • Étiquettes • Sommets
Matrice d’adjacence • Outils de représentation: • Existence et obtention de chemin • Existence et obtention de circuits • Existence et obtention d’arcs particuliers • Test d’accessibilité des sommets • Recherche des sommets sur les mêmes circuits
Obtention d’un circuit Circuit={1} Bloqués={1} 1 2 5 3 4
Obtention d’un circuit Circuit={1,2} Bloqués={1,2} 1 2 5 3 4
Obtention d’un circuit Circuit={1,2,3} Bloqués={1,2,3} 1 2 5 3 4
Obtention d’un circuit Circuit={1,2,3,4} Bloqués={1,2,3,4} 1 2 4 est un sommet menant vers un autre sommet bloqué 5 3 4
Obtention d’un circuit Circuit={1,2,3,5} Bloqués={1,2,3,4,5} 1 2 5 3 4
Obtention d’un circuit Circuit={1,2,3,5,1} Bloqués={1,2,3,4,5} 1 2 5 On obtient le circuit {1,2,3,5,1} 3 4
Engendrer des mots Alphabet={a,b} Langage={a,ab,bb} Préfixes du mot: a,ab,abb,abba,abbab Mot à tester: abbab a est un préfixe et un mot du langage
Engendrer des mots Alphabet={a,b} Langage={a,ab,bb} Préfixes du mot: a,ab,abb,abba,abbab Mot à tester: abbab abbab=a.bbab bbab est-il engendré par le langage?
Engendrer des mots Alphabet={a,b} Langage={a,ab,bb} Préfixes du mot: b,bb,bba,bbab Mot à tester: bbab bb est un préfixe et un mot du langage bbab=bb.ab ab est un mot du langage donc le mot de départ, abbab, est bien engendré par le langage. abbab=a.bb.ab