Académique Documents
Professionnel Documents
Culture Documents
2) Relations
Une relation entre n ensembles est un ensemble de n-uplets, reprsentants des associations. Nous allons
nous intresser aux relations binaires. R2ZA*A est une relation dun ensemble dans lui-mme. Exemple :
R = { (a,b), (a,c), (b,b), (b,c) }2Z{a,b,c}*{a,b,c}
a
b
<a,b,c> est un chemin (path) car (a,b) et (b,c) sont dans la relation.
<a,b,b,c> est un autre chemin.
c
Les relations binaires ont des proprits :
- [1] Rflexive ssi (a,a)2R pour tout a2A. Correspond avoir des boucles pour tout sommet.
- [2] Transitive ssi (a,b)2R ^ (b,c)2R (a,c)2R pour tout a, b, c2A.
- [3] Symtrique ssi (a,b)2R (b,a)2R pour tout a, b2A.
- [4] Antisymtrique ssi (a,b)2R ^ (b,a)2R a = b pour tout a, b2A.
Rflexif et Transitif est preorder. Rflexif, Transitif, Symtrique est une relation dquivalence (qui induit
une partition sur lensemble). Rflexif, Antisymtrique, Transitif (RAT) est un ordre partiel.
On note par [a] = {b2A | (a,b)2R} une classe dquivalence. On note que [a] n [b] = et Ua2A[a] = A.
Ainsi, les classes dquivalences forment une partition de lensemble A.
3) Vocabulaire
On a des bijections naturelles A,B,C | (AxB)xC ; par exemple, f((a,b,c)) = ((a,b),c).
On peut dequinumerosity lorsque deux ensembles dune relation sont de mme cardinalit.
La preuve par rcurrence (induction proof) sapplique uniquement aux ensembles dnombrables. Une
preuve de bas niveau sur les ensembles est le principe des tiroirs et des chaussettes (pigeonhole).
a
0
0
0
b
1
1
0
c
1
1
0
b
c
b
c
b
c
1. C R u {(a,a) : a2A}
2. Repeat
3.
C
4.
For each a1, a2, a32A, a1 a2 a3, do
5.
If (a1, a2)2C ^ (a2, a3)2C ^ (a1, a3) ;C
6.
C C u {(a1, a3)}
7.
C C u C
8. Until C =
On peut faire encore plus rapide, en multipliant la matrice dadjacence. Le for each peut se faire en
regardant dans la matrice, do un n au lieu de n3. On peut aussi calculer directement la fermeture In, ce
qui se fait en log n multiplications de matrices ; une multiplication est en n3 do du n3.log(n).
Il y a encore des amliorations par des algorithmes de multiplication rapide, soit du n2+.log(n).
II.
Langages
1) Principes gnraux
Un alphabet est un quelconque ensemble fini. Une phrase sur cet alphabet est un ensemble de symboles.
Un langage est un ensemble de phrases, not * : lensemble de tous les mots sur lalphabet . Si A et B
sont deux alphabets, AxB est toujours un ensemble fini donc cest galement un alphabet.
Si L4 *, alors L est un langage. La chane vide se note (voire , ou e dans le livre de Papadimitriou).
Un langage peut contenir , ou mme tre vide. Remarquons que ; . Les oprations qui peuvent tre
faites sur les chanes sont : la longueur | |, la concatnation ou ., la sous-chane (substring prefix/suffix).
A partir de l, on peut dfinir de nouvelles oprations comme la puissance ou linverse (reversal) :
wn = w . w . . w, n times, tel que w0 = , pour tout w 2 *. Dfinition inductive :
On a (wR)i = (wi)R. Comme lensemble a t construit par induction, il est conseill de prouver par
rcurrence. De mme, on peut prouver (wu)R = uRwR par induction sur la longueur de w.
P(*) est lensemble de tous les langages sur un alphabet. Or, |P(*)| = 2|N|, donc indnombrable. On a
|0| = |N| qui est dnombrable, et par lordre lexicographique on peut voir que certains langages sont
galement dnombrables : on construit la squence a1 an a1a1 a1a2 a1an a2a1 anan.
12
n
Ceci est une bijection avec les entiers naturels. Il y a donc certains langages indescriptibles (pigeonhole).
ql
qm
qj
7) Pumping Theorem
Si L2REG, il existe un unique n > 0 tel que pour tout w2L, |w|>n, w = xyz, y et xyiz2L i 0.
Autrement dit, il y a une partie du mot que lon peut dupliquer autant de fois que lon veut pour tout
mot assez grand . Cela marche pour les langages qui contiennent au moins une chane infinie ; dans ce
cas, cela nous donne une infinit de mots infinis puisquil suffit que lon en prenne un, on applique le
pumping theorem et on obtient une chane infinie plus longue.
Ce thorme est utilis en preuves par contradiction pour montrer quun langage nest pas rgulier.
L = {anbn : n 0}4 L1(a*b*) 4 L2(w2{a,b}*:|w|a = |w|b}. On affirme que L est rgulier (preuve par
contradiction). Donc, pour un certain n on a anbn = xyz, y et xyiz2L. On a 3 possibilits :
Le y contient juste des a, donc xyiz = an-kak*ibn or le nombre de a augmente mais pas les b,; L2
Le y contient juste des b, donc xyiz donc le nombre de b augmente mais pas les a, ; L2
Le y contient un peu des deux, donc y = akbl et xyz = an-kakbkakb1b-1 ; L1
Donc L nest pas un langage rgulier.
Comment montrer que L2 nest pas rgulier ? Ce nest pas parce quil inclut un langage non rgulier
quil est ncessairement non rgulier : un ensemble plus petit nest pas ncessairement plus faible.
L2 n L1 = L car avoir des a avant les b et autant de a que de b correspond au langage L. Or, L2 est
rgulier par assomption, L1 est rgulier par dfinition mais L nest pas rgulier alors quil devrait.
Comme les langages rguliers sont clt par intersection, alors cest que L2 nest pas un langage rgulier.
Montrons que {an : n est premier} nest pas non plus rgulier. xyiz = akal*iam tel que k+l+m tait premier.
On devrait avoir k+m+li premier pour tout i dans N. Or si i = k+m on a (k+m)(l+1), qui nest pas premier.
8) Simulation dun automate
Entre : w2*. Sortie : oui ou non (appartenance au langage reprsent). Pour un automate dterministe :
1. S s0
On commence par ltat initial
2. while w
Tant quon a un symbole traiter
3.
let w = aw
4.
if (S, a) = s then
Sil y a une transition alors on lapplique
5.
S s
6.
w w
7.
else return false
Sinon rejet immdiat
8 return (S2F)
Il faut tre sur un tat final pour accepter le langage
La simulation se fait en O(|w|). Maintenant, dans le cas dun automate non-dterministe, il faut considrer
en mme temps tous les autres chemins possibles. On arrive lalgorithme suivant :
1. S E(s0)
On prend tous les tats atteints par -transition sur ltat init.
2. while w
Tant quon a un symbole traiter
3.
let w = aw
4.
S
4.
for each si 2S, if (si,a,s) = s
5.
S S u {E(S)}
6.
w w
7.
if S = return false
8 return (S n F )
La simulation se fait en O(|k||w|). Cest extrmement intressant, surtout compar lalgorithme de
dterminisation qui est exponentiel. Il est donc mieux de simuler un automate non dterministe que de
vouloir le dterminiser dabord (surtout si on additionne des cots de minimisation par la suite).
III.
1) Les principes
Il y a typiquement des choses que lon peut vouloir exprimer qui sortent du contexte des langages
rguliers. Typiquement, une langue naturelle ou un programme informatique. Mme certaines expressions
simples ne sont pas rgulires, telles {d*and*b*d* : n 0} ; cette expression est pourtant bien pratique car
elle reprsente un programme avec une fonction dclare darit n et utilise darit n, par exemple.
Une grammaire G = (V, , R, S) est compose des lments suivants :
- : terminaux
- VJ : alphabet
- V : non terminaux (utiliss dans les productions)
- S2(V ) : axiome, ou symbole de dpart
- R4(V )xV* : les rgles, de la forme {V V*}, soit {non terminaux expanss en un mix}.
Une rgle scrit avec et une rcriture avec . Ainsi :
vw ssix,y2V*, a2(V ), (a z) 2 R, tel que v = xay et w = xyz.
G indique quon rcrit avec la grammaire G. G* est la fermeture rflexive et transitive de et on la
nomme drivation. Un langage peut se dfinir par succession de rgles :
L(G)={w2* : S G* w} (ensemble des mots auxquels on arrive en partant de laxiome S et par rgles)
Les grammaires context-sensitive ont les rgles R4V*(V )VV* soit A w o et sont le
contexte autour de A.
Exemple : G = ({S,a,b},{a,b},R,S}) tel que R = {S aSb, S ). Cela engendre L = {anbn : n 0}.
Exemple de rgles plus complexes :
S
S aS
S bA
b
b
b
A aA
A bB
S
A
B
B aS
B bB
a
Tout langage accept par un automate fini peut-tre accept par une grammaire (puisque cest la classe
suprieure de langage). Soit un automate M = (K, , s0, , F) et on veut G(V, , R, S) la grammaire telle
que L(M)= L(G). On la construit de faon suivante :
V=Ku
S = s0
R = {q ap : (q, a, p) 2 } u {q : q 2 F}.
On recopie toutes les transitions et on arrte la grammaire sur un tat final.
Ces rgles sont spciales : R4(V ) x ((V ) u {}), caractristiques de grammaires rgulires (et
donc cas particuliers de grammaires context free). Comme on a un exemple de grammaire context free qui
nest pas rgulier, alors la classe des langages rguliers est strictement incluse dans celle context free.
Le langage des parenthses balances (balanced brackets) est dfini par les rgles :
S (S)
S
S SS
Un exemple : (())() donne S SS (S)S (S)(S) ((S))(S) (())(S) (())()
Cependant, il y a plusieurs faons de produire (())() partir de nos rgles. On dit quil y a plusieurs
parcours ou drivations possibles. Deux drivations sont similaires si elles diffrent uniquement dans
lordre dapplication de rgles conscutives.
2) Parse Tree
On a des labels sur les nuds, et le label de la racine est laxiome. Le yield de larbre est la
concatnation des symboles des feuilles de gauche droite (i.e. inorder). La dfinition par induction est :
- For all a 2 , .a is a parse tree (of yield a)
- For all rules (A ) 2 R, .A is a parse tree (of yield ).
- If
are parse trees and A A1, A A2, , A An 2 R, then
A1
A2
An
is a parse tree.
A
y1
-
y2
yn
A1
A2
An
of yields y1,
, yn
Pour toute derivation S * w, il exist un (ou plus) parse tree avec comme racine le label S and yield w.
Deux drivations similaires donnent un mme parse tree. On peut sen servir pour faire une nouvelle
dfinition : deux drivations sont similaires si elles produisent le mme parse tree. Toutes les grammaires
ne produisent pas ncessairement de mme parse trees ; prenons par exemple la suivante :
EE+E
Cette grammaire est ambigu car une mme
S
EE*E
expression peut donner des parse trees diffrents.
S
S
E identifier
On parle de langage ambigu sil ny a aucune
E(E)
grammaire qui ne soit pas ambigu.
(
S )
(
S )
Ce langage nest pas ambigu, car la grammaire suivante dfini le langage :
(
S
)
EE+T
TT*F
F identifier
Parse tree pour (())()
ET
TF
F(E)
On note par LG une leftmost derivation (rcriture du non-terminal le plus gauche) et LG une
rightmost derivation (rcriture du non-terminal le plus droite). Pour toute drivation S G* w, il existe
une drivation S LG* w et une drivation S RG* w.
3) Push-down Automata (automate pile)
Un automate pile est reprsent par M = (K, , , , S, F) o est lalphabet de la pile, et une
relation sur laquelle on rajoute la manipulation de la pile : 2( x u{} x * x K x *). La premire
partie est lentre x u{} x *, et u{} montre que lon peut oprer sans rien faire (non dterministe).
Une transition est gnralement symbolise ((p, a, ), (q, )).
Exemple : {anbn : n0}. On met tous les a vus sur la pile, et en dpilant on regarde pour le nombre de b.
Do = { ((q0, a, ), (q0, a))
((q0, b, a), (q1, ))
((q1, b, a), (q1, ))
}
et M = ({q0,q1}, {a,b}, {a}, , q0, {q1}).
La configuration dun automate pile est K x * x * soit (q, w, u)M (q, w, u) si et seulement si :
w = aw, a2 u {}, u = x, u = x and for some x2*, there exist ((q1, a, ), (q, a)) 2
La dfinition du langage accept est donc L(M) = {w2* : (s, w, )M* (f, , ) with f 2F}. Cela
signifie que le langage est accept lorsquon a fini lentre ainsi que la pile, et quon est sur un tat final.
Pour le langage dfini par les rgles S SS, S ( S ), S , on crit la relation de la faon suivante :
= { ((s, (, ), (s, ()),
((s, ), (), (s, )) }
(je vois une parenthse ouvrante, jempile ; je vois une parenthse fermante, je dpile. Un seul tat !)
Soit L(M) = {w2{a,b} : there exist u so that w = uuR}, le langage des palindromes. La relation est :
= { ((s, a, ), (s, a))
((s, b, ), (s, b))
((s, , ), (f, ))
((f, a, a), (f, ))
((f, b, b), (f, )) }
( un certain moment on se place tel que on est la moiti ; lautomate est non dterministe, et il nest
mme pas dit quil puisse tre dterministe car la position de la moiti est totalement inconnue ! Le
langage est gnr en rpondant des rgles context-free mais il est context-sensitive : SaSa, SbSb)
Chaque langage Context Free est accept par un automate pile, et chaque automate pile reprsente un
langage Context Free (i.e. il y a quivalence). Montrons que pour toute grammaire Context Free, on peut
crer un automate pile qui laccepte. On a la grammaire G = (V, , R, S) et M = ({p,q},, V, , p, {q}) :
= {((p, , ), (q, S))} U {((q, a, a),(q, )) : a2} U {((q, , A), (q, w)) : A w2R}
Pour le langage dfini par les rgles S SS, S ( S ), S , cette dfinition automatique donne :
{((p, , ), (q, S)),
((q, (, (), q, )),
((q, ), )), (q, )) ((q, , S), (q, SS))
((q, , S),(q,(S))), ((q, , S),(q, ))
}
Maintenant on a un automate et on veut en extraire la grammaire (prouve lquivalence dans lautre sens).
On dfinit un automate pile simple (PDA) sur lequel on veut oprer, de la faon suivante :
Soit M = (K, , , S, , F). Pour tout ((q, a, ), (q, ))2 , avec q S, on a :
2
| | 2 (limite de ce quon peut pousser sur la pile chaque fois : 2 symboles)
Cet automate est simple car on tablit des restrictions : on ne peut regarder quun seul symbole et en
pousser au maximum deux. Maintenant, on cherche rendre tout automate simple par une transformation.
On met un symbole z de fond de pile, pour sassurer quil y ait toujours quelque chose : = u { z }. On
ajoute donc la transition ((s, , ), (s, z)) o s est le nouvel tat initial qui nous permet de mettre z. On
invente un nouvel tat final : F = { f }, et on ajoute les transitions {((f, , z), (f , )) : f2F}.
Il faut sassurer que lon conserve les restrictions sur toute transition. On ne veut pas les ((q, a, ), (q, )):
o = 1 n, n > 1, car on regarde plus dun symbole
o = 1 n, n > 2, car on empile plus de deux symboles
La solution est de crer des tats intermdiaires : utiliser plusieurs tats qui regardent un symbole si on
veut simuler un tat qui regarde plusieurs symboles. Ainsi, ((q, a, 1 n), (q, )) est remplac par :
{((q, a, 1), (q1, )) ((q1, , 2), (q2, ))
((qn-1, , n), (q, )) }
o qi, 1 i < n, sont les nouveaux tats
De mme, on remplace ((q, a, ), (q, 1 n)) par :
{ ((q, a, ), (qn, n)) ((qn, , n), (qn-1, nn-1))
IV.
1) Dfinition
Dans une machine de Turing, on peut se dplacer comme on veut
de faon linaire, lire et crire dans la bande. Toute la bande est
initialise par le symbole ou #. Formel : M = (K, , , s, H) o
les tats finis H sont les Halting states, est lalphabet de la
bande avec deux symboles spciaux (end, marker, blank) et deux
symboles L (bouger la tte gauche), R (bouger la tte droite).
Une fois dans un Halting State, la rgle est quon ne peut en sortir.
Marqueur
de la fin de
bande
automate
Construisons une machine de Turing pour sentraner. Soit = {i, #, }, s = q1, H = {k}, K = {q1,q2,q3,q4}
(q1, #) = (q2, L)
(q2, i) = (q2, #)
(q2, #) = (q3, L)
(q3, i) = (q3, L)
(q3, #) = (q4, i)
(q4, i) = (q4, R)
(q4, #) = (h, #)
On fait marcher la machine sur un exemple : (q1, #iii#ii#) (q2, #iii#ii)(q2, #iii#i#)(q3, #iii#i)
(q3, #iii#i)(q4, #iiiii)(q4, #iiiii)(q4, #iiiii#)(h, #iiiii#).
Cette machine concatne 2 chanes de contenue identique. Si on compte en nombre de barres on peut
mme dire que a ralise une addition
2) Comment crire une machine de Turing
On dfinit une machine de base (basic machine) Ma :
On peut combiner ces machines de base :
>M1
R # = R# L # = L# R # = R# L # = L#
a
La flche signifie jump over : on
M3
saute tous les symboles incrimins.
M1 M2 se note M1M2
Autres
x2
constructions
M2
1
c,d
c dL
b,d
b dL
x;{c,d,#}
#Y#
#N#
a,d
a dL
x;{c,d,b}
#N#
x;{q,d,#}
#
x;{b,d,a}
#N#
#N#
Bande
avec k
piste
Bande avec
piste
piste
00010000
Chaque bande est divise en 2 parties. La partie infrieure marque (avec un 1) la position de la tte sur la
bande dorigine : il ne faut pas ngliger le fait que chaque bande tait cense avoir sa propre tte.
Lalphabet de la machine est maintenant {, #} U ({0,1}x)K. On scanne la bande une fois pour trouver,
et une seconde fois pour modifier ; chaque transition se fait en kn + kn = O(n) ; autrement dit on est O(n)
fois plus lents que la machine dorigine, mais cela ne modifie pas la classe de complexit puisquon reste
polynomial ou exponentiel selon ce quon tait au dpart.
5) Variante : Random Access Turing Machine
Dans cette machine, on a un accs en temps constant nimporte quel endroit de la bande, comme la
mmoire dun ordinateur. Rappelons que la machine de Turing de base on doit faire passer la tte par
toutes les cases intermdiaires. Une fois encore, cela naugmente pas le pouvoir de calculabilit et ne
modifie pas la classe de complexit.
6) Machines de Turing non dterministes
Il sagit dune machine de Turing classique M = (K, , , s, H) o est une relation de transition non
dterministe telle que 4KxxKx( u {L,R}) ; on autorise plusieurs futurs.
On veut savoir si un nombre n est composite (i.e. il admet une dcomposition en nombre premiers). La
machine devine p et q, p n, q n, et on regarde si pq = n. La multiplication pq se fait assez facilement
puisquon a dj une machine permettant dadditionner. Pour comparer, il suffit de faire un et bit bit
entre les deux bandes. La partie intressante est donc le non-deterministic guess , ou la possibilit que
la machine puisse deviner. Pour cela, elle essaye en parallle toutes les combinaisons possibles de p et q.
Pour gnrer des p et q, on les fait chacun sur leur bande en mettant des 0 et des 1 tant quon est pas sorti
de n (ds quon lit un # sur la 1re ligne alors on arrte la machine) ; si on a pas de blanc, on peut sarrter
ou continuer : cest important car on doit aussi pouvoir gnrer les nombres infrieurs n.
Accepter une chane dans la machine de Turing de base consiste sarrter dans un halting state. Ici, la
machine accepte ou semi-dcide un langage ssi (s, #w#) M* (h, x) o x est nimporte quel output ; on
conserve la mme dfinition mais la smantique est un peu diffrente dans le cas non-dterministe.
M dcide un langage L ssi (s, #w#) M* (h, #y#) si x2 L et (s, #w#) M* (h, #n#) si ; L
et il existe n 0 tel quil ny a pas de c tel que (s, #w#) MN c
(autrement dit toutes les branches doivent sarrter un jour on lexpanse :
c1 MN c ssi il existe c1,c2,,cn t.q. c1 = c1, cn = c2, c1Mc2MMcn )
Une machine de Turing M calcule la fonction f : * * si M(w) = f(w) pour tout w2* et que toutes
les branches possibles sarrtent. Une alternative la 1re condition est (s, #w#) M* (h, #f(w)#).
Pour toute machine de Turing non dterministe qui dcide ou semi-dcide un langage, ou calcule une
fonction, il existe une machine de Turing dterministe qui fait la mme chose.
c1
c M avec m |K| (|| + 2) ,car 4KxxKx( u {L,R})
cm
On a un degr maximal de non-dterministe. Soit Md la variante dterministe pour M, elle a 2 branches :
- working tape (contient le mot w)
- guiding tape (contient une chane de nombres, ou une squence, tel que 1 ij |K|(||+2) )
9) Calculabilit
Un problme est une fonction f : entres sortie. Un langage vu par les automates est une fonction
boolenne : oui si lentre et dans le langage, et non pour le reste. Examinons certains problmes
classiques en donnant leur nonc, puis en les transcrivant sous forme de langages.
Problme du voyageur de commerce (travelling salesman). Soit I une matrice dadjacence, on veut une
permutation des {1, , n} telle que d12 + d23 + + dn-1n + dn1 (car cest un cycle) soit minimale.
Dfinition du langage pour le voyageur de commerce. Etant donn (dij), k 0, y a-t-il une
permutation de {1, 2, , n} telle que d12 + d23 + + dn-1n + dn1 k (on veut minimiser).
Problme du mariage stable (stable marriage). On a un graphe non-orient G = (V, E) et on veut trouver
lensemble maximal C de sommets tels que pour tout vi, vj2C alors (vi, vj)2E ; on recherche le plus gros
graphe fortement connexe.
Dfinition du langage pour le mariage stable. Etant donn G = (V, E), k 0, y a-t-il un C4V tel
que pour tout vi, vj2C alors (vi, vj)2E et |C| k (on veut maximiser).
En gnral, on parle du langage correspondant un problme lorsquon soccupe de la thorie. Par abus,
dans la suite du cours on identifiera un langage comme tant quivalent un problme.
On a vu par le halting problem quil existe des langages indcidables. Ceci nous permettra de rpondre
des questions comme : tant donn une machine de Turing M, est-ce quelle sarrte sur une bande vide ?
Est-ce quil existe une entre telle que la machine sarrte ? Ces problmes sont toujours indcidables, et
on peut le montrer avec des preuves par diagonalisation. Cependant, il existe un outil extrmement
pratique qui est la rduction. Une rduction de L1 L2 (langages sur *) est une fonction rcursive (i.e.
il doit y avoir une machine de Turing qui peut la faire) : * * telle que w2L1 ssi (w)2L2.
Si L1 nest pas rcursif et quil y a une rduction de L1 L2 alors L2 nest pas rcursif. Preuve par
contradiction : si L2 tait rcursif alors il y aurait une machine de Turing qui le dciderait, et une M ;
comme cela quivaut MM2 qui dciderait L1, cest une contradiction.
La rduction va dun langage connu non-rcursif un langage inconnu (cest le contraire de la thorie de
la complexit). Etant donns M, w = w1w2wn, on veut Mw = w1Rw2RwnRM par ; autrement dit on
fait une rduction du halting problem en celui de savoir si la machine sarrte sur une bande vide. On
dtruit w de la bande et on devine (non-deterministic guess) une entre x, puis on lance M.
Etant donns M1 et M2, est-ce ce quils dcident le mme langage ? Ce serait extrmement pratique si on
pouvait dire oui, pour tout ce qui est vrification de la correction de programmes et de modles Voir le
thorme de Rice et la preuve, page 270, comme suit : Pour toute proprit exhaustive non triviale
Soit RE la classe des langages rcursivement numrables c C=RE tel que C s :, le problme
Etant donn une machine de Turing M, est-ce que le langage dcid par M est dans C est indcidable.
Autrement dit : toute proprit non triviale propos du langage reconnu par une machine de Turing est
indcidable .
Deux problmes indcidables :
- dterminer si une grammaire CF gnre toutes les chanes possibles ou si elle est ambigu
- tant donns deux grammaires CF, dterminer si elles gnrent le mme ensemble, ou si lune
gnre un sous-ensemble de lautre, ou sil existe des chanes quelles gnrent toutes les deux
(voir aussi : complexit de Kolmogorov, problme de correspondance de Post, Tiling de Penrose, 10me
problme de Hilbert i.e. dterminer si une quation Diophantienne admet une solution, nombres de Gdel)
V.
Thorie de la Complexit
Etudions le problme du tiling. Soit S et NS = N [0, S]. Un tiling system est un tuple D = {D, d0, H, V} :
- D est le genre de tiles quon met (on fait du carrelage, D caractrise les carreaux)
- d02D est le tile initial dans le coin infrieur gauche
- H2DxD, V2DxD sont les spcifications horizontales et verticales des motifs
Un tiling est une fonction f : NSxNS D qui donne chaque tile sa place, tel que f(0,0) = d0 et :
- (f(m,n),f(m+1,n))2H, la restriction horizontale
- (f(m,n),f(m,n+1))2H, la restriction verticale
Le problme du bounded tiling : tant donn un tiling system D et un tiling initial f0 : Ns D, a-t-on un
tiling f : NSxNS D qui tend f0 ? Autrement dit : la 1re ligne est dj carrele, peut-on trouver une
fonction qui continue le motif en accord avec les restrictions horizontales/verticales ?
Il est facile de montrer que le problme est NP : on peut construire la machine de Turing associe avec un
non-deterministic guess pour f ; tester que f0 est la ligne infrieure se fait en temps linaire ainsi que de
tester les restrictions (4 voisins chaque fois). Rappel : pour tout p2NP on a une machine de turing nondterministe et polynomially time-bounded.
Ce problme est NP complet. Prouvons quil est NP-hard, en montrant quil y a une rduction
polynomiale des machine de Turing de tous les autres problmes NP vers une instance du bounded tiling.
Tape s
Tape 2
Tape 1
Longueur s
Un tile est labell sur chaque ct. Deux tiles vont ensembles ssi ils ont le mme label sur le
a
a
(b,p)
(a,q)
a
Dans cet exemple, le
a
a
a
(a,q)
tile point est le 3me
a
a
a
Quand on a le symbole a et quon est en q, alors on
va en b avec le symbole p
(b,p)
Lq
b
(b,p)
Rq
b
#
#
On va en b avec la
tte, on se dplace
dun cran gauche
a
Lq
(a,q)
w1
w1
wn
wn
(#,s)
#
#
#
Quand la machine veut sarrter et dire non, il ne faut pas quon continue de se propager : on fait un arrt
du tiling. Ainsi le bloc N N est exclu. Cependant, le bloc Y Y est autoris ;
On note lquivalence par la rduction avec M accepte w ssi (M,w) est une chane dans le langage du
bounded tiling. Construire un tile se fait en temps constant. Il y a || tiles a a ; pour chaque (q, a, p, L)
on a ||.||.2 (car il faut deux tiles), de mme pour (q, a, p, R), do un O(||.||) soit O(||) nombre de
tiles comme la taille de lalphabet est fixe. Le nombre de tiles est linaire en la taille de lentre, donc
nous avons un polynme. Comme le Tiling System est calculable en temps linaire, il y a une rduction
polynomiale et donc cest un problme NP-Complet.
#
#
Montrons que le problme des cycles hamiltoniens est NP-complet en utilisant une rduction avec SAT.
On sait que le problme est dans NP puisquon a une machine qui devine toutes les permutations et la
vrification se fait en temps linaire. Les arcs sont les dij2{0, } et on veut le cycle qui passe par tout
sommet une fois et une seule, donc les sommets sont les xij, 0 < i,j n tels que j = i (le sommet i du
graphe est le sommet j du cycle). On sait une instance de SAT satisfaisable ssi le graphe admet un cycle
hamiltonien.
La technique consiste nonc en posant des clauses, et de les lier la fin. Ainsi :
- Il doit y avoir au moins 1 sommet pour chaque position, soit Xij v X2j v x Xnj,
1jn
- Tout sommet doit tre visit : Xi1 v Xi2 x x Xin,
1in
- Il doit y avoir au plus 1 sommet pour chaque position. Si on a une position, alors Xik ^ Xjk doit
tre faux puisque lun des deux ne doit pas y tre, autrement dit on a /Xik v /Xjk, 1 i, j, k n, i j
- De mme, on a /Xki v /Xkj,
1 i, j, k n, i j
Ceci tablit que xij reprsente une bijection sur lensemble des sommets (i.e. une permutation).
Maintenant, on tablit une dernire clause pour spcifier lexistence du cycle :
Pour tout arc (i, j);G, /Xik v /Xj(k+1),
1 k n et n+1 1 (cyclique)
Pour les deux premires clauses on a n clauses n littraux, pour les autres on a n3 clauses nombre
constant de littraux. La rduction de O(n3) soit polynomial. Notons que pour la dernire clause il y a
peut-tre un check faire mais au pire on est en O(n5) et a reste polynomial quoiquil en soit. Montrons
donc que (G) la conjonction est satisfaisable ssi G admet un cycle hamiltonien :
Si = (1, , n) reprsente un cycle hamiltonien, alors (G) est satisfaisable.
Notons Interpretation(Xij) = T ssi j = i. Xik ou Xj(k+1) de la dernire clause doit tre faux
par dfinition du cycle, donc la clause doit tre vrai.
Si (G) est satisfaisable alors il doit y avoir une permutation = (1, , n)
Il existe une interprtation telle que la formule est vraie. Il y a un arc (i,j)2G, /Xik v /Xj(k+1)
est faux donc Interpretation(Xik) = Interpretation(Xj(k+1)).
Montrons que trouver un cycle hamiltonien dans un graphe non-orient est aussi un problme NP-complet.
Il nous suffit de transformer le graphe orient de la faon suivante, puisquon ne peut passer quune fois
par un sommet :
De mme, montrons que trouver un chemin hamiltonien dans un graphe orient est aussi NP-complet.
X'
Il y a un cycle hamiltonien passant par x. Donc, on commence notre chemin S, on passe par X et comme
cest un cycle on le fait finir sur X qui termine le chemin en passant sur T.
7) Problmes ouverts
P est clt par complment. Pour NP, on ne sait pas On note son complement CO-NP = {L | /L2NP};
actuellement, on pense plutt que NP nest pas clt par complment, i.e. que CO-NP NP. Lautre
suspicion serait que si L2NP et L2CO-NP alors L nest pas complet ; une fois encore, on ne sait pas.
Une variante de la factorisation de nombres snonc de la faon suivante : tant donn n2N et m n, y
a-t-il un facteur de n plus petit que m ? Ce problme est dans NP, et cest justement la base de bons
nombres de techniques de cryptographie. Ce problme est galement dans CO-NP. On pense quil est en
dehors de P, en dehors de NP-complet et en dehors de CO-NP-Complete; il est quelque part au milieu .
8) Le principe du Model Checking (preuve de correction)
Etant donns deux expressions rgulires R1 et R2, est-ce quelles gnrent le mme langages ?
Regardons le problme oppos : a-t-on L(R1) L(R2). On peut trouver un certificate : nimporte quelle
chane gnre par R1 mais pas par R2. Le certificate est-il un succint ? Il ny a pas de limite vidente, et
en fait on ne sait mme pas si le problme est dans NP
Examinons alors un problme plus simple. On se contraint navoir que des expressions rgulires qui
nutilisent pas la fermeture de Kleene. On a donc : pour tout x2L(R), R une *-free R.E., |x| |R|. Ici, le
certificate a une borne et il devient un succint. Ce problme l est donc dans NP, et il est aussi NPcomplet comme on le montre avec une rduction depuis SAT.
Lentre est C = c1 ^ c2 ^ ^ cm sur X = {X1, , Xn}.
En sortie : R1, R2 tels que L(R1) L(R2) ssi C est satisfisable.
On a R1 = (0 u 1)(0 u 1)(0 u 1), n fois. On a donc L(R1) = {0, 1}n affectations de X qui rend C vrai.
0 si Xj apparat dans Ci
On a R2 = 1 U 2 U U m tel que i = i1i2...in, avec ij =
1 si /Xj apparat dans Ci
{0 u 1} sinon
On a donc L(i) le langage des interprtations qui ne satisfont pas Ci, et ainsi L(R2) est lensemble de
toutes les interprtations qui ne satisfont pas certains Ci. Donc L(R2) = {0, 1}n si C est insatisfaisable
={0, 1}n sinon
L(R2) ={0, 1}n si C est satisfaisable car il y a au moins une des interprtations qui satisfait C et L(R2)
est lensemble des interprtations qui ne satisfont pas C : a ne peut donc pas tre {0,1}n tout entier
puisquune des interprtations satisfait.
Ainsi C satisfaisable ssi L(R1) L(R2), et donc la comparaison dexpressions rgulires sans la
fermeture de Kleene est un problme NP-complet. On en dduit que le problme en autorisant la
fermeture de Kleene est plus compliqu encore, et on sait quil est au moins NP-complet.