dalhai_xor
Porte XOR

Porte XOR

En cherchant des portes XOR à 3 entrées (pour simuler un additionneur 2x1 bits) l'algorithme génétique ne trouve rien. Mauvais algorithme ou réel problème ?

Le problème

Soit des objets de la forme M = (x, y, z, Ex, Ey, Ez)x, y, z sont des vecteurs qui correspondent à des coordonnées dans l'espace et Ex, Ey, Ez sont les résultats d'une fonction f pour toutes ces coordonnées : f(x,y,z)=(Ex,Ey,Ez)f(x, y, z) = (Ex, Ey, Ez).

La fonction f représente la simulation (discrète) d'un laser à une position donnée avec une longueur d'onde, une phase, une polarisation fixée.

Pour représenter une porte logique à 3 entrées, on a besoin de 6 fonctions f : 3 entrées à 2 positions (0 ou 1) qui nous donnerons 8 états possibles (282^8).

Par linéarité, la fonction finale d'une telle porte correspondant au mot binaire abc, avec a,b,c{0,1}a, b, c \in \{0, 1\} vaut : Fabc=f(0,a)+f(1,b)+f(2,c) F_{abc} = f_{(0, a)} + f_{(1, b)} + f_{(2, c)}

Cette fonction fabcf_{abc} a des valeurs dans C3\mathbb{C}^3, le seuil que l'on cherche se fait sur la somme de ses modules:

Fabc=(g(x,abc),g(y,abc),g(z,abc)) F_{abc} = (g_{(x, abc)}, g_{(y, abc)}, g_{(z, abc)}), où g(_,abc)=g(_,abc)r+ig(_,abc)ig_{(\_, abc)} = g_{(\_, abc)}^r + i*g_{(\_, abc)}^i, et g(_,abc)=f_,(0,a)+f_,(1,b)+f_,(2,c) g_{(\_, abc)} = f_{\_, (0, a)} + f_{\_, (1, b)} + f_{\_, (2, c)}

v=gx,abc2+gy,abc2+gz,abc2 v = \lvert g_{x,abc} \rvert ^2 + \lvert g_{y,abc} \rvert ^2 + \lvert g_{z,abc} \rvert ^2

Au final, on va calculer :

v=(fx(0,a)r+fx(1,b)r+fx(2,c)r)2+(fx(0,a)i+fx(1,b)i+fx(2,c)i)2+(fy(0,a)r+fy(1,b)r+fy(2,c)r)2+(fy(0,a)i+fy(1,b)i+fy(2,c)i)2+(fz(0,a)r+fz(1,b)r+fz(2,c)r)2+(fz(0,a)i+fz(1,b)i+fz(2,c)i)2 v = \left( f_{x(0, a)}^r+f_{x(1, b)}^r+f_{x(2, c)}^r \right)^2+\left( f_{x(0, a)}^i+f_{x(1, b)}^i+f_{x(2, c)}^i \right)^2 + \left( f_{y(0, a)}^r+f_{y(1, b)}^r+f_{y(2, c)}^r \right)^2+\left( f_{y(0, a)}^i+f_{y(1, b)}^i+f_{y(2, c)}^i \right)^2 + \left( f_{z(0, a)}^r+f_{z(1, b)}^r+f_{z(2, c)}^r \right)^2 + \left( f_{z(0, a)}^i+f_{z(1, b)}^i+f_{z(2, c)}^i \right)^2

Bien sûr, v est une fonction, mais on va se donner un point (x,y,z)(x, y, z) quelconque et le but du jeu sera de voir si on peut trouver un seuil plus grand que 0 à cette position (i.e. à n'importe quelle position).

On peut réécrire notre fonction : v=dx,y,zpi,r(fd,(0,a)p+fd,(1,b)p+fd,(2,c)p)2v = \sum_{d \in {x, y, z}} \sum_{p \in {i, r}} (f_{d, (0, a)}^p + f_{d, (1, b)}^p + f_{d, (2, c)}^p)^2

Par la suite, pour simplifier les calculs, on se fixera une dimension dd et une partie pp (imaginaire ou réelle):

  • α0=fd(0,0)p(x,y,z)    \alpha_0 = f_{d(0, 0)}^p(x, y, z) \implies le premier laser en mode 0 logique
  • α1=fd(0,1)p(x,y,z)    \alpha_1 = f_{d(0, 1)}^p(x, y, z) \implies le premier laser en mode 1 logique
  • β0=fd(1,0)p(x,y,z)    \beta_0 = f_{d(1, 0)}^p(x, y, z) \implies le deuxième laser en mode 0 logique
  • β1=fd(1,1)p(x,y,z)    \beta_1 = f_{d(1, 1)}^p(x, y, z) \implies le deuxième laser en mode 1 logique
  • γ0=fd(2,0)p(x,y,z)    \gamma_0 = f_{d(2, 0)}^p(x, y, z) \implies le troisième laser en mode 0 logique
  • γ1=fd(2,1)p(x,y,z)    \gamma_1 = f_{d(2, 1)}^p(x, y, z) \implies le troisième laser en mode 1 logique

Ainsi la valeur de la configuration (0, 1, 0) est v(0,1,0)=(α0+β1+γ0)2v_{(0, 1, 0)} = (\alpha_0 + \beta_1 + \gamma_0)^2.

On se fixera un seuil ε>0\varepsilon > 0, et il faudra que :

  • Si la sortie de la porte vaut 1, la valeur de la configuration soit plus grande que v>εv > \varepsilon
  • Si la sortie de la porte vaut 0, la valeur de la configuration soit plus petite que v<εv < \varepsilon

Ce qui nous donnera une liste d'inéquation à vérifier.

Avec 2 entrées

Dans cette version du problème, on n'a pas besoin des γ\gamma.

On se fixe ε>0\varepsilon > 0

Trouver une porte XOR revient à satisfaire la liste d'inégalités suivantes :

  • E00:=(α0+β0)2<εE00:=α022α0β0β02>εE_{00} := \left( \alpha_0 + \beta_0 \right)^2 < \varepsilon \Longleftrightarrow E_{00} := -\alpha_0^2 -2\alpha_0\beta_0 - \beta_0^2 > -\varepsilon
  • E01:=(α0+β1)2>εE01:=α02+2α0β1+β12>εE_{01} := \left( \alpha_0 + \beta_1 \right)^2 > \varepsilon \Longleftrightarrow E_{01} := \alpha_0^2 +2\alpha_0\beta_1 + \beta_1^2 > \varepsilon
  • E10:=(α1+β0)2>εE10:=α12+2α1β0+β02>εE_{10} := \left( \alpha_1 + \beta_0 \right)^2 > \varepsilon \Longleftrightarrow E_{10} := \alpha_1^2 +2\alpha_1\beta_0 + \beta_0^2 > \varepsilon
  • E11:=(α1+β1)2<εE11:=α122α1β1β12>εE_{11} := \left( \alpha_1 + \beta_1 \right)^2 < \varepsilon \Longleftrightarrow E_{11} := -\alpha_1^2 -2\alpha_1\beta_1 - \beta_1^2 > -\varepsilon

En posant, et en développant (E01+E00)(E_{01}+E_{00}) et (E10+E11)(E_{10}+E_{11}), on obtient :

  • E01+E00:=β12β02+2α0(β1β0)>0E_{01}+E_{00} := \beta_1^2 - \beta_0^2 + 2\alpha_0\left( \beta_1 - \beta_0 \right) > 0
  • E10+E11:=β02β12+2α1(β0β1)>0E_{10}+E_{11} := \beta_0^2 - \beta_1^2 + 2\alpha_1\left( \beta_0 - \beta_1 \right) > 0

Comme (β1β0)=(β0β1)\left( \beta_1 - \beta_0 \right) = - \left( \beta_0 - \beta_1 \right), on peut finalement écrire:

E=(E01+E00)+(E10+E11):=2(α0α1)(β1β0)>0E=(E_{01}+E_{00})+(E_{10}+E_{11}) := 2\left( \alpha_0 - \alpha_1 \right)\left( \beta_1 - \beta_0 \right) > 0

Ce qui ne pose pas de soucis, donc on peut trouver une porte XOR à 2 entrées.

Avec 3 entrées

Pour trouver une porte XOR à 3 entrées, il faut satisfaire la liste d'inégalités suivantes :

  • E000:=(α0+β0+γ0)2<εE000:=α022α0β0β022α0γ0γ022γ0β0>εE_{000} := \left( \alpha_0+\beta_0+\gamma_0 \right)^2 < \varepsilon \Longleftrightarrow E_{000} := -\alpha_0^2 - 2\alpha_0\beta_0 - \beta_0^2 - 2\alpha_0\gamma_0 - \gamma_0^2 - 2\gamma_0\beta_0 > -\varepsilon
  • E001:=(α0+β0+γ1)2>εE001:=α02+2α0β0+β02+2α0γ1+γ12+2γ1β0>εE_{001} := \left( \alpha_0+\beta_0+\gamma_1 \right)^2 > \varepsilon \Longleftrightarrow E_{001} := \alpha_0^2 + 2\alpha_0\beta_0 + \beta_0^2 + 2\alpha_0\gamma_1 + \gamma_1^2 + 2\gamma_1\beta_0 > \varepsilon
  • E010:=(α0+β1+γ0)2>εE010:=α02+2α0β1+β12+2α0γ0+γ02+2γ0β1>εE_{010} := \left( \alpha_0+\beta_1+\gamma_0 \right)^2 > \varepsilon \Longleftrightarrow E_{010} := \alpha_0^2 + 2\alpha_0\beta_1 + \beta_1^2 + 2\alpha_0\gamma_0 + \gamma_0^2 + 2\gamma_0\beta_1 > \varepsilon
  • E011:=(α0+β1+γ1)2<εE011:=α022α0β1β122α0γ1γ122γ1β1>εE_{011} := \left( \alpha_0+\beta_1+\gamma_1 \right)^2 < \varepsilon \Longleftrightarrow E_{011} := -\alpha_0^2 - 2\alpha_0\beta_1 - \beta_1^2 - 2\alpha_0\gamma_1 - \gamma_1^2 - 2\gamma_1\beta_1 > -\varepsilon
  • E100:=(α1+β0+γ0)2>εE100:=α12+2α1β0+β02+2α1γ0+γ02+2γ0β0>εE_{100} := \left( \alpha_1+\beta_0+\gamma_0 \right)^2 > \varepsilon \Longleftrightarrow E_{100} := \alpha_1^2 + 2\alpha_1\beta_0 + \beta_0^2 + 2\alpha_1\gamma_0 + \gamma_0^2 + 2\gamma_0\beta_0 > \varepsilon
  • E101:=(α1+β0+γ1)2<εE101:=α122α1β0β022α1γ1γ122γ1β0>εE_{101} := \left( \alpha_1+\beta_0+\gamma_1 \right)^2 < \varepsilon \Longleftrightarrow E_{101} := -\alpha_1^2 - 2\alpha_1\beta_0 - \beta_0^2 - 2\alpha_1\gamma_1 - \gamma_1^2 - 2\gamma_1\beta_0 > -\varepsilon
  • E110:=(α1+β1+γ0)2<εE110:=α122α1β1β122α1γ0γ022γ0β1>εE_{110} := \left( \alpha_1+\beta_1+\gamma_0 \right)^2 < \varepsilon \Longleftrightarrow E_{110} := -\alpha_1^2 - 2\alpha_1\beta_1 - \beta_1^2 - 2\alpha_1\gamma_0 - \gamma_0^2 - 2\gamma_0\beta_1 > -\varepsilon
  • E111:=(α1+β1+γ1)2>εE111:=α12+2α1β1+β12+2α1γ1+γ12+2γ1β1>εE_{111} := \left( \alpha_1+\beta_1+\gamma_1 \right)^2 > \varepsilon \Longleftrightarrow E_{111} := \alpha_1^2 + 2\alpha_1\beta_1 + \beta_1^2 + 2\alpha_1\gamma_1 + \gamma_1^2 + 2\gamma_1\beta_1 > \varepsilon

En posant, et en développant (E001+E000)(E_{001}+E_{000}), (E010+E011)(E_{010}+E_{011}), (E100+E101)(E_{100}+E_{101}) et (E111+E110)(E_{111}+E_{110}), on obtient :

  • E001+E000:=γ12γ02+2(α0+β0)(γ1γ0)>0E_{001}+E_{000} := \gamma_1^2 - \gamma_0^2 + 2\left(\alpha_0 + \beta_0 \right)\left( \gamma_1 - \gamma_0\right) > 0
  • E010+E011:=γ02γ12+2(α0+β1)(γ0γ1)>0E_{010}+E_{011} := \gamma_0^2 - \gamma_1^2 + 2\left(\alpha_0 + \beta_1 \right)\left( \gamma_0 - \gamma_1\right) > 0
  • E100+E101:=γ02γ12+2(α1+β0)(γ0γ1)>0E_{100}+E_{101} := \gamma_0^2 - \gamma_1^2 + 2\left(\alpha_1 + \beta_0 \right)\left( \gamma_0 - \gamma_1\right) > 0
  • E111+E110:=γ12γ02+2(α1+β1)(γ1γ0)>0E_{111}+E_{110} := \gamma_1^2 - \gamma_0^2 + 2\left(\alpha_1 + \beta_1 \right)\left( \gamma_1 - \gamma_0\right) > 0

On peut recommencer une nouvelle fois, avec : E0=(E001+E000)+(E010+E011)E_0=(E_{001}+E_{000})+(E_{010}+E_{011}) et E1=(E100+E101)+(E111+E110)E_1=(E_{100}+E_{101})+(E_{111}+E_{110}), on a :

  • E0:=2(β0β1)(γ1γ0)>0E_0 := 2\left(\beta_0 - \beta_1 \right)\left(\gamma_1 - \gamma_0 \right) > 0
  • E1:=2(β0β1)(γ0γ1)>0E_1 := 2\left(\beta_0 - \beta_1 \right)\left(\gamma_0 - \gamma_1 \right) > 0

On obtient une contradiction car γ1γ0=(γ0γ1)\gamma_1 - \gamma_0 = -\left( \gamma_0 - \gamma_1 \right).

En posant a=(β0β1)(γ0γ1)a = \left(\beta_0 - \beta_1 \right)\left(\gamma_0 - \gamma_1 \right), on aurait a>0a > 0 et a>0-a > 0.

Impossible. Donc, on ne peut pas trouver de porte XOR à 3 entrées (et plus).