• Aucun résultat trouvé

TD 12 – Circuits

N/A
N/A
Protected

Academic year: 2022

Partager "TD 12 – Circuits"

Copied!
6
0
0

Texte intégral

(1)

Langages formels, calculabilité et complexité ENS Paris – A1S1 2019-2020

19 décembre 2019 NathanGrosshans

TD 12 – Circuits

1 Classe AC

Un circuit booléen avec n bits d’entrée est un graphe orienté acyclique (DAG) où les feuilles sont soit une des variables d’entrée xi (i∈[[1, n]]) soit une constante >ou ⊥, la sortie est l’unique nœud dont le degré sortant est nul et chaque nœud est soit un nœud ∧ ou ∨ (qui peuvent être d’arité quelconque) soit un nœud ¬ (unaire). Étant donné un mot w ∈ {0,1}n avec n ∈ N et un circuit booléen dont la taille d’entrée est n, on peut évaluer le circuit sur w en remplaçant la i-ème feuille d’entrée par > quand wi = 1 et ⊥ quand wi = 0. Un tel circuit décide donc le langage des mots de {0,1}n sur lesquels il s’évalue à >.

On dit qu’une famille de circuits (Cn)n∈N décide un langage L ⊆ {0,1} lorsque pour chaque n∈N, le circuitCna nbits d’entrée et décide L∩ {0,1}n.

On définit la classe ACi pouri∈Ncomme la classe des langages sur{0,1}décidés par une famille de circuits booléens (Cn)n∈N dont la taille est polynomiale et dont la profondeur est en O(log(n)i), c’est à dire qu’il existe un polynôme p et un entier k tels que pour tout n ∈ N, la taille de Cn est majorée parp(n) et la profondeur de Cn est majorée par k·log(n)i.

Exercice 1.Justifier que l’on ne s’intéresse qu’aux circuits de taille polynomiale (et non pas expo- nentielle ou illimitée).

Solution 1.Soit un langageL⊆ {0,1}n pour n∈N.

En posant ϕu(x1, . . . , xn) = V

i∈[[1,n]],ui=1xi ∧V

i∈[[1,n]],ui=0¬xi pour tout u ∈ {0,1}n, il suit que ϕu(x1, . . . , xn) s’évalue à>si et seulement si le mot en entrée est u, et donc on a que le circuit

_

u∈L

ϕu(x1, . . . , xn) décideL.

Il est ainsi possible de décider n’importe quel langage L ⊆ {0,1}n avec n ∈ N par un circuit de profondeur au plus 3.

Exercice 2.Montrer que le langage PARITY={w∈ {0,1}| |w|1= 1 mod2} est dans AC1. Solution 2.On construit des circuits⊕(x1, . . . , xn)décidant PARITY∩ {0,1}n pour toutn∈Npar induction surn. On pose⊕(ε) =⊥,⊕(x1) =x1 et pour tout n∈N, n≥2,

⊕(x1, . . . , xn) = ⊕(x1, . . . , xdn/2e)∧ ¬ ⊕(xdn/2e+1, . . . , xn)

¬ ⊕(x1, . . . , xdn/2e)∧ ⊕(xdn/2e+1, . . . , xn) .

Exercice 3.Montrer que le langage

ADD={abc∈ {0,1}| |a|+ 1 =|b|+ 1 =|c|,a+b=c aveca, b, c en binaire petit-boutiste} est dans AC0.

Solution 3.Dans la suite, pour alléger la notation, pour deux cicuitsC etD, on écriraC⊕D pour (C∧ ¬D)∨(¬C∧D)etC⇔Dpour(C∧D)∨(¬C∧ ¬D). De même, lorsquen∈N>0suit clairement du contexte, nous écrironsx plutôt quex1, . . . , xn.

Étant donné , nous allons construire les circuits et pour tout

(2)

positioni dans la somme dex ety en binaire petit-boutiste. Pour touti∈[[1, n]], on pose

Ai(x, y) =

(Ri−1(x, y)⊕xi⊕yi si i≥2

x1⊕y1 sinon

et

Ri(x, y) = (Wi

j=1 xj∧yj∧Vi

k=j+1(xk∨yk) si i≥2 x1∧y1

. Pour décider ADD, on utilise ensuite le circuit

ADD(x, y, z) = ^n

i=1

Ai(x, y)⇔zi

∧ Rn(x, y)⇔zn+1

pour toutn∈N>0.

Exercice 4.Montrer que le langage

MULT={abc∈ {0,1} |2|a|= 2|b|=|c|,a·b=cavec a, b, c en binaire petit-boutiste} est dans AC1.

Solution 4.Faire le produit de deux nombres de nbits revient à faire la somme dennombres de 2n bits, ce que nous allons faire ici.

Étant donné n ∈ N>0, pour faire la somme de n nombres de 2n bits donnés par les variables x(1), . . . , x(n), nous allons réutiliser les circuits Ai(x, y)pour tout i∈[[1,2n]] de la solution à l’exercice précédent et construire par récurrence surn, pour touti∈[[1,2n]], le circuitCi(x(1), . . . , x(n))donnant le bit en position i dans la somme de x(1), . . . , x(n) en binaire petit-boutiste. Pour tous n ∈ N>0 et i∈[[1,2n]], on pose

Ci(x(1), . . . , x(n)) = (

Ai C(x(1), . . . , x(dn/2e)), C(x(dn/2e+1), . . . , x(n))

si n≥2

x(1)i sinon .

Maintenant, étant donné n∈N>0, pour calculer le produit de deux nombres de nbits donnés par les variablesx, y, on effectue la somme desnnombres de2nbits donnés parB(1)(x, y), . . . , B(n)(x, y), tels que

Bj(i)(x, y) =

(xj∧yi si i≤j ≤n+i−1

⊥ sinon

pour tousi∈[[1, n]]etj ∈[[1,2n]]. Pour décider MULT, on utilise ensuite le circuit MULT(x1, . . . , xn, y1, . . . , yn, z1, . . . , z2n) =

2n

^

i=1

Ci B(1)(x, y), . . . , B(n)(x, y)

⇔zi

pour toutn∈N>0.

Exercice 5.Montrer que tout langage rationnel sur {0,1}est dans AC1.

Solution 5.Soit A= (Q,{0,1}, δ, q0, F) un AFD reconnaissant le langage considéré L⊆ {0,1}. On construit des circuits Rq,p(x1, . . . , xn) pour tous n ∈ N et q, p ∈ N par récurrence sur n, indiquant si, oui ou non, on va de l’état q à l’état p dans A avec le mot correspondant à x1, . . . , xn. Pour tousq, p∈Q, on pose

(3)

ainsi que

Rq,p(x1) =









> si δ(q,0) =δ(q,1) =p

¬x1 si δ(q,0) =pmais δ(q,1)6=p x1 si δ(q,1) =pmais δ(q,0)6=p

⊥ sinon

.

Ensuite, pour toutn∈N, n≥2et tous q, p∈Q, on pose Rq,p(x1, . . . , xn) = _

r∈Q

Rq,r(x1, . . . , xdn/2e)∧Rq,r(xdn/2e+1, . . . , xn) .

Pour décider L, on utilise ensuite le circuit L(x1, . . . , xn) = _

q∈F

Rq0,q(x1, . . . , xn)

pour toutn∈N.

2 Classe NC

On note NCi la classe des langages sur{0,1} décidés par une famille de circuits booléens(Cn)n∈N

dont la taille est polynomiale et dont la profondeur est en O(log(n)i), mais où l’arité des portes∨et

∧est limitée à 2.

Exercice 6.Montrer que pour tout i∈N, on a l’inclusion NCi⊆ACi⊆NCi+1. Solution 6.Clairement, par définition, on a NCi⊆ACi pour touti∈N.

Maintenant, étant donné un circuit booléen correspondant à une famille pour ACi avec i∈N, on remarque que chaque porte∧ou∨a une arité bornée par la taille du circuit qui est polynomiale en la taille d’entrée. En remplaçant chacune de ces portes par un arbre binaire équilibré des mêmes portes on obtient le résultat.

Exercice 7.Montrer que NC06=AC0.

Solution 7.Un circuit booléen dont la profondeur estdmais où l’arité des portes∨ et∧est limitée à 2utilise au plus 2d variables parmi toutes celles possibles.

Il s’ensuit que tout langage L de NC0 a la propriété qu’il existe c ∈ N vérifiant que pour tout n∈N, il existe au plusc positions de1 àn telles que l’appartenance d’un mot àL∩ {0,1}n dépende uniquement des bits à ces positions. Il vient donc en particulier que ADD∈/NC0.

3 Classe TC

0

La classe TC0 correspond à la classe des langages sur {0,1} décidés par une famille de circuits booléens dont la taille est polynomiale et dont la profondeur est en O(1), où les portes sont ¬ ainsi que des portes de seuil Tk d’arité non bornée pour k∈N quelconque, telles que pour toutn∈N, on ait que Tk(x1, . . . , xn) s’évalue à>quand kde ses entrées au moins s’évaluent à >.

Exercice 8.Montrer que tout circuit avec des portes ¬ ainsi que ∧, ∨ et MAJ d’arité non bornée, telles que pour toutn∈N, on ait que MAJ(x1, . . . , xn) s’évalue à>quand la moitié de ses entrées au moins (c’est-à-dire au moins dn/2e de celles-ci) s’évaluent à >, se réécrit comme un circuit de même taille et profondeur avec des portes¬ et Tk pour k∈Nquelconque décidant le même langage.

(4)

Solution 8.Pour toutn∈N, on a

∧(x1, . . . , xn)≡Tn(x1, . . . , xn)

∨(x1, . . . , xn)≡T1(x1, . . . , xn) MAJ(x1, . . . , xn)≡Tdn/2e(x1, . . . , xn) .

Exercice 9.Montrer qu’à l’inverse,TC0se définit aussi comme la classe des langages sur{0,1}décidés par une famille de circuits booléens dont la taille est polynomiale et dont la profondeur est en O(1), où les portes sont¬ ainsi que∧,∨ et MAJ d’arité non bornée.

Solution 9.Pour tousn, k∈N, on a

Tk(x1, . . . , xn)≡









MAJ(x1, . . . , xn,>, . . . ,>

| {z }

n−2k

) sik≤ n2 MAJ(x1, . . . , xn,⊥, . . . ,⊥

| {z }

2k−n

) sinon . Notons que les portes ∨ et∧sont donc inutiles.

Exercice 10. Montrer queTC0⊆NC1.

Solution 10. Pour tous n, i ∈ N>0, on construit des circuits Bi(x1, . . . , xn) et Ri(x1, . . . , xn) qui donnent, respectivement, le bit de poidsidans la représentation binaire du nombre de variables parmi x1, . . . , xn à >et l’éventuelle retenue obtenue suite à l’addition au poids idans la somme du nombre de variables parmi x1, . . . , xdn/2e à>et du nombre de variables parmi xdn/2e+1, . . . , xn à>. D’abord, pour touti∈N, on poseBi(ε) =Ri(ε) =⊥ainsi que

Bi(x1) =

(x1 sii= 0

⊥ sinon etRi(x1) =⊥. Ensuite, pour tous i∈Net n∈N, n≥2, on pose

Bi(x1, . . . , xn) =

(Ri−1(x1, . . . , xn)⊕Bi(x1, . . . , xdn/2e)⊕Bi(xdn/2e+1, . . . , xn) sii≥1 B0(x1, . . . , xdn/2e)⊕B0(xdn/2e+1, . . . , xn) sinon et

Ri(x1, . . . , xn) =





Bi(x1, . . . , xdn/2e)∧Bi(xdn/2e+1, . . . , xn)

Ri−1(x1, . . . , xn)∧ Bi(x1, . . . , xdn/2e)∨Bi(xdn/2e+1, . . . , xn) sii≥1 B0(x1, . . . , xdn/2e)∧B0(xdn/2e+1, . . . , xn) sinon

.

On peut montrer qu’il existe un entierα∈Ntel que pour tousn∈N>0 eti∈N, la profondeur de Bi(x1, . . . , xn)etRi(x1, . . . , xn)soit majorée parα·(dlog2(n)e+i). À noter que la même construction peut-être généralisée pour additionner m nombres de n bits avec des circuits de taille polynomiale, profondeur logarithmique et portes ∨ et∧ d’arité au plus 2(sachant qu’ici on additionne nnombres de 1bit).

Par conséquent, étant donné n, k∈N, on simule Tk(x1, . . . , xn) par> sik= 0, par⊥si k > net sinon, sibl−1· · ·b0 ∈ {0,1}l avecl=dlog2(n+ 1)eest la représentation binaire gros-boutiste dek, par

_

i∈[[0,l−1]],bi=0

^

j∈[[i+1,l−1]],bj=1

Bj(x1, . . . , xn)∧ ^

j∈[[i+1,l−1]],bj=0

¬Bj(x1, . . . , xn)∧Bi(x1, . . . , xn)

^

Bj(x1, . . . , xn)∧ ^

¬Bj(x1, . . . , xn) .

(5)

Exercice 11. Montrer que PARITY∈TC0.

Solution 11. On construit des circuits ⊕(x1, . . . , xn) décidant PARITY∩ {0,1}n pour tout n ∈ N, tels que

⊕(x1, . . . , xn) =

n−1

2

_

i=0

T2i+1(x1, . . . , xn)∧ ¬T2i+2(x1, . . . , xn) .

Exercice 12. Montrer que MULT∈TC0.

Solution 12. Pour simplifier la présentation de cette solution, nous allons procéder de façon modu- laire.

Passage de la multiplication de deux nombres à l’addition de n nombres On ramène facilement le problème de la multiplication de deux nombres de taillen à l’addition dennombres de taille 2ncar (a×b) =P

1≤j≤n

P

1≤k≤n2k+j(aj ∧bk).

Passage de l’addition demnombres de taillesnà l’addition en parrallèle deln(m)nombres de taille2ln(m). Notonsa1, . . . , amles nombres à additionner etri=P

jaji. Commeriest la somme de m nombres valant 0 ou 1, ri ≤ m et donc ri tient sur ln(m) bits. On veut calculer le bit rji en profondeur constante. Notons pour celabit(k, j) qui vaut 1 si la représentation binaire de k contient un 1en j-ème position on a :

rij = _

1≤k≤n bit(k,j)=1

Tk(a1i, . . . , ami )

On a par ailleurs queP

kak=P

i2iri avec :

a11 · · · a1n

... ... ...

am1 · · · amn r1=P

kak1 · · · rn=P

kakn

Comme chacun des ri tient sur ln(m)bits, on va regrouper les ri en bloc de tailleB =ln(m)bits en calculant

v` = X

1≤k≤ln(m)

2krk+`

et donc on a toujours :

X

k

ak =X

i

2iri =X

`

v`2B`

Nous allons montrer ensuite comment faire le calcul de v` en profondeur constante et taille poly- nomiale. Montrons d’abord comment s’en sortir si l’on sait calculer les v`.

Une fois que les v` sont calculés on calcule x = P

`23B`v3` et y = P

`2B(3`+1)v3`+1 et z = P

`2B(3`+2)v2`+2. Chacun des v` tient sur 2ln(m) bits on a que les sommes plus hauts peuvent être transformées en OU bit à bit car les représentations binaires de ces nombres sont disjointes (entre 2B`v` et2B(`+3)v`+3 il n’y a pas de bits en commun car v` ≤22B).

Enfin la dernière étape est de faire la somme x+y+z mais cela peut être fait en profondeur constante puisque la somme est dans AC0 ⊆TC0.

(6)

Calcul desv` en profondeur constante Ce que l’on a envie de faire pour calculerv`c’est d’utiliser sa table de vérité. Le problème c’est que chaque bit dev` dépend de ln(m)×ln(m) bits desri. Donc la table de vérité peut être exponentielle enln(m)×ln(m) ce qui est plus que polynomial en m.

Le calcul d’un v` correspond donc à faire la somme deln(m) nombres de taille2ln(m). En itérant une seule fois le processus qui nous a permis de passer d’une somme de ak à une somme de v`, on se ramène à écrire v` = P

2B0jwk. Où les wk sont de taille logarithmique en la taille v` et donc

|wk| ≤2ln(ln(m)2)≤4ln(ln(m))

Maintenant les wk sont de taille très petite par rapport à n et donc le calcul de chaque wk peut se faire en profondeur constante en utilisant sa table de vérité (comme à la question 2). Passer par la table de vérité produit bien un circuit de profondeur constante mais de taille exponentielle. Cependant cette taille est exponentielle en le nombre de bits dont dépendwk qui ici est 4ln(ln(m))×ln(ln(m)) et donc sub-linéaire en m. Notez qu’il y a un nombre polynomial de wk car il y a ln(m)/ln(ln(m)) parv` et qu’il y a m/ln(m) v` parak.

Une fois que les wk sont calculés on passe des wk aux v` comme nous sommes passés des v` aux ak en en sommant un tous les trois, ce qui nous donne des nombres x0,y0 etz0 et l’on fait la somme x0+y0+z0.

Références

Documents relatifs

Un circuit booléen avec n bits d’entrée est un graphe orienté acyclique (DAG) où les feuilles sont soit une des variables d’entrée x i ( i ∈ [[1, n]] ) soit une constante >

Un circuit booléen avec n bits d’entrée est un graphe orienté acyclique (DAG) où les feuilles sont les n nœuds représentant l’entrée, la sortie est l’unique nœud dont le

Un circuit booléen avec n bits d’entrée est un graphe orienté acyclique (DAG) où les feuilles sont les n nœuds représentant l’entrée, la sortie est l’unique nœud dont le

On cherche à construire un arbre partiel (plus petit graphe connexe contenant tous les sommets) dont la somme des distances soit minimum parmi tous les arbres partiels du

[r]

[r]

 A ceux qui souhaitent refaire un contrôle de temps en temps, ou éventuellement travailler sur les problèmes de recherche ouverts, vous pouvez parcourir le site

Déterminer les coordonnées du point E intersection de  et (BC). Déterminer les coordonnées des vecteurs et. En déduire que les points A, E et F sont alignés. Calculer