|
Vie Artificielle |
|
Le plugin Java étant désormais obsolète vous pouvez :
Ou utiliser Java Web Start
Logicell Démarrage rapide Fonctionnement de Logicell A- Brefs rappels sur l'algèbre de Boole B- Automatisme et fonctions booléennes C- Principes de base D-Construction des opérateurs booléens (Portes) E- Construction d'une équation F- Construction des programmes Introduction aux Automates Cellulaires
--------------------------------------------------------------------------------------------------- |
On a vu dans l'introduction aux AC que le Jeu de la Vie permet de construire une machine universelle de Turing. LogiCell montre comment l'utilisation de canons comme générateurs, de planeurs comme signaux et de mangeurs comme sorties, permet de traiter l'ensemble des fonctions booléennes. L'applet permet de tester théoriquement n'importe quelle équation booléenne à quatre entrées (celles-ci pouvant être répétées indéfiniment). Un ensemble d'applications combinatoires montre l'usage qui peut être fait de ces fonctions. Enfin et comme il s'agit d'un Conway pur, je n'ai pas pu résister à la tentation de tester certaines figures classiques. Une dernière remarque concernant la vitesse. Les temps de réponse indiqués sont ceux obtenus avec mon P400 sous IE5.0. Ils peuvent vous paraître longs, mais les structures sont très vastes, et soyez certains que j'ai passé un temps non négligeable à concevoir un algorithme AC relativement rapide. Au démarrage, il faut sélectionner un mode de fonctionnement, soit :
Pour le reste, l'interface est suffisamment dépouillée pour se comprendre spontanément. A- Brefs rappels sur l'algèbre de Boole 1 L'algèbre de Boole (qui est en fait un ensemble de structures d'algèbre) a été introduite en 1847 afin de proposer une formulation algébrique des propositions logiques. Cette formulation algébrique est nécessaire du fait de l'ambiguïté et de la complexité des propositions exprimées en langage naturel. Considérons par exemple les propositions suivantes : - Si la nuit, tous les chats sont gris et si Garfield est un chat alors, la nuit Garfield est gris. On reconnaît un syllogisme. Le syllogisme est une expression logique composée de la majeure, qui par l'intermédiaire de la mineure, permet de déduire la conclusion. Les deux premiers éléments sont les prémisses. A l'origine (Vème Siècle avant JC) il s'agissait essentiellement d'une méthode dialectique permettant de codifier le discours. C'est Aristote qui l'a généralisé au domaine scientifique. Cette méthode est d'une grande efficacité elle permet de conclure à la validité de la construction précédente (du moins dans sa construction logique). Considérons maintenant la proposition suivante : - Si la souris a été dévorée par un chat et si Garfield est un chat, alors Garfield a dévoré la souris. Cette seconde proposition est naturellement fausse, mais cette erreur n'apparaît pas spontanément, il est nécessaire de mener un raisonnement (en l'occurrence : Garfield n'est pas le seul chat existant) pour en prendre conscience. Cet exemple est trivial, mais imaginez un ensemble complexe de propositions liées, il devient alors rapidement impossible de conclure à la validité de la conclusion. L'algèbre de Boole permet de résoudre ce type de problème. Cette algèbre travaille sur deux valeurs : 1 et 0 (Vrai et Faux) et utilise trois opérateurs :
Les propriétés de ces opérateurs peuvent s'exprimer dans une table de vérité. Le ET logique (^)
Ici, une proposition est vraie seulement si les deux prémisses sont vraies : "S'il fait beau et si il y a de la neige alors j'irai au ski.", il suffit que l'une des deux conditions ne soit pas remplie pour que la proposition "j'irai au ski" soit fausse. Le OU logique (v)
Ici, il suffit que l'une des prémisses soit vraie pour que la conclusion le soit : "Si mon réveil ne sonne pas ou si ma voiture refuse de démarrer alors je serai en retard au travail." Le NON logique (~)
Cet opérateur sert tout simplement à inverser la valeur d'une proposition. Un autre opérateur est couramment utilisé (notamment dans LogiCell), il s'agit du ou exclusif (xor) noté w : XOR (w)
A la différence du Ou classique, la validité conjointe des deux propositions induit une conclusion fausse. Cet opérateur n'est pas élémentaire, il peut être construit à partir des trois précédents, par exemple : p w q = (p^~q)v(~p^q). De manière générale, tous les opérateurs (implication, équivalence) peuvent être construits à partir des trois opérateurs élémentaires. Les lois de composition des opérateurs permettent ainsi à l'algèbre de Boole de gérer de manière rigoureuse un ensemble complexe de propositions liées. Cette algèbre est utilisée de manière massive aussi bien au sein des mathématiques (théorie de la démonstration, probabilités...) que dans un cadre beaucoup plus pratique (automatisme, informatique...). En ce qui nous concerne, son intérêt provient du fait que les trois opérateurs booléens sont en théorie nécessaires et suffisants pour construire une Machine Universelle de Turing2. B- Automatisme et algèbre de Boole Pour montrer l'usage pratique qui peut être fait des fonctions booléennes, nous avons choisi dans LogiCell de présenter quelques applications d'automatisme. Un automatisme est un système placé entre un opérateur et une machine. L'opérateur fixe les entrées de l'automatisme en fonction du résultat voulu, et l'automatisme réalise un ensemble d'opérations qui déterminent la valeur des sorties envoyées à la machine. Les réflexions menées pour résoudre les problèmes d'automatisation ont conduit à l'élaboration d'un ensemble d'outils mathématiques ("automatique") dont l'utilisation a largement débordé le domaine d'origine. Prenons l'exemple simple d'une double commande. Imaginez une presse à emboutir. Il s'agit d'une machine actionnant avec une pression importante un poinçon qui, en déformant un morceau de métal, va lui donner la forme désirée. Par exemple, vos tubes d'aspirine sont réalisés par la déformation d'un bout de métal ayant sensiblement la forme d'une pièce de monnaie. Pour s'assurer que les mains de l'opérateur ne sont pas dans la zone du poinçon, on l'oblige à actionner simultanément deux interrupteurs, un pour chaque main. Le schéma électrique est élémentaire : Une double commande Pour que l'énergie électrique puisse atteindre le moteur (ou en l'occurrence le relais qui va déclencher le vérin hydraulique), les deux interrupteurs doivent être fermés. Deux conditions doivent être remplies simultanément : on reconnaît ici l'opérateur booléen ET. De la même manière, si l'on branche les deux interrupteurs non pas en série comme ici, mais en parallèle, on obtient la fonction OU. Il suffira que l'un des deux interrupteurs soit fermé pour que la sortie soit actionnée. L'association des fonctions booléennes permet ainsi à travers un traitement complexe des entrées, de construire des "programmes" - des algorithmes - calculant les sorties souhaitées. La sortie d'une double commande dépend exclusivement de l'état des entrées à l'instant t. On parle alors d'application combinatoire. Il est fréquent dans la pratique que l'on souhaite déterminer la sortie non seulement en fonction des entrées à l'instant t, mais aussi de certains états du système à l'instant t-1, ce sont les applications séquentielles3. Les "automates programmables" utilisés dans l'industrie disposent ainsi de fonctions de mémorisation et de temporisation. LogiCell est limité aux applications combinatoires, on verra toutefois que celles-ci peuvent être complexes. Logicell est un Conway pur. Les entrées sont générées par un canon de période 30 associé à un bloqueur.
L'entrée proprement dite se trouve sur la cellule rouge. Si elle est à vrai (ou 1) le bloqueur va disparaître et laisser le planeur se propager. Sinon évidemment le planeur est absorbé. La sortie est gérée par un mangeur. La cellule affichée en rouge n'est activée que dans le cas où le mangeur absorbe un planeur. Cette cellule est la sortie.
Enfin, des canons simples (c'est à dire sans bloqueur) sont utilisés pour construire les opérateurs logiques. Leur intérêt vient de la capacité des planeurs à s'annihiler mutuellement. Dans LogiCell, ce processus se fait en deux étapes, la première rencontre produit deux blocs (2x2) puis ceux-ci sont détruits par les planeurs suivants. Il aurait suffit d'introduire un décalage vertical de 1 cellule pour éviter la phase des blocs. La périodicité du canon le permettant, j'ai positionné les planeurs au même niveau pour simplifier la construction des opérateurs. Les seules liaisons entre l'applet et l'automate sont donc :
Strictement aucun autre traitement des entrées et sorties que celui de l'automate n'est utilisé. C'est bien l'automate et lui seul qui résoud le problème. D- Construction des opérateurs booléens Les trois portes logiques ET, OU, NON suffisent à gérer l'ensemble des opérateurs booléens (Non-Et ou Non-Ou auraient également pu convenir). Ces portes sont construites de la façon suivante : Porte ET avec B vrai et A faux : La porte est constituée de deux entrées et d'un canon de direction opposé. La sortie est sur la trajectoire du planeur de l'entrée B. Les configurations sont :
Porte OU avec A et B vrais
La porte OU est constituée de deux entrées, d'un canon de même direction et d'un canon de direction opposée. La sortie est sur la trajectoire du canon de gauche. Les configurations sont :
Porte NON avec A faux NON A (~A) renvoie le contraire de A, il est constitué d'une entrée et d'un canon de direction opposée. La sortie est sur la trajectoire du canon. Les configurations sont :
On note que la porte A inverse la direction de la sortie. Si une entrée utilise un planeur se déplaçant vers la droite, la sortie est sur un planeur gauche et inversement. Les autres opérateurs logiques peuvent être construits à partir des trois précédents. Par exemple, LogiCell construit l'opérateur XOR (ou exclusif) comme étant : A Xor B = (A Ou B) Et Non(A Et B) Pour mémoire le Ou Exclusif est vrai si une seule entrée est vraie. E- Construction d'une équation Une équation se construit à partir de l'association de plusieurs opérateurs. Chaque opérateur ayant deux entrées et une sortie, on utilise la sortie du premier opérateur comme entrée du suivant. Par exemple : Équation A ET B ET C (A^B^C) La zone en rouge montre un opérateur ET classique sans son mangeur de sortie. La sortie de cette porte, qui est ici le planeur de B, est associée à l'entrée C pour construire l'équation (A ET B) ET C, le mangeur de sortie est alors sur la trajectoire du planeur de C. Ce mécanisme permet de générer l'ensemble des combinaisons possibles et donc les équations correspondantes. L'algorithme de LogiCell peut gérer un nombre quelconque d'entrées, l'applet n'est limitée à quatre entrées distinctes que pour des questions de simplicité et d'interface. F- Construction des programmes Les composants d'automatismes (algorithmes) gèrent des sorties multiples. Pour ce faire LogiCell associe plusieurs équations sur une grille unique. Le programme gère ensuite les différentes sorties en fonction du problème. On note ici le traitement parallèle des différentes équations. LogiCell propose quelques applications combinatoires à titre d'illustration. Ce sont :
LogiCell est indéniablement un peu technique, son rapport à la vie artificielle n'est pas direct. Toutefois il montre une partie essentielle de ce que l'on entend lorsque l'on dit qu'un automate de Conway, un jeu de la vie, est une machine de Turing. 1- Les personnes intéressées par le sujet peuvent se reporter à : Rivenc F., Introduction à la logique, Payot, Paris, 1989. 2- Heudin JC, L'évolution au bord du chaos, Hermès, Paris, 1998, p. 122. On note que les opérateurs NAND (non et) et NOR (non ou) permettent également chacun de construire l'ensemble des fonctions booléennes. 3- Patrick Trau, IPST, Université Louis Pasteur Strasbourg. http://www-ipst.u-strasbg.fr/pat/autom/. Jean-Philippe Rennard 11/2000. Copyright : Ce texte est mis à la disposition du public à seule fin pédagogique. Il est libre pour tout usage personnel. En cas d'usage public non commercial, je vous demande d'en citer l'origine et l'auteur. Tout usage commercial est formellement interdit hors accord écrit de ma part. |
Copyright ©rennard.org. 2000, 2001, 2002.
|