100% ont trouvé ce document utile (1 vote)
599 vues779 pages

Manuel d'Intelligence Artificielle

Transféré par

avatarchange2
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (1 vote)
599 vues779 pages

Manuel d'Intelligence Artificielle

Transféré par

avatarchange2
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

�� ..

D'INTELLIGENCE
ARTIFICIELLE

PRESSES POLYTECHNIQUES ET UNIVERSITAIRES ROMANDES


Manuel d'intelligence artificielle
METIS LyonTech

Manuel
d'intelligence artificielle

Louis Frécon & Okba Kazar

PRESSES POLYTECHNIQUES ET UNIVERSITAIRES ROMANDES


Cet ouvrage paraît dans la collection METIS LyonTech qui est publiée sous la direction d'un comité d'édition placé
sous la responsabilité de Sophie Vareilles et Jean-Yves Cavaillé.

Egalement disponibles dans le domaine« Informatique et télécommunication» chez le même éditeur

Eléments de mathématiques discrètes


Louis Frécon

Modèles et métamodèles
Guy Caplat

Modélisation cognitive et résolution de problèmes


Guy Caplat

Les Presses polytechniques et universitaires romandes sont une fondation


scientifique dont le but est principalement la diffusion des travaux de l'Ecole
polytechnique fédérale de Lausanne et de l'Institut National des Sciences
Appliquées de Lyon, ainsi que d'autres universités et écoles
d'ingénieurs francophones.
Le catalogue de leurs publications peut être obtenu par courrier
aux Presses polytechniques et universitaires romandes,
EPFL - Centre Midi, CH-1015 Lausanne, par E-Mail à ppur@[Link],
par téléphone au (0)21 693 41 40, ou par fax au (0)21 693 40 27.

[Link]

Première édition
ISBN 978-2-88074-819-7
©Presses polytechniques et universitaires romandes, 2009
Tous droits réservés
Reproduction, même partielle, sous quelque forme
ou sur quelque support que ce soit,
interdite sans l'accord écrit de !'.éditeur.

Imprimé en Italie
AVANT-PROPOS
Origines
Ce manuel est issu pour l ' essentiel d ' enseignements donnés au Département Infor­
matique de l'INSA de Lyon, de 1 985 à 2003 , aux niveaux bac+3 et bac+4,
d'enseignements en DEA (niveau bac+5) à l 'Université Lyon 2 jusqu' en 2004, ainsi
qu ' au Département Informatique de l 'Université de Biskra, enseignements
s 'appuyant sur des activités connexes de recherche et de formation continue.

Objectifs
Ce livre a pour but de présenter les grandes lignes de l ' intelligence Artificielle. Il
s 'adresse aux informaticiens, aux cogniticiens, éventuellement aux psychologues
cognitivistes ayant des bases en informatique, mais prioritairement aux étudiants de
second cycle.
L' intelligence Artificielle couvre un très grand nombre de sujets, et cet ouvrage,
qui se veut essentiellement didactique, présente et articule les principaux aspects de
cette dicipline. Mais il ne s ' agit pas d' une encyclopé[Link] la question, qui couvri­
rait tous les sujets fondamentaux de l ' intelligence artificielle.
Afin de faciliter la mise en perspective de l ' intelligence Artificielle, l 'exposé
des concepts suivra grosso modo l 'ordre historique, ce qui devrait mettre en lumière
l 'aspect dialectique de la progression de cette discipline : à une époque donnée, une
dominante s ' impose qui règle une partie de la question ; l'époque suivante sera mar­
quée par l' émergence d'un des principaux aspects jusque-là négligés, qui appellera
une nouvelle dominante . . .
« Un cours sans exemple est un squelette » disait Francisque Salles. Deux par­

ties pratiques suivront des exposés plus généraux, afin de donner vie aux concepts
présentés.

Restrictions
On attachera une grande importance à la distinction symbolique/sub-symbolique. De
même que la psychologie cognitive ne traite pas en soi des réflexes ou des émotions,
l ' intelligence Artificielle envisagée ici ne traitera pas en principe de la Reconnais­
sance de Formes, discipline plus biophysique, connexe mais distincte.

Plan proposé
L' introduction traite brièvement de l ' intelligence, du naturel et de l ' artificiel selon H.
Simon, des positions relatives de la Psychologie Cognitive et de l ' intelligence Artifi­
cielle, et des limites de cette dernière.
La partie A rappelle les grandes lignes de l 'approche algorithmique de
l ' lntelligence Artificielle (I.A.), basée sur la manipulation d' arbres et la programma­
tion fonctionnelle, et donne des éléments concernant sa pratique, sur la base du lan­
gage Scheme.
La partie B du livre est consacrée à une approche logique classique, illustrée par
l ' emploi de Prolog, elle aborde les logiques non standard et débouche sur la question
VI Manuel d'intelligence Artificielle

des systèmes-experts et systèmes à base de connaissances. Au sein de l ' ingéniérie ds


connaissances, le développement de ces produits a posé la question de nouveaux
paradigmes.
Le second niveau est donc consacré à des paradigmes complémentaires : appro­
che grammaticale (partie C), formalismes obj ets qui exploitent les classifications
(partie D), acteurs et systèmes multi-agents (partie E) pour la simulation des systè­
mes sociaux, voire la vie artificielle.
La partie F est consacrée aux métaconnaissances, et notamment à la résolution
par cas.
L 'ensemble se termine par la présentation rapide de quelques grandes réalisa­
tions spécialisées, et notamment le traitement des langues naturelles (partie G), et,
au-delà de l'Intelligenece Artificielle (partie H), de la robotique, fortement intégra­
trice, qui débouche sur la vie artificielle.
Ce livre a bénéficié de relectures par Jean Beney, maître de conférences à
l ' INSA de Lyon et par un expert anonyme. Qu ' ils en soient remerciés.
PLAN DE L'OUVRAGE

Partie Chapitre
INTRODUCTION l .INTRODUCTION
A-APPROCHE ALGORITHMIQUE 2. ÉNUMÉRATION & COMPLEXITÉ
3. ESPACE D'ÉTAT ET MÉTAPHORE DU
LABYRINTHE
4. MÉTHODES DE RÉDUCTION
5. RÉSEAUX SÉMANTIQUES
6. NOTIONS D'APPRENTISSAGE
A2-ÉLÉMENTS PRATIQUES : 7. BASES DU LANGAGE SCHEME
SCHEME 8. PREMIÈRES APPLICATIONS
9. VERS L'IA EN SCHEME
B-APPROCHE LOGIQUE
B 1 -APPROCHE LOGIQUE 1 O. CALCUL DES PROPOSITIONS
CLASSIQUE 1 1 . LOGIQUE DES PRÉDICATS
B 2 -PROGRAMMA TION LOGIQUE 12. ÉLÉMENTS DE PROLOG
1 3. COMPLÉMENTS DE PROGRAMMATION
LOGIQUE
B 3 - LOGIQUES NON-STANDARDS
B 3A - EXTENSIONS ALGÉBRIQUES 14. LOGIQUES MULTIVALUÉES
1 5. LOGIQUES FLOUES
B 3B- EXTENSIONS 1 6. LOGIQUES NON MONOTONES OU RÉVISABLES
INFÉRENTIELLES 1 7. LOGIQUES MODALES
1 8. LOGIQUES D'ORDRE SUPÉRIEUR
B4- SYSTÈMES À BASE DE 1 9. INTRODUCTION AUX SYSTÈMES-EXPERTS
CONNAISSANCES 20. SYSTÈMES EXPERTS : DÉVELOPPEMENT
2 1 . INGÉNIERIE & GESTION DES CONNAISSANCES
C-APPROCHE GRAMMATICALE 22 . FORMALISMES GRAMMATICAUX
D-FORMALISMES OBJETS 23. LANGAGES À CLASSES
24. LANGAGES À PROTOTYPES
E-SYSTÈMES MULTl-AGENTS 25. AGENTS & SYSTÈMES MULTI-AGENTS
26. LES SYSTÈMES MULTl-AGENTS
27. ARCHITECTURE DES SMA
F-MÉTA-CONNAISSANCES 28. MÉTACONNAISSANCES RÉACTIVES ET
PROACTIVES
G-QUELQUES GRANDES RÉALISATIONS 29. TRAITEMENT DES LANGUES NATURELLES
30. AUTRES SYSTÈMES INTELLIGENTS
SPÉCIALISÉS
H-AU-DELÀ DE L'IA 3 1 . LE PROJET ROBOTIQUE
32. VIE ARTIFICIELLE
1-CONCLUSION
TABLE DES MATIÈRES

AVANT-PROPOS .................................................................. V

PLAN DE L'OUVRAGE ..................................................... VII

CHAPITRE 1 Introduction
1.1 L'intelligence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1 .2 Le Naturel et l 'Artificiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1 .3 Psychologie cognitive et Intelligence Artificielle . .. .................. 2
1 .4 Bref historique de!'Intelligence Artificielle . . . . .
....... ..... ............ 2
1 .5 Positionnement de! 'Intelligence Artificielle . . . . . . . . ... .. .. .. ............ 6
1 .6 Limites de! ' Intelligence Artificielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1 .7 Référence ................................................................................... 9

PARTIE A-APPROCHE ALGORITHMIQUE

CHAPITRE 2 Enumération et complexité


2. 1 Recherche de solutions par énumération . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 3
2.2 Complexité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 3
2.3 Espace de recherche . . .
..... ............................. ........................... 17
2.4 Recherche de solutions optimales ou dominantes .............. .... . 19
2.5 Exercices .
........................................... .................... . .............. .. 21
2.6 Indications . ..
..................... .......... . ............................ ............... . 23
2.7 Références . . . . . . . .
... .... .......... .......... ...... .... .... .. ............................ 25

CHAPITRE 3 Espace d'Etat et métaphore du Labyrinthe


3.1 Espace d 'état . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3 .2 Résolution de problème et métaphore du Labyrinthe . . ..... ....... 28
3 .3 Types de méthodes de recherche . . . .
....... .... ..... ....... ............ ..... . 29
3 .4 Principales méthodes .
........... ...... ..... .. .
........... .......... . ............... 32
3.5 Cas des jeux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44
3.6 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 0
3.7 Indications . .
.................................... .. ...................................... . 55
3.8 Références .
.............................................. ........... .................... . 59
X Manuel d'Intelligence Artificielle

CHAPITRE 4 Méthodes de réduction


4. 1 Principe ................................................................................... 61
4.2 Graphes ET/OU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1
4.3 Stratégie ascendante ou synthétique . . . .. . . ................................. 62
4.4 Stratégie descendante ou analytique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.5 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.6 Formalismes ET/OU/NON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.7 Formalismes PUIS/SINON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.8 Coordination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4.9 Réduction et récursivité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4. 1 0 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
4. 1 1 Indications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
4. 1 2 Références . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

CHAPITRE 5 Réseaux sémantiques


5. 1 Origines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1
5.2 Premiers réseaux sémantiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.3 Réseaux partitionnés d 'Hendrix . . . . . . .. ..... .... ..... ... ........... ........ . .88
5 .4 Réseaux à propagation de marqueurs de Fahlmann . . . . . . . . . . . . . . . . 90
5.5 Réseaux dynamiques d 'Agarwal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.6 Graphes conceptuels d e Sowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 0
5.7 Cartes cognitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 0
5.8 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1
5.9 Indications . . .
......... .... .. .......... .. .. . . . . .7 ........ .. . .
. . ....... ... ........... 93
5. 1o Références . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

CHAPITRE 6 Notions d'apprentissage


6. 1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.2 Niveaux d 'apprentissage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.3 Modes d'apprentissage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
6.4 Apprentissage factuel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
6.5 Apprentissage inductif........................................................... ! 0 1
6.6 Conclusions . . . . . . . . . . .. .
.... . .. .. .... . ... . ........ ... . ..... ........................... 1 03
6. 7 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 06
6. 8 Indications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 07
6. 9 Références . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 08

A2-ÉLÉMENTS PRATIQUES : SCHEME

CHAPITRE 7 Bases du langage Scheme


7. 1 Principes de Scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 3
7 .2 L'environnement DrScheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 3
7.3 Syntaxe des expressions acceptables . .
..... ...................... ........ 1 14
7.4 Données élémentaires ou Atomes .. . ............ 1 14
. .........................

7.5 Données complexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 7


Table des matières XI

7.6 Obj ets globaux . .


................................... .. ............................... 1 20
7. 7 La récursivité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 22
7.8 Prédicats et quasi-prédicats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 25
7.9 Equivalences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 8
7. 1 0 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 28
7. 1 1 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 3 0
7. 1 2 Indications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 3 1

CHAPITRE 8 Premières applications


8. 1 Compléments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 3 5
8.2 Développement d'applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 36
8.3 De la numération romaine à la numération arabe . . . . . . . . . . . . . . . . . . 1 3 8
8.4 Recherche de chemins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 40
8.5 Jeu de Nim déterministe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 44
8.6 Rendre la monnaie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 46
8.7 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 48
8.8 Indications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

CHAPITRE 9 Vers l'IA en Scheme


9. 1 Jeu des animaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 5 1
9.2 Nim à apprentissage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 53
9.3 Analyse d'une phrase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 5 7
9.4 Générateur de phrase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 60
9.5 Calcul symbolique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 60
9.6 Parallèlisation de programmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 67
9.7 Un premier système-expert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 68
9.8 A travers le miroir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 73
9.9 Générateur de fonctions définies par leur trace . . . . . . . . . . . . . . . . . . . . . 1 74
9. 1 0 Robot ordonnançant ses tâches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 83
9. 1 1 Scheme tel qu ' en lui-même . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 9 1
9. 1 2 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 92
9. 1 3 Références . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 93

PARTIE B-APPROCHE LOGIQUE

Bl-APPROCHE LOGIQUE CLASSIQUE

CHAPITRE 10 Calcul des propositions


1 0. 1 Obj et ................................................................................... 20 1
1 0.2 Syntaxe du langage formel des énoncés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1
1 0.3 Dynamique de la logique des propositions . . . . . . . . . . . . . . . . . . . . . . . . . 202
1 0.4 Logique positive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
1 0.5 Déduction naturelle suivant Gentzen et Prawitz . . . . . . . . . . . . . . . . . 203
1 0.6 Règles d ' inférence sur la négation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
l O. 7 Un exemple complet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
XII Manuel d'Intelligence Artificielle

1 0. 8 Théorie, logique consistante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1 0


1 0.9 Interprétation vérifonctionnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1 l
I O. I O Tautologies, antilogies, énoncés réalisables . . . . . . . . . . . . . . . . . . . . . . . 2 1 2
1 0. l l Théorie logique : adéquation, complétude . . . . . . . . . . . . . . . . . . . . . . . . . 2 1 2
1 0. 1 2 Système algébrique dual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1 3
I0. 1 3 Dérivation selon Hilbert ...................................... .............. . 213
1 0. 1 4 Démonstration automatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1 4
1 0. 1 5 Utilisation du dual algébrique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1 6
1 0. 1 6 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1 8
1 0. l 7 Indications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
1 0. 1 8 Références . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

CHAPITRE 11 Logique des prédicats


l l.l Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
l l .2 Syntaxe du langage formel des prédicats . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
l l .3 Dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
l l .4 Le point sur la négation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 l
l l .5 Interprétations, modèles, théories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 l
l l .6 Interprétation vérifonctionnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
l l .7 Démonstration automatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
l l .8 Méthode d e résolution / [Link], 1 965 . . . . . . . . . . . . . . . . . . . . . . . . 234
1 1 .9 Exemple de démonstration automatique ............................. 235
1 1.10 L 'unification de 2 Clauses . .. ............................................... 236
1 1.1 1 Logiques typées .............................................. ................... . 237
1 1.12 Logiques et planification .. ..... . ............................................ 238
1 1.13 Applications de la logique classique .................................. 238
1 1 . 14 Exercices . .
................................ .. ........................................ 238
1 1.15 Indications .
....................... ................................. ................ . 239
1 1.16 Références . .
. ................ ....................................................... 239

B2-PROGRAMMATION LOGIQUE

CHAPITRE 12 Eléments de Prolog


1 2. l Bases ................................................................................... 245
1 2.2 Premiers exemples . .
. ....................... .................................... 246
1 2.3 Cadrage logique de Prolog .
.... ............................ ............... . 250
1 2.4 Listes . . ......................................................... ...................... . 250
1 2.5 Types et tests associés ........................................................ 253
1 2.6 Foncteurs évaluables . .
........................ ..... ........................... 254
12.7 Tests entre termes ............................................................... 257
1 2. 8 Erreurs .
................... ............................................................ 258
1 2.9 Directives . .
....... .......................... .... ..................................... 258
1 2. 1 0 Prédicats pilotes .................................................................. 26 1
1 2. 1 1 Entrées/sorties . ............... ............................................. ...... . 267
12. 1 2 Stylistique . .............. ..................................................... ...... . 272
Table des matières XIII

1 2. 1 3 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
1 2 . 1 4 Indications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
1 2. 1 5 Références .
........................................... .............................. 277

CHAPITRE 13 Compléments de programmation logique


13.l Intérêt et limites du Prolog de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
1 3 .2 Extensions de Prolog . .. ... ....................... 28 1
.............................

1 3 .3 Les DCG ou « Definite Clause Grammars » 282 .....................

1 3 .4 Arithmétique rationnelle . . . . . . 290


................... ..... ....... .......... . ... ..

1 3 .5 Coroutinage . . . . . . . . . . . . . . .
..... . . .. .. . .
.. . . . .. .. ........ .... . . . . 29 1 . ... .... ........ .. .

1 3 .6 Modules . ..
..................................... ... . . . 292
................... ........ . ....

1 3 .7 Programmation logique contrainte . 296


........................... . . .......

1 3 .8 Les limites de Prolog revisitées . . . 3 04


...... .............. ....... ............

1 3 .9 Exercices . . . .
.................... .................... ... ............................. 307
13. l0 Indications . . .. . . ..
........... ... ..... . .. . . ........ . . 308
................... .............

13.l l Références . . .. . .. . . . 308


.. . ........ . ... ............................ . ............. ...... .

PARTIE B3-LOGIQUES NON-STANDARDS

B3A-EXTENSIONS ALGÉBRIQUES

CHAPITRE 14 Logiques multivaluées


14. l Idée générale . . ..
............... . . .............. . ....... ..... . ...................... 315
1 4.2 Opérateurs . . .. .
............. . .. ..
...................... . .................... . ..... . . 315
1 4.3 Logique L3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1 7
1 4.4 Logiques Ln .... .
........... ... ........................ . ..... . . ... .
....... ......... 319
1 4.5 Logique K3 ................... .
........................ ................. ....... ... . . 321
1 4.6 Logique 83 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
1 4.7 Logiques quadrivalentes ................... . . . . ... .. . .
. ...... ....... .. ..... . . 324
1 4. 8 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
1 4.9 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
14. l 0 Références ............................... ...................................... .... . 329

CHAPITRE 15 Logiques floues


15.l Idée générale .
. . . ..... ............. .. . . . .. . . .
. . ....... .. . . . . .. .. ..... .. ......... .. . .33 1
1 5 .2 Choix des opérateurs . ..
...... ......... ..... . ................... .............. . 332
1 5 .3 Comparaison d 'opérateurs ............. ...... .. . . ...................... .... . 332
1 5 .4 Variables logiques .
........ ................................. .. ........... .... . . . 337
1 5 .5 Enoncés flous ............... ............... . ... . . .. .
...... ......... ..... . .. . . . . . . 339 .

1 5 .6 Aspect inférentiel .
............. .... ................. ..... ........ ... . . . . . . . .339
. ...

1 5 .7 Emplois ............................................................................... 342


1 5.8 Critiques .
........................... ................... . . .. .......................... 344
1 5 .9 Conclusion ..
....... ..... ...... . ..................................................... 346
15. l0 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
15. l l Indications . ... .. . .
. ........... .... .. . ........... . . . . . . . . . . . . . . 348
. . . .. ..... ..... . . ... . .

15 . 1 2 Références . .
. .................. ............................... ......... ........... . . 349
XIV Manuel d'intelligence Artificielle

B3B-EXTENSIONS INFÉRENTIELLES

CHAPITRE 16 Logiques non-monotones ou révisables


16. l Situation.............................................................................. 353
16.2 Logiques monotones........................................................... 354
16.3 Utilisation des généralités................................................... 355
16.4 Logiques non-monotones ................................................... 358
16.5 Hypothèse du monde clos ................................................... 360
16.6 Logique des défauts de Reiter ............................................ 360
16.7 Connaissances dynamiques ................................................ 363
16.8 Exercices ............................................................................ 365
16.9 Indications ..........................................................................366
16.10 Références ..........................................................................367

CHAPITRE 17 Logiques modales


17.1 Idée générale....................................................................... 369
17.2 Logique modale minimale /Système K............................... 370
17.3 Intérêt 370
.................................................................................

17.4 Logiques aléthiques ............................................................371


17.5 Logiques déontiques ........................................................... 373
17.6 Logiques autoépistémiques ................................................ 374
17.7 Logiques multimodales . ... .. .. . .
.. . 377
........ .......................... .......

17.8 Logiques épistémiques ....................................................... 378


17.9 Logiques temporelles . . ..
.......... .... ............................ . 379
.......... .

17. l 0 Logiques dynamiques . . . . . . 391


........ ....... .... ..... .... ... ....................

17. l l Exercices . . .. . .. . .
................. ... .... . ...... ........... 393
. .. ......................

17.12 Indications . . . . . . . . 394


........ .. .......... ... ...... ... ......... ..................... ....

17.13 Références . . . . .. . .
.. .. .. ............ ........... . ..
.... .. .......... ...... . 395
.......... .

CHAPITRE 18 Logiques d'ordre supérieur


18. l Présentation ........................................................................ 397
18.2 Echelle de Russel. . . . . . . 397
............ ....... ......... .................... .........

18.3 Frontières . . . . 398


.. .......................................... ........... .. ...............

18.4 La réification . . .. .
................. ... .......... . 399
... ...................... .........

18.5 Conclusion . ... .


. .. . . . . 400
..... ........................ . ..... ..................... . ... ..

18.6 Exercice . . . ..
... .. .................................. . .401
.................. ..............

18.7 Références ..........................................................................40 l

B4-SYSTÈMES À BASE DE CONNAISSANCES

CHAPITRE 19 Introduction aux systèmes-experts


19. l Définition . . . ... .
... . ........... .... . . ......................... ....................... 405
19.2 Composition . . ..
...... .. ... . .. 405
............................... ....... . ..............

19.3 La base de connaissances . .405


.................... .............................

19.4 Langages de représentation de connaissances . . . .407


.......... .. ... .
Table des matières XV

19.5 Principe d'une exécution ....................................................408


19.6 Inférence par niveaux . ....... . . ... . . .
.... .. . .. . . .409
. . ..... ..... . . ...... ... . .. ...

19.7 Inférence en profondeur . .. . ..


....... ....... . .. .. .410
... ....... ............ . . ...

19.8 Mode déductif ou chaînage avant . . . .. .... . . . . . . ... .412


.. . . .. . ... . ...... .. .

19.9 Mode régressif ou chaînage arrière . .. . . . . .. . ... ..413 .. . . ..... .. ...... .. . .

19.10 Election d'une règle dans un ensemble de conflit . . . .415 ..........

19.11 Métarègles .. . .. . . . .
.. ..... . . . . . . . ... . . . . .416
......... .......... ... ... . .... .. .... ...... .

19.12 Communication . .. .... . .. .


. . ...... .. .
.... .. . . . . .416
.. ........ . ...... ...... ... . ... ...

19.13 Références . . . . . . .. . ........


.. ..... ..... .. . .. ..... . .. . ..... . ..417
......... . ...... . . ... . .

CHAPITRE 20 Systèmes experts : développement


20. I Principe 419
...............................................................................

20.2 Chaîne de développement minimale .. .. . . .. . .419 .. ....... ..... .. ... .... ..

20.3 Cadrage du développement .. . ........ . . . . . ...... .420


.... ..... . . ........ .... . .

20.4 Acquisition des connaissances . .... ... . .. .. . ....423


.. . .. . . ...... . ..... .. .. ..

20.5 Formalisation des connaissances ... . .. . . .426


.... ...... .... .. ......... ......

20.6 Modes d 'exploitation . . . . . . .. . .


..... . . ..
. . . . ...... .... .428 ... ... ....... . .. ........

20.7 Réalisation du produit . . .. . . ........... . ... . . . .428


..... .. . ..... . ...... ... ..... . . .

20.8 Validation du SE . ... . .


. ........ .. ... . .. . . .. .. ..430
... ...... ...... .... . .. ..... .. .. . .

20.9 Causes des défauts des SE ... .. . ... .... . . . .... . . . .430
... . .. .. .... ....... . . . . . ..

20.10 Maintenance . . . . . .. ..
... . .. ................. .. . . ........ . . .431 ............ . ...... .. ...

20.11 Exercices . .. .....


. ........ . . .. . . . . .. . . . . . ..
. ........ . . . . . . ..432
.... . ... . . .. .... . .. ......

20.12 Indications .... .. . . .


.... . ... .. . . .. .
..... .. . ........... ... . . .. ..432 ... . ... . ....... ..... ..

20.13 Références .. .... . . . . ... ... . . . .


... ......... . . . ..... ........ . . . ... .433 .... ... .. ....... . ..

CHAPITRE 21 Ingéniérie et gestion des connaissances


21.1 Origine . . . ... . .. .. . ... . .. .
....... ...... . . . . . . .. ..
..... .... .435
. . ... .. ..... ...... ..........

21.2 Systèmes de deuxième génération .. . . . .. . .436


...... . ...... .... ...... . . ....

21.3 Modélisations ... . . . . . . .... . .


............. .. .
. . ..... ... ... . . .436 .. ... ...... . ... .......

21.4 Méthodes ... . . . . ........ .


. ... . .. .. . ....... .. .. ... . .. ....... .436
. ......... ...... . .. . . .. . .

21.5 Paradigmes de ! ' Intelligence Artificielle . . . .. ..440 .. ......... . . ........

21.6 Choix des paradigmes . . . . . .. . . ... . ..


.. .... ..... . . . .441
. .... ....... .... ..... ......

21.7 Scénario d 'usage et communication .. . .. ... .. . .. .443 ..... .. . ... .... .... ..

21.8 L' exécutif . . . ... .


.. ..... . . . .. . . . . .. . . . .. .444
... ...... ..... ..... . . ..... . ..... . .. ... .... ..

21.9 Atelier de génie cognitif . . . . .... . . . . .. . . . ...445


. ....... ... . . . .. . . . .... ... .. . ....

21.10 Gestion des connaissances ........ .. . ... .. . ... ... ...445


. .. ...... ..... ..... ... . .

21.11 Vers une société de la connaissance . .... . . . .469 ... ...... .... . .... .......

21.12 Références .. . .. ... . ..


.... .. . . . .. . ..... ..
. .... .
........ . .. . ..469
.. ... . . .. ...... ...... ...

PARTIE C-APPROCHE GRAMMATICALE

CHAPITRE 22 Formalismes grammaticaux


22.1 Introduction .. . . .
.......... . .. . . .. ... .475
... . ... ............. ...... ....... ...... . .. ....

22.2 Rappels sur les grammaires formelles . . . . . .....476 . ...... ...... ...... .. .

22.3 Classification de Chomsky .. .. . ....... ... .. . . .....477


....... .. . ...... ...... . ..

22.4 Formalismes syntaxiques usuels . . . ..481


........... ............. ....... .....
XVI Manuel d'intelligence Artificielle

22.5 Graphes syntaxiques ...........................................................486


22.6 Modélisation par la syntaxe 486
................................................

22.7 Traitements pilotés par la syntaxe ......................................495


22.8 Syntaxes contextuelles et grammaires à 2 niveaux .497
............

22.9 Syntaxes et sémantiques selon ! ' Ecole de Vienne 503


..............

22.10 Programmation grammaticale . 504


........... .................................

22.11 Inférence grammaticale . . . 510


.... .................................... ....... ....

22.12 Exercices ............................................................................511


22.13 Indications ..........................................................................512
22.14 Références ..........................................................................514
22.15 Annexe sur les langues .......................................................518

PARTIE D-FORMALISMES OBJET

CHAPITRE 23 Langages à classes


23.1 Introduction ........................................................................527
23.2 Classification ......................................................................528
23.3 Classement. . . 529
............................. ..................... .....................

23.4 Utilisation des classes & objets . 530


.................................. .......

23.5 Styles de traitement 533


............................................................

23.6 Premiers exemples ; .....................................................534


........

23.7 Les méta-classes 537


.................................................................

23.8 Exception et surcharge . . 539


....................................... ............ ..

23.9 Classes virtuelles et polymorphisme . 540


................ .................

23. I O Classes génériques et conteneurs 543


........................................

23.11 Obj ets imbriqués et obj ets nomades . 543


................................ ..

23.12 Exploitation classique . 544


......................... ...............................

23.13 Exploitation heuristique .544


.....................................................

23.14 Exercices . 545


................................................................ ...........

23.15 Indications . . 545


.................. ................... ...................................

23.16 Références . . 546


........................... ........ .....................................

CHAPITRE 24 Langages à prototypes ...................................................... 549


24. l Origine ................................................................................ 549
24.2 Principe . . .
................ .............................. .... .......................... 549
24.3 Frames, scripts et démons ................................................... 549
24.4 Exemple : JavaScript .
....................................... .................. 550
24.5 Autres langages ........ . ......................................................... 554
24.6 Comparaison des langages à classes et à prototypes .......... 555
24.7 Références .......................................................................... 555

PARTIE E-SYSTÈMES MULTI-AGENTS

CHAPITRE 25 Les acteurs


25. l Introduction ........................................................................ 559
25.2 Intelligence Artificielle Distribuée (1.A.D) ........................ 559
25.3 Le formalisme acteur .......................... ................................ 561
Table des matières XVII

25.4 Modèles d' interaction ......................................................... 563


25.5 Langages acteurs .. .. . . 565
............... . .. . ................. .................. ....

25.6 Logiques d'acteurs ... . . . . . 569


......... . . ...... ..... ......... ........... .... .......

25.7 Apports divers . . . . . . . 572


..... .............. ... ....... ..... ............. . . ..... ... ....

25.8 Références . . . ..
.. ..... .... .... . . . . . .. .. .
........ .... . ... . ... . 574
....... ..... ...........

CHAPITRE 26 Agents et systèmes moiti-agents


26. l Le concept d' agent . . . .. .. . . . . .
... ... . . .... . 579
.... .. . . . ....... ....................

26.2 Formalisation des agents . . . . . . . 581


.. .... . .............. ...... ..................

26.3 Types d' agents . . . . . . .582


.... ............................................ .. ....... .. . .

26.4 Réalisation des agents . .. . . ..


.................... . . .. 588
............... .. .........

26.5 Outils pour la réalisation des agents . 594


........... .......................

26.6 Vers les sytèmes multi-agents . . . . . 597


... .......... ............ ........ .... ..

26.7 Conclusion ..........................................................................598


26.8 Exercices . . . . . ..
.... . ... ... .. .. ... . . . .
....... . ... .
..... . .. . ...... .. . . 599
. .......... .... .

26.9 Références . . ...


... .... ...... . . . . .. .
.......... .. ........ ...... .. . . . ..599
.... ...... .... . .

CHAPITRE 27 Les systèmes moiti-agents


27.1 Présentation . . . . . . 603
. ............................... ..... ............... ........ ......

27.2 Différents types de S.M.A ..................................................606


27.3 Organisations multi-agents . . . . . 607
. . .... ....... ........................ .......

27.4 Méthodes de conception des S.M.A. . .. 608


.................. ....... ......

27.5 Architectures SMA . .. . .


............ .... .. .. 609
....... .. ............ ....... . .......

27.6 La communication dans les SMA ... . . . . 617


................... .. .......... .

27.7 Coopérations . . ... ....


. ..... . . . .
. .. . . 621
....... ..... ..... ............... ..... ...... ....

27.8 Exploitation . .. . .
...... ... . . 623
.. . ............................................... ..... .

27.9 Exemples .. . . . ... . . .623


........ . .... .............. .... ................ . . ............ . ...

27.10 Exercice . . ..
.... . .. . .... ..
............. ..... .... . . . . 628
................. ..... .. .. .... ....

27. l 1 Références ... .. . ... .


........................... . .
..... ... 629
... ........ .... ............

PARTIE F-MÉTA CONNAISSANCES

CHAPITRE 28 Métaconnaissances réactives et proactives


28. l Présentation .. . . . . . . .. .637
.............. .... ............. ........... ........... .... .. ..

28.2 Méta-connaissances réactives et stratégies de résolution ..639 .

28.3 Méta-connaissances proactives .. . 640


.................................. .... .

28.4 Résolution à partir de cas 642


...................................................

28.5 Machines savantes / pensantes / intelligentes .. . 647 ........ . ........ .

28.6 Exercice .. . .. . 649


.............. . .. ...... . ............................................. ...

28.7 Références . . . . 649


...... ............. ... .................... ............................

PARTIE G-QUELQUES GRANDES RÉALISATIONS

CHAPITRE 29 Traitement des langues naturelles


29.1 De la compréhension à la consultation . .
.... ...... .............. .. .. . 653
29.2 Principe ............................................................................... 653
XVIII Manuel d'intelligence Artificielle

29.3 Applications unilingues ...................................................... 654


29.4 De la traduction automatique à la TA0 .............................. 655
29.5 Compilation de connaissances ............................................ 660
29.6 Serveurs vocaux ................................................................. 660
29.7 Exercices ............................................................................ 673
29.8 Références ..........................................................................673

CHAPITRE 30 Autres Systèmes intelligents spécialisés


30. l Aides à la décision .............................................................. 675
30.2 Informatique industrielle .................................................... 677
30.3 Applications didactiques .................................................... 681
30.4 Applications ludiques ......................................................... 685
30.5 Références ................................................................... , ......687

PARTIE H-AU-DELA DE L'IA

CHAPITRE 31 Le projet robotique


31.1 Introduction ........................................................................ 691
31.2 Origines .............................................................................. 692
31.3 Définitions .......................................................................... 693
31.4 Fonctions sensorielles......................................................... 694
31.5 Fonctions exécutives .......................................................... 696
31.6 Fonctions supérieures ......................................................... 697
31.7 Les 3 boucles ...................................................................... 699
31.8 Les 3 défis .......................................................................... 700
31.9 Robots d' essai ou de démonstration ................................... 705
31.10 Robots de service................................................................ 706
31.11 Robots sociaux ................................................................... 709
31.12 Conception de robots .......................................................... 715
31.13 Bionique et Cyborgs ........................................................... 719
31.14 Robotique et éthologie........................................................ 721
31.15 Références .......................................................................... 721

CHAPITRE 32 Vie artificielle


32.1 Vue génétique ..................................................................... 725
32.2 Vue démographique ........................................................... 731
32.3 Vue éthologique ................................................................. 734
32.4 Robotique Collective .......................................................... 735
32.5 Vue ludique ........................................................................ 740
32.6 Lectures .............................................................................. 744

PARTIE 1-CONCLUSION

Index .................................................................................... 749


CHAPITRE 1

INTRODUCTION

1.1 L'INTELLIGENCE
L ' intelligence est ici abordée comme la faculté de bien employer et de bien gérer ses
connaissances. Nous classerons ses manifestations en quatre niveaux :
• Compréhension d 'une situation.

• Résolution de problème dans un cadre connu ; c ' est le cas des « problèmes

d'étudiant » : l 'existence de la solution est quasi certaine, et le cadre de rai­


sonnement est fourni.
• Résolution de problème en général ; c ' est le cas des « problèmes de cher­

cheur » : l 'existence de la solution n' est pas certaine, et le système dans lequel
raisonner est à déterminer parmi les systèmes connus, voire comme système
nouveau.
• Résolution de problème en univers changeant ; c'est le cas des « problèmes

d' homme d'action » : le problème peut évoluer pendant qu 'on le résout en


principe ou en acte, les données sont incomplètes et changeantes, avec des si­
tuations tantôt inédites tantôt prédictibles

Quant la capacité à résoudre des problèmes suffit à offrir au problème considéré


des solutions diverses, l ' intelligence se manifeste aussi dans la « décision », sélection
de la solution la plus opportune pour le problème considéré.

1 .2 LE NATUREL ET L'ARTIFICIEL
Rappelons ici l ' impact de la distinction posée par Herbert Simon entre Sciences du
Naturel et Sciences de l' Artificiel, les premières tournées vers l 'observation de la
nature, les secondes vers la construction de systèmes abstraits 1•
En tant qu ' activité humaine, l ' intelligence relève manifestement des premières.
Dans les secondes, H. Simon met au premier rang les mathématiques, mais aussi
la construction de machines, conçues abstraitement pour un besoin donné avant
d' être réalisées, et dont la réussite tend à prouver une certaine maîtrise du réel,
comme la pertinence des connaissances exploitées.
La dualité présentée n' est pas totalement exclusive, dès lors que les Sciences du
Naturel entendent dépasser le stade de la description et de la classification, pour
acquérir une valeur prédictive . . .

1 Idée inspirée de Hayek, Bastiat etc.


2 Manuel d'Intelligence Artificielle

1 .3 PSYCHOLOGIE COGNITIVE ET INTELLIGENCE ARTIFICIELLE


L 'observation, la modélisation, la compréhension de l ' activité cognitive et de
l ' intelligence sont, en tant que sciences de la nature, du ressort de la psychologie
cognitive, ou plus généralement de ! ' éthologie cognitive.
L ' intelligence artificielle, définie par Margaret Bogden comme l ' art de simuler
l ' intelligence à l'aide d'ordinateurs, relève clairement des sciences de l ' artificiel.
Pour autant qu' elle s ' inspire de la psychologie cognitive et se soucie de réalisme
psychologique, elle peut être un contrepoint expérimental d 'autant plus riche de la
psychologie cognitive (ou de ! 'éthologie cognitive) que l ' expérimentation à l ' aide de
logiciels ne pose pas les problèmes déontologiques que pose l 'expérimentation hu­
maine voire animale.
Psychologie cognitive et intelligence artificielle se présentent donc comme des
disciplines-sœurs.
L ' intelligence artificielle aura elle-même deux versants :
• à dominante psychologique, elle est surtout concernée par le réalisme des si­

mulations de fonctionnement de l ' esprit humain ;


• à dominante informatique, elle recherche un comportement global intelligent,

humain ou non ; outre des raisons purement pratiques, on peut aussi considé­
rer que l ' esprit humain n'a probablement pas le monopole de l ' intelligence, et
gagnerait à être aidé par d' autres formes d ' intelligence.

1 .4 BREF HISTORIQUE DE L'INTELLIGENCE ARTIFICIELLE

1.4.1 Origines
Divers auteurs eurent l ' idée de machines mimant l 'activité mentale humaine, no­
tamment Descartes et ses animaux-machines, ou La Mettrie et son homme-machine
(1748).
La pensée comme logique mécanisable a inspiré d'abord Leibniz, Boole (The
Laws of Thinking, 1854), puis Whitehead et Russel, avec leur Principia Mathematica
(1910).
Plus près de nous, Alan Turing inventa le concept de machine universelle ainsi
qu'un test d' intelligence d'une machine. On doit également des apports importants à
Godet (théorème d" incomplétude, 1930), Tarsky, Herbrand ou Church (théorème
d' indécidabilité, 1934 ; le Lambda-calcul).
Mais l ' intelligence en action ressort également de l 'heuristique, discipline qui
s 'attache à la découverte de solutions. Etudiée sporadiquement depuis l 'Antiquité,
cette logique de la découverte, sous la forme de résolution de problèmes, intéressa
les mathématiciens, longtemps avant les psychologues.
On attribue à Pappus d 'Alexandrie le premier exposé de la méthode analytique
dite « du problème résolu ». Au XVIIIe siècle, Leibniz distingue un art de la décou­
verte (heuristique) d'un art de la justification (logique) et Clairault propose une ap­
proche constructive des mathématiques dans un traité où la plupart des théorèmes
sont établis par le lecteur lui-même, en résolvant des exercices judicieusement com­
posés et organisés. Au XIX0 siècle, des ouvrages tels que 2000 exercices de géomé-
Introduction 3

trie possèdent des chapitres transversaux proposant des méthodes pour traiter certai­
nes classes de problèmes, et ramener par exemple des problèmes d 'optimisation à des
constructions « avec la règle et le compas ». Vers 1965, Polya met la résolution de
problèmes au centre de sa méthode pour l ' enseignement des mathématiques, les
activités constructives lui semblant préférables aux exposés logico-déductifs pour la
découverte de cette discipline.

1 .4.2 Emergence de l'intelligence Artificielle (1938-1 956)


L' invention de calculateurs programmables mutant progressivement en ordinateurs
s ' est déroulée entre 1 938 et 1951 dans trois pays.
Aux USA et en Allemagne, les premières machines ont été résolument numéri­
ques. En Grande-Bretagne, les premières machines furent plutôt semi-numériques :
leur but étant de permettre de décrypter les messages de l ' armée allemande 2 , codés
selon le système Enigma, ces premières machines furent dotées notamment
d 'opérations booléennes.
Tandis que les années 1950 consolidaient l ' approche tout numérique, bientôt
ramifiée en calcul scientifique (calculs intensifs) et en informatique de gestion (cal­
culs extensifs), quelques chercheurs envisageaient autre chose.
En 1954, Alan Turing s ' intéressa à la conception de programmes pouvant j ouer
une fin de partie aux échecs.
En 1956, Grace Hopper fit une première tentative de « calcul littéral automati­
que ». La même année, à l ' initiative de J. McCarthy et M. Minsky, un colloque à
Dartmouth College (New Hampshire) réunit psychologues et informaticiens, dont A.
Newell, H. Simon, C. Shannon, pour débattre de sujets d'intérêt commun, regroupés
sous le nom d' intelligence Artificielle. On s ' accorda sur le fait que les deux discipli­
nes partageaient une même dualité entre « processus » et « représentations ».
Les premiers programmes d ' IA datent également de cette période, avec le dé­
monstrateur de théorème en logique des propositions de Newell, Shaw et Simon (The
logic theorist, 1956) et leur programme de j eu d 'échec (1957).

1 .4.3 Phase algorithmique (1 956-1 980)


Les travaux commencèrent à prendre tournure avec l ' invention du langage Lisp par
John McCarthy (1958-61), qui donnait le moyen d'une programmation fonctionnelle
centrée sur l ' exploitation du symbole plutôt que du nombre.

Ainsi , les Britanniques purent communiquer à l 'état-major soviétique les plans allemands pour la déci­
sive bataille de Koursk.
4 Manuel d'intelligence Artificielle

Informatique
Informatique numérique Informatique symbolique
intensive extensive Intelligence Artificielle

1 1
Calcul scienti- Gestion, Statisti- Ingéniérie des Robotique Vie artificielle
fi que ques connaissances

Fig. 1 . 1 Evolution de l'informatique.

Un peu plus tard se dégagea la notion pragmatique d 'heuristique, issue de


« problèmes durs » rencontrés en recherche opérationnelle. Par opposition aux pro­
cédés absolus de résolution de problème, dont l ' existence n 'est pas touj ours établie
ou dont le coût peut être astronomique, une heuristique est ici un procédé imparfait,
d ' imperfection limitée et de coût raisonnable.
Bien que peu de personnes soient actives dans le domaine, les premières réalisa­
tions se multiplièrent rapidement : j eux, calcul symbolique, recherche d ' itinéraires,
essais de traduction automatique, diagnostic médical . . . Ces premières constituaient
de fait de simples études de faisabilité, exaltantes par les pistes ouvertes, consternan­
tes au regard de la taille et du réalisme des cas traités. En effet, on disposait de pro­
cesseurs lents, utilisant des mémoires réduites, si bien que l 'on ne traitait que de
petits exemples. Surtout, une approche dominée par les procédés rendait les évolu­
tions difficiles : toute évolution même minime d 'un produit de diagnostic médical ou
de traduction automatique supposait de modifier le programme, de ce fait difficile à
stabiliser. Pour la pérennité des applications, il faudrait arriver un jour à des algo­
rithmes simples et robustes, aussi abstraits que possible pour assumer les aspects
génériques des traitements - et seulement eux - les aspects spécifiques étant refoulés
au niveau des données.

1 .4.4 Phase logique (1 970-. . . )


Avec l ' idée de se rapprocher du raisonnement humain, la démonstration automatique
de théorèmes avait déjà été abordée, mais sans grand succès. En 1965, s 'appuyant
sur les travaux d'Herbrand, A. Robinson donne sa règle et sa méthode de résolution,
qui rendent la démonstration automatique mécanisable. Les premiers essais sont peu
encourageants, compte tenu d'une lourde combinatoire. Mais le début des années
1970 voit d'une part l ' émergence de systèmes experts (MYCIN en médecine,
PROSPECTOR en géologie, HEARSA Y-II en compréhension de la parole) travaillant
souvent dans des logiques hétérodoxes, d 'autre part la définition par A. Colmerauer
du langage « de programmation logique » Prolog, qui, s 'appuyant sur la logique
classique, permet de développer de nombreuses applications par démonstrations de
« théorèmes » ad hoc : trouver l ' âge du capitaine devient la démonstration de
l 'existence d'un nombre N tel que « le capitaine a N ans » soit vrai.
La capacité de raisonnement étant assurée par un « moteur d ' inférence », les
données ou connaissances de l ' application sont essentiellement formées de faits
concernant l ' application, et de règles ou implications régissant le système sous étude,
les questions qu 'on peut se poser à son suj et, et les relations entre ces questions et le
système.
Introduction 5

Les applications antérieures sont reprises et étendues avec un succès croissant,


car la nouvelle approche réduit considérablement la distance entre « définir le pro­
blème » et « bâtir la solution ». Elle fournit une plus grande souplesse dans les en­
chaînements, ce qui facilite la mise au point, tandis que le non-déterminisme intro­
duit facilite la découverte de solutions peu évidentes dans les cas difficiles. Le nou­
veau défi est alors d 'aborder des applications réelles nécessitant, du fait de
l ' importance pratique de nombreux détails, une quantité toujours plus grande de
connaissances.

1 .4.5 Phase objet (1 972-. . . )


Défini au Centre de Calcul d'Oslo en 1967, le langage Simula 67 avait introduit en
Génie Logiciel les notions de classe et d 'obj et, facilitant la représentation d 'obj ets,
d' informations, de connaissances pouvant bénéficier d'une classification hiérarchi­
que. Concrètement, des obj ets similaires étant regroupés en une même classe, on
pouvait renseigner les traits communs au niveau de celle-ci, et n 'expliciter au niveau
des obj ets que leurs traits spécifiques. De même, des classes similaires pouvaient être
dérivées d'une même classe-mère regroupant les traits communs, et ne laisser au
niveau des classes-filles que leurs traits spécifiques.
Il s'agissait alors de faciliter la gestion de processus, et notamment de gérer
élégamment dans les simulations temporelles l ' échéancier des processus suspendus.
Mais le concept s' avéra plus fort, en facilitant notamment la rationalisation des en­
trées/sorties, concrétisation de l 'auto-extensibilité de ce langage. Ces idées sont à
l 'origine de langages plus récents, tels que smalltalk, c++, Java, Modula 3, Ada 95...
Dérivé de Lisp et de Simula, smalltalk a été défini en 1972 au Palo Alto Re­
search Center de Xerox, par Alan Kay et l ' équipe d' Adele Goldberg. Les notions de
classes et d' objet ont notamment permis une nouvelle approche des activités graphi­
ques, et leur banalisation dans les environnements de travail, avec la « métaphore du
bureau » qui s'est répandue de là chez Apple, Atari, Amiga, et plus récemment au
fronton des PC.
Cette rénovation des activités graphiques exploitait la mutation dont l ' intelli­
gence Artificielle avait besoin : permettre la richesse des applications en ne conser­
vant dans les algorithmes que les aspects les plus génériques, et en renvoyant aux
données pour tous les détails 3 •
Avec notamment des arguments issus de la Psychologie Cognitive, divers au­
teurs, et notamment Minsky, montrèrent la pertinence pour l ' intelligence Artificielle
de ces concepts de classes et d ' obj ets. Ils permettraient de disposer d'un maximum
d ' informations en codant un minimum de connaissances, dorénavant réparties en
connaissance factuelles et connaissances structurelles, mais aussi en termes de
connaissances typiques et d' exceptions.

Sous l ' influence notamment de Tektronix, le tracé d'un dessin avait longtemps été perçu comme une
opération globale dont la structure détaillée reflétait celle du dessin ; changer le dessin , c'était alors
changer le programme de dessin. La nouvelle tendance supposait une opération de traçage unique, abs­
traite, s'appuyant sur quelques opérations de traçage élémentaire, le tracé à faire étant piloté par une
structure de données (arbre) décrivant les singularités du tracé : pour changer le dessin , il suffit mainte­
nant de changer son arbre descriptif.
6 Manuel d'intelligence Artificielle

1 .4.6 Phase Acteurs & Agents (1 977- . . . )


Avec l ' intention de modéliser des systèmes sociaux, Hewitt a défini en 1977 des
acteurs, en tant qu' entités réactives communiquant par messages. A la réception d'un
message, l'acteur réagit par émission de messages vers d 'autres acteurs, en fonction
de la forme et du contenu du message. Ce modèle a prouvé son efficacité en matière
de planification, et dans le système d 'exploitation CHORUS, de l ' INRIA. A la suite
du projet SCEPTRE, on parle maintenant davantage d 'agents, communiquant par
l ' intermédiaire d'agences ou par le partage de connaissances.
Ces modèles permettent d ' organiser des applications complexes en s ' inspirant
par exemple d'entreprises, et a même inspiré à Minsky un modèle détaillé pour le
fonctionnement du cerveau.
En effet :
• un acteur peut déléguer une tâche à un autre,

• dans un style cartésien, un acteur peut analyser un problème, déléguer à

d' autres la résolution des sous-problèmes identifiés, et résoudre le problème


initial par synthèse des sous-solutions obtenues en retour ; les acteurs ainsi
coordonnés peuvent procéder de même ;
• enfin un acteur peut, pour un problème de type donné, mettre en concurrence

des acteurs spécialisés mettant en œuvre diverses méthodes de résolution im­


parfaites, dont il évaluera et interclassera les solutions, constituant ainsi un ré­
solveur à compétence étendue et performances élevées.

1 .4. 7 Intelligence Artificielle Distribuée (1 985-. . . )


Pour ceux qui s ' intéressent au comment, acteurs et agents fournissent des modèles
d'une intelligence artificielle faisant coopérer des entités autonomes, ayant chacune
ses propres connaissances, exécutables simultanément sur divers processeurs ou
sites.

1 .4.8 Vie Artificielle (1 995-. . . )


Avec ses acteurs, Hewitt ne désespérait pas de modéliser des sociétés humaines. Sans
aller j usque-là, on a déj à simulé ces dernières années des sociétés d ' animaux sociaux
4
et des sociétés de robots , dans l 'espoir de caractériser une intelligence collective
portant ces sociétés au-delà de la somme des intelligences de leurs membres.

1 .5 POSITIONNEMENT DE L'INTELLIGENCE ARTIFICIELLE

1.5.1 Objectifs
L'intelligence Artificielle (IA) limite parfois son obj ectif à l ' interprétation d'une
situation ou d'un texte. Plus souvent, il s'agit d'une activité constructive, fonction
d'une situation et d'un obj ectif, de type « résolution de problèmes » :

4 Agissant de concert dans un atelier, pour l 'aménagement d'une station sur Mars . . .
Introduction 7

• problèmes de synthèse comme la conception d'un obj et, défini en termes


d'objectifs et de contraintes,
• problèmes de planification, en vue d 'atteindre un obj ectif en combinant dans
le temps divers moyens d ' actions soumis à des contraintes,
• problèmes de diagnostic (médical, financier, technique . . . ) visant à compren­
dre les causes d'une situation d'après divers symptômes, et à définir comment
y remédier (en termes d ' aide à la décision voire de planification),
• problèmes d 'aide à la décision, visant à éclairer et déterminer des choix en
fonction d 'une situation, d ' obj ectifs et de contraintes.

1 .5.2 IA et disciplines connexes


L 'intelligence Artificielle se situe d'abord entre la Psychologie Cognitive, dont elle
s ' inspire quant aux buts, et ! ' Informatique (ou plus précisément le Génie Logiciel)
quant aux moyens matériels.
L 'intelligence Artificielle entretient aussi des relations importantes avec la Lin­
guistique soit officiellement lorsqu' elle s 'occupe de Traitement des Langues Naturel­
les, soit de façon plus banale lorsqu 'il s ' agit d'interaction avec l ' utilisateur sous
forme verbale, par exemple dans les didacticiels.
L 'intelligence Artificielle enfin puise souvent dans les Mathématiques Discrètes
les modèles dont elle a besoin.

Linguistique
Psychologie Intelligence Génie Logiciel
Psychologie Cognitive Artificielle Informatique
Mathématiques Discrètes

Fig. 1.2 Intelligence Artificielle et disciplines voisines.

1 .5.3 Niveaux symbolique et sub-symbolique


Par ailleurs, l 'intelligence Artificielle se situe explicitement au niveau du traitement
du symbole, ce qui la distingue des activités sub-symboliques comme la Reconnais­
sance de Formes.

niveaux
Psychologie Intelligence Artificielle Informatique
symbolique
subsymbolique Neurosciences Reconnaissance de Formes Electronique digitale

Fig. 1.3 Niveaux symbolique et subsymbolique.


8 Manuel d'intelligence Artificielle

1 .6 LIMITES DE L 'INTELLIGENCE ARTIFICIELLE

1.6. 1 Limites physiques : l'explosion combinatoire


Nous verrons par la suite que, faute de mieux, on est souvent amené à se rabattre sur
des énumérations extrêmement lourdes en termes de temps et/ou de mémoire.
Soit C(n) la complexité d'un processus, expres­
sion caractéristique des ressources nécessaires en Tableau 1 . 1 Explosion
combinatoire (complexité
fonction d 'un paramètre n directeur de l ' application.
factorielle) .
L ' informatique considère la situation comme accep­
table si C(n) est un polynôme de faible degré, et au­ unité valeur
delà parle d'explosion combinatoire. facteur n !
Considérons en effet le cas d'un représentant de Milliseconde 1 ! 1
commerce, qui veut passer par n villes en minimisant 2 ! 2
la distance totale parcourue. Enumérer les n! parcours 3 ! 6
possibles pour les évaluer prend un temps en n ! . 4 ! 24
Cette expression élégante e t discrète cache u n phé­ 5 ! 1 20
nomène épouvantable. 6 ! 720
Supposons qu ' i l faille une milliseconde pour seconde 1 000
traiter un cas : pour n 2: 7, passer d'une valeur de n à 7! 5040
la suivante augmente la durée d'un ordre de grandeur, 8! 40320
bientôt de deux . . . et une durée de traitement d'un minute 60000
siècle est vite atteinte (tab. 1.1). 9! 362880
On peut souvent gagner du temps en sacrifiant de heure 3600000
l 'espace, mais une remarque similaire s'appliquerait au 10 ! 3628800
glissement kilooctet/mégaoctet/gigaoctet. . . Il ! 399 1 6800
A ce phénomène s ' opposent deux « progrès ». jour 86400000
Une réponse technologique partielle est donnée par 12 ! 4,79E+08
l ' accélération des processeurs - d'un facteur 1000 en semaine 6,05E+08
20 ans, soit 3 ordres de grandeur - et l 'abaissement 13 ! 6,23E+09
du coût des mémoires. Une réponse plus spécifique année 3, 1 6E+ l 0
mais plus forte est donnée au plan des méthodes par 14 ! 8,72E+ I O
la découverte d ' année en année d'heuristiques tou­ 15 ! l ,3 1 E+ l 2
jours plus efficientes, procédés approchés de com­ siècle 3, 1 6E+ l 2
plexité et de qualité raisonnables. 16 ! 2,09E+ l 3
I l s'agit d'une course sans fin : si le temps millénaire 3, 1 6E+ l 3
d 'exécution devient acceptable à n donné, pourquoi 17 ! 3,56E+ l 4
ne pas aborder des cas « à peine » plus complexes, 18 ! 6,4E+ l 5
mais nécessairement plus voraces ? million d'années 3, 1 6E+ l 6
19 ! l ,22E+ l 7
1 .6.2 Limites cognitives 20 ! 2,43 E+ 1 8
milliard d'années 3, 1 6E+ l 9
Pour développer des produits reproduisant l 'expertise
21 ! 5, 1 1 E+ l 9
humaine, un des problèmes est de définir celle-ci
âge de la Terre l ,44E+20
dans le domaine visé. En supposant que les personnes
22 ! l , 1 2E+2 1
concernées soient d'accord, une première difficulté
Introduction 9

concerne la verbalisation de cette expertise : ceux qui savent ne savent pas touj ours
le dire, ceux qui peuvent et savent dire n ' en savent pas toujours assez. De plus, toute
profession partage des non-dits à expliciter. Une seconde difficulté concerne la
transcription de cette expertise verbalisée dans le fonnalisme retenu, plus ou moins
adéquat.
Plus gravement, après toute une carrière dans le domaine, Pitrat se demandait si
l 'homme est assez intelligent pour réussir ce proj et d' Intelligence Artificielle.

1 .7 RÉFÉRENCE
Collectif IRIT, 2002, L 'Intelligence Artificielle, mais enfin, de quoi s 'agit-il ?, Les
livrets du Service Culture UPS, n° 3, disponible sur [Link]/livret-IA
A-Approche
algorithmique
«La procédure est la forme la plus achevée de connaissance. »
Terry Winograd
Cette partie, d' inspiration la plus ancienne, repose notamment sur des algorithmes
énumérant des solutions potentielles, qui constituent un niveau 0 de l 'intelligence
Artificielle.
Les représentations cognitives exploitées seront souvent à base de graphes, et
généralement se ramèneront en dernière analyse au concept de liste, ou suite finie de
valeurs :
• si les valeurs sont élémentaires, une liste pourra représenter un vecteur, une

phrase, un itinéraire ;
• si une valeur peut être une liste, les listes de listes représenteront parfois des

tables et des matrices, mais plus souvent des listes associatives décrivant des
répertoires, des dictionnaires, des plans d' action, des arbres ou des graphes.

Dans cette approche, les traitements relèvent le plus souvent de la programma­


tion fonctionnelle.
CHAPITRE 2

ÉNUMERATION ET COMPLEXITÉ

2. 1 RECHERCHE DE SOLUTIONS PAR ÉNUMÉRATION


C'est le niveau 0 de l ' intelligence Artificielle, qui tente de transformer la perfor­
mance des machines en (apparence de) compétence.
Très généralement, on part du domaine discret défini D auquel devraient appar­
tenir toutes les solutions du problème, en un sens assez lâche, et on s ' intéresse aux
éléments d E D qui, satisfaisant une certaine contrainte c, sont effectivement des solu­
tions.
EXEMPLE. Problème du sac à dos 1.
Un excursionniste prépare son sac, dans lequel il souhaiterait emporter différents
objets. Tout ensemble de ces obj ets constitue une solution potentielle, mais seuls les
(sous-)ensembles occupant un volume suffisamment petit pour entrer dans le sac
constitue une solution (chargement) admissible. •
L 'approche dite produire et filtrer (generate and test) consiste simplement à
engendrer/énumérer chaque élément de D susceptible d 'être une solution (solution
potentielle) puis à vérifier s ' il l ' est effectivement (solution admissible).

générateur solutions filtre solutions


�---� potentielles admissibles

Fig. 2.1 Recherche par énumération brute.

Pour cela, on distingue un générateur, qui énumère et transmet les solutions


potentielles une à une, et un filtre, qui décide pour chacune s ' il faut la retenir.
Ce processus peut être très long, mais en le faisant fonctionner dans un style
producteur/consommateur, et en éditant chaque solution admissible, le processus
devient interruptible.
Si la contrainte est une conjonction de conditions plus simples, le filtre peut lui­
même être formé de plusieurs filtres consécutifs, chacun ne transmettant que les
solutions reçues qui satisfont sa condition.
On peut aussi alléger le filtrage par une génération plus sélective, mieux adaptée
au problème.

2.2 COMPLEXITÉ
(Voir Froidevaux 1993, ch. 2 ; Gondran 1985, ch. 10).
14 A-Approche algorithmique

2.2. 1 Mesures de complexité


Très généralement, il s ' agit de fonctions d'estimation des ressources nécessaires à un
procédé de traitement en fonction de ses paramètres directeurs.
Le plus souvent, il s ' agit d'une durée d 'exécution ou d'une capacité de mé­
moire, vive (pour le traitement) ou secondaire (pour les archivages).
La complexité d'un processus peut souvent être définie assez tôt ; elle permet
d 'apprécier si ce processus est
• plus raisonnable qu 'un autre,

• assez raisonnable pour être mené à terme,

• trop monstrueux, auquel cas il importe de trouver mieux.

2.2.2 Allures et encadrement des complexités


Il est souvent intéressant de pouvoir juger très tôt d'une complexité dans un proces­
sus d' analyse, par exemple pour constater qu' on fait fausse route. C ' est dire qu'on
jugera de la complexité longtemps avant de connaître divers détails technologiques
concernant la réalisation : c ' est pourquoi on s ' intéresse au comportement général, à
l 'allure des fonctions de complexité : on ne souhaite pas distinguer les fonctions ne
différant que par une constante additive, une constante multiplicative, ou des termes
relativement négligeables au-delà d 'un certain rang.
On suppose les complexités mesurées par des fonctions 1'1-+Jt. Soit f une telle
fonction.
On dira que f « ne croît pas plus vite que g » , noté f :;< g, ssi :

f :;< g = 3 n0 , k \in :2:: n0 f(n) � k·g(n) (2.1)


Cette relation est un préordre entre fonctions. On dira que f « croît comme g » ,
noté f � g, si f et g satisfont l ' équivalence associée, qui dénbte des comportements
asymptotiques similaires. On a alors :

(2.2)

Plus généralement, si on a h x f x g, f sera dite minorée par h, qui rendra compte


de f « au mieux » et maj orée par g, qui rendra compte de f « au pire » , le comporte­
ment de f étant bien cerné si h � g.
De proche en proche on aura :

\ik > 0, k � 1 (2.3)


f :;< fi', g :;< g* --+ f + g :;< max(fl', g*) :;< fi' + g* (2.4)

f :;< fi' g :;< g* --+ f . g :;< fi' . g* (2.5)


'
Sur cette base, en raisonnant sur des n « suffisamment élevés » on montre que :
k k)
i
• n + k � n , k
i . ni � ni ni + n � n max(j,
k
• si P(n) est un polynô �e de degré k, alors P(n) � n .

Par exemple, une fonction f(n) = 7n2 - 5n + 3 sera dite en n2, car on aura finale­
ment f(n) � n2•
Enumération et complexité 15

Classes de complexité
La relation <:::: structure en classes les fonctions considérées, classes qu 'on désignera
par O(r), où r est le représentant le plus simple possible du comportement asymptoti­
que à l ' infini.
Le tableau 2 . 1 indique quelques-unes de ces classes, avec des applications dont
elles représentent classiquement la durée.
k
De 0( 1 ) à O(n ), ces classes sont dites P : c'est l 'ensemble des classes polynô­
miales, correspondant aux degrés faibles à des processus praticables.
'
En Intelligence Artificielle, on peut aussi rencontrer des fonctions 0(2"), 0(2" ),
O(n ! ) ou O(n"). Elles sont souvent la marque d'une explosion combinatoire, et en ce
sens des procédés voraces en temps et/ou en espace.

Tableau 2.1 Quelques classes de complexité.


classe fonctions asymptotiquement durée de
0( 1 ) constantes opération unitaire
O( log(n)) logarithmiques recherche di-, trichotomique
O (n ) linéaires durée d'impression
O(n·log(n)) quasi linéaire tris
O (n') quadratique tris simples, sommes de matrices
O( n 3 ) cubique produit de matrices
O ( n k) polynômiale de degré k ...
O(k") exponentielles
O (k P(n) ) expolynômiales
O( n ! ) factorielles problème du voyageur de commerce

EXEMPLE.
Considérons le cas du représentant de commerce devant parcourir n villes de façon à
minimiser la distance totale parcourue. En supposant qu 'il s ' interdit de passer deux
fois dans la même ville, il peut choisir l 'une des n villes comme première ville, l ' une
des n- 1 villes restantes comme deuxième ville, l 'une des n-2 villes restantes comme
troisième ville . . . d'où n! parcours possibles ; les évaluer prend un temps en n ! , ex­
pression dont les effets dévastateurs ont été soulignés tableau 1 . 1 . •

2.2.3 Problèmes P
Edmons a posé en 1 965 qu 'on parlerait de problème de type P si on connaît pour le
résoudre un processus n de complexité P(olynômiale).
Ce processus peut être bâti directement, ou par la composition d'un nombre fixe
de processus de complexité P.

2.2.4 Problèmes NP
On appelle algorithme non déterministe un algorithme comportant des étapes de
choix.
On parle d'un algorithme de type NP si c'est un algorithme non déterministe qui
se ramène à un algorithme de classe P quand on fait systématiquement le bon choix.
16 A-Approche algorithmique

L 'algorithme déterministe apparenté reposant sur l 'examen de tous les choix


possibles sera parfois polynômial, mais le plus souvent de complexité exponentielle
ou factorielle.
On parlera de pl'ohlème de type NP si le problème n 'admet pas de processus P
connu pour le résoudre. Savoir si un problème NP est condamné définitivement à des
solutions très onéreuses se ramène maintenant à « Peut-on montrer que ce problème
NP ne possède aucun algorithme P, connu ou non ? ».

Réductibilité
Un problème Q sera réductible à un problème P s ' i l existe une fonction g de com­
plexité polynômiale telle que pour toute solution x de P, g(x) soit solution de Q. Et
on dira P et Q faiblement équivalents s' ils sont mutuellement réductibles. Si on dé­
couvre un jour qu 'un problème présumé NP possède en fait un processus résolvant
de complexité P, alors tous les problèmes qui lui sont réductibles bénéficieront du
même progrès. Ainsi, L. Khachian a montré en 1 979 que les problèmes de program­
mation linéaire, qu'on croyait jusque-là de type NP, étaient en fait de type P . . .

Problèmes NP-durs
On dira que P est un problème NP-dur si tout problème Q de NP est réductible à P. Il
suffirait donc de s ' intéresser aux problèmes NP-durs pour résoudre les problèmes
NP, à condition de ne pas renvoyer les problèmes NP à des problèmes plus com­
plexes qu' eux . . .

Problèmes NP-complets
On dira que P est un problème NP-complet s ' i l est NP-dur et NP. Tous les problèmes
NP-complets sont faiblement équivalents entre eux. Et il suffirait qu 'un problème
NP-complet soit de classe P pour que tous le soient.
Un grand nombre de problèmes connus, tels que le problème du voyageur de
commerce, ont été caractérisés comme NP-complets, ce qui veut dire que les solu­
tions connues sont onéreuses à établir, avec une faible probabilité d'amélioration
drastique.

De plus en plus complexe


Les travaux récents font envisager d' autres classifications au-delà de NP, certains
processus complexes n 'étant même pas NP. On peut s ' en faire une idée en considé­
rant la hiérarchie :
P ç NP ç Pspace ç Exptime ç Expspace c Décidable c RecEnum

• Pspace désigne des processus demandant un espace polynômial,

• Exptime désigne les processus demandant un temps exponentiel,

• Expspace désigne des processus demandant un espace exponentiel,

• Décidable désigne les processus décidables (ou de décision calculable),

• RecEnum désigne les processus génératifs dits récursivement énumérables.

(« Computation » dans Wikipedia).


Enumération et complexité 17

2.2.5 Heuristiques
Soit un problème, qu' on sait résoudre par
un processus absolu n trop complexe (trop
onéreux). Soit maintenant H un processus �
Q
0

Q
approché, moins complexe, fournissant -
seulement des solutions quasi optimales : H
sera dit heuristique pour le problème. En
cas de multiplicité, les heuristiques peuvent
être ordonnées entre elles sur le double
critère de la complexité ou coût d 'une part,
de la qualité des résultats obtenus d 'autre
part. Les heuristiques dominantes seront les
processus réalistes à employer, représentant
les meilleurs compromis coût/qualité. Les
heuristiques dominées pourront être négli­
gées en première analyse, sauf circonstances
particulières mettant en échec des prédic­ n312 2" n !
tions trop générales. Complexité>>

Fig. 2.2 Comparaison d 'heuristiques.

2.3 ESPACE DE RECHERCHE

2.3.1 Enumération brute


Très coûteuse, elle consiste à former tous les n-uples possibles à partir des n varia­
bles du problème. Si la i-ème variable a pour domaine D;, l ' énumération balaie
D 1 ®D2® . . . ®D11 en produisant J D d · J D2l" I - . . J · JD11l n-uples successifs, soit, pour 20 va­
2
riables à 1 0 valeurs, 1 0 0 cas (i.e. cent milliards de milliards).
La taille de l ' espace de recherche intervient ainsi dans l ' appréciation des com­
plexités, car le nombre de cas peut commander aussi bien la durée d 'exécution que la
taille de tableaux ou de structures à gérer.
Réduire l 'espace de recherche sera donc souvent un moyen de réduire la com­
plexité
EXEMPLE.
Considérons le problème des nombres pythagoriques : trouver les entiers naturels p,
q, r inférieurs ou égaux à n tels que p2 = q2 + r2•
On peut énumérer les triplets (p, q, r) possibles, et tester sur chacun la propriété. A
priori, il y a n 3 cas à tester : on dira l 'espace de recherche en n 3 • •

2.3.2 Réduction du nombre de dimensions de l'espace de recherche

Restriction aux variables indépendantes


Si le problème comporte n variables et p équations, on peut généralement se ramener
à n - p variables indépendantes.
18 A-Approche algorithmique

EXEMPLE.
Pour le problème des nombres pythagoriques, il y a 3 variables et une équation : on
peut se contenter d 'énumérer des couples :
• soit les couples (q, r) possibles, en testant si q2 + r2 est un carré parfait.

• soit les couples (p, q) possibles, en testant si p2 - q2 est un carré parfait.

Il n ' y a plus que n2 cas à tester, avec un test plus lourd. •


Le domaine à traiter sera alors d 'autant plus petit qu 'on gardera comme indé­
pendantes les variables formant le moins de combinaisons distinctes.

Variables aux marges


Ces variables représentent la marge apparaissant dans la satisfaction d ' une
contrainte. Introduire de telles variables transforme ces contraintes en équations, ce
qui peut permettre de réduire le nombre de variables à considérer.
EXEMPLE.
Soit à maximiser 4x + 3y + 7z, avec 0 :S x, y, z :S 1 00 et 4x + 3y + 2z :S 200.
Posons 4x + 3y + 2z + u = 200, où u représente la marge de la contrainte globale. Il
s ' agit maintenant d 'optimiser 4x + 3y + 7z = 5z + 200 u. Cette dernière forme est
-

maximale pour u = 0 et z maximal, soit z = 1 OO (pour u = x = y = 0).


En ayant ramené la recherche sur (x, y, z) à une recherche sur (z, u), on trouve fina­
lement que x = 0, y = 0, z = 1 OO fournit un optimum 4x + 3y + 7z = 700, avec 4x +
3y + 2z :S 200 . •

Normalisations
Certains problèmes peuvent se régler « à une homothétie près » , et il peut arriver
qu 'un système en (X, Y, Z, T, U) où U joue un rôle de paramètre directeur, puisse se
ramener à un problème en (x, y, z, t), où x = XIU, y = YIU, z = ZIU, t = TIU.

2.3.3 Restriction par symétrie


Les symétries constatées permettent de réduire l ' énumération sans perte de solutions.
EXEMPLE.
Pour le problème des nombres pythagoriques, si on souhaite tester les couples (q, r),
on ne perd aucune solution en s ' imposant q � r : il suffit de noter qu' à toute solution
(q, r) correspond une solution (r, q) . Enumérer les couples (q, r) tels que r :S q :S n se
réduit alors à environ n2/2 cas à tester. •

2.3.4 Restriction par exploitation des contraintes


Les contraintes du problème (ou certaines de leurs préconditions) sont exploitées
pour réduire a priori l 'espace à explorer sans perte de solutions.
EXEMPLE.
Dans le problème des nombres pythagoriques, si nous énumérons les couples (p, q)
possibles, on doit avoir p2 - q2 positif, et donc q :S p :S n : il ne reste ainsi que n2/2
cas à tester. En se restreignant de plus aux r :S q, on recherche des triplets (p, q, r) qui
satisfont n2 � p2 = q2 + r2 avec r2 :S q2, soit 2r2 :S p2 :S 2 q2, et r :S p/.Y2 :Sq.
Enumération et complexité 19

O n peut donc s e contenter :


• d' énumérer les couples (p, q) tels que 0, 7p < q -S. p -S. n, soit environ 0, 15n2
cas où on testera si p2-q2 est un carré parfait r2 ;
• d' énumérer les couples (p, r) tels que p -S. n et 0 < r < 0, 7lp, pour lesquels on
testera si p2 - r2 un carré parfait : soit environ 0, 35n2 cas, approche moins ef­
ficace que la précédente. •

2.4 RECHERCHE DE SOLUTIONS OPTIMALES OU DOMINANTES


On suppose que le problème étudié possède des solutions de principe connues, défi­
nie à l'aide de n paramètres, à valeurs discrètes, et on désirerait connaître la meil­
leure solution effective.
EXEMPLE. Problème du sac à dos 2.
Un excursionniste prépare un sac, de capacité connue, dans lequel il souhaiterait
emporter différents obj ets ayant chacun son utilité, mais qu 'il ne peut tous emmener.
Comment peut-il former un chargement du sac d ' utilité maximale ? •

2.4. 1 Approche « produire, filtrer, trier »


Dans l ' approche produire et filtrer, on a d 'abord distingué un générateur, qui énu­
mère les solutions potentielles, et unfiltre, qui décide celles qu' on peut retenir.
Si l'on dispose de critères permettant de définir des solutions optimales ou do­
minantes parmi les solutions admissibles, celles-ci peuvent ensuite être évaluées.
Pour cela, le filtre sera suivi d ' un trieur, qui évalue chaque solution admissible,
puis met à jour en conséquence l ' ensemble des solutions les plus intéressantes obte­
nues jusque-là. Par exemple, pour le problème du sac à dos, on triera par utilité dé­
croissante les diverses solutions admissibles en termes de volume, de poids . . .

générateur solutions filtre solutions trieur solutions


�---�
potentielles admissibles dominantes

Fig. 2.3 Recherche optimale par énumération brute.

Ce procédé s'étend facilement à une évaluation multi-critère, dès lors que l ' on
conserve à tout moment l ' ensemble des solutions dominantes parmi celles déj à ren­
contrées.
La communication entre générateur, filtre(s) et trieur permet un certain parallé­
lisme entre les divers processus.
On peut ainsi obtenir des réponses de qualité croissante au cours de
l ' énumération, et rendre le processus de recherche interruptible si, après la première
solution rencontrée, le trieur édite toute solution reçue au moins aussi bonne que la
meilleure déjà connue.
Dans de nombreux problèmes pratiques, où l ' on cherche les solutions les plus
intéressantes soumises à divers impératifs,
• les impératifs fixeront les contraintes d 'admissibilité (filtrage) ;
• au-delà, les souhaits serviront de base au classement par ordre d'intérêt (tri final).
20 A-Approche algorithmique

2.4.2 Exemples
Conception d'une caisse en carton
On veut définir une caisse en carton devant contenir n = p · q · r boîtes de l dm l dm ·

·l dm, à découper dans une feuille de L · W dm. On retient le dessin de la figure 2.4.

I"<
� min( P,Q)/2 ..

...

... p .... ... Q .... ... p .... ... Q .... 1 /2

Fig. 2.4 Découpe d'une caisse en carton : développement.

On se propose donc de maximiser n= p·q·r, soumis aux contraintes :


2p+2q+ Yi S L (1)
r+ min(p, q) S W (2)
Une énumération du style
pour p de 1 à (L -1)12 faire
pour q de 1 à( L -1)12 faire
pour r de 1 à Wfaire ;; génération
si 2p+2q+ Yi S l alors ;;filtrage
si r+ min(p, q) S w alors ;;
écrire p, q, r, '> > ', p·q·r
examine L2· W/4 combinaisons.
Compte tenu de la symétrie en p et q et de la monotonie de n en p, q, r, on pour­
ra se limiter à :
pour p de L/4 à (L-1)/2faire
q+- (L-2p-l)/2
r +- W-q
trier (p·q·r, p, q, r)

Soit, pour une feuille de l ,2m sur 0,8 m : L= l 2, W=8, et 3 combinaisons (au
lieu de 288).

p q r n= p ·q·r
3 2 6 36
4 1 7 28
5 0 8 0
Fig. 2.5 Découpe d'une caisse en carton : principaux cas.
Enumération et complexité 21

Optimisation sous contraintes linéaires


On se propose de chercher le maximum d'une fonction f(w, x, y, z), où w, x, y, z
sont des variables entières comprises entre 0 et 1 OO inclus, et soumises de plus aux
contraintes :
w + 3x + 5y s 240 (3)
x + y + z s90 (4)
d'où on tire successivement :
(3) (4) finalement
y 5 / 00 y 5 48 y 5 90 y 548
X 5 1 00 X 580 - 5y/3 X 590 - y x 580 - 5y/3
lV 5 1 00 w 5240 - 5y - 3x 111 5111 i11 (100, 240 - Sy - 3x)
z 5 1 00 z 5 90 - y - x z 590 - y - x

Le programme brut :
pour w de 0 à 1 OO faire
pour x de 0 à 1 OO faire
pour y de 0 à 1 OO faire
pour z de 0 à 1 OO faire
si c3 et c4 alors . . .
devient :
pour y de 0 à 48 faire
pour x de 0 à 80 - 5y/3 faire
pour w de 0 à min( 1 OO, 240 - 5y - 3x) faire
pour z de 0 à 90 - y -xfaire

ce qui gagne un facteur 5 sur les seuls couples (x, y) et élimine les tests.

Escalade
Il s ' agit d'un processsus de génération cherchant à s ' inspirer directement de
l ' obj ectif poursuivi.
Soit à trouver le meilleur n-uple parmi les cas possibles, au sens d'une fonction
f représentant un gain, un objectif. . . La méthode d 'escalade consiste, partant d 'un x
admissible, à répéter « si y est le voisin admissible de x maximisant l 'amélioration
d = f(y)-f(x), et si d>O, considérer y comme nouvel x ».
Elle atteint au moins un sommet ou optimum local, et le maximum de la fonc­
tion f si f est convexe sur le domaine considéré.

2.5 EXERCICES

2.5.1 Suite de Fibonacci


On considère la suite de Fibonacci : f(n) ={ n=O � 0 ; n= l � 1 ; f(n- l )+f(n-2) } .
22 A-Approche algorithmique

Montrer qu 'à cette définition correspond directement un algorithme de coût


exponentiel. Définir un algorithme équivalent de coût polynômial.

2.5.2 Déterminants
Montrer que le calcul du déterminant d'une matrice n·n est en O(n ! )

2.5.3 Maison
Un particulier consulte un architecte pour la construction d'une maison. Plusieurs
options lui sont offertes : maison de plain-pied ou à Ull' étage, un patio, une terrasse,
un garage. Ses goûts et le budget imposent :
• un étage ou une terrasse, mais pas les deux ;

• un garage ou un patio, mais pas les deux ;

• s ' i l y a un patio, la maison doit être de plain-pied et/ou avoir une terrasse ;

• si la maison est de plain-pied ou a une terrasse, il ne faut pas de garage.

Une telle maison est-elle possible ?


Montrer que pour différentes conditions bâties sur n propriétés élémentaires, la
complexité de l ' évaluation est exponentielle.

2.5.4 Repas diététiques


On recherche les triplets (i, j, k) caractérisant des repas admissibles constitués d'une
entrée e; E E, d'un plat Pi E P et d'un dessert dk E D.
Un repas sera admissible si les quantités totales de lipides, protéines et glucides
le concernant sont chacune inférieure aux seuils fixés correspondants. Pour cela, on
supposera connue la teneur de chacun des mets en termes de lipides, protéines et
glucides.

2.5.5 Le mot le plus long


Ce jeu oppose deux joueurs, pour lesquels on tire 9 lettres au hasard parmi 26, une
lettre pouvant être tirée plusieurs fois. Le joueur dont c ' est le tour annonce le mot le
plus long qu 'il peut former avec ces lettres, et son adversaire fait de même. Chacun
marque autant de points qu'il a su employer de lettres, si son mot est licite et au
moins aussi long que celui de son adversaire.
On s ' intéresse à un logiciel d'aide aux arbitres, qui pour un tirage donné devrait
produire la meilleure (resp. les meilleures) solution(s) possible(s), avec leurs éven­
tuels anagrammes. Ce logiciel explorerait un arbre des possibles, partant du tirage à
traiter.
Pour des tirages à 9 lettres, combien y a-t-il de tirages possibles ? Il n'y a pas en
français de mots formés uniquement de consonnes, on invalide donc les tirages for­
més uniquement de consonnes. Cela simplifie-t-il beaucoup le problème ?
On décide dans le logiciel de remplacer chaque tirage t par son « profil » p(t)
formé des mêmes lettres mises par ordre alphabétique.
Montrer que :
• les tirages de même profil sont équivalents,

• un mot et ses anagrammes ont même profil.


Enumération et complexité 23

Vérifier que le nombre de profils possibles est ici f(9, 26 ), défini par

r ( 1 , n) = n, et r (k, n)= r (k- 1 , n) + r (k, n- 1 ) ;


et que par conséquent r (k, n) = C(k, n+k- 1 ). Le nombre de cas du problème est-il
largement réduit ?

2.5.6 Sac à dos


L' excursionniste prépare son sac. Il doit définir la liste des obj ets, tous différents,
qu 'il va prendre.
Montrer que pour n obj ets, il y a 2" choix possibles, ou solutions potentielles.
A chacun de ces obj ets sont attachés (a) un volume (b) un poids (c) une utilité.

objet a b c d e f g
volume 5 4 5 4 1 2 3
poids 4 3 3 5 3 2 1
utilité 6 5 7 8 9 IO 8

• Dans le cas ci-dessus à 7 obj ets, on s ' intéresse d'abord aux solutions ayant un
volume total de 20 au plus. Montrer que les plus utiles comportent 5 ou 6 ob­
jets, mais qu' i l n ' y a pas de solution à 7 obj ets 5 • Montrer qu 'il existe une solu­
tion à 6 objets d'utilité 48.
• On s ' intéresse ensuite aux solutions ayant un volume total de 20 au plus ET
un poids total de 1 7 au plus. Montrer qu' i l existe une solution d'utilité 47.

2.6 INDICATIONS

Pour 2.5. 1
Voir (Frécon 2002).

Pour 2.5.2
Raisonner par récurrence, en définissant un déterminant à partir de ses mineurs.

Pour 2.5.3
eVt
Introduisons des variables propositionnelles : e po4r un étage, g pour ..., e v-, t
un garage, p pour un patio, t pour la terrasse. La spécification est gVp
transcrite sous forme d'une conj onction de clauses. -, g v-, p
De deux choses l'une : ou la maison est de plain-pied (-, e) ou elle a -, p v-, e v t
un étage (e). e v -, g
-, e satisfait les clauses en -, e, et dans les autres neutralise e. -, t v -, g

5 Et qu'il n'y a ainsi que 28 possibilités intéressantes sur


1 28 potentielles.
24 A-Approche algorithmique

On obtient ainsi le second tableau. Dans chaque cas on a


--, e e
ensuite intérêt à considérer la terrasse (choisir l'une des
autres variables restantes serait plus lourd). t --, t
-., t rend faux les conjonctions de clauses contenant un t g V p g Vp
isolé, et réciproquement t « falsifie » les conjonctions de --, g v --, p --, g v--, p
--, g --, p v t
clauses contenant un -,t isolé.
--, t v --, g --, t v --, g
D ' où le troisième --, e e
tableau, où appa­ raissent de nouvelles
--, t t --, t t
clauses à une seule variable, puis un
quatrième tableau F gVp gVp F en explicitant g (sous -., e /
t) ou p (sous e / -., --, g v--, p --, g v--, p t).
--, g --,
p

Finalement,
• si la maison est de plain-pied

(-., e ), elle doit posséder une ter­ --, e e


rasse (t), pas de garage(-, --, t t --, t t
g) mais un patio (p);
• si la maison a un étage ( e ), elle
F --, g 1 g --, p 1 p F

doit ne possèder ni terrasse (-., t)


p 1 F g 1 F

ni patio ( p) mais un garage (g).


-.,

Ce qui laisse pour cette maison 2 combinaisons sur 1 6 possibles a priori. En


procédant systématiquement dans un cas quelconque, traiter successivement les n
variables mènerait (sauf dégénérescences) à 2" sous-tableaux terminaux. Voir (Cocco
2002).

Pour 2.5.4
Enumération brute. On applique simplement la méthode « produire et valider ». Un
générateur énumère les triplets (i, j, k) représentant un repas r = (ei, Pi • dk). A chacun
des mets correspond un triplet (lipides, protides, glucides) ; on fait 3 évaluations par
repas, du style
lipides(r) = lipides(ei) + lipides( Pi ) + lipides(dk>
�t on vérifie que chacune est correcte ; si oui, ( ei, Pi • dk) est retenu ; ce triplet est
�ej eté dès qu 'une valeur calculée pour le repas dépasse le seuil fixé. Cette énuméra­
:ion peut être assez longue, car si i e l, j e J, ke K, on a II®J®KI cas à examiner, soit
1 000 solutions potentielles pour Ill = IJI = IKI = 1 O.

Pour 2.5.5
12
�e nombre de tirages est a priori de 269 � 5 ,4 · 1 0 • Le nombre de tirages ne com­
9 9
Jrenant que des consonnes serait de 20 � 5 1 2 · 1 0 , soit 9% des tirages. La réduction
1 ' est pas importante. Selon le nombre de lettres différentes dans un tirage, celui-ci
tdmet jusqu'à 9! = 3 62 880 permutés, qui doivent tous mener aux mêmes solutions.
:.: idée ici est d'associer la réponse « bijoutier» (et ses anagrammes) aux myriades de
irages permutés qui devraient y mener, tels que « urtoij ieb », via un même profil
Enumération et complexité 25

standard « beiij otru ». Le nombre de profils distincts est typiquement un nombre de


combinaisons avec répétitions, qu'on peut reconstituer par récurrence : Je nombre
f(9, 26) est égal au nombre r (8, 26) de profils commençant par un « a », plus le
nombre r (9, 25) de profils commençant par une autre lettre . . .
On se ramène ainsi à r (9, 26) = C(9, 34) = 52 45 1 256 profils ou cas de figure
dont f(9, 20) = 6 906 900 purement consonantiques, soit 45 544 356 profils effec­
tifs, (environ 1 20 000 fois moins que de tirages ! ) . Il s ' agit donc d'une importante
restriction de l 'espace de recherche.

Pour 2.5.6
Avec n obj ets, il y a 2" sous-ensembles à tester comme solutions potentielles (ici, 1 2 8
1
cas ; comme 2 0 :=:; J 0 3 , compter u n facteur 1 000 pour 1 0 obj ets).
Il n'y a pas de solution à 7 obj ets, car le volume total serait de 24. Pour trouver
une solution admissible, il faut enlever un ou plusieurs obj ets pour un volume 4 ou
plus. Il suffit d'enlever a, b, c ou d ; b est Je moins utile des obj ets ou combinaison de
volume 4 : n' enlever que lui donne un volume admissible pour une utilité de 48.
Cette solution {a, c, d, e, f, g} maximise l ' utilité pour le volume, mais son poids
est de 1 8. {b, c, d, e, f, g} est par contre hi-admissible (volume et poids), pour une
utilité de 47.
D 'un point de vue théorique, c ' est un problème d'optimisation linéaire à varia­
bles binaires. Une énumération heuristique serait pilotée par les utilités relatives
(utilité par unité de volume, de poids . . . )

2.7 RÉFÉRENCES
Cocco S., Dubois O., Mandler J., Monasson R., 2002, A la rescousse de la
complexité calculatoire, Pour la Science n°295 , pp. 2- 1 0.
Frécon L., 2002, Eléments de mathématiques discrètes, Presses polytechniques et
universitaires romandes, Lausanne.
Froidevaux C., Gaudel M.C., Soria M . , 1 993, Types de données et algorithmes,
Ediscience Inti, Paris.
Gondran M. et Minoux M., 1 985, Graphes et algorithmes, Eyrolles, Paris.
Wikipedia, encyclopédie en ligne.
CHAPITRE 3

ESPACE D'ÉTAT ET MÉTAPHORE DU


LABYRINTHE

3.1 ESPACE D'ÉTAT


DÉFINITIONS. On appelle univers du problème l 'ensemble X, supposé discret des
configurations possibles ou états du système sous étude.
On appelle graphe d'état un graphe marqué G = <X, U, A, µ> où :
• X est un ensemble de points ou sommets figurant l ' ensemble des configura­

tions ou états du système,


• U ç X2 est l 'ensemble des arcs entre points de X, figurant les transitions

directes possibles entre états du système,


• A est l 'ensemble des actions pouvant entraîner de telles transitions,

• µ : U�A une fonction de marquage associant une action à chaque transition.

Dans un graphe <X, U>, on appelle chemin une suite (x0 , X i . x2 . . • ,xn) telle que
pour tout i : (xi. Xi+ i ) E U. Dire le chemin de taille n indique qu 'il est formé de n
arcs consécutifs (cf par exemple (Frécon 2002)).
Soit, dans le graphe d' état, un chemin (x = x 0 , X i . x2 . . • , xn = y ). La suite a i , a2 • • • ,
an des marques µ(xi-i . x;) = ai lues le long du chemin dénotera une séquence ou un
plan d'action assurant que le système passe de l ' état x à l ' état y en n étapes.
On appelle circuit un chemin {x0 , x i . x2 • • . , Xn = x0) finissant au point de départ.
Un arc (x y) appartenant à un circuit correspondra à une action réversible (une
suite d'actions pourra ramener à son état initial), un arc n ' appartenant à aucun circuit
correspondra à une action irréversible.

EXEMPLE.
Le Taquin est un j eu qui comporte p·q cases, toutes occupées sauf une par un j eton
numéroté 6 •
Convenons de coder 0 la case vide. A une configuration du 1 2 3
taquin correspond un arrangement des nombres de 0 à p·q-1 , 4 13 12 11
ici 5 14 15 10
(0 l 2 3 ; 4 1 3 1 2 1 1 ; 5 14 1 5 I O ; 6 7 8 9). 6 7 8 9
Fig. 3.1 Taquin.
Il y a donc (p·q) ! configurations possibles. •

6 Une variante met dans chaque case une fraction d'image.


28 A-Approche algorithmique

Les actions possibles sont les glissements . Un jeton adjacent à la case vide peut
glisser dans cette case : dans le cas ci-contre, le j eton 1 (ou le j eton 4) peut venir
dans la case vide, son ancien emplacement devenant vide.
Attacher les glissements aux j etons suggère 4·p· q actions possibles en théorie,
soumises à des contraintes liées à la position de la case vide, si bien qu ' à tout mo­
ment seules 2 à 4 d ' entre elles sont effectivement possibles.
Il sera plus simple de considérer qu 'on fait glisser la case 0 : des 4 actions théo­
riques (nord, ouest, sud, est) il y en aura touj ours 2 à 4 de possibles, chacune réversi­
ble.

r� 1 ro 1
1 2 1 2 1 0 2

12 1 I3l 110111 > 4 12 1 l3i est 4 12 1 131


sud
14 153 10 5 14 3
15 10 �5 14 3
15 10
7 8 9 6 7 8 9 6 7 8 91

Fig. 3.2 Taquin : fragment de l 'espace d'état.

3 .2 RÉSOLUTION DE PROBLÈME ET MÉTAPHORE


DU LABYRINTHE

3.2.1 Problème et solution


Dans un tel espace d ' état G = <X, U, A, µ>, un problème est une paire (1, F) de sous­
ensembles de X, où :
• I est l ' ensemble des configurations initiales,
• F est l ' ensemble des configurations finales ou buts,
• I et F sont présumés disj oints .

Alors, tout chemin allant de X E I à y E F figure une solution du problème, la


suite des marques lues le long du chemin énonçant le plan d 'action correspondant.
Tout sommet terminal de G hors F (i.e. terminal au sens des possibi lités sans
l ' être au sens du problème) sera dit impasse.

3.2.2 Faisceaux de solutions


I l y aura rarement une et une seule solution. Au-delà d ' une solution, on appellera
faisceau de solutions un ensemble de solutions (de x E I à F, de 1 à y E F, de 1 1 ç I à
F 1 ç F . . . ). Un tel faisceau pourra servir de cadre à une optimisation exploitant des
critères jusque-là négligés .

3.2.3 Solutions élémentaires


Dans un graphe, on appelle chemin élémentaire un chemin sans circuit ; et tout
chemin contient au moins un chemin élémentaire de même origine et de même ex­
trémité.
Espace d'état et métaphore du labyrinthe 29

Espace d'Etat

Fig. 3.3 Espace d'état , problème, solution , impasse.

Par analogie avec les graphes, on appelle solution élémentaire une solution sans
circuit, c ' est-à-dire ne passant pas deux fois par le même état. Une solution élémen­
taire existe dès lors qu' une solution existe.
C ' est le cas de toute solution si le graphe d'état est sans circuit. Pour un graphe
d 'état quelconque, se limiter aux solutions élémentaires présente deux avantages :
• dès lors que X est fini, la recherche de chemin (i.e. de solution) élémentaire
est un processus fini (qui échappe donc à l ' effet labyrinthe) ;
• dès lors qu ' un coût strictement positif est associé à chaque arc ou action, tou­
tes les solutions optimales sont élémentaires (par l ' absurde) .

3.3 TYPES D E MÉTHODES D E RECHERCHE

3.3.1 Méthode globale / locale

Méthodes globales
Les méthodes globales travai llent sur une description de l ' ensemble du graphe. Ce
sont essentiellement des méthodes matricielles : un espace d ' état à n configurations
étant décrit par une matrice n· n, la recherche de chemin se ramène à un calcul de
fermeture transitive, de fait une somme de produits de matrices à valeur dans un
dioïde.
La complexité est en O(n2) en ce qui concerne l ' espace de travail nécessaire.
Ainsi, 1 Gigaoctet de mémoire de travail peut contenir au plus une matrice 3 1 600 ·
3 1 600 si chaque case se contente d ' un octet.
3
La complexité des traitements est en O(n ) pour les produits de matrice, et glo­
3 4
balement en O(n Iog2n) = o(n ).
Cette approche est uti lisée en Recherche Opérationnelle, mais en Intelligence
Artificielle elle est généralement considérée comme trop gourmande en espace de
travail lorsque n devient grand.
30 A-Approche algorithmique

Méthodes locales
Les méthodes locales reposent sur l ' idée d ' une navigation dans un graphe d ' état,
qu 'on supposera en général fini, mais fréquemment immense.
Pour ce faire, on essaie de ne pas représenter en mémoire de travail la totalité du
graphe, présumé immense, mais seulement une partie uti le aussi réduite que possible.
La progression de la recherche amène à distinguer trois parties dans le graphe :
• une partie déjà explorée, dont on gardera en mémoire la plus petite trace pos­
sible,
• une partie active ou frange d'exploration, formée des sommets en cours de
traitement en mémoire de travail,
• une partie encore virtuelle, formée des sommets non encore traités - et, si
possible, non représentés.

Au cours de la recherche de chemin, la première partie devrait s ' étendre au


détriment de la frange, qui elle-même devrait s ' étendre au détriment de la partie
virtuelle.

3.3.2 Méthode directe / inverse


Une méthode directe tente de résoudre les problèmes en progressant des situations
initiales vers les situations-buts, en raisonnant sur les situations qu ' on peut atteindre
comme suite d ' une situation donnée.

Une méthode inverse tente de résoudre les problèmes en remontant de la situa­


tion cherchée vers les situations initiales, en raisonnant sur les situations qui engen­
drent uné situation donnée, comme dans la méthode analytique.

EXEMPLE.
Soit à établir votre filiation en tant que descendant probable de Charlemagne. En
supposant qu 'on dispose de la documentation nécessaire,
• une méthode directe consisterait à regarder si vous êtes un enfant, un petit­
enfant, un arrière-petit enfant de Charlemagne, ou plus généralement si vous
faites partie du cône de ses descendants ;
• une méthode inverse consisterait à regarder si Charlemagne est votre père,
grand-père, arrière-grand-père, ou plus généralement si Charlemagne fait par­
tie du cône de vos ascendants. •

L ' application menaçant d ' être très lourde, quelle méthode serait préférable ?
Posons que le problème porte sur k générations ; il faudrait envisager de l ' ordre de ak
k
ascendants dans le premier cas, d descendants dans l ' autre, où en moyenne a<2<d ;
en effet :
• a = 2 en principe, mais a<2 si l ' on prend en compte les unions consanguines,
qui font que deux conj oints partagent des ancêtres ;
• d = 2 pour un strict renouvellement des générations, et d > 2 en cas
d ' expansion démographique d ' une population.
k k
On peut donc penser que a < d , et que la seconde méthode serait moins lourde
que la première .
Espace d'état et métaphore du labyrinthe 31

3.3.3 Méthode révocable I irrévocable

Méthodes révocables
Les méthodes révocables procèdent au moins partiellement par essais et erreurs.
Elles progressent sous certaines hypothèses à la recherche de l ' objectif ; en cas
d ' échec, elles régressent vers le dernier choix effectué : la possibilité exploitée en
dernier ayant échoué, on l ' abandonne ; s ' i l reste une possibilité inexploitée à ce ni­
veau, on repart en avant ; sinon, on poursuit la régression j usqu ' au dernier point de
reprise laissant une possibilité inexploitée ; si la régression ramène au point de départ
sans autre possibilité, l ' échec est définitif.
Cette approche très « humaine » n ' est pas à l ' abri d ' errements ; elle suppose
d ' établir clairement les impasses et, autant que possible, de les anticiper ; face à une
alternative
• elle aura la lourdeur d ' une énumération brute si elle ne sait pas discerner la
meilleure possibilité,
• elle sera d ' autant plus efficace qu 'elle saura discerner la possibilité la plus
prometteuse . . .

·-·· -

0,\
1 1
- ·
-··
· -··-··- ··-·

partie traitée frange reste


en cours de traitement encore virtuel

Fig. 3.4 Méthodes locales.

Méthodes irrévocables
Les méthodes irrévocables supposent une progression linéaire basée sur une forte
capacité prédictive :à chaque situation présentant une alternative, on exploite seule­
ment la possibilité la plus prometteuse.
Dans le meilleur des cas, on peut se permettre un processus de décision assez
lourd, du fait du nombre réduit d ' étapes. La plupart du temps, on obtiendra seule­
ment une heuristique, dont la qualité dépendra du bonheur de la prédiction.
Techniquement, les algorithmes incarnant des méthodes irrévocables sont sou­
vent appelés algorithmes-gloutons (ils ne rej ettent j amais ce qu ' ils consomment) .
32 A-Approche algorithmique

3.3.4 Méthode aveugle I pilotée

Méthodes aveugles
Les méthodes aveugles sont des méthodes énumératives n ' exploitant que la topolo­
gie du problème, sans s ' intéresser davantage aux données spécifiques. S imples à
programmer mais lourdes à l ' exécution , elles donnent souvent des résultats médio­
cres.

Méthodes pilotées
Au contraire, les méthodes pilotées ou méthodes heuristiques tentent de tirer partie
des données du problème à chaque décision. Plus spécifiques que les méthodes
aveugles, elles peuvent se révéler très efficaces .

3.3.5 Méthode complète I admissible I &-optimale

Méthodes complètes
Les méthodes complètes sont les méthodes qui fournissent une solution s ' B y en a
une.

En particulier, dans un graphe fini, on pourra souvent établir que l ' algorithme
considéré est fini :
• parce qu ' il ne cherche que des chemins élémentaires (en nombre fini),
• ou parce qu ' i l recherche des chemins minimaux avec une fonction obj ectif
strictement croissante au long des chemins,
• ou parce qu ' il recherche des chemins maximaux avec une fonction obj ectif
strictement croissante au long des chemins dans des graphes sans circu it. . .

Méthodes admissibles
· Les méthodes admissibles sont des méthodes complètes qui fournissent une solution
optimale s ' i l y a une solution.

Méthodes &-optimales
Les méthodes &-optimales sont des méthodes complètes qui fournissent une solution
approchant l ' optimale à mieux que e près s ' il y a une solution. Il est souvent très
utile de qualifier une méthode heuristique comme méthode e-optimale.

3 .4 PRINCIPALES MÉTHODES

3.4.1 Exploration « par niveau »

Cette méthode est encore appelée en largeur ou breadth-first. A la recherche de


sommets-objectifs, elle examine « génération après génération » les successeurs
immédiats, puis à l ' ordre 2, à l ' ordre 3 . . . , à l ' ordre n du ou des sommets de départ,
jusqu ' à trouver un sommet cherché ou, si la dernière génération formée est vide,
constater son échec.
Espace d ' état et métaphore du labyrinthe 33

Procédé
Un niveau 0 est formé du sommet (resp . des sommets) de départ.
Partant du niveau n - 1, le niveau n est formé de tous les successeurs non encore
rencontrés des sommets du niveau n - 1. On s ' arrête à ce niveau :
• si l ' on a atteint le (resp. un des) sommet-obj ectif (succès) : il y a alors au
moins une solution de taille n, et le(s) chemin(s) cherché(s) s ' obtien(nen)t en
remontant du sommet-obj ectif atteint au niveau 0;
• a contrario, si le nouveau niveau est vide, auquel cas il n ' existe aucun chemin
(de l à F) .

EXEMPLE.
On considère le plateau de la figure 3.5, où on suppose chaque case liée aux seuls
sommets adj acents dans les 4 directions principales (N, 0, S, E) . Y a-t-i l un chemin
de b à y ?
On explore par niveaux le graphe d ' adj acence G1 associé au plateau, à raison d ' un
sommet par case et d ' une arête par adj acence.

niveau sommets
0 b
1 a, c
2 g, h , d
3 k, m, i , e
4 q, 1, s, n , f
5 u , r, w, o , j
6 v, x , p
7 y,t

Fig. 3.5 Plateau P l ; niveaux et chemin de b à y.

On trouve ainsi un chemin de taille 7 : (b c h m s w x y). •

Propriétés
La recherche par niveau est une méthode complète, aveugle, directe et irrévocable.
Elle fournit touj ours une solution la plus simple possible (resp. les solutions les plus
simples possibles), c ' est-à-dire ayant une taille minimale (un minimum d ' arcs). Les
sommets plus éloignés du départ que l ' obj ectif ne sont pas considérés (comme ici z).

REMARQUES
• Si les arcs sont porteurs de coûts ou de distance, les chemins les plus simples
ne sont pas forcément les plus courts ou les moins chers .
• La recherche par niveaux se comporte comme une propagation d ' onde.
34 A-Approche algorithmique

Complexité
Supposons qu ' un sommet ait en moyenne b successeurs nouveaux 7 ; on appelle b
facteur de branchement de la méthode. En tout, à la profondeur p, on devrait consi­
dérer de l ' ordre de :

l + b + b2 + . . . + bP sommets
.

et pour un graphe à N sommets, l ' espace de travail nécessaire serait en

O(min(bP, N)).
La méthode est donc réputée vorace en mémoire, car il est possible que ni N
sommets ni bP ne soient installables en mémoire de travai l .
La complexité en temps est d e même e n O(min(bP, N)), où p n e dépasse pas l a
taille d u chemin le plus simple.

EXEMPLE.
Considérons un j eu comportant 1 030 configurations, et supposons à chaque étape 20
coups possibles. Si, pour gagner, on veut anticiper les coups suivants, on est amené
à envisager d ' abord 20 coups, leurs 20 · 20 = 400 successeurs, leurs 8000 succes­
1
seurs etc. Comme 20P = l 0 •3P, à la profondeur 7 on en est au milliard de configura­
tions . •

3.4.2 Exploration « en profondeur »


Cette méthode est encore appelée depth-first. A la recherche de sommets-objectifs, elle
« développe une piste » en partant d'un sommet de départ dont elle considère les suc­
cesseurs immédiats, puis les successeurs immédiats de l ' un d 'entre eux, et ainsi de
suite, jusqu ' à trouver un sommet cherché ; si la dernière génération formée est vide, on
reprend le dernier des sommets rencontrés non encore exploités ; l 'échec n 'est certain
que si le dernier des sommets de départ a été exploité sans trouver de solution.

Procédé
Un niveau 0 est formé du sommet (resp. des sommets) de départ.
( ! ) . Partant du niveau n - l, on sélectionne un premier sommet s de ce niveau,
et on forme le niveau n, ou frange F, à l ' aide de tous les successeurs du sommet
s non encore rencontrés.
On s ' arrête à ce niveau si F contient le (resp. un des) sommet-objectif (succès) :
il y a alors au moins une solution de taille n, formée de tous les sommets actuel­
lement sélectionnés.
Si F est vide, on a un échec local : s est une impasse, on le retire du niveau n -

l ; si celui-ci contient encore au moins un sommet, on reprend en ( l ) . S inon, ce


niveau est lui-même devenu une impasse, et on tente de reprendre sur le niveau
précédent ; si, de proche en proche, on régresse jusqu ' à vider le niveau 0, le
problème n'a pas de solution.

b est égal à la sortance moyenne si le graphe est sans circuit (généalogie, ordonnancement . . . ), inférieur
sinon.
Espace d'état et métaphore du labyrinthe 35

EXEMPLE.
On reprend le cas précédent (fig. 3.5) où on suppose chaque case liée aux seules cases
adjacentes dans les 4 directions principales (N, 0, S, E). Y a-t-il un chemin de b à y ?
Explorons en profondeur le graphe d ' adj acence G1 associé au plateau. La recherche
se faisant en aveugle, on prendra ici à chaque niveau les sommets par ordre alphabé­
tique.

niveau sommets
0 b
a, c

2 g
3 k
4 1, q
5 m, r
Fig.3.6 Niveaux de b à y pour une recherche en profondeur (en 6 h, n

gris, chemin actif ; autres cases numérotées : sommets en attente de 7


reprise) . 8 d
9 e
Après reprise au niveau 13 (pas de successeur nouveau 10 f
pour o), on trouve ainsi un chemin de taille 15 ( !) : ll
(b a g k1 m h i d e fj p t z y) • 12 p
13 o, t
Propriétés 14 i m p a sse z
La recherche en profondeur est une méthode complète, 15 y
aveugle, directe et révocable. Elle fournit toujours une �--�-----'�---'

solution s ' i l y en a une, sans garantie de qualité.


La recherche en profondeur se comporte comme une recherche dans un labyrin­
the, avec ses marches et contre-marches, la seule garantie contre les errements étant
de ne pas tourner en rond, refuser les sommets déj à rencontrés ayant un effet « fil
d 'Ariane ».
Cette méthode sera parfois j ugée intéressante pour son faible coût en mémoire,
et plus souvent comme substrat de méthodes plus raffinées.

Complexité
Supposons qu ' un sommet ait en moyenne b successeurs nouveaux ; on appel le b
facteur de branchement de la méthode. En tout, à un moment donné, chaque niveau
ne contient que O(b) sommets, soit un empilement du genre :

1 + b + b +. . .+ b sommets

et pour un graphe à N sommets, l ' espace de travail nécessaire au p-ième niveau serait
en

O(min(b · p, N)).
La méthode est donc réputée économe en mémoire, car généralement b·p << N.
La complexité en temps en temps reste en O(min(bP, N)), où la profondeur at­
teinte p peut dépasser la tai lle du chemin le plus simple.
36 A-Approche algorithmique

EXEMPLE.
Considérons un j eu comportant 1 030 configurations, et supposons à chaque étape 20
coups possibles. Si, pour gagner, on veut anticiper les p coups suivants, on n ' aura à
tout moment que b·p configurations en mémoire, soit de l ' ordre de 1 40 configura­
tions pour une profondeur 7, qu ' on développera et réduira peut-être très longue­
ment. . . •

Exploration en profondeur bornée


Pour éviter d ' errer dans l ' espace d ' état, on peut utiliser une exploration en profon­
deur, qui considérera que les nœuds rencontrés à une profondeur plus grande qu' une
valeur limite L sont sans successeur. La complexité en espace est en O(b·L). La com­
plexité en temps reste en O(min(bL, N)). Cette méthode reste complète si L maj ore la
taille du chemin cherché.
Cette méthode sera d ' autant plus efficace que la profondeur-limite restera faible
devant le nombre de sommets du graphe.
Le gain peut être important. D ' après une expérience menée en 1 975, si les
sommets du graphe représentent des aéroports et les arcs des liaisons aériennes direc­
tes effectives, on peut trouver une « route aérienne » entre deux aéroports quel­
conques parmi 95 petits et grands avec seulement L = 8 <<95.

Exploration p a r approfondissements successifs


Il s ' agit simplement d 'exécuter une exploration en profondeur bornée, pour des valeurs
croissantes de la limite L, jusqu ' à obtenir la solution. Cet algorithme est complet comme
l 'exploration par niveaux ; sa complexité est (sensiblement) celle de la dernière des re­
cherches en profondeur. Pour les grands espaces d'état, cette méthode s 'avère plus effi­
cace que les recherches standard « par niveau » et « en profondeur » (UPB 2002).

Optimisation progressive
Une exploration en profondeur peut être modifiée pour poursuivre l ' énumération des
solutions au-delà de la première ; ici, on combine cette idée avec celle d ' une explora­
tion en profondeur bornée par une valeur-limite L excessive au départ ; à chaque
solution trouvée, L est alignée sur cette dernière solution, de façon à obtenir une
suite de chemins de taille (resp. longueur) décroissante. Cet algorithme
• est interruptible dès qu ' une première solution est trouvée,
• est admissible si on le laisse aller à son terme,
• peut donner assez rapidement des so lutions raisonnables, les chemins succes­
sifs correspondant à des améliorations « par la fin ».

La qualité de la solution dépend alors du temps disponible.

3.4.3 Exploration « le meilleur d'abord »


Cette méthode, dite encore best-first, et notée B F * , très représentative des Recher­
ches Heuristiquement Ordonnées (Farreny 2002), s ' occupe de trouver des chemins
minimisant un certain objectif g. Pour cela, chaque fois qu'elle doit choisir un som­
met parmi les sommets envisagés, elle choisit un sommet minimisant une fonction
f(. ) dite indicatrice, chargée d ' introduire un ordre d ' intérêt sur les sommets à traiter.
Espace d ' état et métaphore du labyrinthe 37

Méthode BF*
La frange est initialisée à l ' aide d'un triplet formé du nœud de départ, d'un marqueur
vide et d'un marqueur O. (S'il y a plusieurs nœuds de départ, on les fait précéder par
un nœud unique fictif s, lié à chaque sommet de départ effectif par un arc de coût
nul.)
A chaque étape,
• on prélève dans la frange un triplet (y, x, f ) de marqueur minimal,
y
• si y est le but, le chemin cherché finit en (x y) et est de valeur f : on reconsti­
y
tue le chemin complet par chaînage sur x ;
• sinon, pour chaque successeur z de y non encore traité, on forme un triplet (z,

y, fJ
- on l ' ajoute à la file si elle ne contient pas de triplet en z ;
- si la file contient un triplet (z, y l , f ,), on ne garde que (z, y, f,) si f,< f,, et
on ne garde que (z, y l , f ,) sinon 8 .
Cette méthode du meilleur d 'abord est un exemple de méthode pilotée, directe
et irrévocable, mais il est difficile de caractériser les performances d' un procédé
aussi général sans autre hypothèse.
Nous examinerons donc deux cas particuliers avant une discussion plus géné­
rale.
Notons d'abord que ce procédé se ramène à une recherche par niveau si
l ' indicatrice est la taille (ou nombre d ' arcs) du chemin déjà parcouru. Plus générale­
ment, si l ' indicatrice est une longueur ou un coût, on retrouve une méthode prudente
mais admissible connue comme algorithme de Dijkstra-Moore.

Méthode prudente DM
Il s ' agit d'une méthode BF avec f=g, qui favorise le sommet « le moins coûteux
jusqu ' ici », méthode admissible, mais pas toujours rapide.
Une première version de l ' algorithme correspondant, dit de Dijkstra-Moore, a
été publiée dès 1 959.
EXEMPLE. Reprenons le graphe précédent, où on suppose chaque sommet lié aux
sommets adjacents dans les 4 directions principales (N, 0, S, E) avec une distance de
5, augmenté de liaisons aux sommets adjacents dans les 4 directions auxiliaires (NO,
SO, SE, NE) avec une distance de 7.
Les arcs diagonaux, de coût distinct, distingueront la méthode DM d'une re­
cherche par niveaux.

Fig. 3. 7 Graphe G 1 et distances obtenues dans une recherche de


chemin b à y, selon la méthode du « meilleur d'abord », avec f=g
(en gris, chemin obtenu et distances de b ; autres cases numéro­
tées : autres sommets visités).

8 Ainsi, de deu chemins menant à z l 'un par y et l'autre par y l , on garde trace du plus
x intéressant.
38 A-Approche algorithmique

Le chemin optimal trouvé de b à y est le chemin (b h m s x y) de longueur 29.


On n 'arrête la recherche que lorsqu'un but est sur le point d 'être éliminé, car les
chemins les plus simples (qui amènent l ' introduction d 'un sommet) ne sont pas for­
cément les plus courts.

Fig. 3.8 Avec d(a, b) = d (d , e ) = d (b, d) = 4, et d (a , c ) =


c b
d( c , e) = 8, le chemin le plus simple de a à e est (a c e) de
taille 2 et de longueur 1 6 , et le chemin le plus court est (a
b d e), de taille 3 mais de longueur 1 2. d

Le principe de l 'évolution de la frange est donné ci-après (le triplet souligné est
le triplet sélectionné avant d' être retiré de la frange ; ses successeurs utiles apparais­
sent dans la frange suivante).
Dans un graphe de grande taille, on peut considérer que cette méthode se
confine à une sphère utile de rayon à peine supérieur à la distance minimale cher­
chée, sans se focaliser particulièrement sur un objectif, d ' où une certaine lenteur.

Méthode gloutonne G
Il s ' agit d'une méthode BF avec f = h, où h indique le nœud le plus prometteur, abs­
traction faite du chemin parcouru.
EXEMPLE. On reprend le graphe précédent, où on suppose chaque sommet lié aux
sommets adjacents dans les 4 directions principales (N, 0, S, E) avec une distance de
5, augmenté de liaisons aux sommets adjacents dans les 4 directions auxiliaires (NO,
SO, SE, NE) avec une distance de 7.
Ici, pour trouver un chemin de longueur minimale, on prend comme indicatrice
une estimation de la longueur séparant le sommet courant n de la cible, la distance
euclidienne entre centres des cases correspondantes. C ' est une estimation optimiste
de la longueur du chemin qui les sépare,
• exacte entre deux points alignés selon l ' une des 8 directions, s ' i l n ' y a pas

d 'obstacle,
• minorante sinon.

On amorce l ' algorithme avec un triplet (b,_, 25), puisque d2(b, y) = 25.
Espace d'état et métaphore du labyrinthe 39

sélection reste de la frange


&..D...Q}
� (c , b,5) (g, b, 7)(h, b, 7)
� (g, b, 7)(h, b, 7)
(g._QJ} (h, b, 7) (d, c , l O)(i, c , 1 2)
ili...!h1î (d , c , I O)(i, c , 1 2) (k, g, 1 2)( 1 , g, 1 4)
� ( i , c , 1 2) (k, g, 1 2)(m, h, 1 2)(1, g, 1 4) (n , h, 1 4)
ll...[Link] (k, g, 1 2)(m, h , 1 2)(1, g, 1 4) (n, h , 1 4) (e, d , 1 5)
(k,_g,__ill (m , h, 1 2)(1, g, 1 4) (n , h, 1 4) (e , d , 1 5) (o, i , 1 9)
illh..h...ill (1, g, 1 4) (n , h, 1 4) (e, d , 1 5) (q, k, 1 7) (0, i , 1 9) (r, k, 1 9)
!l.,_g,__11} (n , h, 1 4) (e, d , 1 5) (q, k, 1 7)(s, m , 1 7) (0, i , 1 9) (r, k, 1 9)
ill,__h,__B} (e , d , 1 5) (q, k, 1 7)(s, m , 1 7) (0, i , 1 9) {r, k, 1 9)
(hQ,J2) (q, k, 1 7)(s , m , 1 7) (o , i , 1 9) (r, k, 1 9)
(Q,_k,_ll} { s , m , 1 7 ) {o , i , 1 9) (r, k, 1 9){f, e, 20) U. e, 22)
� (o , i , 1 9) (r, k, 1 9)(f, e , 2 0 ) U, e , 22) (u , q, 22)(v , q, 24)
.(Q,j.J2) (r, k, 1 9)(f, e , 20) U, e , 22) (u , q, 22)(w, s, 22) (v, q, 24)(x, s , 24)
� (f, e, 2 0) U, e , 22) (u , q, 22)(w, s , 22) (v, q, 24)(x, s, 24){p, o , 24)(t, o, 26)
� U, e , 22) {u , q, 22) {w, s , 22) (v, q, 24)(x, s , 24)(p, o, 24)(t, o , 26)
� {u , q, 22) (w, s , 22) (v, q, 24)(x, s, 24)(p, o , 24)(t, o , 26)
lli,_g,_W (w, s , 22) (v, q, 24){x, s, 24)(p, o , 24){t, o, 26)
� (v, q, 24)(x, s , 24)(p, o, 24)(t, o, 26)
{y,_g,._W (x, s, 24)(p, o , 24)(t , o, 26)
� (p, o , 24)(t, o , 26)
Ùh.Q,..W (t , O, 26)(y, X , 29)
.(1,__Q,_1Q} (y, X, 29)
� (z, t, 3 1 )

Fig. 3.9 Evolution de la frange pour une recherche d'un chemin de b à y (graphe G 1 ), méthode du
meilleur d'abord , version DM {f = g).

Fig. 3.10 Graphe G 1 et distances obtenues dans une recher­


che de chemin b à y, selon la méthode du « meilleur
d'abord » , avec f=h (en gris, chemin obtenu et distances es­
timées de y ; autres cases numérotées : autres sommets visi­
tés) .

On trouve assez rapidement un chemin de b à y (moins de nœuds sont traités).


Le chemin trouvé est le chemin (b h n o t y) de longueur 33 (>29) : cet algorithme est
complet mais n'est pas admissible : la solution n ' est pas optimale ! En effet, h(o)= I O
pour un chemin (o t y) de longueur 1 4, tandis que h(s)= l l pour un chemin (s x y) de
longueur 1 2 : l ' estimation h() est bernée par l ' obstacle.
40 A-Approche algorithmique

(b,(),25)
(a , b, 28)(g, b, 25), (h, b, 1 8), (c, b, 23)
(a, b, 28), (g, b, 25), (c, b, 23), ( 1 , h, 1 8), (m , h, 1 4), (n , h, 1 1 ), (i, h, 1 6), (d , h, 2 1 )
(a, b, 28), (g, b, 25), (c , b, 23), (!, h, 1 8), (m, h, 1 4), (i, h, 1 6), (d, h, 2 1 ), (s, n , 1 1 ), (o , n , 1 0 )
(a , b, 28), (g, b, 25), (c, b, 23), ( 1, h, 1 8), (m, h, 1 4), (i, h, 1 6), (d, h, 2 1 ), (s , n , 1 1 ), (t, o , 7), (p , o ,
l i ), u. o, 1 6)
(a, b, 28), (g, b, 25), (c, b, 23), (1, h , 1 8), ( m, h, 1 4), ( i, h, 1 6), (d , h, 2 1 ), (s, n , 1 1 ), (p, o, 1 1 ), (j,
o, 1 6), (y, t, 0), (z, t, 5)

Fig. 3.1 1 Evolution de la frange pour une recherche d'un chemin de b à y (graphe G 1 ), méthode du
meilleur d'abord, version G ( f = h).

Propriétés des algorithmes BF


Quelques nouvelles propriétés permettront de mieux caractériser des procédés ou
algorithmes plus spécifiques.
Dominance
Un algorithme A 1 domine un algorithme A2 si tout nœud développé par A1 est déve­
loppé par Az.
Un algorithme A1 domine strictement un algorithme A2 si A1 domine A2 sans
que l ' inverse soit vrai.

Optimalité
Dans une classe donnée, on dira un algorithme optimal s ' i l domine tous les autres
algorithmes de sa classe.

Algorithmes A*
Hart, Nilsson et Raphaël ont défini en 1 968 une importante classe d' algorithmes BF,
dits algorithmes A * (Pearl 1 990 ; Farreny 2002).
La fonction f utilisée pour la sélection d'un nœud n est du type f(n) = g(n)+
h(n), où :
• g(n) est le coût du sous-chemin déjà parcouru, du sommet de départ s au

sommet n, avec g(s)=O,


• h(n) est une estimation optimiste du coût h*(n, F) du sous-chemin restant à

parcourir.

Enoncé
La frange est initialisée à l ' aide d'un triplet formé du nœud de départ, d'un marqueur
vide et d'un marqueur O. (S 'il y a plusieurs nœuds de départ, on les fait précéder
d'un nœud unique fictif s, lié à chaque sommet de départ effectif par un arc de coût
nul.)
A chaque étape,
• on prélève dans la frange un triplet (y, x, f ) de marqueur minimal ;
y
Espace d ' état et métaphore du labyrinthe 41

• s i y est l e but, l e chemin cherché, de valeur fy , finit en (x y) : o n reconstitue


le chemin complet par chaînage sur x ;
• sinon, pour chaque successeur n de y :
- on calcule fy(n)=g(n)+h(n), avec g(n) = g(y)+c(y, n), où c(y, n) dénote le
coût de l ' arc (y n) ;
- on ajoute le triplet (n, y, fy(n)) à la file si elle ne contient pas de triplet en
n;
- si la file contient déjà un triplet (n, y l , fy 1 (n)), on garde (n, y, fy(n)) si fy(n))
< fy 1 (n)), on garde (n, y l , fy 1 (n)) dans le cas inverse 9, et on ne garde les
deux triplets qu' en cas d'ex-aequo (y * y l mais fy(n)) = fy 1 (n)).
EXEMPLE.
On reprend le graphe des deux exemples précédents. L'indicatrice cumule mainte­
nant la longueur du chemin parcouru et une estimation de la longueur séparant le
sommet courant n de la cible, ici la distance euclidienne entre centres des cases.
On amorce l 'algorithme avec un triplet (b,_, 25), puisque d2(b, y) = 25.

Fig. 3.12Graphe G 1 e t indicatrices obtenues dans une recherche


de chemin b à y, selon la méthode A* ( f:g+h) ; (en gris, chemin
obtenu ; cases numérotées : sommets visités) .

Comme avec la première méthode DM, le chemin trouvé est bien optimal : c 'est
(b h m s x y), de longueur 29. Mais cette fois le nombre d 'étapes est réduit, intenné­
diaire entre les deux méthodes DM et G. L ' algorithme A* concilie ainsi une efficaci­
té relative avec l ' obtention d'une solution optimale.

Discussion
Soit g*(n) le coût minimal des chemins allant du sommet initial s au sommet n, et
h*(n) le coût minimal des chemins allant du sommet n à l 'ensemble final F ; pour un
chemin particulier P allant de s à F via n, on aura toujours
gp (n) � g*(n) et hp(n) � h*(n)
• f*(n) = g*(n)+h*(n) est alors le coût optimal pour l 'ensemble des chemins
passant par n,
• si C* est le coût minimal de s à F :
f*(s)=h*(s) = C* = min b e F {g*(b) } ;
• si n appartient à un chemin minimal, f*(n)=C* ; mais si n n 'appartient pas à
un chemin optimal, f*(n)>C* (par l 'absurde).

9 Ainsi, de deuK chemins menant àn l 'un par y et l ' autre par y 1 , on garde trace de celui ayant le plus faible coût.
42 A-Approche algorithmique

Ces dernières propriétés renvoient au principe de la programmation dynamique,


énoncé par Bellman dès 1 964 : tout sous-chemin d 'un chemin optimal est optimal.

(b,Q,25)
(a, b, 33Xg, b, 32), (h, b, 25), (c, b, 28)
(a, b, 33Xg, b, 32), (c, b, 28XI, h, 32) (m, h, 26) (n, h, 25) (i, h, 28Xd, h, 35)
(a, b, 33Xg, b, 32), (c, b, 28) (1, h, 32) (m, h, 26) (i, h, 28Xd, h, 35Xs, n, 32Xo, n, 29)
(a, b, 33Xg, b, 32), (c, b, 28) (1, h, 32) (i, h, 28Xd, h, 35) (s, n, 32) (o, n, 29Xr, m, 35) (s, m, 28)
(a, b, 33Xg, b, 32), (1, h, 32) (i , h, 28) (d, h, 35) (0, n, 29Xr, m, 35) (s, m, 28) (i, c, 28) (d, c, 3 1 )
(a, b, 33Xg, b, 32), (1, h, 32) (o, n, 29Xr, m, 35) (s, m, 28) (i, c, 28) (d, c, 31) (o, i, 29Xe, i, 39)
(a, b, 33Xg, b, 32), (1, h, 32) (o, n, 29Xr, m, 35) (i, c, 28) (cl, c, 3 l ) (o, i, 29Xe, i, 39) (v, s, 39) (w, s, 32) (x, s, 29)
(a, b, 33)(g, b, 32), (1, h, 32) (0, n, 29) (r, m, 35) (d, c, 3 1 ) (0, i, 29) (e, i, 39) (v, s, 39) (w, s, 32) (x, s, 29)
(a, b, 33Xg, b, 32), (1, h, 32) (r, m, 35) (d, c, 3 1 ) (o, i, 29) (e, i, 39) (v, s, 39) (w, s, 32) (x, s, 29) (t; o, 33)(p, o, 35)(j, o, 42)
(a, b, 33Xg, b, 32), (1, h, 32) (r, m, 35) (d, c, 3 1 ) (e, i, 39) (v, s, 39) (w, s, 32) (x, s, 29) (t, o, 33)(p, o, 35)(j, o, 42)
(a, b, 33Xg, b, 32), (1, h, 32) (r, m, 3S) (d, c, 3 1) (e, i, 39) (v, s, 39) (w, s, 32) (t, o, 33) (p, o, 35) (j, o, 42) (y, x, 29)

Fig. 3.13 Evolution de la frange pour une recherche d'un chemin de b à y (graphe G l ), méthode du meil­
leur d'abord , version A *=BF* (f = g + h).

Dans ces conditions, on a les propriétés suivantes.


PROPOSITION 3 . 1 . Tout algorithme A* est complet.
PROPOSITION 3 .2. Tout algorithme A* exploitant une fonction h admissible est ad­
missible, une fonction h étant dite admissible si \;fn 0 :S: h(n) :S: h*(n), en bref si 0 :S: h
:s; h* .
Ce qu 'on peut retenir sous la forme : tout algorithme A * est admissible dès lors
qu 'il emploie une estimation h (systématiquement) optimiste.
On dira une estimation h2 plus informée qu'une estimation h 1 pour un problème
si, h 1 et h2 étant admissibles pour ce problème, on a h1 < h2•
PROPOSITION 3 . 3 . Si A *2 est un algorithme plus informé que A * 1 (i.e. si A *2 exploite
une estimation h2 plus informée que l 'estimation h 1 exploitée par A* 1 ), alors A*2
domine A* 1 • A priori, A*2 n 'est donc pas plus complexe que A* 1 (voire moins com­
plexe) alors que les deux algorithmes fournissent une réponse optimale.

Diffic ultés
L 'expérience montre que dans beaucoup de problèmes, les algorithmes A* passent
une bonne partie de leur temps à discriminer des chemins de coûts peu différents.
Cela peut les empêcher de trouver la solution optimale cherchée dans le temps impar­
ti, alors même que l ' idée d'une fonction heuristique h sous-entend qu' on était prêt à
troquer un peu de qualité contre une nette accélération.
Cette constatation a posé la question du bien-fondé de la relation f= g + h.
Si on pose f = g, l 'algorithme DM reste admissible (h = 0) mais s 'apparente à
une recherche par niveaux, qui souffre d 'un manque de focalisation sur l ' obj ectif. Si
on prend f = h (algorithme G), le chemin parcouru est négligé, et les décisions prises
ne reposent que sur l ' estimation de ce qui reste à faire : cela se révèle adapté si les
solutions sont nombreuses et h une estimation de qualité ; sinon, le nombre de cas à
Espace d'état et métaphore du labyrinthe 43

examiner se multiplie, g n 'étant plus là pour rappeler qu 'on s 'égare quand le chemin
déj à parcouru devient beaucoup trop long.

Algorithmes P(w)*
Afin d'ajuster l ' influence des termes g et h, Pohl a proposé en 1 970 d'utiliser une
fonction indicatrice pondérée f-v(n)=( l -w) · g(n) + w·h(n). Au-delà des cas étudiés que
l ' on retrouve, l ' idée est maintenant de doser conservatisme (w-7 0) et aventurisme
(w-7 1 ) (Pearl, 1 990).
Si h est admissible, on montre que les algorithmes P(w) sont toujours admissi­
bles pour w s l /2 ; au-delà, tout dépend des écarts entre h et h* : on peut gagner en
rapidité, mais on peut perdre l ' admissibilité 10 , et on peut même voir le nombre de
nœuds à traiter croître.

Tableau 3 . 1 Algorithmes de Pohl.

poids w=O w=l/2 w=l


nom DM A* G
indicatrice f= g f = g+h f= h

Algorithmes à pondération dynamique


En vue de trouver un chemin optimal, il est important au début de bien orienter la
recherche, et à la fin de choisir les sommets menant à la meilleure valeur, ce qui
revient à se poser la question d'un algorithme P(w) à pondération décroissante au
cours du traitement. En 1 973, Pohl a étudié l ' emploi d'une fonction à pondération
dynamique

{ {
f ( n ) = g(n ) + h ( n ) · l + & t- � )}
d )

où d(n) est la profondeur atteinte au nœud n, et N la profondeur supposée d'un nœud


terminal. Au départ, d<<N, h est sur-pondéré et la recherche commence comme une
recherche en profondeur focalisée, pour prendre ensuite un caractère de recherche
admissible. On montre alors que si h est admissible, l ' algorithme est &-admissible, au
sens suivant : si C* est le coût minimal de s à F, l 'algorithme trouvera une solution
dont le coût au pire sera C*( l +c).

Algorithmes IDA*
Ils reprennent globalement la stratégie « par approfondissements successifs ». Mais
le cœur de l ' itération n ' est plus une simple recherche en profondeur : c ' est un algo­
rithme utilisant le même genre d ' indicatrice que les algorithmes A*, en privilégiant
le développement du nœud le plus profond, pour autant que son indicatrice soit infé­
rieure à un seuil S ; en cas de dépassement, l ' algorithme effectue une reprise arrière
dans le style des recherches en profondeur. L'algorithme IDA* est admissible. Sa
complexité en espace est celle d'une recherche en profondeur. Mais il peut échouer

IO
Donc, l ' optimal ité de la solution trouvée.
44 A-Approche algorithmique

pour une valeur insuffisante de S, et doit alors être relancé. Sa complexité dans le
temps est sensiblement celle de la dernière passe, qui peut être longue.
Cependant, des campagnes d' essais assez exhaustives (sur des problèmes de
taquin) ont montré qu 'il était significativement plus efficace que les algorithmes
antérieurs (Farreny 2002).

3.4.4 Elagage
Quelle que soit la méthode retenue, elle est souvent encore trop lourde. Comment
réduire le nombre de nœuds à traiter, si possible sans perte de propriétés ?
Soit h(n) une estimation optimiste du coût h*(n, F) du sous-chemin restant à
parcourir, et de même H(n) une estimation pessimiste de h*(n, F), de telle façon que
l ' on ait toujours h(n) ::; h*(n, F) ::; H(n).
Soient alors x et y deux sommets de la frange en attente de traitement : si
H(x)<h(y), traiter x rend le traitement de y sans objet, puisqu'une solution en y serait
nécessairement pire que toute solution en x. Cette remarque, à l ' origine de la techni­
que d'élagage ou pruning, allège parfois considérablement les recherches, car ne pas
traiter x évite d 'énumérer l'arbre des possibilités de racine x.
EXEMPLE.
Soit à régler un problème de déplacement entre deux sommets a et z d'une grille,
trame de l ' espace de recherche (ville, circuit imprimé . . . ).
La distance euclidienne d2(,) ou distance à vol d'oiseau sera toujours une borne
inférieure de la distance à parcourir.
Avec un plan en grille parfait, sans autre contrainte, la distance d 1 (,) ou distance par
blocs représentera la longueur à parcourir entre deux points ; ce sera une majoration
de cette distance si au plan en grille strict s ' ajoutent des liaisons diagonales.
Une recherche de chemin avec élagage pourrait donc utiliser ici
h(n) = d2(n, z) ::; h*(n,z) ::; H(n) = d 1 (n, z). •

3.5 CAS DES JEUX


Les j eux sont à l 'origine de nombreux progrès en Intelligence Artificielle.

3.5.1 Rôle des Jeux en IA

Les jeux comme buts


Certains j eux traditionnels (« jeux de plateau » : dames, échecs, reversi, go . . . ) ont
d ' abord été considérés comme des défis (Alan Turing, 1 954) puis comme des buts
difficiles avant de mener plus récemment à des produits communs, parfois gratuits,
parfois l ' obj et de chiffres d' affaires considérables ' ' . Ils ont été ensuite rej oints par
d ' autres j eux « sérieux », kriegspiels, j eux de stratégie, j eux d ' entreprises . . . reposant
sur des simulateurs plus ou moins réalistes, reflets de théories diverses, en vue de

11
En décembre 2005, Ubisoft a investi 20M€ dans le développement du jeu King Kong, d'après le film de
Peter Jackson ; les ventes de certains jeux ont atteint 600 M$ en Amérique du Nord.
Espace d'état et métaphore du labyrinthe 45

l ' entraînement à la prise de décision ou à la négociation dans des contextes et des


scénarios plus ou moins précis, plus ou moins riches.
Binmore indique même « Il y a jeu dès que des personnes interagissent. [. . .] En
fait, on pourrait même affirmer que l 'ensemble des sciences sociales ne sont rien de
plus que des sous-disciplines de la théorie des jeux. » (Binmore 200 1 , p.3)

Les jeux comme moyens


L'IA s ' est notamment développée par l ' étude des j eux, dont l 'univers pouvait être
arbitrairement réduit et simplifié.
Quand un jeu était devenu sans mystère, on pouvait s ' attaquer à plus difficile en
ajoutant une once de réalisme, et se doter ainsi progressivement de méthodes et de
stratégies de plus en plus efficaces dans des cadres de plus en plus vastes et maîtri­
sés, jusqu'à déboucher parfois sur un j eu traditionnel.
Certains jeux fournissant une échelle d ' évaluation des joueurs, celle-ci pouvait
être utilisée pour évaluer et comparer des programmes de j eux, et par là les méthodes
sous-jacentes, permettant de démêler vrais et faux progrès.
Une attention particulière a été apportée aux j eux à 2 joueurs, où l ' intelligence
d'un joueur humain affrontait l ' intelligence artificielle d'un joueur simulé par un
programme.

3.5.2 Jeux en environnement passif


C ' est les cas des taquins (Farreny 2002), de !'Ane Rouge, des solitaires . . . (Cousi­
neau 1 995). En principe, tout est connu. La difficulté est ce qu' on appelle l' « effet
d 'horizon » : la complexité est telle que le j oueur ne peut percevoir totalement les
effets de ses décisions, et s ' en remet à des heuristiques, même si la prédiction est en
théorie totalement possible.
Pour les algorithmes A*, le taquin a souvent servi de banc d ' essai, et permis
notamment de vérifier la théorie sur les « algorithmes mieux informés », en compa­
rant par exemple :
• une fonction h 1 jugeant de la proximité entre deux configurations c 1 et c2 par

le nombre de j etons de c 1 mal placés par rapport à c2 ;


• une fonction h2 jugeant de la proximité entre deux configurations c 1 et c2 par

la somme des distances d1 que chaque j eton n doit parcourir pour passer de sa
place dans c 1 à la place souhaitée dans c2•

3.5.3 Jeux compétitifs à information totale


Classiquement, il s'agira de j eux à 2 joueurs, comme les jeux de plateau où chacun
connaît à tout moment la configuration d 'ensemble.
Si le jeu est d'une complexité maîtrisable,
• la fonction de Grundy permet de régler au mieux les j eux se terminant en ga­

gné /perdu ;
• les méthodes maxmin ou negmax s ' appliquent si les gains varient avec les is­

sues.
46 A-Approche algorithmique

Mais il faut bien noter que de nombreux jeux classiques (échecs, go) sont d'une
complexité suffisante pour qu 'un effet d' horizon s' oppose à ces procédés.

Fonction de Grundy (1939)


Soit un j eu à 2 joueurs, à information totale, tel que toute situation terminale soit une
situation gagnante, formalisé par un graphe G = <X, U>, dont les sommets représen­
tent les configurations du j eu, et les arcs, les mouvements.
On appelle noyau K d'un tel jeu, s ' il existe, un ensemble de sommets ainsi for-
mé :
• si x E K, alors tous les successeurs de x sont hors de K (donc, dans X-K),

• si x E X-K, alors x possède au moins un successeur dans K.

Passer systématiquement de X-K à K constitue une stratégie non perdante :


• Tout sommet terminal (gagnant par définition) appartient à K.

• Si j e passe de X-K à K, ou j ' atteins un sommet terminal, et j 'ai gagné, ou

j 'atteins un sommet non terminal, mon adversaire est obligé de sortir de K, et


je peux repasser de X-K à K.
• Si le jeu est fini, cette stratégie est finalement gagnante.

Grundy avait ainsi défini sa fonction de marquage : tout sommet terminal est
marqué 0, tout autre sommet est marqué du plus petit entier positif qui ne marque pas
un de ses successeurs, soit
g( X ) = min ( }. ! - { g(y) 1 YE f (x) } )
Cette fonction n ' existe pas toujours e t n 'est pas touj ours unique, mais ces ex­
ceptions restent rares. Sinon, on vérifie facilement que l 'ensemble des sommets x de
marque g(x)=O constitue le noyau du graphe considéré.
Donc, il existe une stratégie non perdante (gagnante si le j eu est fini) pour tout
j eu à 2 joueurs dont le graphe admet une fonction de Grundy.
Le procédé s 'étend aux jeux ayant des configurations terminales perdantes ou
pièges, qu' i l suffit de marquer 1 (Frécon 2002).
EXEMPLE.
2 joueurs partent d'un tas de N j etons. Chacun retire à son tour Je nombre de j etons
qu' i l veut, pourvu que ce soit un carré parfait ( 1 , 4, 9, 1 6 . . . ). Celui qui prend le der­
nier j eton a gagné. Y a-t-il une stratégie gagnante ? •

Tableau 3.2 Jeu : configurations atteintes en fonction de la configuration initiale et du coup joué.

0 1 2 3 4 5 6 7 8 9 10 li 12 13 14 15 16 17 18
-1 0 1 2 3 4 5 6 7 8 9 10 Il 12 13 14 15 16 17
-4 0 1 2 3 4 5 6 7 8 9 IO Il 12 13 14
-9 0 1 2 3 4 5 6 7 8 9
-16 0 1 2

g 0 1 0 1 2 0 1 0 1 2 0 1 0 1 2 0 1 0 1
Espace d'état et métaphore du labyrinthe 47

La configuration du j eu est définie par le nombre de jetons restants. Le graphe


du j eu comporte un sommet par nombre distinct. Chaque arc correspond à une opéra­
tion : enlever un nombre carré parfait de jetons (notée - 1 , -4, -9 . . . ).
On établit ainsi la liste des successeurs licites pour chaque configuration. Le
sommet terminal est le sommet O.

Fig. 3.14 Graphe de Jeu et Fonction de Grundy.

On bâtit la fonction g en partant du ou des sommets terminaux, de marque 0 :


g(O)=O, g( l )= l (car l n ' a que 0 pour successeur), g(2)=0 (car son successeur 1 est
marqué 1 ), g(3)= l ; g(4)=2 car 0 est interdit par son successeur 0, et 1 par son suc­
cesseur 3 ; g(5)= 0, car son successeur 4 interdit 2, et son successeur 1 interdit l ,
mais 0 reste libre . . .
La fonction de Grundy, le noyau existent : la stratégie sera donc d' aller vers les
sommets marqués 0, sommets du noyau.
Partant de 1 8 jetons, on en retirera l (car g( l 8 - l )=0 ) ou 1 6 (car g( l 8 - 1 6)=0
également). L' adversaire sera contraint de passer à une configuration hors noyau (de
marque non nulle), et on pourra revenir dans le noyau au coup suivant. Le graphe est
sans circuit et 0 le seul sommet terminal, qu 'on atteint ainsi nécessairement.
Partant de 1 8 jetons, si on en retire 4 ou 9, on atteint des positions marquées 2,
et l ' adversaire peut alors nous appliquer le principe du noyau à son tour, et gagner.
Si l 'on partait de 1 7 jetons, il n ' y aurait rien à faire : il faudrait « jouer obscur»
dans l 'espoir qu 'un effet d 'horizon permette de redresser la situation . . . si elle
échappe à notre adversaire (ex : nous jouons 4, reste 1 3 ; s ' i l joue l , il reste 1 2, dans
le noyau, et il pourra gagner ; s ' i l joue 4 ou 9, nous jouons 4 ou 9, et nous gagnons).
Si on veut programmer ce j eu pour qu'il accepte jusqu'à N jetons, une phase
2
préparatoire dressera le tableau g de taille O(N) en une durée O(N31 ). Les coups
préférentiels correspondants pourront être tabulés a priori ou calculés coup par coup,
au fil des parties.
Comme tout entier s 'écrit comme somme de 4 carrés au plus, le jeu peut rester
très vif même aux valeurs élevées de N.
Plus généralement, la fonction de Grundy est bien adaptée au traitement des
jeux de Nim.

Maxmin et Negmax
On s ' intéresse ici aux jeux, négociations, voire aux procédures judiciaires civiles
opposant deux adversaires, le processus étant modélisé par un graphe sans circuit, et
48 A-Approche algorithmique

se terminant par des gains et/ou pertes pouvant différer à chaque issue, un gain étant
une somme reçue de l ' adversaire, une perte une somme qu ' on lui donne.
On suppose chacun jouant au mieux de ses intérêts, tout choix maximisant les
gains de celui qui le fait, et on désire définir ces choix au mieux lorsque ces deux
j oueurs alternent leurs choix, qui deviennent ainsi interdépendants.
La procédure MaxMin pose qu'un premier joueur (Max) maximise ses gains,
tandis que l ' autre minimise ses gains du point de vue du premier joueur. De même,
les cas terminaux sont valués en fonction du gain pour le premier joueur.
L 'évaluation maxmin, tabulée ci-après, se fait en pratique en développant un
arbre d'évaluation mimant une navigation en profondeur dans le graphe.

Fig. 3.15 Graphe de Jeu MaxMin (données ) .

A= max( B , C , D ) 70
B = min ( E, F ) 50
C = min (F , G ) 50
D = min (G , H ) 70
E = 1 00
F = max ( ! , J ) 50
G = max (J , K) 70
H = 80
! = 50
J = -200
K =70

Fig. 3.16 Evaluation Maxmin.

Pour une sécurité maximale, A jouera D pour un gain de 70, contre C ou B


(gains de 50).
En effet, si l 'adversaire joue au mieux,
• en B, s ' il choisit E, A gagne 1 00, et s ' i l choisit F, A gagne 50 : donc, en B, le

second j oueur choisira F, d'où un gain de 50 pour A ;


• en C, s ' i l choisit F, A gagne 50, et s ' il choisit G, A gagne 70 ; donc, en C, le

second joueur choisira F laissant un gain de 50 pour A ;


Espace d'état et métaphore du labyrinthe 49

• en D, s'il choisit H, A gagne 80 ; mais s ' i l choisit G, A gagne au mieux 70 ;


donc le second joueur choisira G qui laisse 70 à A.
La procédure NegMax, définie par Knuth en 1 975, est équivalente mais plus
simple à coder ; elle pose que chaque j oueur maximise ses gains, qui sont par défini­
tion l ' opposé des gains de l 'autre, les cas terminaux étant valués en fonction du gain
pour le joueur qui les atteint.

Effet d'horizon
La stratégie ci-dessus est la plus sûre si la totalité des positions accessibles de la
position considérée est calculable, ce qui peut l ' être en droit sans l ' être en fait, en
nécessitant par exemple une mémoire finie beaucoup plus grande que la mémoire
disponible, ou un temps de calcul excessif, comme par exemple pour les échecs. Les
positions terminales étant valuées sur une échelle E des gains, on effectuera à chaque
fois le calcul du coup à jouer en horizon limité (ou, si l'on veut, profondeur bornée) ;
la valeur attribuée aux sommets des confins qui ne seraient pas terminaux est alors
une estimation (heuristique) de la valeur de la position atteinte, au sens de l ' échelle
des gains.
Naturellement, le résultat est d 'autant meilleur que la profondeur-limite est plus
grande et l 'heuristique plus heureuse ; à ressources égales, deux écoles s ' affrontent :
• les uns préfèreront des heuristiques minutieusement établies (« d'un grand ré­

alisme »), quitte à réduire la profondeur-limite, s'enfermant souvent dans une


casuistique stérile,
• d' autres préfèreront des heuristiques sommaires pour accroître la profondeur,

la valuation des positions terminales étant la seule sûre . . . à supposer qu 'on


tienne assez longtemps pour arriver « en vue » de ces positions.

3.5.4 Jeux compétitifs à information partielle


Ce sont les j eux « où le joueur ne sait pas tout » :
• pour les jeux à un seul joueur : certaines réussites, le démineur, etc.

• pour les jeux à deux joueurs : kriegspiel (échecs masqués), bataille navale, be­

lote phocéenne, etc.


• belotes, bridge, tarot. . . mais aussi tous les jeux mêlant jet de dés et stratégies,

tels que tric-trac, jacquet. . .

3.5.5 Jeux coopératifs


Ce sont les jeux où les joueurs ont intérêt à coopérer. C ' est le cas des jeux d ' équipe,
des jeux d' entreprise etc. où la coopération est une nécessité organique, chaque
joueur ayant un rôle. C ' est aussi le cas dans d ' autres jeux où les joueurs, en principe
libres voire en compétition, peuvent avoir intérêt à se coaliser de façon plus ou moins
circonstancielle.
EXEMPLE.
Considérons le cas des actionnaires et celui des salariés dans une entreprise. A valeur
ajoutée constante, ils sont en compétition pour le partage de cette valeur aj outée en
dividendes et en salaires (stratégies antagonistes).
50 A-Approche algorithmique

Cependant, unis dans un pacte de croissance, ils peuvent voir dividendes et


salaires croître simultanément (stratégie agoniste). •

3 .6 EXERCICES

3.6.1 Filiation
Reprenons la question d'établir votre filiation en tant que descendant probable de
Charlemagne (§ 3 . 3 .2).
Admettre (2000 - 800)/3 0= 40 générations.
Supposer que a=2 ; en l ' absence d'unions consanguines, combien auriez-vous
d 'ascendants vivant en l ' an 800 ? A combien devrait se réduire a pour que vous
n ' ayez que 5 . 000.000 d 'ascendants vivant en 800 ?
Combien vaut d, si ces 5 000 000 d 'ascendants ont aujourd 'hui 300 000 000 de
descendants ?
Les conclusions demeurent-elles sur la méthode à employer ?

3.6.2 Transports en commun urbains


Dans l ' agglomération lyonnaise on comptait pour 80 lignes de bus et quelques lignes
de tram et de métro, 3 000 arrêts ; cependant, pour des raisons tarifaires, les trajets
intéressants doivent durer au plus soit l heure soit 2 heures. Comment trouver un
itinéraire intéressant allant d'un point A à un point B du réseau ? (le graphe du ré­
seau possède ici un diamètre de 54).

3.6.3 Chemins de sûreté maximale


Dans ce pays en triste état, les segments des différentes routes sont caractérisés par la
probabilité d ' arriver au bout (en général bien connue des transporteurs du pays).
Qu' est-ce qu 'un chemin de sûreté maximale ? Définir une transformation permettant
de le ramener à un problème de chemin de coût minimal.

3.6.4 Jeu l
2 j oueurs partent d'un tas d e N jetons. Chacun retire à son tour l e nombre d e j etons
qu 'il veut, de l à k. Celui qui prend le dernier j eton a gagné.
Montrer qu 'il existe un noyau formé des configurations multiples de k+ l . Ex­
pliciter la stratégie gagnante.

3.6.5 Jeu2 (Primus)


2 joueurs partent d'un tas de N jetons. Chacun retire à son tour le nombre de j etons
qu'il veut, pourvu que ce soit un nombre premier. Celui qui prend le dernier jeton a
gagné.
Montrer qu 'il existe un noyau formé des configurations multiples de 4. Explici­
ter la stratégie gagnante.
Espace d'état et métaphore du labyrinthe 51

3.6.6 Jeu3 (Quadratus)


2 joueurs pa1tent d'un tas de N j etons. Chacun retire à son tour le nombre de j etons
qu 'il veut, pourvu que ce soit un carré pG1fait. Celui qui prend le dernier j eton a
gagné. Expliciter la stratégie gagnante. Expliquer pourquoi le j eu peut être rapide
pour un N élevé quelconque.

3.6.7 Jeu4 (partage)


2 joueurs partent d 'un tas de N jetons. Le premier joueur partage en deux le tas qu 'il
reçoit, puis chacun à son tour partage en 2 l 'un des tas qu 'il reçoit. Celui qui isole le
dernier jeton a gagné. Montrer qu 'il y a 2 N- J configurations, et que celui qui com­
mence gagne ou perd selon la parité de N.

3.6.8 Jeu klm30


2 joueurs partent d'un grand nombre N ayant pour facteurs 2, 3 et 5, tel que
N = 2 430 000, et le divise chacun à leur tour par un nombre multiple de 2, 3 et 5, au
moins égal à 2 et au plus égal à 30, de telle façon qu 'à tout moment il reste un quo­
k 1
tient entier de la forme 2 3 5 111• Celui qui atteint 2 a perdu, celui qui atteint 5 a gagné,
mais si l'un des joueurs atteint 3 on déclare la partie nulle. Comment gagner ?

3.6.9 La Coupe
Les deux joueurs arrivés en finale savent que, si l 'un d'eux gagne, il touchera
700 000 oros, et son concurrent malheureux 1 00 000 ; et que s ' ils font match nul, ils
auront chacun X oros.
Si les deux « pros » décident de faire front commun contre les organisateurs en
partageant les gains, qu ' ont-ils intérêt à faire ?
Connaissant ce risque, si les organisateurs « veulent du spectacle », qu' ont-ils
intérêt à faire ?

3.6. 1 0 Les coopératives


Expliquer pourquoi les coopératives de production
• ont un fonctionnement satisfaisant dans un environnement technologique sta­

ble ou évoluant lentement,


• mais font souvent faillite en cas d ' innovation technologique maj eure dans leur

domaine.

3.6. 1 1 Dames / complexité


Montrer qu'il n'y a pas plus de 1 0 3 5 configurations possibles au jeu de dames.

3.6. 1 2 Echecs / complexité


Montrer qu 'une configuration du jeu d ' échecs peut être simplement codée sur 32
octets, à l ' aide de 64 chiffres hexadécimaux.
1
En déduire qu 'il y a moins de 2· 1 0 7 configurations possibles au j eu d' échecs.
Combien peut-on en stocker dans l Gigaoctet ?
52 A-Approche algorithmique

3.6. 13 Solitaire
On considère un j eu à un joueur (et environnement passif) formé de N cases (N > 30)
comportant au départ chacune un fichet. Pour jouer :
• si nécessaire, on enlève un fichet ;

• si A, B, C sont trois cases alignées, A jouxtant B et B jouxtant C, si A et B

contiennent un fichet et si C est vide, alors le fichet A peut sauter par-dessus


le fichet B (qui est supprimé) pour occuper la case C qui était vide ; symboli­
quement : ( • • o::::> o o • )
• l e joueur gagne s ' il n e reste à l a fi n qu 'un seul fichet.

Montrer que le graphe d' état de ce jeu comporte • • •


2 N états, qu'il est sans circuit et qu' une partie se joue • • • • •
en N coups au plus. • • • • • • •

On marque 0 les états terminaux perdants ou im­ • • • • • • •


passes, l les états terminaux gagnants, Yi les autres • • • • • • •
états. • • • • •
Puis à chaque sommet x encore marqué Yi, on • • •
associe la plus grande des valeurs marquant ses suc-
cesseurs, jusqu 'à ce que ces valeurs se stabilisent. Fig. 3.17 Solitaire.
Montrer que :
• le processus est fini,

• le processus élimine tous les Yi,

• tout sommet marqué 0 est une impasse au sens large (i.e. est terminal perdant,

ou mène à un tel sommet en un nombre fini d' étapes),


• la stratégie consistant à aller d 'un sommet non terminal marqué l à un som­

met marqué l est gagnante en un nombre fini d ' étapes,


Ce processus « absolu » est-il de complexité raisonnable ? Y a-t-il « effet
d 'horizon » ?

3.6. 14 Taquin
Entre deux configurations x et y d 'un même j eu de taquin, on définit deux estima­
tions du nombre de mouvements à faire pour passer de x à y :
• h 1 (x, y) = « nb de jetons de x mal placés par rapp01t à y » ;

• h2(x, y) = « somme des distances par blocs d 1 (i, j) entre chaque j eton i de x et

sa position j dans y ».
Laquelle de ces deux estimations informerait le mieux un algorithme A* ?

3.6. 1 5 Le mot le plus long


(Suite du § 2 . 5 . 5 )
Ce j eu oppose deux joueurs, pour lesquels o n tire 9 lettres a u hasard parmi 26,
en supposant qu 'on procède à un nouveau tirage pour tout tirage formé uniquement
de consonnes. Le joueur dont c' est le tour annonce le mot le plus long qu 'il peut
former avec ces lettres, et son adversaire fait de même. Chacun marque autant de
Espace d'état et métaphore du labyrinthe 53

points qu 'il a su employer de lettres, si son mot est licite et au moins aussi long que
celui de son adversaire.
On s ' intéresse à un logiciel d ' aide aux arbitres, qui pour un tirage donné devrait
produire la meilleure (resp. les meilleures) solution(s) possible(s). Ce logiciel explo­
rerait un arbre des possibles, partant du tirage à traiter.
L'ordre des lettres n'ayant finalement pas d' imp011ance, on décide dans le logiciel
de remplacer chaque tirage t par son « profil » p(t) formé des mêmes lettres mises par
ordre alphabétique, les tirages équivalents étant ainsi des tirages de même profil.
On dispose
• d'un lexique, auquel est associé une fonction d' extraction L(p) qui renvoie :

- une liste vide s'il n'y a pas d ' entrée de profil p,


- un mot m suivi éventuellement d ' anagrammes si m est de profil p,
• d'une fonction G(p), qui pour un profil p, rend

- soit une liste vide,


- soit une liste des sous-profils de p comportant une lettre de moins, avec par
exemple G( « aiorss » ) = { iorss, aorss, airss, aioss, ai ors } .
En cas d'échec avec un profil, G fournit ainsi les successeurs à envisager.
On considère
Algorithme.
l 'algorithme ci­
contre. Suivant la Soit F une file d 'attente vide.
Déposer le profil initial p dans F.
façon dont on
Tant que F n 'est pas vide,
ajoute les succes­ Ôter le premier profil pO de la file
seurs à la file, on Si L(pO) produit une ou plusieurs solutions, le but est atteint,
obtient soit une Sinon, rajouter à F la liste G(pO).
exploitation en pro­
fondeur soit une exploitation par niveaux des descendants du profil initial .
Discuter l ' intérêt de ces deux stratégies pour le problème considéré.
Que se passe-t-il si G élimine les profils formés uniquement de consonnes ?

3.6. 16 Le loup, la chèvre et le chou


Un passeur doit emmener de la rive gauche à la rive droite, un loup, une chèvre et un
chou. La barque est petite et la rivière difficile, si bien qu 'il ne peut passer que l ' un
d'eux à la fois, mais il ne peut laisser sans surveillance d'un même côté (a) le loup et
la chèvre (b) la chèvre et le chou. Comment doit-il procéder ?

3.6. 1 7 Pousse-pion
Le j eu se déroule dans un quadrillage (genre N2). On considère un pion dans une
case assez loin de l ' origine. Chacun des 2 joueurs peut à son tour pousser le pion
situé en (k, n) :
• à gauche en (k-i, n),
• en bas en (k, n-i),
• en diagonale vers (k-i, n-i),
pour autant que i, choisi supérieur à 0, ne fasse pas sortir le pion du quadrillage.
Le joueur qui amène le pion en (0, 0) a gagné.
Expliciter une stratégie gagnante.
54 A-Approche algorithmique

3.6. 1 8 Laisser une chance à la chance

La stratégie maxmin (resp. negmax) est la plus sûre si l 'adversaire joue au mieux,
mais ne lui laisse aucune chance de se tromper. De ce point de vue, considérons le
cas
max(A, B), où A= l OO, et B = min ( 1 00, 1 50, 300)
Les stratégies mentionnées supposent qu 'il est indifférent de jouer A ou B. On
convient de noter B = 1 00+ (lu « 1 00 et plus »), pour noter qu'il est marginalement
plus intéressant de jouer B (au cas où l 'adversaire se tromperait). De même on posera
max( l OO, 75)= 1 00- etc . . .
Explorer les règles de calcul nécessaires aux différents cas de figure (change­
ment de signe, max et min).
Montrer que, sans risque aucun, on laisse ainsi une « chance marginale à la
chance » d ' obtenir un jeu aussi sûr quoique marginalement plus brillant qu'avec les
stratégies maxmin (resp. negmax) pures.

3.6. 1 9 Le coursier
Soit un coursier devant desservir divers sites A, . . ., L. Les liaisons entre sites sont
données par un graphe formé d' arêtes pour les liaisons bidirectionnelles, et d' arcs
pour les liaisons à sens unique. A chaque site est attachée une liste (éventuellement
vide) des objets en partance, avec pour chacun sa destination.

Fig. 3.18 Le coursier.

Envisager d'abord le problème en supposant que le nombre total d ' objets est
assez faible, et que le coursier peut en transporter « un nombre suffisant à la fois ».
Pour simplifier, on s ' intéressera à la taille du chemin parcouru pour aller de A à A,
en acheminant tous les obj ets.
Envisager ensuite le problème en supposant (a) que le nombre total d ' obj ets est
assez important, (b) que le coursier peut en transporter au plus k (par exemple, 3 ou
5) à la fois (c) qu 'on connaît un circuit hamiltonien (i.e. un itinéraire fermé passant
par chaque site une fois et une seule, tel que (A B G C F D E L K J 1 H A)) de Ion-
Espace d'état et métaphore du labyrinthe 55

gueur totale minimale. Supposer que pendant les déplacements du coursier, de nou­
velles demandes apparaissent, tandis que l ' état du réseau se modifie : du fait
d'accident et/ou de réparations, ce11aines liaisons deviennent inopérantes, restreintes
à un sens ou bidirectionnelles. Si le coursier est très occupé (trafic important et/ou
heuristiques malheureuses) certains obj ets risquent de rester en souffrance ; comment
améliorer la gestion globale si on indique pour chaque objet une date & heure de
dépôt ? comment améliorer et diversifier les services en indiquant pour chaque obj et
une date & heure de livraison promise ?

3.6.20 Décodage
Un camarade de lycée doit vous rendre visite ; il vous a envoyé le message chiffré
suivant :
27748667 1 726334 1 6434 1 2632 1 86 1 428328 1
qui doit, comme autrefois, se référer au code du clavier téléphonique, avec la
convention :

touche 2 3 4 5 6 7 8 9
ca1·actère a d g j .m p \V

b e h k Il q Il X

c f 0 V y
z

Esquisser un graphe des interprétations, à raison d'un noeud par chiffre et d'un
arc par caractère. Que signifie un chemin ?
Evaluer grossièrement leur nombre.
Déterminer les impasses, le chemin le plus probable, et le message correspon­
dant.
Connaisssant la langue employée, peut-on tirer partie de la fréquence des carac­
tères ? de la probabilité d' apparition d'une lettre, relativement à la précédente ?

3.7 INDICATIONS

Pour 3.6.2
Dans un tel réseau, on cherchera un chemin de durée minimale, qui peut être une
recherche en profondeur bornée à 3 0 (<<3000) si on compte 2 minutes entre deux
arrêts, afin de respecter les contraintes tarifaires, pour un ticket simple, à 60 pour un
ticket double. De fait, le diamètre de 54, correspondant au chemin élémentaire de
plus grande taille, suggère de réduire la seconde borne de 60 à 54. La qualité des
solutions supposera (a) de procéder par approfondissements successifs, limités à la
profondeur 30, ou par optimisation progressive, pai1ant d'une profondeur 3 0 ; (b)
pour les correspondances, de leur assigner une durée forfaitaire accrue d'une durée
égale à la fréquence de la nouvelle ligne empruntée, afin de tenir compte des fré­
quences et raretés.
56 A-Approche algorithmique

Pour 3.6.3
On prend comme sûreté d'un chemin le produit des probabilités d'arriver au bout de
chaque segment. A cette sûreté s = p 1 p2•

p11 on peut associer un risque s'exprimant
• • •

sous fonne additive, en posant r 1 = - 1 0 log(p 1 ) : à une probabilité l correspond alors un


risque 0, et à une probabilité 0, l un risque l 0 ; le chemin de sûreté maximale devient un
chemin de risque minimal, où le risque total le long d'un chemin est la somme des
risques encourus dans chaque segment. Après transformation des données, les métho­
des de recherche de chemin de coût minimal s'appliquent.

Pour 3.6.4
Si le joueur A reçoit un multiple non nul de k+ l , et joue n (de l à k), B peut riposter
en jouant k+ 1-n, et atteindre ainsi 0 (il a gagné) ou ramener A à un nouveau multiple
non nul de k+ l : B enferme A dans le noyau, formé des multiples de k+ l .
EXEMPLE.
Si on prend de l à 4 allumettes, le noyau est formé des multiples de 5. Alors, si le
j oueur A reçoit un multiple non nul de 5 , par exemple 20, et j oue n (de l à 4), B
riposte en jouant 5 - n, et atteint ainsi 1 5 , puis aux tours suivants l 0, 5 et enfin 0 : B
gagne en se ramenant systématiquement aux multiples de 5 . •

Pour 3.6.5
Classer les nombres premiers modulo 4, et s ' inspirer du 3 .7.4.
Si on reçoit 44 jetons (=0 mod 4), jouer . . . n ' importe quel nombre premier pas
trop grand (de l à 1 3 par exemple ; on a peut-être déjà perdu).
Si on reçoit 43 jetons (=3 mod 4), jouer tout nombre premier congru à 3 modulo
4 : 43 (c'est gagné ! ), 3 1 , 23, 1 9, 1 1 , 7 ou 3 .
S i o n reçoit 4 2 jetons (=2 mod 4), jouer 2 .
S i o n reçoit 4 1 j etons (= l mod 4), jouer tout nombre premier congru à l modulo
4 : 4 1 (c'est gagné ! ), 37, 29, 1 7, 1 3 , 5 ou l .
Que vous suggère la conjecture de Goldbach ?

Pour 3.6.6
Voir théorème des 4 carrés.

Pour 3.6.7
Supposons que 2 joueurs partent d'une file de N jetons. Le premier joueur partage en
deux la file qu'il reçoit, puis chacun à son tour partage en 2 l'une des files qu 'il re­
çoit. Celui qui isole le dernier jeton a gagné.
Il y a finalement N- 1 séparations possibles ; faites dans un ordre quelconque,
elles donnent 2N- I configurations. Toutes les configurations à k séparations ( 1 <k<N)
sont issues de configuration à k- 1 séparations et mènent à des configurations à k+ l
séparations. La configuration à N- l séparations est unique, terminale et gagnante.
De même, quand les 2 joueurs partent de tas, on voit que la seule chose qui
importe est le nombre de tas, de l à N. Le premier joueur recevra donc successive­
ment l , 3, 5, 7 . . . tas pour en faire 2, 4, 6 . . . Et le second joueur recevra successive­
ment 2, 4, 6 . . . tas et rendra 3, 5, 7 . . . tas.
Espace d'état et métaphore du labyrinthe 57

Le noyau est donc formé des configurations dont le nombre de tas est de même
parité que N. Le premier joueur gagne si N est pair, car N fait alors partie des nom­
bres de tas qu 'il peut atteindre. Joué sur une table avec divers objets, le jeu peut
sembler varié, alors qu ' en fait il n ' admet aucune initiative efficace.® !

Pour 3.6.8 (klm30)


On suppose que la division par 1 =2°3°5° n ' est pas autorisée. Alors, le graphe d'état
G est irréflexif et sans circuie 2 • Sur ce graphe d ' état G, on calcule une fonction de
Grundy g 1 , les sommets terminaux {2, 3 , 5 } étant marqués { ! , 1 , O } , puis une fonc­
tion de Grundy g2, les sommets terminaux {2, 3, 5 } étant marqués { l , 0, O } , de telle
façon qu'une partie nulle soit traitée comme perdante pour g 1 , comme gagnante pour
g2.
On applique aussi longtemps que possible la stratégie non perdante avec g 1 • Ou
on gagne, ou on est obligé de sortir du noyau de G au sens de g 1 : dans ce cas, on ne
peut plus gagner au sens strict. On essaie alors la transition la plus favorable au sens
la fonction g2, et on poursuit avec g2 dont le noyau comprend celui de g1 : gagner au
sens de g2 sans gagner au sens de g 1 , c'est bien finir en partie nulle.

Pour 3.6.9 / La coupe


Si les deux « pros » décident de faire front commun contre les organisateurs en par­
tageant les gains, ils ont intérêt à ce que l ' un d'eux gagne si 2X< 800.000, soit X <
400.000 oros, et à faire match nul si X > 400 000.
Si les organisateurs « veulent du spectacle » . . .

Pour 3.6. 1 0 / Les coopératives de production


Ces entreprises tendent à confondre actionnaires et salariés. Il y a donc en général
développement harmonieux, sauf si un changement technologique majeur suppose
des investissements lourds (recherche, matériel . . . ), exigeant de sacrifier provisoire­
ment une partie des revenus.

Pour 3.6. 1 1 / Dames


Le damier comporte 1 0 x 1 0 cases, dont la moitié est utilisée. Chacune comporte un
pion ou une dame, blanc ou noir, ou rien : soit 5 cas. Il y a donc au plus 5 5 0 = 1 0 3 5
configurations.

Pour 3.6. 12 / Echecs


L' échiquier comporte 8 · 8 = 64 cases utilisables. Chacune est vide ou contient une
pièce blanche ou noire : pion, cavalier, fou, tour, dame, roi ; soit 1 3 cas de figure,
codables par un chiffre hexadécimal. Une configuration peut être ainsi être décrite à
l ' aide d'une suite de 64 quartets ou 32 octets. Il y a donc au plus 1 364 configurations
1
possibles, un peu moins que 2· 1 0 7 •
2
l Gigaoctet = 2 30 octets, soit 2 5 � 3 · 1 0 7 configurations (30 000 000).

12
C'est une version allégée du treillis de divisibilité d'atomes {2, 3, 5 } , et de maximum N.
58 A-Approche algorithmique

Pour 3.6. 13 / Taquin


(Voir Cousineau 1 995 ; Farreny 2002).

Pour 3.6. 14 / Le mot le plus long


En rajoutant en tête de la file les successeurs d 'un profil, on explore en profondeur la
liste de ses sous-profils : on descend ainsi rapidement vers des profils courts, et la
première solution trouvée risque d 'être peu intéressante. Cependant, le procédé est
complet.
Contenus de F :
abcopu
abcop abcou abcpu acopu bcopu
abco abcp abop acop bcop 1 abcou abcpu acopu bcopu
abc abo aco bco 1 abcp abop acop bcop 1 abcou abcpu acopu bcopu
:I: ( abc ) = « bac »

Mais en rajoutant en queue de la file les successeurs d'un profil, on explore par
niveaux la liste des profils : on n 'aborde les profils de longueur n-1 que lorsque tous
les profils de longueur n ont échoué, la première solution trouvée est donc la meil­
leure ou une des meilleures possibles, et le procédé est non seulement complet mais
admissible.
Contenus de F :
abcopu
abcop abcou abcpu acopu bcopu
abcou abcpu acopu bcopu 1 abco abcp abop acop bcop
abcpu acopu bcopu 1 abco abcp abop acop bcop al9ee abcu abou acou
bcou
acopu ...
-L ( acopu ) = « acoup »

Si 0 élimine les sous-profils formés uniquement de consonnes, improductifs en


français, on se trouve dans une situation classique d' anticipation d' impasse : la mé­
thode est accélérée sans perdre de solutions.

Pour 3.6. 1 6 / Le loup, la chèvre et le chou


Le passeur P, le loup L, la chèvre 0 et le chou C peuvent être à gauche ou à droite,
soit 1 6 situations (sommets du graphe d ' état). On notera par exemple (PLOC /) la
situation initiale, la situation recherchée étant (/PLOC). Les situations tel les que
(LO/ . . . ) ou ( . ./LO) sont terminales perdantes : sans surveillance, le loup croque la
chèvre. De même pour les situations en OC.
Les traversées (à vide ou non) sont les actions, représentables par des arcs du
graphe d 'état, marqués P (suivi de l 'éventuel chargement) pour dénoter le transfert.
Pour éviter tout risque en son absence, le passeur doit d' abord passer la chèvre
puis revenir à vide. Dans un deuxième temps,
il amène le loup (ou le chou) à droite et ra- ( PLGC / -) � ( L C I PG)
mène la chèvre à gauche. Dans un troisième ( PL C 1 G ) �
temps, il passe le chou (ou le loup) à droite et ( C / PLG )
revient à vide. Dans un quatrième temps, il ( CGP I L ) �
ramène la chèvre à droite. (G / PL C)
(PG I L C) �
( - I PLGC)
Espace d'état et métaphore du labyrinthe 59

Il y a donc 2 solutions, dont une figurée ci-après, nécessitant chacune 7 traver-


sées.

Pour 3.6. 1 7 / Pousse-pion, ou jeu de Wythoff


En construisant un graphe d ' état sur la base d'un sommet par case et d 'un arc par
mouvement, on trouve un graphe sans circuit, de sommet terminal (0,0). Il possède
une fonction de Grundy, calculable de proche en proche, en commençant par mar­
quer n chaque position (0, n) ou (n, 0) - qui ne permet qu'un type de mouvement.
Les positions gagnantes sont marquées O.

Fonction de Grundy du Pousse-pion >> 3 3 4 5 6 2 0 1 7 8


3 2 2 0 1 5 4 8 6 7
Supposons un départ en (8, 3). Si le pre- 1 1 2 5 0 4 3 7 8 6
mier joueur pousse le pion en (5, 3), case ap- o 0 1 2 4 3 5 6 7 8
partenant au noyau, le second j oueur a le choix 0 2 4 3 5 6 7 8
entre 5+3+3= 1 1 mouvements sortants du
noyau. Le premier joueur peut alors (8, 3) � (5, 3) � (5, 2) � (1, 2)
selon les cas se ramener soit en (0,0), � (5, 1) � (2, 1)
et il gagne, soit en ( 1 ,2) ou en (2, 1 ), et � ( 5, 0) � ( 0, 0)
il gagne au tour suivant.
� (4, 2) � (1, 2)
***
Pour 3.6. 1 9/ Coursier

Tableau 3.3 Une solution du problème initial.

no 0 1 2 3 4 5 6 7 8 9 IO 11
étape a b g f d e 1 k j i h a
>d î 1 1 1
1 !
>l î 3 3 3 3 3
3 !
"'
>i î 2 2 2 2 2 2 2
..
CJ) 2 !
"'
t: 2 2 2 2 2 2!
Q
>a î
1:1.
2

3.8 RÉFÉRENCES
Binmore K., Jeux et théorie des jeux, De Boeck Université, Bruxelles ; traduction de
Binmore K., 1 992, Fun and Gomes ; a Text on Game Theo1y, DC Heath,
Lexington (USA) .
Cousineau G. & Maury M., 1 995, Approche fonctionnelle de la programmation, ch.
8, Graphes et résolution de problèmes, Ediscience Inti, Paris.
Farreny H., 1 995, Recherche heuristiquement ordonnée, Algorithmes et propriétés,
Masson.
60 A-Approche algorithmique

Farreny H . , 2002, Des heuristiques plus pe1formantes si avec la fonction on garde la


raison, xm• congrès francophone AFRIF-AFIA de Reconnaissance de forme
et Intelligence Artificielle, 8- 1 0 janvier, Angers.
Frécon L., 2002, Eléments de mathématiques discrètes, partie II, Les Graphes,
Presses polytechniques et universitaires romandes, Lausanne.
Froidevaux C., Gaude! M.C . , Soria M., 1 994, Types de données et algorithmes,
Ediscience International, Paris.
Pearl J., 1 990 Heuristique, Cepadues Ed., Toulouse ; traduction de Pearl J., 1 985,
Heuristics, Addison-Wesley Pub. Cy.
UPB 2002, Agents intelligents, ch. 3, cours en ligne de l 'Université polytechnique de
Bucarest.
CHAPITRE 4

MÉTHODES DE RÉDUCTION

4. 1 PRINCIPE
On veut ici résoudre les problèmes en fonction d'une analyse les ramenant par étapes
à des problèmes plus élémentaires, jusqu 'à des problèmes qu 'on sait résoudre, en vue
de planifier une solution du problème global.
La hiérarchie de problèmes obtenue combine deux opérations :
·
• la conjonction, qui ramène un problème à un ensemble de sous-problèmes

plus simples qu 'il faut résoudre, et correspond à la fragmentation cartésienne,


• l 'alternative, qui associe à un problème une liste d ' autres problèmes, la réso­

lution de l ' un d' eux suffisant à résoudre le problème initial, les autres consti­
tuant des solutions de rechange.
On peut formaliser cette approche algébriquement, ou à l'aide de graphes
ET/OU.

4.2 GRAPHES ET/OU

On appelle graphes ET/OU des graphes G = <X, U> ayant deux types de sommets :
les sommets ET, et les sommets OU. On distingue les sommets ET par une barre
unissant leurs arcs sortants.

Examen Conjonction / Noeud ET

~
El E2 E3 E' Alternative /Noeud OU

E4
� ES E6

Fig. 4.1 Graphe ET/OU pour « cet examen comporte 4 épreuves : 3 épreuves obligatoires, plus une à
choisir parmi 3 options ».

En revenant aux problèmes formalisés, on désire savoir si ce qu 'on sait de la


solution des problèmes terminaux nous permet de régler au mieux le problème ini­
tial.
62 A-Approche algorithmique

Sur les problèmes terminaux, on peut avoir des renseignements binaires (solu­
tion connue ou non), n-aires (degré de difficulté), numériques (délai ou coût).
Selon la nature de ces renseignements, on attachera aux sommets ET et OU des
procédés d 'évaluation permettant de conclure au mieux d' abord sur les problèmes
correspondants puis sur le problème global.
Si tous les sommets terminaux sont renseignés a priori, on fera la synthèse des
renseignements par une méthode ascendante.
Une méthode descendante sera préférable si tous les cas terminaux ne peuvent
être renseignés a priori .

4.3 STRATÉGIE ASCENDANTE OU SYNTHÉTIQUE

On suppose l ' analyse du problème faite, et les sommets terminaux sont renseignés a
priori . A pmtir de là, une stratégie ascendante consiste à évaluer les sommets dont
tous les successeurs sont terminaux, puis successivement tous les sommets dont tous
les successeurs sont valués. S ' il n'y a pas de circuit, le problème initial est lui-même
évalué en un temps fini.
La justification de cette valeur finale sous-tend Ie(s) plan(s) d ' action souhaita­
ble(s).

4.3 . 1 Résolubilité des problèmes


Convenons de noter respectivement 0, 0, 1 les problèmes connus comme insolubles,
ouverts et résolus, ces valeurs formant une échelle de résolution :
0 ::; 0 ::; 1 .
Pour traiter de telles valeurs, on posera
ET(x, y) = min(x, y) et OU(x, y) = max(x, y)
conformément au tableau 4. 1 .

Tableau 4. 1 Opérateurs 0-booléens.

0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0

Considérons maintenant un problème PO et son analyse, comme définis par les 3


premières colonnes du tableau 4.2 (où /\ dénote un ET, et v un OU). A partir de là,
on peut évaluer les sommets dont tous les successeurs sont terminaux, puis successi­
vement tous les sommets dont tous les successeurs sont valués. Ainsi, PO apparaît
comme faisable.
Retournant de cette valeur finale à son origine on peut déduire de proche en
proche le ou les plans d ' action souhaitables.
PO est faisable sous la forme P l , conjonction de P3, P4 et P5. P3 est terminal,
P4 est faisable au titre de P 1 0, et P5 indifféremment au titre de P 1 0 ou de P 1 1 .
Méthodes de réduction 63

Tableau 4.2 Etude de 0-résolution.


Pb n° def Solu- Phase 1 Phase 2 Phase 3
tion
0 P l vP2 1
1 P3"P4"P5 1
2 P6"P7"P8 0
3 terminal 1
4 P9vP I O 1
5 P I OvP l l 1
6 P l 2 vP l 3 0
7 P l 3/\P l 4 0
8 P l 5vP 1 6 0
9 terminal 0
10 terminal 1
Il terminal 1
12 terminal 0
13 terminal 0
14 terminal 1
15 terminal 0
16 terminal 0

Avec la convention A ..,. B pour « A est réalisé par B », on notera donc :


PO .... P3/\P4/\P5 .... P3/\P l O/\(P l 0vP l 1 ).
La dernière formule dénote un « plan d ' action » suffisant pour réaliser PO. Les
autres possibilités ont été éliminées comme sans issue ou trop incertaines. La néces­
sité de ce plan dépend de l ' interprétation à donner à la double occurrence de P l O. Si
on peut réellement confondre ces occurrences, une propriété d ' absorption
P I O/\(P l OvP l 1 ) = P l O nous ramène à
PO .... P3/\P l 0.
Sinon, nous avons le choix entre
PO .... P3/\P l 0 1 /\P l 02, et PO .... P3/\P l 0/\P l 1 .
La méthode ascendante diffère ainsi d'une évaluation algébrique par la seule
traçabilité du résultat, décisive pour produire un plan d ' action.

4.3.2 Problèmes à coûts bornés


Dans cette autre approche, convenons de valuer chaque problème par un intervalle
12
numérique [a b] ç • •· • + , considéré comme encadrant le coût ou la durée, dont (a·b) 1
fixe l 'ordre de grandeur, et b/a l ' incertitude. Cette approche permet de reproduire la
précédente, avec plus de nuances : on peut ainsi comparer à une solution très sftre
mais très chère, valuée [9500 1 0500) , des solutions ouvertes, mal maîtrisées, moins
risquées (valuée par exemple [ 1 00 8000)) ou plus risquées (valuées par exemple
[8000 60000)). S ' i l s ' agissait de valeurs isolées, on poserait :
ET(x, y) = x + y et OU (x, y) = min(x, y).
64 A-Approche algorithmique

De même, pour la conjonction de deux tâches on posera


ET([ a b], [c d]) = [a + b, c + d] .

Mais pour le OU ? Si P peut être résolu par une tâche de coût [a b] ou une tâche
de coût [ c d] , laquelle choisir ?
• Une règle optimiste retiendra la tâche ayant la plus petite borne minimale, afin
de laisser « une chance à la chance » et, en cas d ' égalité, la tâche ayant la plus petite
borne maximale ; ainsi, on préfèrera [ 1 00 500] à [ 1 00 600] mais aussi à [200 400] .
• Une règle pessimiste, recommandée en ingéniérie 1 3 , voudra qu 'on retienne la
tâche ayant la plus petite borne maximale, afin de « minimiser le désastre » 14 et, en
cas d 'égalité, la tâche ayant la plus petite borne minimale ; ainsi, on préfèrera
[ 1 00 500] à [200 600] comme à [200 500), mais on lui préférera [200 400] .
Considérons maintenant un problème PO et son analyse, comme définis par les 3
premières colonnes du tableau 4.3. A partir de là, on peut évaluer les sommets dont
tous les successeurs sont terminaux (phase 1 ). Puis successivement tous les sommets
dont tous les successeurs sont valués (phases 2 et 3). Ainsi, PO apparaît comme fai­
sable pour un coût [ 1 1 0 1 80] .

Tableau 4.3 Etude de résolution aux intervalles.


Pb n° def Solution Phase 1 Phase 2 Phase 3
0 P l vP2 ( 1 10 180)
1 P3AP4AP5 ( 1 1 0 180)
2 P6AP7AP8 [270 360]
3 terminal (50 1 001
4 P9vP I O (30 40)
5 P I OvP l l (30 40)
6 P l 2vP l 3 [60 80]
7 P l 3AP l 4 [ 1 80 2 1 5]
8 P l 5vP l 6 (30 65]
9 terminal [60 80]
10 terminal (30 40)
li terminal (20 70]
12 terminal [40 90]
13 terminal [60 80]
14 terminal [ 1 00 1 20]
15 terminal [80 95]
16 terminal [30 65]

Remontant de cette valeur finale à son origine on construit de proche en proche


le ou les plans d' action souhaitables.

13
L'ingénieur est sensé être un « pessimiste actif ».
14 Ou « s'en sortir au mieux si tout tourne mal ».
Méthodes de réduction 65

PO est faisable sous la forme P l , conjonction de P3, P4 et P5, préférable à P2,


beaucoup plus onéreux. P3 est terminal, P4 est faisable au titre de P l O, et P5 aussi au
titre de P I O (P l 1 étant plus risqué).
Avec la convention A � B pour « A est réalisé par B », on notera donc :

La dernière formule peut être considérée comme un « plan d 'action » suffisant


pour réaliser PO, les autres possibilités étant éliminées comme trop coûteuses ou trop
risquées.
On peut encore espérer une économie sur les P l O, si, au lieu de 2 instances
complètes on peut se ramener à 2 invocations d'un même bloc. L' estimation pour PO
tomberait alors à [80 1 40], loin des [270 360] d'un réalisation de PO via P2.

4.4 STRATÉGIE DESCENDANTE OU ANALYTIQUE

On suppose que l ' analyse du problème a produit un graphe ET/OU, sans que les
sommets terminaux soient renseignés a priori. A partir de là, une stratégie descen­
dante consiste à parcourir ce graphe en profondeur de façon à recueillir les valeurs
terminales quand elles seront nécessaires pour évaluer les nœuds rencontrés, un
nœud étant évaluable au pire quand tous ses successeurs sont évalués.
Ce processus, en principe très lourd, peut être élagué : un nœud est de fait éva­
lué dès qu 'un de ses successeurs possède une valeur absorbante pour l ' opération
associée au dit nœud : faux pour ET, vrai pour OU, + w pour max et + dans : . , 0 pour
min dans :� +, -w pour min dans : . . .
Par exemple, si une conjonction doit être établie, elle est impossible dès qu 'un
de ses termes est impossible ; et, quand une alternative se présente, elle devient une
solution dès qu ' une de ses possibilités est elle-même une solution.
Dans ces conditions, le processus d 'évaluation s 'accélère mais, de plus, compte
tenu de ce qui est déjà connu, des impasses sont possibles sans perte d'information et
la valeur de certains terminaux peut ne pas être nécessaire, ce qui est intéressant si
elle est difficile ou lente ou coûteuse à déterminer.

4.5 EXEMPLES

Les graphes ET/OU permettent de représenter toutes sortes de hiérarchies de buts et


de sous-buts, exprimés en termes de conjonctions et d'alternatives.
Leur interprétation dépend
• de la nature des valeurs attachées aux éléments terminaux,

• des opérations attachées aux ET et OU, définies au regard de la nature des va­

leurs à combiner et de la problématique.


66 A-Approche algorithmique

4.5. 1 Comportements
On peut représenter le comportement d 'un animal supérieur par une conjonction
entre (a) une fonction vitale et (b) un souhait, obj ectif ou désir commandant toute
autre activité.

Vi vre

enSécurité
paFroid
paSoif seRégaler
p
a� /
satiété manger

Fig. 4.2 Graphe ET/OU pour un comportement gourmand.

Le développement du réseau devrait faire apparaître les interdépendances entre


fonctions.
Pour un robot,
• la fonction vitale concernera par exemple la surveillance de ses batteries (pour

recharge si besoin) et l 'évitement des collisions,


• l 'objectif sera la mission assignée.

4.5.2 Procédures administratives


L ' obtention de nombreuses pièces administratives suppose généralement d ' en pro­
duire plusieurs autres (avec parfois des alternatives). Le schéma se répète évidem­
ment pour chacune des pièces manquantes, ce qui se représente très bien à l ' aide de
graphes ET/OU.

4.5.3 Analyses de pannes ou de défaillances


L 'analyse causale des pannes et défaillances exprime généralement un indice obser­
vable (ou symptôme) en fonction de ses causes immédiates, ce qui se représente bien
à l ' aide de graphes ET/OU ..
Comme ces diagrammes servent souvent de guides à des processus de dépan­
nage, qu 'on souhaite rapides et sûrs, on s ' est depuis longtemps posé la question de
bâtir des graphes ET/OU réduits. Il s ' agit de graphes logiquement équivalents aux
graphes initiaux, mais qui par la mise en évidence de facteurs communs, minimisent
les opérations à effectuer pour le diagnostic.
L'analyse de risque utilisera des graphes similaires dont elle fera une interpréta­
tion probabiliste.
Méthodes de réduction 67

4.5.4 Sherlock Holmes vs Rouletabille


Les pataphysiciens avaient créé ! ' Oulipo, OUvroir de Littérature POtentielle ; puis
C. Berge avait proposé un Oulipopo, OUvroir de Littérature POiicière POtentielle,
qu 'il dotait du concept de « graphes d ' intervalles », pour trouver qui avait menti dans
certaines énigmes policières.
Dans un esprit similaire, comparons les discours méthodologiques de Conan
Doyle (par la voix de Sherlock Holmes) et de Gaston Leroux (par la voix de Roule­
tabille) dont on voit clairement que chacun bâtit dans les affaires qui l 'occupe un
graphe ET/OU virtuel représentant le système explicatif recherché.
Sherlock Holmes le décore par une stratégie ascendante, collationnant les faits
mineurs pour en établir de plus importants, ou partir sur d 'autres pistes fragmentai­
res, tandis que Rouletabille bâtit d' emblée un système qu 'il explore en profondeur à
partir de l 'hypothèse la plus fo1te, élaguant sous-hypothèses et recherches en fonc­
tion des observations.

4.6 FORMALISMES ET/OU/NON


De nombreuses applications des graphes ET/OU amènent à considérer comme varia­
bles logiques signifiantes pour le problème diverses variables logiques liées, dont les
combinaisons ont toutes une signification, soit en termes de situation normale, soit en
termes d'anomalie, qu ' i l importe de bien traiter pour la sécurité des systèmes.
Soit une citerne servant à réguler un débit. On lui attribue 3 niveaux symboli­
ques de remplissage : vide, mi-pleine, pleine, déduits de 2 indicateurs : débit en sor­
tie, débit du trop plein. On en déduit le tableau 4.4.

Tableau 4 . 4 Etats d'une citerne.

débit citerne anomalie

sortie trop-plein

0 0 vide
0 1 pleine sorlie bouchée !
1 0 mi-pleine
1 1 pleine

Une spécification du style


Si sortie ouverte et pas de débit en sortie alors
Si débit trop plein alors sortieBouchée
sinon citerne Vide
peut alors se représenter comme ci-après par un graphe de style ET/OU/NON, gra­
phe ET/OU dans lequel une petite barre en travers d 'un arc marque sa négation.
68 A-Approche algorithmique

sortieBouchée citerne Vide

sortieOuverte débitSortie débitTropPlein

Fig . 4.3 Graphe ET/OU/NON pour une citerne.

4.7 FORMALISMES PUIS/SINON

Parfois, le formalisme ET/OU conviendrait aux commutations près. Pour marquer


qu'une conjonction est en fait une séquence, il faudrait que ET devienne PUIS ; de
même, qu 'un OU devienne un SINON pour imposer un ordre d ' examen des possibi­
lités d ' une alternative.
Les nœuds PUIS et SINON se distingueront donc des nœuds ET/OU classiques
par l ' imposition d'un ordre aux arcs sortants de chaque nœud concerné.

4.7. 1 Formalismes procéduraux


Soit à représenter la fonction « survivre » dans le comportement d 'un animal. Pour
cela, il doit veiller à être en sécurité, et n'avoir ni faim ni soif ni froid. Il n ' a (finale­
ment) pas faim s ' il a un sentiment de satiété ou si, ayant faim, il apaise sa faim jus­
qu ' à ce qu' il n ' ait plus faim. Pour apaiser sa faim, ou de la nourriture est disponible,
et il la mange, ou il n'y a pas de nourriture disponible, et il en cherche, jusqu 'à pou­
voir apaiser sa faim.
Symboliquement, nous écrirons par exemple :
paFaim = {satiété 1 apaiserFaim · paFaim}
apaiserFaim = { nourritureDisponible · manger 1 chercherNourriture · apaiserFaim}
où sépare les étapes d' une séquence, et l les possibilités successives d'une alterna­
·

tive.
A ces écritures nous associerons le graphe de la figure 4.4.
De tels graphes peuvent mêler actions et conditions. Pour le faire avec une
certaine cohérence, les terminaux ayant été qualifiés, on admettra :
• qu 'une séquence est une action si toutes ses étapes sont des actions, et une

condition sinon ;
• qu'une alternative à n branches doit comporter d' abord n 1 conditions,
-

l 'alternative étant finalement de la même nature que la dernière branche.


Méthodes de réduction 69

satiété?

nourritureDisponible? manger chercherNourriture

Fig. 4.4 Graphe PUIS/SINON.

En suffixant les conditions par un « ? », nous écrivons maintenant :

paFaim = {satiété ? 1 apaiserFaim · paFaim}


apaiserFaim = {nourritureDisponible ? manger 1 chercherNourriture · apaiserFaim}
correspondant aux formes algorithmiques «jusqu 'à satiété ? faire apaiserFaim » et
« Uusqu 'à nourritureDisponible ? faire chercherNourriture } manger » ·

4.7.2 Formalismes grammaticaux


Grossièrement, les langues naturelles peuvent se ramener aux langues à déclinaison
et aux langues à syntaxe de position (pour plus de détail, cf. sect. 22. 1 5)
Dans les langues à déclinaison, la forme du mot indique « le cas » et donc son
rôle dans la phrase ; la position du mot est de ce fait assez libre.
Dans les langues à syntaxe de position - et dans la plupart des langages infor­
matiques - c'est la position du mot qui indique son rôle dans la phrase.

Tableau 4.5 Exemples de phrases.

langue la phrase suit un schéma


à déclinaison equus servum spectat. sujet, complément, verbe ( SOY )
equum servus spectat. complément, sujet, verbe (OSV)
aquam homo bibi!.
à syntaxe de position le cheval regarde l'esclave. sujet, verbe, complément (SVO)
l 'esclave regarde le cheval.
l'homme boit l'eau.

Une approche PUIS/SINON représente bien ce type de syntaxe, PUIS corres­


pondant à l 'ordre des séquences, et SINON au fait qu'un ordre de traitement
s ' impose pour l ' analyse des possibilités en cas d 'ambiguité locale.
70 A-Approche algorithmique

La phrase « le vieux chat dort sur le banc » est conforme à la grammaire :


phrase : sujet, verbe, complément.
sujet : pronom-sujet ;
groupe nominal.
groupe nominal : nom propre ;
article, suite nominale.
suite nominale : adjectif, nom commun ;
nom commun.
complément : préposition, groupe nominal.
qu 'on peut visualiser comme ci-après.

phrase

! \!:;!,

�"'°�'""
sttjet verbe complément

� « avec » « pendant » « sur »

pronom-sujet groupe nominal


�suite nominale
aiticle
«je » « tu » « il »
, � � ------..
« le » « la » suite qualifiée nom commun

li_// • ��
adjectif « banc » « chat » « papillon » « notaire »
�)" '1'
« gros » «joli » « vieux »

Fig. 4.5 Graphe grammatical.

Analyse syntaxique descendante


Le traitement d'un texte commence généralement par son analyse syntaxique. La
méthode automatique la plus ancienne est la méthode de descente récursive définie
par Peter Lucas en 1 96 1 .
Fondamentalement, elle considère toute grammaire comme structure algorith­
mique de l ' analyseur syntaxique correspondant ; à chaque notion terminale est asso­
ciée une fonction booléenne à effet de bord standard : si la reconnaissance de la
notion a réussi, l ' analyseur doit se retrouver immédiatement au-delà du texte recon­
nu, tandis que si la reconnaissance a échoué, l ' analyseur doit se retrouver au point de
départ du fragment à reconnaître. Une notion non terminale se ramène à une combi­
naison PUIS/SINON de notions « plus simples » , la consommation des textes recon­
nus garantissant la convergence de l ' analyse.
Méthodes de réduction 71

L a controverse qui a suivi des applications plus o u moins heureuses a mené à la


définition des grammaires LL(k), les grammaires LL( I ) étant celles pour lesquelles
le principe s'applique le plus directement. Le principe a été adapté par la suite à des
formalismes plus ambitieux, comme par exemple les langages LET (Beney 1 98 1 ) et
LET+ (Martin 1 990) (cf. § 22. 1 0. 1 ). Cette approche correspond à une exploitation en
profondeur de la grammaire considérée. Dans le cas de la phrase et de la grammaire
données en exemple, nous aurions :

phrase ? le vieux chat dort ...


SEQ suj et ? verbe ? complément ?
ALT pronom- suj et ? groupe nominal ?
ALT « j e »? « tu » ? « il » ?
groupe nominal ?
SEQ article ? suite nominale ?
ALT " l e " ? . . . vieux chat dort sur
suite nominale ?
suite qua l i fiée ?
SEQ adj ect i f ? nom commun ?
ALT « gros » ?« j ol i » ? « vieux » ?
chat dort sur le banc
nom commun ?
ALT « banc » ? « chat » ? ...
dort sur le banc
verbe ?
ALT « dort » ? « est » ? sur le banc
complément ?
SEQ prépo s i t ion ? groupe nominal ?
ALT « avec » ? « pendant » ? « sur » ? le banc

Si le seul problème est l 'acceptation, la phrase sera acceptée. Si on veut le résul­


tat détaillé de l'analyse, on peut transmettre, étiqueter et assembler ce qui a été obte­
nu, pour obtenir un arbre étiqueté comme :
(phrase ( suj et (groupe_nominal ( article « le » )
( su i te nominale
( suite qua l i fiée
( adj ect i f « vieux »)
( nom_commun « chat » ) )

(verbe « dort » )
( complément (prépo s i t i on « sur » )
( groupe-nominal ( article « le » )
( sui te_nominale (nom_commun « banc » ) )

On voit qu'il s'agit bien d'une exploration hypothético-déductive, en profon­


deur, ayant pour but la reconnaissance ou le rej et de la notion majeure. Les régres­
sions positives ou négatives sont déclenchées à propos des terminaux, reconnus ou
non dans Je texte en regard : l 'hypothèse la plus locale se trouve ainsi infirmée ou
confirmée, ce qui réagit sur le pilotage de l ' analyse.
72 A-Approche algorithmique

Analyse syntaxique ascendante


C 'est une méthode appréciée des linguistes, correspondant aux grammaires LR(k),
reprise par yacc . . . Cette méthode inductive privilégie la reconnaissance du mot ; un
lexique donne sa nature, ce qui indique les constructions les plus simples auxquelles
il peut appartenir ; si telle construction est reconnue, on passe aux entités dont elle
peut relever.

On aurait ici :
le � article ( suite nominale � groupe nominal )
vieux � adj ect i f ( nom commun � suite qua l i fiée )
chat � nom commun (� suite qua l i fiée � suite nominale � groupe
nominal � suj et )
dort � verbe ( complément � phra s e )
sur � prépo s i t ion (groupe nominal � complément )
le � article ( suite nominale � groupe nominal )
banc � nom commun (� suite nominale � groupe nomi nal �
complément � phrase )

Les homonymies, les polysémies, les mots « mis pour » compliquent évidem­
ment la situation : « le » peut être un pronom (le voudrais-je . . . ), « vieux » peut être
nominal (le vieux dort sur le banc), etc. C ' est ce qu 'on observe dans les construc­
tions ambiguës qui font le miel des linguistes, comme « les poules du couvent cou­
vent » ou « la vieille ferme la porte ».

4. 7 .3 GPS ( General Problem Solver)

Descartes proposant de résoudre force problèmes par fractionnement, Leibniz remar­


quait qu 'il fallait encore ne pas fractionner n'importe comment.
En 1 959-6 1 , Newell et Simon travaillèrent sur un General Problem Solver, ou
Résolveur Général, programme qui se voulait « spécialisé dans la résolution de pro­
blèmes quelconques », et que l 'on peut considérer comme mettant en œuvre une
méthode de réduction à la Leibniz. Pour cela :
• Tout problème est caractérisé par une situation de départ et une situation

d'arrivée. Chacune de ces situations est définie par une liste de traits (attribut,
valeur). A partir de ces listes le problème peut se définir comme une liste de
différences qualitatives à réduire.
• On dispose d ' opérateurs, dont chacun a pour propriété de réduire au moins

une de ces différences qualitatives.


• Les attributs sont hiérarchisés entre eux, et pour chacun les opérateurs sont

eux-mêmes hiérarchisés.
La stratégie GPS est alors la suivante :
• on cherche la différence principale à réduire dans le problème posé, et la liste

d'opérateurs attachée à cette différence ;


• on tente d'appliquer à la situation chaque opérateur, du plus recommandé au

moins recommandé, jusqu'à trouver un cas adapté ; l ' application d'un opéra-
Méthodes de réduction 73

teur induit deux sous-problèmes, qu 'on traite récursivement : rendre


l 'opérateur applicable (i.e. satisfaire ses préconditions) - c ' est le sous­
problème amont - et achever la résolution, en résolvant le sous-problème
aval : la différence la plus importante étant réduite, passer de la nouvelle si­
tuation engendrée (en principe moins critique) à la situation finale cherchée.
L'application d'un opérateur échoue si l'un des sous-problèmes associés
échoue. La stratégie échoue à un premier niveau si on épuise la liste des opérateurs
associés à la différence à réduire. On tente alors de réduire la différence immédiate­
ment moins importante, etc. La stratégie GPS a complètement échoué si, en essayant
de réduire chaque différence, de la plus importante à la moins importante, aucun
opérateur efficace n'a été trouvé, ni directement ni par contournement.

EXEMPLE.
Je suis au Département Informatique de l ' INSA de Lyon, et je dois rencontrer un
collègue du Département MA de l ' EPFL à Lausanne.
Nous ne sommes ni dans le même bâtiment ni dans le même établissement ni dans la
même commune ni dans la même agglomération ni dans le même pays, mais dans
deux pays limitrophes, à distance moyenne.
L 'opérateur de transport recommandé est alors le train.
Pour cela, je dois me rendre à la gare associée à l ' INSA de Lyon, soit la gare de
Lyon-Part-Dieu, qui n ' est ni dans l ' établissement ni dans la même commune mais
dans la même agglomération (sous-problème amont).
L 'opérateur de transport alors recommandé est le tramway, qui m' emmène du pied
du bâtiment Informatique de l ' INSA de Lyon à la gare de Lyon-Part-Dieu. Pour cela,
je me rendrai d'abord à pied à la station de tramway . . .
Je peux ainsi prendre le train pour Lausanne (problème central) qui me laisse à la
gare de Lausanne-CFF. Il me reste à aller de la gare de Lausanne-CFF au Départe­
ment MA de l ' EPFL, qui ne sont pas dans la même commune mais dans la même
agglomération (sous-problème aval). L' opérateur de transport alors recommandé est
le métro, qui m'emmène de la gare de Lausanne-CFF à l ' entrée de l ' EPFL à Ecu­
biens. De là au Département MA de l ' EPFL, je finis à pied. •
GPS fut abandonné pour des raisons matérielles :
• disparition du langage support, supplanté par Lisp ;

• complexité pour l ' adaptation à une nouvelle application : révision des tables

pour les hiérarchies d ' opérateurs, et codage des procédures correspondantes


incarnant ces opérateurs.
Cependant, l 'originalité de sa méthode fut remarquée. Cette méthode repose sur
une confrontation moyens / fins, et aussi sur l ' idée que tout problème réel se décom­
pose en un problème central sur lequel il faut se concentrer, plus des problèmes an­
nexes liés aux particularités du cas. Cette méthode a inspiré quelques grandes réalisa­
tions ultérieures.
74 A-Approche algorithmique

Strips
Fikes, Nilsson, Hart et Sacerdoti ont développé à l 'Université de Stanford en 1 97 1
un système de planification pour le robot Shakey, robot radiocommandé 1 5 à capteurs
tactiles et vision réduite. L'univers de raisonnement était formé de boîtes, de salles et
de portes. Les opérateurs étaient définis en termes de préconditions, et d'actions de
deux types : génération et effacement de relations. La planification est réalisée à
l 'aide d'un démonstrateur de théorèmes.
Par rapport à GPS, on note une orientation logique, remplaçant tables et procé­
dures ; la situation est à tout moment définie par une conjonction de faits ; la planifi­
cation découle d'un but défini par une conjonction de relations : les opérateurs étant
élus selon leur capacité à engendrer les conditions non satisfaites, les préconditions
d'un opérateur élu deviennent de nouveaux sous-buts.

Abstrips
Sacerdoti, en 1 974, a présenté un habillage de Strips permettant une planification
hiérarchique, ou par raffinements successifs, afin d'éviter de construire en détail des
solutions devant finalement échouer pour des raisons assez évidentes.
La planification découle d'un but défini par une conjonction de relations pondé­
rées. Un problème de niveau n reçoit une solution de niveau n, bâtie en ne tenant
compte que des prédicats de ce niveau ou d'un niveau antérieur. Une solution de
niveau n est considérée comme un problème de niveau n+ l : la/les solutions de ce
nouveau niveau habille(nt) la solution antérieure, dont elles constituent un raffine­
ment réaliste. Le dernier niveau épuise la conjonction initiale de relations formant le
but, tous poids confondus.

Autres planifications
D'autres travaux ont été développés en termes de planification. Par exemple, le
temps est géré par instants ou évènements chez McDermott, et en termes
d' intervalles chez Allen. La robotique tend à privilégier une planification réactive,
sensible aux évolutions de l 'environnement, capable de moduler ou reconstruire un
plan en cours d' exécution, en fonction des aléas de cette exécution.

4.8 COORDINATION

La méthode de réduction exploite les possibilités de résolution d'un problème par


fragmentation en sous-problèmes ; mais elle feint de considérer ces sous-problèmes
comme autonomes, alors que la plupart du temps ils doivent être coordonnés.
« Trouver un musicien grec » ce n' est pas la simple conjonction de « trouver
un musicien » et « trouver un Grec » : encore faut-il que ce musicien et ce Grec
soient le même individu.

15 Par un ordinateur fixe contenant le système de planification automatique.


Méthodes de réduction 75

En termes de bases de données, on cherche une liste M de musiciens d'urte part,


une liste G de Grecs d ' autre part, et on coordonne a posteriori ces recherches en
bâtissant MnG comme solution.
En Intelligence Artificielle, on préfèrera 1 ' approche « produire et valider » : un
processus énumérant la liste M des musiciens, un filtre retient ceux d'entre eux qui
sont grecs. Il s ' agit d'une production à la chaîne : pendant qu 'on recherche le pro­
chain musicien, on peut vérifier si le dernier trouvé est bien grec. Ce procédé, que la
logique exprimera simplement, peut être particulièrement efficace si on retient
comme processus générateur le plus expéditif des deux possibles.
De même,
• les différents moments d'une analyse syntaxique sont coordonnés par la ma­

nipulation d'un obj et commun : le texte en cours d' analyse ;


• les différentes phases en GPS se coordonnent par la passation d'une situation

globale qui évolue au cours de la résolution.


La méthode de réduction s ' appliquera donc essentiellement à travers des forma­
lismes explicitant pour un problème
• sa fragmentation en sous-problèmes,

• mais aussi le flux d ' informations les coordonnant.

4.9 RÉDUCTION ET RÉCURSIVITÉ

Lorsque la réduction d'un problème P renvoie à une autre version P' du même pro­
blème, la méthode de réduction implique des récursivités, directes ou indirectes, La
convergence du procédé suppose alors :
• que P' soit « plus simple » que P,

• que cette réduction ramène à un ou plusieurs cas élémentaires qu'on sache ré­

soudre directement.
Soit P = TC(x), où P désigne le problème concret, TC une version générique de P,
et x la spécialisation de TC correspondant à P. Alors, on aura P' = TC (x'), et la condi­
tion de convergence de la réduction sera remplie dès lors que x' sera un obj et, un j eu
de paramètres etc. similaire à x mais plus simple, les transformations successives
x-+ x'-+ x" . . . qui pourraient intervenir ramenant finalement P(x) à l ' un des cas
élémentaires qu 'on sait résoudre directement.
Plus généralement, la fragmentation d'un problème en sous-problèmes similai­
res plus faciles à résoudre peut s ' appliquer récursivement pour n'avoir qu 'à résoudre
des problèmes élémentaires. Elle calque en général une relation de récurrence liant
données et résultats, chaque problème élémentaire ne s ' adressant plus qu' à une partie
des données.
Cette stratégie peut mener à des procédures récursives ou à d' autres formes
algorithmiques, pour autant que les données intermédiaires soient convenablement
stockées et transmises.
76 A-Approche algorithmique

4.9.1 Résolution par déflation


On peut envisager d'abord divers problèmes où P(n) ne s 'exprime simplement qu' en
termes de P(n- 1 ).
C 'est le cas pour rechercher un chemin de A à Z dans un graphe G à n som­
mets. Pour n 2:: 2, s 'il existe un arc de A à B, il suffit de trouver un chemin de B à Z
dans un sous-graphe G ' de G dont A a été ôté : G ' n 'a donc plus que n-1 sommets.

Exemple. Problème des tours de Hanoï


Légende mise à part, ce problème peut être ainsi défini.
On possède trois piquets.
Sur le premier sont empilés N = 64 disques, de taille croissante du premier à la
base. Les deux autres piquets sont libres.
Comment transporter un par un les N disques du premier piquet à un autre, si
l ' on s ' impose à tout moment que sur chaque piquet les disques empilés le soient
toujours par taille croissante du premier à la base ?
Le problème est simple pour N= I , 2, 3 . Mais il devient difficile d 'expliciter les
cas suivants.

Tableau 4.6 Problème des Tours de Hanoï.

disques phases
1 1 -- - 1 -

2 1 1
2 -- 21 - - 12 -- 2
3 1 1
2 2 1 1 2 2
3 -- 31 - 312 3-2 -3 2 132 1 3- -3 -

.. .

N Â - Â Â- Â
1 2 3 1 23 1 23 1 23

Par contre, supposons que l'on sache régler le problème du transport de N- 1


disques d'un piquet à un autre :
Pour transporter N disques du piquet 1 au piquet k=3 (ou 2), il suffit :
• de transporter les N-1 disques supérieurs du piquet 1 au piquet 5 - k,
• de transporter le Ji"'e disque du piquet 1 au piquet k,
• puis de ramener les N-1 disques supérieurs du piquet 5 - k au piquet k.
Le nombre d ' opérations élémentaires (transfert d 'un disque) est alors donné
par :
n( l ) = l et n(N) = 2n(N- l ) + 1 , soit : n(N) = 2 N - 1 .
1
Pour les 64 disques de la légende, compter environ 1 0 9 opérations, soit 1 0 mil­
liards de milliards . . .
Méthodes de réduction 77

4.9.2 Accélération par fragmentation


L' idée est ici assez différente. Il s ' agit de cas où l 'on dispose d'une méthode lourde,
considérée comme tellement chère qu 'on ne souhaite l 'employer que sur des cas
simples. On propose ici une stratégie d 'extension, du type « divide and conquer »
supposant moins coûteux de fusionner des solutions partielles que de bâtir une solu­
tion globale.

Performances
Soit T(n) la complexité temporelle d'un problème de taille n, problème subdivisé en
a sous-problèmes de taille nib, et soit S(n) un temps additionnel lié à la distribution
des données et à la synthèse des résultats. Alors,
T(n) = aT(n/b) + S(n)
mesure la complexité au pire du problème subdivisé. Dans le cas où n=b\ (Froide­
vaux et al. , 1 994, p. 545) montrent que :

Soit, avec S(n)=c·n• :


k-1

T(n) = n 10g• " + cn• :L C � )j


j=O b
On souhaite évidemment un T(n) croissant aussi peu que possible. Le premier
terme rend compte des « traitements purs » et le second de l ' impact des tâches auxi­
liaires de diffusion des données et de synthèse des résultats.

le tri parfusion
On remarque d' abord qu ' il est facile d ' interclasser deux suites déjà triées dans
l ' ordre croissant ; le processus est linéaire.
Au-delà de quelques éléments, le principe du tri par fusion d'une table est de trier
séparément la moitié inférieure et la moitié supérieure de la table, puis d' interclasser les
deux demi-tables triées. On se trouve dans le cas ci-dessus avec S(n)= O(n), et finale­
ment T(n)=O(n log n), alors qu'on pouvait craindre un temps en n2•

liste des feuilles d 'un arbre


Soit à établir la liste des n feuilles d'un arbre binaire, défini comme étant soit un
atome, soit une paire d'arbres binaires.
Une méthode essayant d'exploiter la structure physique de l ' arbre (en termes de
pointeurs etc.) peut se révéler assez lourde à écrire et à mettre au point. La nature
récursive de la définition de l ' arbre suggère simplement d' écrire :
l i ste ( arbre : A) = ( atome (A) � A ;
l i s te ( gauche (A) ) + " , " + l i ste ( droite (A) }
qui utilise deux extracteurs et dont la complexité est linéaire en n si la complexité de
la concaténation est constante.
78 A-Approche algorithmique

Recherche de circuits hamiltoniens de longueur minimale dans de gros graphes


C ' est en principe un problème de type NP. Karp a proposé une méthode approchée,
nettement plus rapide, basée sur le partitionnement des sommets en zones disjointes,
la recherche de circuits hamiltoniens de longueur minimale dans chacune de ces
zones, puis le raccordement des circuits trouvés avec ceux des zones contiguës.

4. 1 0 EXERCICES

4. 10.1 Organisation 1
On considère le problème PO défini par la table ci­
contre, dans laquelle on associe à chaque problème ...
.=
0 :::1
terminal un « niveau de difficulté », noté 0 pour = "
., .... e
instantané, 1 pour facile, 2 pour moyen, 3 pour i=.. ..
"C:I :a
difficile, 4 pour très difficile.
0 P l vP2
On posera ET(d l , d2) = max (d l , d2) et
1 P3AP4AP5
OU(d l , d2) = min (d l , d2). 2 P6AP7AP8
En déduire de proche en proche la difficulté
des problème non-terminaux. 3 terminal 1
Quelle est la difficulté de PO ? 4 P9vP I O
5 P I OvP I 1
Quel « plan d' action » pour le résoudre au
mieux ? 6 P l 2vP l 3
7 P l 3AP 1 4
8 P 1 5vP 1 6
4. 1 0.2 Organisation 2
9 terminal 2
Obtenir certaines pièces administratives suppose 10 terminal 3
souvent d ' en produire plusieurs autres (avec par­ Il terminal 4
fois des alternatives), le schéma se répétant pour 12 terminal 2
chacune des pièces manquantes. On considère le 13 terminal 1
graphe ET/OU correspondant à l ' obtention d'un 14 terminal 0
acte A, sachant que : terminal
15 1
• pour A, il faut produire les pièces B, C, D,
16 terminal 2
et E (ou F) ;
• pour C il vous faut les pièces F, G, H ;

• pour H, il vous faut F et D,

• pour E, il vous faut D ou K,

• pour K, il vous faut L et M.

Tracer le graphe et/ou correspondant. Montrer que les pièces B, D, F, G sont


nécessaires et suffisantes pour obtenir A.
Plan d'action. En supposant que l ' obtention d'une nouvelle pièce demande
environ 3 semaines, par où commencer pour « faire vite » ?
Méthodes de réduction 79

4. 1 1 INDICATIONS

Pour 4.8. 1

Tableau 4.7 Difficulté du projet et tâches suffisantes (en gras) .

Pb li0 def difficulté Phase 1 Phase 2 Phase 3

0 P l vP2 1
1 P3/\P4/\P5 3
2 P6/\P7/\P8 1
3 terminal 1
4 P9vP J O 2
5 P I OvP l 1 3
6 P l 2vP13 1
7 Pl3/\Pl4 1
8 P15vP 1 6 1
9 terminal 2
10 terminal 3
11 terminal 4
12 terminal 2
13 terminal 1
14 terminal 0
15 terminal 1
16 terminal 2

Pour 4.8.2
Avec F (demandé pour C), E (donc K, L, M) devient inutile. On se ramène à
A ..,. BACADAF, C ..,. FAGAH, H ..,. DAF, dont les terminaux sont B, D, F, G. L ' obten­
tion de A demande 3 stades : celle de H, celle de C, celle de A. 2 mois devraient
suffire.

4. 1 2 RÉFÉRENCES
Buchanan B . , Sutherland G., Feigenbaum E., 1 969, Heuristics Dendral : A program
for generating explanatory hypotheses in organic chemistry, Machine Intel­
ligence. // DENDRAL réalise l 'analyse automatique des spectres de masse
pour déterminer la structure moléculaire du corps chimique étudié, à partir des
masses atomiques et des valences.
Fikes, R. E. & Nilsson N.J. , 1 97 1 , STRIPS, A New Approach to the Application of
Theorem Proving, Artificial Intelligence, vol. 2.
Froidevaux Ch. , Gaudel M.F., Soria M., 1 994, Types de données et algorithmes,
Ediscience Inti, Paris.
CHAPITRE S

RÉSEAUX SÉMANTIQUES

Les graphes se sont révélés un outil commode pour représenter :


• l 'univers du problème, un problème donné dans cet univers, et les plans
d'action qui le résolvent,
• une hiérarchie de problèmes culminant avec le problème sous étude, et fondée
sur les problèmes apparentés que nous savons résoudre,
• de même, pour un texte sous étude, une grammaire liant sa forme plus géné­
rale aux mots qui la compose.
Nous abordons ici les résultats les plus classiques concernant cette fois la com­
préhension d'un texte ou d'un corpus en vue de traitements divers, objectifs restés
longtemps inimaginables.

5 .1 ORIGINES

5.1 . 1 Arbre de Porphyre


L'homme s'est intéressé de tous temps à la définition « des entités, des êtres et des
choses », non seulement en soi, mais aussi relativement les unes aux autres. Les
intuitions et idées d'Aristote sur la question, étendues, reprises et précisées par Por­
phyre {IIIe siècle) dans son Jsagoge, relayées par Boèce, trouvèrent un large écho
chez les scolastiques, et subsistent ainsi au moins en filigrane dans la pensée actuelle
(Eco 1 988).
Considérons les espèces, êtres ou choses d'un même genre : comme Porphyre
l ' indiqua et comme les scolastiques le visualisèrent, l 'ensemble des définitions rela­
tives aux espèces et aux êtres ou choses de genre peut se ramener à un arbre :
• ayant pour racine le genre commun, d'autant plus abstrait que les entités liées
sont disparates ;
• ayant pour feuilles les êtres et les choses ;
• les niveaux intermédaires étant liés par les diff érences spécifiques, qui font
d'un genre l 'hyperonyme de ses espèces, et de ses espèces les hyponymes du
genre.
Alors, une espèce, un être ou une chose peut être défini par un genre ou espèce
qui le/la domine dans l 'arbre, et la liste des différences spécifiques qui les séparent
(Eco 1 988 ; Nicolle 2002).
La figure 5 . 1 en donne un exemple simplifié 1 6,

1 6 Voir
.
Eco ( 1 988, pp. 97-102) pour des exemp 1 es p1us importants.
.
82 A-Approche algorithmique

• où un dieu au sens platonicien est un « animal rationnel immortel », incarnant


une force naturelle intermédiaire distincte de !'Un,
• où l 'homme apparaît comme « animal rationnel et mortel »,
• où le cheval apparaît comme « animal irrationnel mortel ».

animal
rationnel irrationnel

mortel immortel mortel immortel

homme dieu cheval ?

Fig. 5 . 1 Arbre de Porphyre.

5.1 .2 Modèle de Collins et Quillian pour la mémorisation


Collins et Quillian ont proposé en 1 969 un modèle hiérarchique pour la mémoire
sémantique, conçu antérieurement par Quillian pour les besoins d'un programme,
permettant un stockage efficace de l ' information et diverses inférences, dont un
exemple est donné figure 5.2 d'après Keenan ( 1 982).

peu� respirer
ANIMAL -
__

r....._

peu
� branchies
est_! manger
/ t(
--
a
/ est_!
__ /
/ OISEAU POISSON
� '
[Link]

; '

voler
eut

/
est_l
est_ ! "' t
est_!
peu
� ger

ROUGE-
AUTRUCHE
_peut�
courir
1
REQUrn
_peut
� mordre

GORGE "'
\
e �

plastron rouge
dangereux
palles longues

Fig. 5.2 Réseau de Quillian (hiérarchisé par est_!).

C ' est un réseau de concepts, connectés par des arcs marqués, du nom des rela­
tions entre concepts liés. La signification d'un concept est alors donné par
l 'ensemble des relations qu 'il a avec les autres concepts. Il y a deux sortes de rela­
tions : les relations d'appartenance catégorielle, notée est_l , et des propriétés (est,
a, peut . . . ).
Réseaux Sémantiques 83

L'organisation de ce réseau est hiérarchique pour les appartenances catégoriel­


les, qui sont supposées connues directement et non calculées.
Les propriétés sont de même notées relativement au concept le plus abstrait qui
les supporte : peut manger / peut respirer sont notées au niveau animal et non, par
exemple, au niveau oiseau ou requin. Il s'agit là d'un principe d'économie cogni­
tive, qui a pour contre-partie une inférence : un rouge-gorge peut respirer puisqu'un
oiseau, en tant qu'animai, le peut. Afin d'éviter de fausses inférences, les exceptions
sont notées au niveau adéquat : un rouge-gorge, en tant qu'oiseau, peut voler, mais
une autruche peut courir, au lieu de voler.
Soit une question relative à un domaine précis, comme « un rouge-gorge peut-il
voler ? ». Collins & Quillian postulèrent que le temps de réponse serait proportionnel
à la différence de niveau entre les éléments de la réponse dans cette hiérarchie de
mémorisation supposée, et trouvèrent dans les temps de réponse un retard de l'ordre
de 75 ms par niveau - plus un retard initial plus grand pour les propriétés spécifiques
que pour les appartenances catégorielles.
Si ce modèle est depuis longtemps invalidé sous d'autres aspects en matière de
mémorisation humaine, les modèles dérivés se sont révélés utiles en Intelligence
Artificielle.

5 .2 PREMIERS RÉSEAUX SÉMANTIQUES


On appelle en général réseau sémantique un multigraphe marqué possédant un som­
met par concept, et un arc (x y) marqué R si et seulement si la relation R est vraie
entre les concepts x et y, ce qu'on notera par la suite (x R y).
Un arc n'est pas exclusif : un arc (x R y) n'interdit pas en général un arc (x Q
y), puisqu'on peut bien avoir à la fois « Jules aime Agathe » et « Jules agace Aga­
the ».

5.2.1 Constitution d'un réseau sémantique·


On est souvent amené à constituer une réseau sémantique à partir d'un texte.
Si la nouvelle phrase du texte est « Jules aime Agathe », il suffit en principe
d'ajouter au réseau existant un arc « aime » entre les sommets Jules et Agathe, pré­
existants ou créés pour la circonstance.
Au-delà du modèle ternaire sujet/verbe/complément ou sujet/copule/attribut, les
verbes d'action combinent souvent divers actants (acteur, agent, objet, patient, bené­
ficiaire, instrument . . . ) et circonstants (temps, lieu, manière . .. ) (Tesnière 1 959): Il est
généralement plus simple de décrire l'acte en distinguant deux niveaux : cet acte est
un fait (désigné par un nom caché du type $ 001 ) d'un certain type. La phrase « Al­
fred donne à Charles un livre dans la cuisine » engendre une suite de triplets :
$001 est] do n
$001 acteur Alfred
$001 objet livre
$001 bénéficiaire Charles
$001 lieu cuisine
84 A-Approche algorithmique

Cette suite de triplets est facilement représentée par un réseau sémantique.

cuisine

Fig. 5.3 Réseau sémantique de « Alfred donne à Charles un livre dans la cuisine ».

Ce réseau concrétise la propriété bien connue : toute relation n-aire peut être
considérée comme la conjonction de n relations binaires.

Les phrases plus complexes sont en général traitées à partit d'un énoncé princi­
pal simple, centré sur le verbe principal, et dont les actants et circonstants sont eux­
mêmes l'objet d'énoncés auxiliaires. La phrase « Kiki le merle blanc a son nid dans
le grand marronnier derrière la maison » engendre une suite de triplets :

K iki estl merle $001 est] nid $002 estl marronnier


K iki est blanc $001 dans $002 $002 est grand
Kiki possède $001 $002 derrière maison

merle


est!
/ marronnier
Kiki -est-- blanc �
--- est!
possède
" /
$002 -es� grand
$OO 1 _dans�
'-
"'
!..,.
est
derrière
"""
nid maison

Fig. 5.4 Réseau sémantique de « Kiki le merle blanc a son nid dans le grand marronnier derrière la
maison ».

Le nid et le marronnier étant supposés uniques sans avoir de nom propre, ils se
voient attribuer un nom caché qui permet d'articuler définition et spécificités.
On raisonne de même au niveau des textes. Pour toute nouvelle phrase on forme
son réseau. On le juxtapose au réseau antérieur si elle est indépendante. Sinon, on
attache au réseau antérieur le nouveau réseau en fonction de la résolution des réfé­
rences de la nouvelle phrase aux phrases antérieures.
Réseaux Sémantiques 85

5.2.2 Interrogation d'un réseau sémantique


Pour toute question on forme son réseau, en introduisant des variables pour désigner
les entités demandées, et des variables muettes pour les entités implicites exploitées
par les contraintes. Par un procédé dit d'unification de graphe, on décide si le gra­
phe-question peut être identifié à une partie du réseau représentant le contexte. Dans
l 'affirmative, cette unification identifie les variables muettes et les variables explici­
tes, et l ' identification de ces dernières forme la base de la réponse.

Questions
Identification Réponse
forme textuelle triplets

Y a-t-il un merle ? ?X est l merle ?X = Kiki Kiki est un merle


Qui est blanc ? ?X est blanc ?X = Kiki Kiki est blanc
Qui est grand ? ?X est grand ?X = $002 Le/Un grand mar-
ronnier
Qui est derrière la ?X derrière maison ?X = $002 Le/Un grand mar-
maison ? ronnier
Qu 'y-a-t'il dans le ?X dans ?*l ?*I = $002 (Dans le marronnier il
marronnier ? ?* 1 est 1 marronnier ?X= $00 1 y a) Un nid.

Fig. 5.5 Interrogation du réseau sémantique de « Kiki le merle blanc . . . derrière la maison ».

5.2.3 Silence et héritage


Comme en Informatique Documentaire, on peut avoir souvent un phénomène de
silence: le texte convenablement codé, et la question bien posée, le logiciel d'inter­
action ne trouve pas la réponse. Un des remèdes apporté à cette question est la notion
d'héritage. Considérons le (sous-)réseau sémantique « Lola » ci-après.
esti esti possède
Lola >autruche >oiseau >plumage

Fig. 5.6 « Lola est une autruche. Une autruche est un oiseau. Un oiseau possède un plumage ».

Si on interroge un tel réseau, Lola sera retrouvée en tant qu'autruche. On sou­


haite aussi retrouver (a) qu'elle est un oiseau, (b) qu'elle a un plumage. Pour cela on
enrichit le mécanisme d ' interrogation d 'un mécanisme d'héritage.
L 'entité X hérite de la propriété P si X est un Y qui possède la propriété P, et
que de ce fait on admet P(X). Ce principe s 'étend par récurrence.
Le système d'interrogation ainsi enrichi saura établir au besoin que :
• Lola est un oiseau, car Lola est une autruche, qui est un oiseau ;
• une autruche possède un plumage, car une autruche est un oiseau, qui possède
un plumage ;
• Lola possède un plumage, car Lola est une autruche . . .
Si X est un Y, on dit que X est un hyponyme de Y, et Y un hyperonyme de X :
• oiseau est hyperonyme d 'autruche,
•fauteuil, siège, table sont hyponymes de meuble . . .
86 A-Approche algorithmique

Selon le principe d'héritage, toute propriété d'un hyperonyme devient propriété


de ses hyponymes.
D'où un principe d'économie cognitive : si les hyponymes d 'une même entité X
partagent une propriété, il suffit d 'indiquer cette propriété au niveau de
/ 'hyperonyme commun X, pour la retrouver si besoin, par héritage, au niveau de
chaque hyponyme.

5.2.4 Bruit et exception


Comme en Informatique Documentaire, on peut avoir souvent un phénomène de
bruit: le texte convenablement codé, et la question bien posée, le logiciel d' inter­
action émet des réponses non pertinentes.
En ce sens, silence et bruit ne sont pas incompatibles, leur coexistence aggra­
vant la situation.
Partons d'une relation entre catégories telle que « X est l Y ».
Si nous sommes dans un cadre strict, de type mathématique, cela signifie que
X ç Y, et le principe d'héritage s' applique sans restriction : P(Y)7P(X).
Mais, depuis Vicq d'Azyr ( 1 792), on sait que les classes au sens expérimental
ne partagent pas systématiquement cette propriété : si on considère que les autruches
sont des oiseaux, c'est parce qu'elles partagent beaucoup plus de propriétés avec les
oiseaux qu'avec les mammifères ou les poissons . . .
Il sera donc plus réaliste d'admettre que le principe d'héritage s'applique en
général, bien qu' il puisse connaître des exceptions en particulier.
Soit un trait T qui attribue à certaines entités une valeur.
Si l 'entité X ne possède en propre aucune propriété T(X, x), alors l 'entité X hérite de
la propriété T(X, a) si X est un Y qui possède la propriété T(Y, a), et que de ce fait on
admet T(X, a). Mais si l 'entité X possède en propre une propriété T(X, x), alors cette
propriété prime sur toute propriété héritée de type T(X,_), où « » désigne une va­
_

leur quelconque, et constitue ainsi une exception à l 'héritage.


Concrètement, l(a plupart d)es oiseaux volent, mais les autruches courent. Et
Lola ? Au sens du contexte précédent, elle court (en tant qu'autruche), ce qui lui
interdit de voler (en tant qu'oiseau). Par contre, rien ne semble s 'opposer à ce que
Kiki vole . . . dès lors qu'on sait qu'un merle est un oiseau.

NOTES
• Le principe d'économie cognitive s'applique maintenant sur une base statisti- ·

que : si la plupart des hyponymes d'une même entité X partagent une propriété, il
suffit d' indiquer cette propriété au niveau de !'hyperonyme commun X, quitte à
renseigner spécifiquement les hyponymes déviants ; la propriété sera retrouvée quand
nécessaire en combinant les principes d'héritage et d'exception.
• Héritage et exception peuvent se retenir en considérant que le principe
d'héritage s 'applique, sauf si une information locale (immédiate, présumée certaine)
contredit une propriété plus globale (déduite, donc plus hypothétique).
Réseaux Sémantiques 87

5.2.5 Autres causes de silence

Représentation erronée
Ce sera en particulier le cas lors du codage littéral d' idiotismes, comme « il fait
beau », où « il » ne désigne pas un acteur, « fait » désigne pour une fois un état. . . :
« il fait beau » doit ici être entendu comme « le temps (météo) est beau ».

Unification trop pauvre


Avec un réseau convenable, le silence peut découler :
• de synonymies non repérées, par exemple entre « avoir » et « posséder », ou
entre diverses désignations convenues - comme « le chef de l'Etat / le prési­
dent de la République . . . » - ou métaphoriques ;
• ou de généralisations/concrétisations non repérées comme entre « est blanc »,
« est grand » et « couleur blanc » ou « taille grand », ou comme le traitement
des cris d'animaux, qui font l 'obj et de plusieurs dizaines de verbes spéciali­
sés 1 7 : il s'agit là de l ' image entre relations de ce que sont les hyperono­
mies/hyponomies pour les concepts.

Réseau insuffisant
Il est rare qu'un texte se suffise à lui-même et que sa compréhension ne fasse pas
implicitement appel à d'autres connaissances, ce qu'Umberto Eco exprime en disant
que, pour être bien compris, le mot en son contexte renvoie à l 'encyclopédie plus
qu' au dictionnaire.
De ce point de vue, le réseau utile pourrait être formé du réseau issu du texte
sous étude, augmenté de connaissance générales et particulières :
• on parlera de connaissances de sens commun s'il s'agit des connaissances
présumées partagées par tous, telles que « le merle est un oiseau ; un oiseau a
deux pattes » ; elles commandent les réponses de bon sens ;
• à l 'opposé, on parlera de connaissances pragmatiques, s ' il s'agit de connais­
sances spécifiques partagées par les acteurs, caractéristiques d'un milieu,
d'une profession, d'une école de pensée . . . ; elles commandent les réponses
« techniques ».
On peut considérer comme connaissances pragmatiques le fait de savoir :
• que « le chef de l 'Etat », « le chef des Armées », « le président de la Républi­
que » . . . désignent en général le même personnage et, à telle époque, tel indi­
vidu ;
• que, dans un plan, si D l est perpendiculaire à D2, et D2 à D3, et D3 à D4,
alors Dl est parallèle à D3, et D2 à D4, et D l est perpendiculaire à D4.

1 7 Le français comporte de l 'ordre de


1 80 000 mots (admettant 800 000 formes) dont 8000 verbes ; mais
un texte fait rarement appel à un vocabulaire de plus de 5000 mots.
88 A-Approche algorithmique

5.2.6 Autres causes de bruit


Le bruit découlera souvent :
• de polysémies non repérées,
• ou de métonymies ou d'idiotismes exploités à tort (i.e. littéralement et non au
sens figuré).

5.2.7 Normalisation

Normalisation du vocabulaire
Pour une bonne représentation, il importera de normaliser un vocabulaire interne
univoque, suffisamment réduit (pour faciliter l'unification) et suffisamment riche
(pour ne pas appauvrir l'application), effort portant sur les concepts et sur les rela­
tions.
On peut considérer comme extrême la proposition de Schank de ramener le
système verbal de l'anglais à 1 4 verbes ( 1 2 connus et 2 artificiels), de nombreux
autres verbes engendrant à eux seuls un sous-réseau, mais on doit s'en inspirer pour
une base raisonnable, loin des milliers de verbes d'une langue naturelle.

Normalisation du réseau
Des textes équivalents pourraient mener à des réseaux différents (et donc à des résul­
tats variables) selon leur degré de redondance et d'explicitations des connaissances
liées au contexte.
Pour unifier ces cas, le plus simple est d'ôter des réseaux sémantiques toutes les
relations déductibles de celles qui sont conservées, en enrichissant le mécanisme
d'unification des compositions de relations correspondantes (Kazar 96).

5.2.8 Portée de ces réseaux


Arrivés à ce stade, on voit que les réseaux sémantiques permettent de traiter de nom­
breux aspects de la compréhension des textes, sous certaines réserves, par exemple
que le texte soit aussi plat - ou « au premier degré » que possible.
-

5 .3 RÉSEAUX PARTITIONNÉS D 'HENDRIX


Hendrix conserve l'idée d'un réseau sémantique formé d'un multigraphe marqué
dont chaque arc figure une relation, et chaque sommet un concept.
Mais ces concepts sont de 3 types : sommet simple, espace ou vista. Un espace
désigne un sous-réseau et une vista, un ensemble d'espaces.
Réseaux Sémantiques 89

Cette conven­

8-- � �
tion vise à démêler arbre
les situations com­
support support
plexes en les hiérar­
chisant.
Soit à représen­
ter un arbre durant couronne

les saisons. Un pre­


mier réseau donne la
structure de l'arbre
en racines, tronc et
couronne. La varia­ printemps
bilité saisonnière de
suppq11
cette couronne est
rendue en lui assi­

8- �
gnant une vista re­ été
groupant 4 espaces
dont chacun repré­ support couleu1� e
sente l'état de la
couronne durant la

E)- �
automne
saison correspon­
dante (fig. 5 .7). support - coulem �

Fig. 5.7 Représentation par un réseau sémantique partitionné de « l 'arbre durant les saisons ».

indirect, par exemple de Jean


&
Au plan linguistique, cette convention permet de traiter divers problèmes mo­
daux, et de discours
dit...- JOO 1
représenter « Jean dit que
Pierre est plus âgé que JOOI
Marie », dont la vérité
est celle de l'énoncé
« Jean dit que . . . » (il le
dit ou ne le dit pas), 8---âgo-e--�,l_
8--··�
indépendante des âges
effectifs de Pierre et
Marie.

Fig. 5.8 Réseau sémantique partitionné pour « Jean dit que Pierre est plus âgé que Marie ».
90 A-Approche algorithmique

5 .4 RÉSEAUX À PROPAGATION DE MARQUEURS DE FAHLMANN


En 1 976, Fahlmann a proposé un nouveau type de réseau sémantique plus ou moins
analogue aux réseaux neuronaux.
Un réseau sémantique représentant un système, on suppose maintenant que la
structure du réseau décrit les lois du système, tandis que l' état du système est défini
par l ' ensemble des états des sommets, chacun étant marqué actif ou inactif.
A la question « A est-il un B ? », le sommet A est activé ; à partir de A sont
activés les sommets liés à A par un lien « est! » ou « sorteDe ». Quand le réseau se
stabilise, la réponse est « oui » ssi le sommet B est marqué actif.
Ainsi, les interrogations, les héritages et les exceptions se manifestent par des
règles de propagation. De plus, cette représentation permet de gérer des négations à
l'aide de liens inhibiteurs.

5.5 RÉSEAUX DYNAMIQUES D'AGARWAL


Agarwal s 'est intéressé à l ' utilisation des réseaux sémantiques en robotique. Pour
cela, un réseau sémantique figure le contexte initial. Les capacités du robot sont
représentées par des opérateurs formés d'un triplet :
• précondition (applicabilité),
• liens à défaire,
• liens à créer.
La planification est basée sur une méthode inverse. L 'état final du contexte étant
défini, on associe aux conditions à atteindre le ou les opérateurs pouvant les créer,
dont les préconditions, si elles ne sont pas satisfaites, deviennent des sous-buts re­
cherchés.
L'exécution peut demander des modifications du plan d'action, soit du fait
d'obstacles, soit du fait des liens rompus par l 'exécution des opérateurs.

5.6 GRAPHES CONCEPTUELS D E SOWA


En 1 984, Sowa a proposé des graphes conceptuels beaucoup plus ambitieux. Fonda­
mentalement, il s ' agit de graphes bi-partis concepts/relateurs.
Les concepts sont typés (ex : Jean:homme) ce qui enlève beaucoup de liens
« est l » en renvoyant à une hiérarchie des types.
Chaque relateur est typé par sa relation ; il possède des arcs entrants et sortants
numérotés, qui permettent de traiter des relateurs n-aires en distinguant les rôles des
concepts liés.

5. 7 CARTES COGNITIVES

5. 7 . 1 Au sens strict
Ce concept de cal'te cognitive, attribué à E. Tolman ( 1 948), désigne la représentation
mentale qu'un individu se fait de l 'organisation de l 'espace où il se trouve.
Réseaux Sémantiques 91

Cette représentation mentale implique que l ' individu est capable d'inférer les
relations, distances et directions liant différents points de l 'espace sans en avoir eu
une expérience directe. Ainsi l ' individu peut-il atteindre un but en passant par un
chemin qu'il n'a jamais emprunté auparavant.
Des expériences de psychologie cognitive ont montré que cette carte cognitive
est construite grâce à la perception visuelle.

5.7.2 Métaphoriques
Par analogie, on parle de carte cognitive dans des domaines non spatiaux dont on se
donne une image spatiale, comme la résolution de problèmes, les relations parenta­
les, les analyses statistiques . . .
Dans ces domaines, la navigation dans la carte cognitive figure les migrations
qu'on est amené à faire d'un concept à l 'autre par association d' idées (cf mode
d'emploi de certains moteurs de recherche).
Cette notion de carte cognitive est donc utile aussi bien pour faciliter la naviga­
tion dans un thésaurus, une fond documentaire que pour faciliter la conception et/ou
la planification d'activités didactiques (Saadani 2000).

5.8 EXERCICES

5.8.1 Connaissances générales


Le réseau associé à « une autruche est un oiseau ; un oiseau est un vertébré ; un rat
est un mammifère ; un humain est un mammifère ; tout mammifère est vertébré » est­
il un arbre ?
Le réseau associé à « une autruche est un oiseau ; un oiseau est un bipède ovi­
pare ; un bipède est un vertébré ; un rat est un mammifère ; un humain est un mam­
mifère bipède ; tout mammifère est vertébré » est-il un arbre ?
Où se place l 'ornithorynque ?

5.8.2 Représentation 1
Montrer que l'on peut gérer un réseau sémantique en utilisant une table de chaînes
lexique[*] et une table de triplets d'entiers /ait[*, 3} , avec la convention :
fait[n, *J =(k, l, m) H (lexique[k}, lexique[l}, lexique[m}) est le nième fait.
EXEMPLE.
Soit (Jules, aime, Agathe) le 1 7e fait, lexique[45]= « jules », lexique[37]= « aime »,
lexique[ 1 17]= « Agathe » ; alors (Jules aime Agathe) a pour représentation :
fait[l 7, *] = (45 , 37, 1 1 7) . •
Compléter la convention pour les « noms cachés ». Expliquer le principe d'une
interrogation. Montrer que l ' on peut ainsi traiter même des questions comme :
• « Qui aime Agathe ? »
• « Quelles sont les relations de Jules avec Agathe ? », avec par exemple une
réponse multiple comme « Jules aime Agathe » et « Jules agace Agathe ».
92 A-Approche algorithmique

5.8.3 Représentation 2
Montrer que l'on peut gérer un réseau sémantique en utilisant une liste L de listes
associatives, telle que si (Jules aime Agathe) est un fait, alors L comporte une sous­
Iiste
assoc(L, 'Jules)= (Jules . . . (aime Agathe) . . . ).
Etudier le principe d'une interrogation. Montrer que l ' on peut ainsi traiter des
questions comme « Jules aime qui ? ». Précaution à prendre pour qu'une question
comme « Quelles sont les relations de Jules avec Agathe ? » puisse entraîner une
réponse multiple comme « Jules aime Agathe » et « Jules agace Agathe ».
Montrer que pour traiter une question comme « Qui aime Agathe ? », la repré­
sentation de (Jules aime Agathe) doit se dédoubler avec un triplet inverse, L devant
maintenant comporter une liste (Agathe . . . (inv:aime Jules) . . . ).

5.8.4 Etre
On considère des phrases comme « Jean est boulanger », « Un boulanger est un
artisan » . . . Le verbe « être » a-t-il le même sens dans les deux cas ? Peut-il être codé
par une même relation « estl » ou doit-on distinguer une relation
« est lie/ membreDe » et une relation « sorteDe I ç; » ? Impact en termes de silence
et de bruit. Revoir la question en rapport avec d'autres langues.

5.8.5 Kozon
On se pose la question d'un logiciel de dialogue en langue naturelle, formé d'un
analyseur transformant les phrases lues en requêtes normalisées, et d'un exécutif
gérant un réseau sémantique selon ces requêtes.
Comment ce logiciel doit-il réagir lorsqu'il reçoit :
• une phrase déclarative comme « Jean est boulanger », « Jean a 37 ans », « un
boulanger est un artisan » ?
• une phrase interrogative comme « Qui est Jean ? » ?
• une phrase impérative comme « lister les artisans » ?
Comment prendre en compte l 'héritage dans les interrogations ?
L' analyseur doit-il réagir différemment aux phrases :
• « un boulanger est un artisan », « chaque boulanger est un artisan », « tout
boulanger est un artisan », « les boulangers sont des artisans », « tous les bou­
langers sont des artisans » ?
• « lister les artisans», « donner la liste des artisans », « qui est artisan ? »,
« quels sont les artisans ? » ?
Comment ce système doit-il traiter les phrases comme « donner la liste des arti­
sans de plus de 40 ans » ?

5.8.6 Liaisons aériennes


Comment aller en avion d'une ville A (d'un pays PA) à une ville B (d'un pays P8) ?
Exploiter le fait qu 'il y a nettement moins de pays que de villes.
5 .9 INDICATIONS

Pour 5.8.1
Oui, du général (vertébré) au particulier (oiseau/mammifère) puis (autruche / humain
/ rat).
Non, mais nous avons encore une hiérarchie (il n'y a pas de circuit).
Si l 'homme est un mammifère bipède, l 'ornithorynque est à placer comme
mammifère ovipare : il fait exception, les mammifères étant en principe vivipares. Si
on étend le réseau aux poissons, on aura un problème similaire avec l 'exocet, ou
poisson volant.

Pour 5.8.2
Cette représentation est plus facilement gérable par des langages à table, et serait
utilisable en Basic ou en Fortran par exemple.

Pour 5.8.3
Cette représentation est plus facilement gérable par des langages à liste, et serait
utilisable en Lisp, Scheme, Logo, Cami par exemple.

Pour 5.8.4
Cette ambiguïté du verbe être a été étudiée notamment par Lesniewski et par Grize.

Pour 5.8.5
L' idée est que l 'analyseur transforme les phrases en requêtes que l 'exécutif exécute.
Ces requêtes devraient être de trois types :
• assertions : + ( concept! relation concept2), issues des phrases déclaratives ;
• demandes : ?(X Y Z) pouvant comporter 1 , 2 ou 3 variables, issues de ques­
tions ou bien d'ordres comme « lister/donner/visualiser »
• retraits : -(concept! relation concept2), issus d'ordres de maintenance comme
« ôter/ enlever/ supprimer . . . », à ne pas confondre avec une simple négation.
La « liste des artisans » peut être réduite (requête simple ?(X est! artisan)) ou
étendue par héritage par
?(X est!* artisan) = ?(X est! Y,l E T ?(Y = artisan) O U ?(Y est!* artisan).

Pour 5.8.6
Constituer un réseau partitionné, sur la base d'un espace par pays. Aller de A à B se
présente alors comme un raffinement du plan consistant à aller de PA à P8.

5 .10 RÉFÉRENCES
Eco U ., 1 988, Sémiotique et philosophie du langage, PUF, Paris ; traduction de Eco
U., 1 984, Semiotica efilosofia del langagio, Einaudi, Turin (1).
Fadhil A., Haarslev V., 2005, GLOO: a graphical query langage for OWL
ontologies, First OWL Experiences and Directions Workshop, Galway.
94 A-Approche algorithmique

Karp P.D., Lowrance J.D. , Strat T.M., Wilkins D.E., 1 994, The Grasper-CL
Management system, Lisp and Symbolic Computation, n°5 , Kluwer, Boston
(USA) , pp. 245-273 .
Kazar O., 1996, Conception et réalisation d 'un modèle de réseau sémantique,
Mémoire de magister, Université de Constantine (DZ) , pp. 6-45.
Keenan J.M., 1982-200 1 , Memcog, Semantic Memory , Denver University (USA).
Nicolle A., Beust P., Perlerin V., 2002, Un analogue de la mémoire pour un agent
logiciel interactif, In Cognito (F).
Saadani L. & Bertrand-Gastaldy S., 2000, Cartes conceptuelles et thésaurus: essai
de comparaison entre deux modèles de représentation issu de diff érentes
traditions disciplinaires, in Les Dimensions d'une Science de l'Information
Globale, Actes du XXVIII• Congrès annuel de I 'Association canadienne des
sciences de l ' information.
Tesnière L., 1959, Eléments de syntaxe structurale, Librairie Klincksieck, Paris,
rééd. 1 98 5 .
Vaillant P., 1 997, PVI : Prothèse Vocale Intelligente, ch. i n Interactions entre
modalités sémiotiques: de l 'icône à la langue, thèse, Université Paris XI
(Orsay).
CHAPITRE 6

NOTIONS D'APPRENTISSAGE

6.1 INTRODUCTION

En vue d'écrire des programmes intelligents, ne faudrait-il pas préférer à des pro­
grammes qui savent - dotés d'une intelligence a priori - des programmes qui ap­
prennent, programmes qui, capitalisant sur l 'expérience, manifesteraient une intelli­
gence croissante au fil des exécutions ? On pourrait peut être ainsi esquiver un im­
portant effort de conception, qui se révèle souvent trop limité pour des utilisateurs
dont le niveau d'exigence est souvent lui-même croissant.
La psychologie cognitive pose depuis longtemps cette question, alors même que
la théorie classique de l ' algorithmie, basée sur la notion d' invariance de comporte­
ment des algorithmes, rendait cette question taboue, au nom de la reproductibilité des
tests, de la sécurité de fonctionnement. . .
Selon H. Simon : « L'apprentissage dans un système est indiqué par les chan­
gements qu'il subit. Ces changements sont adaptatifs dans le sens où ils rendent
possible au système de réaliser une même tâche, ou des tâches tirées d'une même
population, d'une façon plus efficace et plus efficiente la prochaine fois qu'elle sera
réalisée ».
Ce chapitre voudrait montrer que la chose est possible à un premier niveau,
même si récemment des dispositifs plus avancés ont été utilisés (chap. 1 6 ou
§ 28.3 .2, 28.4.3, sect. 32. l )

6.2 NIVEAUX D 'APPRENTISSAGE

Du point de vue du système en lui-même, T.G. Dietterich a proposé en 1 986 de dis­


tinguer si un système apprend pour améliorer ses performances dans un domaine
donné, ou pour étendre ses connaissances - et par là son domaine d'action.
Pour un système, l 'apprentissage peut alors se faire à 3 niveaux :
• au niveau symbolique (SLL), il s 'améliore et se rationnalise à domaine cons­
tant,
• au niveau prédictible (DKLL), son domaine s'étend de façon prédictible par
un jeu de prédicats,
• au-delà (NKLL), son domaine se modifie de façon non prédictible.
96 A-Approche algorithmique

6.3 MODES D 'APPRENTISSAGE

De fait, l 'apprentissage suppose en général des expériences répétées, comportant


généralement deux aspects :
• le mode d 'interaction de l 'apprenant avec son environnement,
• l' usage de cette interaction fait par cet apprenant, et son impact en termes de
connaissances (faits, méthodes . . . ) et de comportement, selon la stratégie
d'apprentissage.

6.3.1 Apprentissage non supervisé


En apprentissage non s11pervisé, l 'apprenant reçoit/perçoit des exemples, sans autre
indication, à charge pour lui de les lier à ce qu'il sait déjà.
C ' est aussi le cas en classification automatique, lorsqu'un programme doit clas­
ser par affinités un jeu d'exemples arrivant en plusieurs fois.

6.3.2 Apprentissage supervisé


En apprentissage s11pervisé, l 'apprenant reçoit/perçoit des exemples étiquetés, à
charge pour lui de les lier au mieux aux exemples de même étiquette, et de les diffé­
rencier des autres.
Le résultat peut prendre la forme de règles de décision permettant de classer au
mieux de nouveaux exemples.
EXEMPLES.
Partant des archives d'une agence bancaire, bâtir les règles permettant d'évaluer les
risques que présente une demande de crédit. •

6.3.3 Apprentissage par renforcement


En apprentissage par renforcement, l 'apprenant produit des réponses ou agit en
réponse à des cas précis, et reçoit en retour une évaluation/rétribution de cette ré­
ponse. C 'est en particulier le cas de l'apprentissage par essais et erre11rs, que
l 'évaluation soit interne ou externe (note, commentaire, retour d'expérience).
Un apprentissage par renforcement peut être amorcé par un apprentissage su­
pervisé.

6.4 APPRENTISSAGE FACTUEL

A ce premier niveau, il peut s'agir


• de simples mises à jour dans une base de faits ;
• d'acquisitions élémentaires adaptant (de fait) le comportement d'un processus
sans le modifier ;
• de systèmes appliquant une stratégie fixe paramétrée par des poids, des priori­
tés . . . que l 'apprentissage se propose d 'optimiser.

(Voir par exemple § 6. 7.2, sect. 9. 1 , sect. 9.2.)


Notion d'apprentissage 97

6.4.1 Un jeu à 2 joueurs


Considérons un jeu à 2 joueurs ; le premier joueur reçoit N jetons ; quand un joueur
reçoit n jetons, il peut en retirer ke S11 ç[ l n] . Celui qui prend le dernier jeton a ga­
gné.
Ce genre de jeu possède en général une solution théorique du type « fonction de
Grundy », pouvant inspirer un programme de jeu classique. L 'existence d 'une telle
solution permet aussi d 'étalonner une solution à apprentissage, et de contrôler no­
tamment si l 'apprentissage mis en œuvre converge vers la connaissance souhaitable.

Programme à apprentissage supervisé


Supposons un programme exploitant une table 1 telle que I[n, k] représente l ' intérêt
de jouer k lorsqu'un joueur dispose de n jetons (avec k licite pour n). Lorsque le
programme reçoit n jetons, il joue alors un k E S 11 maximisant I[ n, k] et rend n - k
jetons au joueur. Celui qui rend ou atteint 1 jeton a gagné.
Une version classique précalculerait une fois pour toute la table I d'après la
théorie du jeu, table qui resterait inchangée d'une partie à l 'autre.
Une version à apprentissage part au contraire d'une table 1 à zéro. A chaque
partie, le détail des coups est noté dans une table J. Lorsque le programme a détermi­
né qui vient de gagner la partie, les I[n, k] sont bonifiés pour tout couple (n, k) cor­
respondant à un trait du gagnant, et pénalisés pour tout couple (n, k) correspondant à
un trait du perdant. Ainsi enrichie par l 'expérience, la table I devrait tendre au fil des
parties vers une table équivalente à une table précalculée.
Un tel jeu peut être réalisé par un programme classique alternant 2 phases : la
première, phase de jeu exploitant un état de connaissance I[,], mène interactivement
une partie et produit J. La seconde, phase d'apprentissage, combine I[,] et J selon le
résultat de la partie pour produire un nouvel état de connaissances i + [,] qui sera utili­
sé la prochaine fois.

jeu proprement dit J[,]


mise à jour des
connaissances
![,]--------�

\_ ________________________ _

I'[,]

Fig. 6.1 Jeu à 2 joueurs.


98 A-Approche algorithmique

Evolution
De partie en partie, on peut suivre l'évolution de l 'apprentissage au moyen d'un
vidage symbolique de la table I, représentant l 'état des connaissances, puis après
quelques parties par l 'affichage de l 'évolution du rapport parties gagnées/parties
jouées pour le programme. Ce rapport doit tendre vers une asymptote définie par les
conditions de début de partie (N tiré au hasard ? qui commence ?).
Le système apprend à jouer « par la fin », et remonte lentement, de partie en
partie, vers le milieu puis le début de jeu. ·
Si les bonifications sont importantes et les pénalisations faibles, on peut
s 'attendre à un comportement brillant mais peu sûr. Inversement, si les bonifications
sont faibles et les pénalités impotiantes, on peut s 'attendre à un jeu fiable mais peu
inspiré.
Ce genre de programme s 'adapte bien à l ' introduction de finales perdantes ou
de finales nulles ; dans ce dernier cas, le style de jeu final dépendra du type de rétri­
bution (bonification ou pénalisation) associé aux parties nulles.

Impact du comportement du joueur


Dans cette approche, l 'apprentissage supervisé provient :
• du joueur, en tant que fournisseur de cas,
• des fonctions arbitrales réalisées par le programme de jeu (vérification de la
licéité des coups joués, diagnostic de fin de partie).
On constate que :
• si le joueur/moniteur gagne certaines parties du début en jouant assez mal puis
en finissant bien, ceci ralentit l'apprentissage, car le programme devra désap­
prendre les coups initiaux appris à tort ; pour cela, un apprentissage optimal peut
demander, dans la formation de i+, de pondérer différemment informations an­
ciennes et nouvelles, ou fins et début de partie, selon leur crédibilité ;
• le programme peut perdre longuement alors que sa table s 'améliore, si le
joueur est un débutant qui s'améliore lui-même plus vite que le programme ;
• il peut arriver que joueur et programme s'équilibrent ; si, vexé, le j oueur se
concentre alors pour mieux jouer, le programme s'améliore alors de façon dé­
cisive.
De fait, il est facile d'expliquer Je comportement du jeu en termes de compor­
tement du joueur, présumé humain. Mais utiliser comme joueur un autre programme
défini pour le même jeu garantit d'avoir enfin un joueur/formateur infatigable . . .

Comportement général
On souhaite faire évoluer de tels programmes d'un fonctionnement balbutiant vers
un fonctionnement idéal présumé unique.
Dans les situations réelles, où l'environnement est moins stable, et l 'existence
d'un fonctionnement optimal stationnaire non garantie, un système apprenant sera :
• adaptatif voire instable s'il privilégie les faits nouveaux,
• peu adaptatif voire rigide si les nouveautés altèrent trop peu ses certitudes,
• parfois à contre-pied d'un environnement trop changeant.
Notion d'apprentissage 99

Cependant, cet apprentissage revient toujours à apprendre par cœur ce qui doit
être fait (ou évité) dans une situation précise déjà rencontrée; il s 'accommode mal
d'utilisations variées et/ou d'un espace d'état trop riche.

6.4.2 Classifieurs
On s ' intéresse au classement automatique de divers objets; par référence à une liste
d'attributs fixée, un objet x est spécifié par un descripteur, liste de x; valant soit 0 soit
l selon l 'absence ou à la présence pour l 'objet de l 'attribut a; de même rang.
Disposant de N obj ets, pour lesquels on possède le descripteur et le nom de la
classe associée, on se propose de bâtir un classifieur, trieur capable d'associer en­
suite à tout nouveau descripteur, la classe de l 'objet correspondant.
Un premier classifieur (le Perceptron) a été défini par Rosenblatt en 1 958. Il
suppose qu 'un objet x appartient à une classe Ci si une somme pondérée des compo­
santes x; de son descripteur est strictement positive, pour un jeu de poids caractéristi­
que de la classe. Soit :
xeCj l:wij·x; >0
f-7

(Les composantes peuvent être binaires ou numériques, valeurs en soi ou co­


dage d'un rang dans une échelle symbolique.)
On parlera de système à apprentissage si le système se forme progressivement,
la matrice W initiale étant ajustée par essais et erreurs.

Apprentissage par renforcement


Dans cette phase, à chaque objet x présenté, le système associe une ou des classes, en
fonction de son descripteur et de l 'état de la matrice de sélection W, et, pour vaiida­
tion/correction, compare ce classement au classement de référence fourni par un
oracle (expert, moniteur ou utilisateur chevronné).
En cas d'erreur,
• si x semble appartenir à Ci alors qu'il n'en est rien, le système doit modifier
les Wij à contrario des x;,
• si x ne semble pas appartenir à Ci alors qu'il en fait partie, le système doit
modifie les wu selon les X;.

Exploitation
A titre expérimental, l 'apprentissage peut se confondre avec l 'exploitation, et porter
sur les N objets disponibles. Si tout va bien, la matrice W devrait se stabiliser, et les
classements erronés se raréfier progressivement; mais cela supposera toujours un
utilisateur qualifié.
Le plus souvent, on distinguera un premier groupe d'objets destiné à
l'apprentissage, suivi d'une utilisation du classifieur sans précaution ni qualification
particulière. Une utilisation sereine supposera en fait, entre apprentissage et exploita­
tion, un « jeu de test », second groupe d'objets servant à valider l 'apprentissage.
1 00 A-Approche algorithmique

Validation
Un système de classement sera dit :
• correct, si les exemples proposés sont classés correctement;
• complet, s'il rend compte de tous les exemples;
• consistant, s ' il n'y a pas d'erreur de classement.
La complétude n'est possible que si l 'ensemble des classes recouvre l'ensemble
des objets possibles, afin qu'à chaque objet corresponde une classe au moins - quitte
à créer une classe des inclassables. D'autre part, le classement d'un objet est unique
(sans ambiguïté) ssi les classes sont disj ointes.

Discussion
Cette approche peut donner deux types d'erreurs :
• Au départ, le système peut « battre la campagne » s'il n'a pas encore traité
assez d'échantillons, et/ou si l 'heuristique d'ajustement est inadéquate.
• Par la suite, un taux d'erreur subsiste
- si l 'équivalence de classification utilisée n'est pas parfaite - il s'agit alors
d'un biais de modélisation 18,
- s'il y a des erreurs d'étiquetage pour certains échantillons.
On parle de surapprentissage lorsque, paradoxalement, les deux dernières er­
reurs devenant prédominantes, l 'erreur totale ne décroît plus avec de nouveaux
échantillons. C'est le cas si les échantillons ayant servi à l 'apprentissage ne sont pas
représentatifs : par une adaptation trop étroite, le système perd alors en exactitude (et
en généralité) ce qu'il gagne en précision .
. D 'autre part, cette approche n'est applicable simplement que si les composantes
x; forment un système redondant facilitant la séparation des classes. Sinon, chaque
classe doit être considérée comme un polyèdre dans l 'espace des critères : les règles
de décision linéaires du type évoqué ne servent plus qu'à positionner l 'objet x par
rapport à un hyperplan-frontière, et c'est la combinaison logique de telles conditions
(réalisée par une nouvelle somme pondérée) qui décide alors de la classe.

6.4.3 Intérêt
De tels classifieurs sont fréquemment utiles :
• en informatique documentaire (Beney 2008),
• pour le classement de clients ou prospects en vue d'opérations publicitaires
et/ou commerciales,
• en olfaction artificielle (identification automatique d'odeurs) . . .

18
Que l'on peut corriger par exemple en passant d'un perceptron à un réseau neuronal multi-couches,
correspondant à une définition des classes plus ambitieuse, pouvant utiliser des fonctions de décision
non linéaires.
Notion d'apprentissage 101

6.5 APPRENTISSAGE INDUCTIF

6.5.1 Présentation
Nous avons vu qu'un apprentissage permet l 'adaptation d'un classifieur à un système
de classes disjointes supposées bien définies, par l 'adaptation de règles de décision
décidant de l 'appartenance de l 'objet sous examen.
Au-delà, des cas plus difficiles peuvent être abordés, où l 'exploitation d 'hypo­
thèses vraisemblables dans des situations nouvelles sera consolidée par apprentis­
sage, afin de rendre plus sûrs ces raisonnements empiriques.
Il s'agit alors de bâtir par induction les règles de décision utiles.

6.5.2 Construction de la définition de classes


On s ' intéresse de nouveau au classement automatique de divers objets, chaque objet
x étant spécifié par un descripteur, liste de traits (ai, xi), où ai désigne un attribut du
domaine, et xi une valeur numérique de l'échelle associée. On peut ainsi considérer
qu'à chaque x correspond un point dans un espace S comportant autant de dimen­
sions que d'attributs.
Supposons chaque classe définie par une collection de blocs ou pavés de S.
Au fil de l'apprentissage, sachant qu'un nouvel objet x appartient à la classe C,
• la défin ition de C doit être étendue si x n'appartient à aucun bloc de la défini­

tion actuelle de C,
• la définition de chaque autre classe G doit être réduite si x appartient à un

bloc de la définition actuelle de G.


Cette alternance de généralisations et de spécifications/réductions devrait bâtir par
approximations successsives pour chaque classe une définition exacte qui englobe
tous ses exemples sans aucun contre-exemple. Des règles de combinaison des blocs
manipulés doivent permettre de réduire la définition obtenue. Les décisions qui en
découleront seront d'autant plus simples que le système de blocs sera lui-même sim­
ple, d'où l ' importance des règles de fusion et d'extension des blocs (fig. 6.2) (Cor­
nuéjols 2002).

NOTES
• Les extensions de définitions (2>2 ' , 3> 3 '> 3 ' ' , . . . ) constituent des formes
d' induction ayant pour but de privilégier la simplicité, quitte à être contredites

)
(cas 4).
• Elles correspondent aux inductions
visant à remplacer des règles de déci­ si A & B & C alors Z
sion similaires menant à une même si A & B & D alors Z � si A & B alors Z
conclusion par une règle généralisa­ si A & B & E alors Z
.
trice, comme dans l 'exemple ci­
contre (Kodratoff 1 986).
• Des erreurs résiduelles systématiques peuvent découler d'un système de blocs
inadéquats, basés par exemple sur des attributs trop peu discriminants.
1 02 A-Approche algorithmique

a a a a a
>

a a a

2 2' 3

a a a a a a a

a a a .. a

3' 3" 4 5'

Fig. 6.2 Définition d e classes par extensions / réductions.

6.5.3 Résolution à partir de cas (Fuchs 1 997)


On verra ces méthodes en détail dans la section 28.4. Disons qu'elles supposent une
expérience stockée sous la forme de couples (cas, solution), et se proposent de résoudre
un nouveau cas C par analogie : si C est analogue à Ci de solution S;, alors la solution
S(C) doit être analogue à S;, mutatis mutandis, ce qu'on peut symboliser par :
C ;:::; C;---+ S(C) ;:::; S;.

Approche simple
Dans une première approche, la collection de cas n'est pas hiérarchisée : la collection
des cas connus correspond à un ensemble de classes disjointes, regroupant des cas
· similaires. Trouver la classe de C, c'est alors trouver le genre de solution à lui appli­
quer. Toutefois, ces classes ne sont pas définies en elles-mêmes ou par leurs frontiè­
res, mais par un ou plusieurs de leurs membres, représentatifs ou non. Le classement
est alors réalisé sur la base de proximités, le cas le plus proche étant présumé le plus
similaire.
Si l ' analogie permet la construction d'une solution adéquate, le système est
renforcé par l 'enregistrement du couple (S, C), extension implicite de la classe de C;.
Si l 'analogie provoque une construction de S par analogie avec Si qui échoue du
fait d ' inconsistances, il s'agit alors d'un échec interne, et on passe à une analogie
C ;:::; C k moins vraisemblable a priori ; si celle-ci se révèle productive, le couple (S, C)
enregistré étendra cette fois la classe de Ck.
Le cas le plus délicat est celui où la construction de S par analogie avec S; réus­
sit, la solution obtenue se révélant à l'usage sans intérêt pratique : il faut alors corri­
ger S jusqu'à obtenir une solution S' opérationnelle, telle que (C, S') mérite d'être
mémorisé.

Approche hiérarchisée
L'approche précédente suppose trop souvent un domaine étroit et une mémorisation
considérable - issue d'un long apprentissage. On peut améliorer la situation en carac-
Notion d'apprentissage 1 03

térisant les cas similaires à solutions similaires comme formant une classe définie par
un couple générique (cas, solution), noté par exemple (f, I:). Si C apparaît comme un
cas particulier de r, on peut alors supposer que S(C) est une spécialisation similaire
de E. Il n'est plus alors utile de conserver tous les cas particuliers de r.
La richesse du procédé vient de sa faculté de faire surgir les cas génériques
comme abstraction des cas connus. Ce qui suppose, outre un apprentissage du type
précédent :
• une capacité d'induction/abstraction pour dégager les cas génériques, puis
éventuellement d'autres cas plus génériques les regroupant,
• en cas de rejet d'une solution construite, une capacité d'analyse du niveau de
responsabilité, pour une reprise ou une restructuration minimale,
• une éventuelle capacité d'allègement de ce qui a été mémorisé.

6.6 CONCLUSIONS

6.6.1 Systèmes à apprentissage

L'apprentissage présente un grand intérêt en ce qu'il suppose peu de connaissances a


priori, celles-ci s 'enrichissant avec l 'expérience en rapport avec l 'environnement, par
opposition aux solutions classiques, largement centrées sur les connaissances a priori
(ou tout au moins les savoir-faire).

Jeux
Les jeux d'échecs ont été une grande source d ' inspiration, avec des succès variables.
Pitrat a développé un système de jeu pour les échecs doté de capacités
d'apprentissage, et pour le langage de représentation de connaissances employé, un
compilateur produisant du C, compilateur lui-même doté de capacités d'appren­
tissage. Le résultat devint à la longue très impressionnant, du fait d'une compilation
de plus en plus efficace d'un jeu qui s'était lui-même profondément amélioré (Pitrat
1 990).

Acquisition de connaissances
L'apprentissage a été mis très tôt au service de la gestion des connaissances.
Dès 1 965, le système Dendral (spectrométrie de masse), ancêtre des systèmes­
experts, se proposait d'idendifier des molécules sur la base de leur masse molécu­
laire, des masses atomiques et des valences des éléments, et d'exceptions connues.
Peu efficace aux masses élevées, il fut complété par Meta-Dendral ( 1 972), système
d'acquisition de connaissances par apprentissage qui explore des possibilités et en­
gendre des règles expliquant les données de spectroscopie utilisées, ou étend les
règles et contraintes utilisées par Dendral.
En 1 979, le système Teiresias, de Davis, permit de mettre en évidence des er­
reurs ou des lacunes dans une base de connaissances de Mycin. Avec Teiresias,
1 04 A-Approche algorithmique

l 'acquisition de nouvelles connaissances se base sur un dialogue au cours de


l 'utilisation du système par l 'expert, qui valide ou corrige et enrichit la base.
On peut aussi considérer sous cet angle les systèmes de Raisonneront à Partir de
Cas (sect. 29.4).

Bilan
L'apprentissage peut être lent dans son évolution du fait :
• d'un environnement peu coopératif, médiocre ou instable,
• d'une capacité d'exploitation insuffisante des informations reçues,
• d'une capacité d'anticipation insuffisante dans des situations nouvelles.
L'apprentissage peut être lent d'utilisation s'il tend à mobiliser un excédent de
connaissances concrètes qu'il ne sait pas suffisamment fédérer et élaguer.
L'apprentissage peut enfin être globalement incertain du fait :
• d'un environnement peu coopératif, médiocre ou instable,
• d'une incapacité épistémologique à découvrir les risques de régressions de
l ' environnement comme de lui-même.
Comme on le verra (chap. 28), l 'apprentissage permet de faire d'autant mieux
face au manque de connaissances qu'il dispose de méta-connaisances puissantes lui
faisant retirer un maximum de chaque expérience.

6.6.2 Intelligence humaine et système à apprentissage


A titre de comparaison, nous donnons ci-après un résumé extrait de (Polya 1 957),
indiquant à grands traits ce que serait en général une démarche humaine intelligente
en résolution de problèmes.
On y voit :
• l ' importance de l 'apprentissage comme source de cas de référence,

• la nécessité de la mémorisation, support de l 'apprentissage,


• l ' intérêt de l 'analogie, base des rapprochements de cas et des transpositions
de solutions,
• mais aussi d'autres aspects de l 'heuristique.
Une solution trouvée, même si elle est effective, n'est pas forcément optimale,
et de ce fait Polya recommande l'étude de variantes, justifiée tant pour le problème
en cours que pour tous les problèmes ultérieurs similaires.
Au-delà, Polya a remarqué que l 'homme accroît sa capacité à résoudre des pro­
blèmes au moyen d 'expériences virtuelles, par exemple en s ' intéressant spontané­
ment à la résolution de variantes, généralisations et dégénérescences de problèmes
qu' il vient de résoudre, plus généralement en s 'attaquant à la résolution de problèmes
qu'il se pose lui-même. Il lui arrive également de procéder à des regroupements par
analogie, des clarifications, des synthèses par une réflexion menée à loisir, sans né­
cessité particulière.
L'équivalent supposerait donc des systèmes à apprentissage ayant une activité
cognitive réflexive peut-être faible mais non nulle lorsqu' ils sont « au repos ».
Notion d'apprentissage 1 05

Understanding the Problem


First, you have to understand the problem.
• What is the unknown? What are the data? What is the condition?
• Is it possible to satisfy the condition? Is the condition sufficient to determine the un­
known? Or is it insufficient? Or redundant? Or contradictory?
• Draw a figure. lntroduce suitable notation.
• Separate the various parts of the condition. Can you write them down?
Devising a plan
Second. Find the connection between the data and the unknown. You may be obliged to
consider auxiliary problems if an immediate connection cannot be found. You should obtain
eventually a plan of the solution .
• Have you seen if before? Or have you seen the same problem in a slightly differentform ?
• Do you know a related problem ? Do you know a theorem that could be useful?
• Look at the unknown ! And try to think of a familiar problem having the same or a similar
unknown .
• Here is a problem related to yours and solved be/ore. Could you use it? Could you use ifs
result? Could you use ifs method ? Should you introduce some auxilimy element in order to
make ifs use possible ?
• Could you restate the problem? Could you restate it still differently? Go back to defini-
tions.
• Ifyou cannot salve the proposed problem t1y to salve jirst some related problem. Could
you imagine a more accessible related problem? A more general problem? A more special
problem? An analogous problem? Could you solve a part of the problem? Keep only a part of
the condition, drop the other part; how far is the unknown then determined, how can it vary?
Could you derive something useful from the data? Could you think of other data appropriate to
determine the unknown? Could you change the unknown or data, or both if necessary, so that
the new unknown and the new data are nearer to each other?
• Did you use ail the data? Did you use the whole condition? Have you taken into account
ail essential notions involved in the problem?
Carrying out the plan
Third. Carry out your plan.
Carrying out your plan of the solution, check each step. Can you see clearly that the step
is correct? Can you prove that it is correct?
Looking back
Fourth. Examine the solution obtained.
• Can you check the result? Can you check the argument?
• Can you derive the solution differently? Can you see if at a glance?
• Can you use the result, or the method, for some other problem?
1 06 A-Approche algorithmique

6.7 EXERCICES

6.7.l Jeu à apprentissage


Considérons un j eu à 2 joueurs ; le premier joueur reçoit 30 jetons ; quand un joueur
reçoit n jetons, il peut en retirer 1 à 1n/2l. Celui qui prend le dernier jeton a gagné.
En faire la théorie, programmer le jeu à apprentissage correspondant dans le
langage de votre choix, et vérifier qu 'à la longue ce programme tend à adopter le
comportement théoriquement souhaitable.

6.7.2 Jeu à apprentissage factuel


On considère une version simplifiée du jeu évoqué au paragraphe 6.4. 1 , en rempla­
çant la table I par un couple de listes, la liste G contenant les couples (n, k) gagnants,
la liste P contenant les couples (n, k) perdants.
Au départ, G et P sont vides, et le programme joue des coups licites au hasard.
A chaque partie, le détail des coups est noté dans une table J. La phase
d'apprentissage combine (G, P) et J pour produire un nouvel état de connaissances
(G\ p+).
Expliquer pourquoi, lorsque le programme a déterminé qui vient de gagner la
partie, tout couple (n, k) correspondant à un trait du gagnant est ajouté à G (après
avoir été éventuellement effacé de P), tout couple (n, k) correspondant à un trait du
perdant est ajouté à P (après avoir été éventuellement effacé de G).
Expliquer en quoi la transformation (G, P, J) � (G+, P+) dispense de conserver
la chronique des parties successives.

6.7.3 Jeu à apprentissage accéléré


On considère le type de jeu vu §6.2. Montrer que si la nature du jeu impose que pour
tout n il n'existe qu'une bonne valeur k, alors la table d'apprentissage peut être ré­
duite à une simple rangée I telle que I[n] = k, qu'on pourra renseigner beaucoup plus
rapidement. Le nouveau programme repose sur une hypothèse forte dont l'établis­
sement montre le rôle des métaconnaissances ; est-il plus intelligent ou plus spéciali­
sé que le précédent ?

6.7.4 Pronostics
On considère un loto sportif, dont les paris sont ainsi organisés : si l 'équipe A ren­
contre l 'équipe B, le parieur marque :
• 1 , s'il parie sur une victoire à domicile (de l 'équipe qui reçoit) ;

• 2, s'il parie sur une victoire à l 'extérieur (des visiteurs) ;

• N, s'il parie sur un match neutre.

On désire réaliser un système de pronostic sur la base suivante : soit a un score


attaché aux performances connues de A, b le même score pour B ; on conseillera A si
a>>b, B si b>>a, N si a diffère peu de B.
Expliciter la différence entre un système heuristique simple, et un système à
apprentissage.
Notion d'apprentissage 1 07

6.7.5 Apprentissage inductif et clarification


On suppose qu'un apprentissage inductif tend à donner à diverses classes une défini­
tion comprenant des blocs de l 'espace des attributs de plus en plus nombreux, ce qui
tend à ôter une partie de leur valeur et de leur efficacité aux résultats.
Soient D l et D2 deux descriptions ou couvertures d'une même classe. Examiner
les concepts d' inclusion, de redondance et de finesse de couverture, et les appliquer
sous forme de règles de clarification visant à garder à tout moment les descriptions
les plus simples possibles.
Ces raisonnements sont-ils encore valables si on remplace les descriptions de
classes en termes de collection de blocs par des descriptions de classes en termes de
collection de boules (ou sphères généralisées) ?

6.8 INDICATIONS

Pour 6.7.1 / Jeu à apprentissage


C'est un jeu de Nim ; à partir du graphe d'état, on peut calculer facilement sa fonc­
tion de Grundy.

La table 1 correspondante, triangulaire d'après la règle, devrait tendre vers la


table ci-après.
• Aucun trait n'est intéressant pour sortir du noyau (n = 2, 6 . . . . ) .

• Hors noyau, sont recommandés les traits qui ramènent au noyau :

1 1 2 3 1
1 ----'---+ o; 3 ----'---+ 2; 4 -=-n; s -=-n; 7 ----'---+ 6 . . .

état 2 3 4 5 6 7

trait

1 + +

2
3
4

Pour 6.7.2 / Jeu à apprentissage factuel


Cette façon de faire est justifiée si N pouvant être grand, on risque d'avoir une table 1
peu renseignée (i.e. contenant longtemps une grande majorité de 0).
Cette règle permet non seulement d'apprendre les bons comportements par
l ' insertion, mais aussi, par l 'effacement, de désapprendre ceux qui auraient été enre­
gistrés à tort.
La phase d'apprentissage ainsi définie fusionne l 'état de connaissances antérieur
avec ce qu'il suffit de retenir de la nouvelle partie.
1 08 A-Approche algorithmique

Pour 6.7.3 / Jeu à apprentissage accéléré


On voit dans le jeu précédent qu'un seul coup favorable est possible dans une situa­
tion donnée. Alors la table d'apprentissage peut être réduite à une simple rangée 1
telle que I[n]=k, en convenant que I [n]=O correspond à l ' ignorance (et entraîne un
jeu au hasard).
Le jeu obtenu sera plus spécialisé qu' intelligent.
Pour des jeux comme Primus (3 .6.5), où certaines situations permettent plu­
sieurs traits gagnants, le jeu sera plus intéressant si on maintient une certaine variété
de réaction, en tirant par exemple au hasard le trait parmi les traits gagnants.

Pour 6.7.4 / Pronostics


Une approche heuristique usuelle consisterait à définir a priori la méthode de calcul
des scores, en prenant par exemple pour a le nombre de buts marqués par A depuis le
début de saison. Cette approche mènera le plus souvent à des déconvenues (pronos­
tics infirmés), et, de versions en versions, on peut passer beaucoup de temps à tester
de nouvelles formules de plus en plus complexes, faisant intervenir le nombre de
buts marqués et encaissés tant à l 'extérieur qu'à domicile, le nombre de blessures ou
d'avertissements . . . En fait, cette approche ne serait justifiée que par une analyse de
données préalable ayant dégagé les facteurs décisifs et leurs poids.
Une approche à apprentissage partira d'un calcul des scores comme moyenne
pondérée de divers indices, en confiant l'ajustement des poids et seuils utilisés à un
mécanisme d'interprétation des résultats effectifs, confirmations ou infirmations des
pronostics. Sa réussite sera caractérisée par la raréfaction progressive des infirma­
tions en situation stationnaire (i.e. sauf incident).

Pour 6.7.5
(Cornuéjols 2002)

6.9 RÉFÉRENCES
Beney J., 2008, Classification superv1see de documents, coll. Traitement de
! 'Information, Hermès/Lavoisier, Paris.
Buchanan B., Sutherland G., Feigenbaum E., 1 969, Heuristics Dendral : A program
for generating explanatory hypotheses in organic chemistry. Machine Intel­
ligence.
Cornuéjols A., Miclet L., Kodratoff Y., 2002, Apprentissage artificiel, concepts et
A lgorithmes, Eyrolles, Paris.
Dietterich, T. G., 1 986, Learning at the knowledge level, Machine Learning, 1 (3 ,
pp. 287-3 1 6.
Fuchs B., 1 997, Représentation des Connaissance pour le Raisonnement à partir de
cas : le système Rocade, thèse d'informatique, Université Claude Bernard,
Lyon, 1 97 p.
Garcia F., Apprentissage par renforcement : Introduction, 52 p., [Link]
Kodratoff Y., 1 986, Leçons d 'apprentissage symbolique, Cepadues, Toulouse.
Notion d'apprentissage 1 09

Pitrat J., 1 990, Métaconnaissance, futur de / 'Intelligence Artificielle, Hermès.


Polya G., 1 957, How to Solve Jt, 2nd ed., Princeton University Press. (trad.
française : Comment poser et résoudre un problème, 1 965, Dunod, rééd. 1 989,
Jacques Gabay).
A2-Eléments
pratiques •
• Scheme
J 'entends, j 'oublie ;
Je vois, je retiens ;
Je fais, je comprends.
C 'est en faisant qu'on apprend réellement, soit parce que la réussite renforce nos
connaissances et nos façons de faire, soit parce que l'analyse de nos erreurs nous
force à les vérifier et les préciser, ce que certains résument par « l'homo sapiens
procède de ! 'homos faber ».
Pour bien comprendre les traitements évoqués dans la partie précédente, et nous
conformer à la démarche historique, on abordera dans cette partie divers cas apparen­
tés, programmés dans un langage de la mouvance lisp/scheme ; à l 'occasion seront
traités d'autres cas voisins anticipant sur les parties suivantes.
Du point de vue de la programmation, Scheme est un langage simple de la fa­
mille des langages de programmation fonctionnelle, pour lesquels tout traitement
s 'exprime en termes de fonction (ou, si l ' on veut, d'opérateurs). L 'affectation n'est
pas en général nécessaire, bien qu'il y ait un mécanisme de gestion de variables
locales dites à affectation unique.
Du point de vue de l 'intelligence Artificielle, sa capacité à traiter des arbres
contenant des symboles s 'avère pour l 'essentiel suffisante.
Pour la vérification des exemples, nous avons utilisé DrScheme (version 203),
environnement gratuit multi-plateformes disponible sur Internet (source :
[Link]). Après examen des bases, nous passons aux applications
d'intelligence Artificielle. Les dispositifs avancés (modules, classes, objets, graphi­
que), ne relevant pas du standard, ne sont pas traités dans cette section.
CHAPITRE 7

BASES DU LANGAGE SCHEME

7. 1 PRINCIPES DE SCHEME
Il n'y a qu'unejigure algorithmique : l 'évaluation d'expression.
Les données sont des arbres binaires, réduits à des atomes (chaîne, symbole,
entier, rationnel, flottant), ou formés d'une paire d'arbres.
Hormis les constantes et variables, l 'écriture des expressions se ramène à des
appels de fonction, y compris pour les opérateurs usuels. Tout appel de fonction f(x,
y) se code (fx y). De même x + y se code (+ x y), et x + y + z se code (+ x y z).
Cette notation, dite « notation préfixée de Cambridge » accepte des opérateurs à
arité 1 9 variable en contrepartie des parenthèses exigées. Des primitives, soumises
aussi à la notation fonctionnelle, permettent de créer des variables globales et des
fonctions ; pour ces dernières, le concept d'expression conditionnelle rend la récursi­
vité possible, et par là toute l 'algorithmie.

7.2 L'ENVIRONNEMENT DrSCHEME


L'environnement utilise deux fenêtres principales, dédiées l'une [ def] aux défini­
tions, l 'autre [exec] aux exécutions. Dans [exec] , après l 'invite « > », l ' interprète
attend une expression à évaluer.
> 4 .J
4
> ( + 4 5 ) .J
9
> (+ 4 5 6 7 ) .J
22

Si on a tapé quelque chose dans la fenêtre de définition [def], cliquer sur le


bouton [ exec] fait analyser le texte défini :
• si une erreur est relevée dans la première fenêtre, un diagnostic est affiché
dans la seconde ;
• si le contenu de la première fenêtre est formellement correct, ses définitions
sont utilisables dans la seconde fenêtre après l ' invite.
L'aide en ligne regroupe en sections les fonction documentées ; rSrs renvoie au
« Revised (5) report on the algorithmic language Scheme » : il s'agit de la partie
normalisée du langage, donc la plus portable.

1
9 Nombre d'arguments.
1 14 A2 - Eléments pratiques : Scheme

7.3 SYNTAXE D E S EXPRESSIONS ACCEPTABLES


La forme des expressions attendues doit se conformer aux quelques règles données
tableau 7 . 1 , selon les conventions usuelles du tableau 7 .2 (pour plus de détails, voir
sect. 22.4).

Tableau 7.l Syntaxe des expressions.

expression : constante ; variable ; valeur de fonction.


valeur de fonction : «( », nom de fonction, expression œ « ) »
constante : arbre.
arbre : atome ; paire pointée ; liste.
paire pointée : « (« , arbre. « . », arbre, « ) ».
liste : « (» , arbreœ , « ) ».
atome : symbole ; chaîne ; entier ;
rationnel ; flottant.

Tableau 7.2 Convention pour la syntaxe.

Le symbole lu

: def marque la séparation entre la notion et sa définition


' puis sépare deux éléments consécutifs d'une définition
; sinon sépare deux branches d 'une alternative
point termine une règle
toto toto désigne la notion de nom toto
« toto » toto désigne le texte toto
œ iter marque un élément répété au moins une fois

7.4 DONNÉES ÉLÉMENTAIRES OU ATOMES


Chaque type reçoit un nom servant aux tests qualitatifs, donné en italique. Seuls les
types entier et symbole sont indispensables, les autres types sont des commodités.

7.4.1 Nombres
Les représentations des nombres sont exactes (entiers, rationnels) ou approchées
(flottants, représentation dite inexacte en Scheme). Les opérations sur 3 arguments et
plus se font de gauche à droite
> (- 1 2 3)
-4

Entiers
Suite de chiffres décimaux, éventuellement signée, de type fixnum jusqu'à
1 .073 .74 1 .823, de type bignum au-delà.
> (- 8 -5 -7 )
20

#bl l O l , #ol S , #dl 3 , #xd sont des représentations de 1 3 en base 2, 8, 1 0, 1 6.


Bases du langage Scheme 1 15

Rationnels
Paire d'entiers séparés par une barre « / ». Il s ' agit de nombres exacts, de type «frac­
tion », dont la forme normale est la fraction irréductible.
EXEMPLES
> 3/11
3/1 1
> (/ 3 11) opération
3/11 résultat rationnel exact
> (+ 3 / 1 0 3/ 8 )
27/40
> (+ 3/10 3/8 3/40)
3/4 ; réduction automatique d e 3 0 / 4 0
; ; un robinet remplit la piscine en 3 heures , un autre en 5h
; ; combien faut-il de temps en ouvrant les deux ?
,, en heures :
> ( / 1 (+ 1 / 3 1 / 5 ) )
15/8
; ; e n minutes
(/ 60 (+ 1 / 3 1 / 5 ) ) )
225/2
; ; soit 1 1 2mn30s ou lh52mn3 0 s . •

Flottants
Les rationnels inexacts sont de fait des nombres virgule flottante double précision, dits
de type flonum. Ils comprennent : les constantes infinies « +inf 0 » et « -inf.O » , et
les écritures avec partie décimale fractionnaire et/ou facteur de cadrage.
> (/ 4 5 . 0)
0.8
> (/ 4 . 0 5)
0.8
> fo1 0 . 00e5
1000000
( le préfixe #e impose une représentation exacte, donc i c i entière
#i imposerait une représentation inexacte de type flonum) .
>10 . 00e5
1000000 . 0

Tableau 7.3 Types numériques en DrScheme.

type définition remarques

fixnum entier exact 30 bits + signe


bignum entier exact au-delà de fixnum
fraction rationnel exact paire d 'entiers exacts
flonum rationnel inexact flottant double précision ( ,,réel")
complex complexe parties réelle et imaginaire à la fois exactes ou inexac-
tes ; ou partie réelle nulle et partie imaginaire flonum ;
un complexe à partie imaginaire nulle est un réel
1 16 A2 - Eléments pratiques : Scheme

7.4.2 Booléens
Ils sont notés #t pour true (vrai) et #fpourfalse (faux).
(boo/ean? obj ) rend #t si obj est soit #t soit #f, et rend #f sinon.
(boolean? # t ) � #t (boolean ? #f) � #t
(boolean? 0 ) � #f
et de même :
( real ? 3 ) � #t ( real ? #elel O ) � #t
( rational? 6 / 1 0 ) � #t ( integer? 8 / 5 ) � #f
( integer? 3 . 0 ) � #t ( integer? 8 / 4 ) � #t
En réalité, l a plupart des usages (if, cond, and, or. . . ) considèrent tij" comme tel,
et assimilent toute autre valeur à #t.
(not obj) rend #t si obj est faux, #/sinon.
Ainsi :
( not # t ) � #f ( not # f ) � #t ( not 3 ) � # f
(and b l b 2 . . . ) est évalué de gauche à droite, e t a pour valeur l a première valeur #f
rencontrée - l 'évaluation est alors abandonnée - et sinon la valeur du dernier terme.
( and ( 2 2 )
= (> 2 1 ) ) � #t ( and (= 2 2) (< 2 1 ) ) � #f
( and 1 2 3 ) � 3
(or b l b2 . . . ) est évalué de gauche à droite, et a pour valeur la première valeur #t
rencontrée - l 'évaluation est alors abandonnée - et, sinon, la valeur du dernier terme.
(or ( 2 2 ) ( > 2 1 ) )
= � #t (or ( = 2 2 ) ( < 2 1 ) ) � #t
( or # f # f # f ) � #f (or # f # f 1 4 3 ) � 143

7.4.3 Caractères
Notés #\a, #\b, #\c . . . c'est-à-dire par eux-mêmes pour les caractères usuels, et via
leur nom pour les caractères de service, comme dans :
# \backspace # \ l inefeed #\newline # \nul
# \page # \ return # \ rubout # \space
ou encore par leur code octal, de 0008 à 3778 (resp. 0 à 255) , soit par exemple #\o40
pour un blanc (32 1 0).

7.4.4 Chaînes
Suite de caractères entre doubles apostrophes. On peut également en construire à
l ' aide des fonctions de conversion : number->string, symbol->string, list->string . . .

7.4.5 Symboles
On appelle symbole une suite de caractères constituant sa propre valeur littérale, par
opposition aux noms de variables ou de fonction. De façon générale, on accepte
comme symbole toute séquence de lettres, chiffres et caractères spéciaux pris dans
Bases du langage Scheme 1 17

« $ % & * + . / : < = > ? @ /\ _


! - - », et commençant par un caractère qui ne peut
commencer un nombre.
EXEMPLES
l ambda q list->vector soup +

Vl7a <= ? a34 kTMNs


the-word-recurs ion-has-many-meanings
le_mot_récurs ion_a_diverses_significations
ATTENTION !
a-b a.b seront des (fragments de) symboles, non des expressions.
En cas d'ambiguïté, on empêche l 'évaluation d'une variable de même nom en
faisant précéder le symbole d'une apostrophe.
EXEMPLE
>a
undef ined identi fier a
> ' abracadabra
abracadabra
> ( string->symbol "abracadabra" )
abracadabra •

7.5 DONNÉES COMPLEXES

7.5.1 Paires pointées


On convient que (a . b) est une paire formée de deux objets : a à gauche et b à droite.
Noter que le point (connecteur) est isolé de chaque symbole par un blanc

Construction
Par l 'opérateur cons, à 2 arguments exclusivement.
> (abra . cadabra )
undef ined idenfier : abra
> ' ( abra . cadabra ) , , paire constante
(abra . cadabra )
> ( cons ' abra 'acadabra ) , , cons , constructeur d' une paire
(abra . cadabra )

Extraction
car rend la partie gauche d'une paire, cdr la partie droite
> ( car ( cons 'a 'b) )
a
> ( cdr ( cons 'a 'b) )
b

7.5.2 Arbres
Les arbres binaires généralisent les paires pointées : il s'agit
• soit d'atomes : arbre vide, noté nul/, ou donnée élémentaire ;
• soit de paires dont chacun des éléments gauche et droit est un arbre.
1 18 A2 - Eléments pratiques : Scheme

EXEMPLE
> ' ( ( a . b) ( c . d) )
( (a . b ) ( c . d) ) en fait, ( ( a b) c d) voir les listes
> ( cons ' ( a . b ) ' ( c d) )
( (a . b) . (c d) ) en fait , ( ( a b) c d) voi r les li stes
> ( car ( cdr ( cons ' ( a . b) ' ( c . d) ) ) )
c

753 . . Listes
On appelle liste une notation allégée des arbres, qui sont peu exploités comme ar­
bres binaires p ius ou moins équilibrés, mais souvent comme arbres étendus à droite.
L' idée centrale est de noter maintenant (a b c) ce qui devrait au sens du paragra­
phe précédent se noter (a . (b . (c . null))), la liste vide devenant implicite lorsqu'elle
j oue un rôle de butoir à droite.
Alors
• (a) signifie (a . null) et réagit en tant que tel aux car et cdr ;
• (le chat est sur le banc) remplace avantageusement
- la notation de principe (le .(chat .(est .(sur . (le . (banc. null)))))
- la chaîne « le chat est sur le banc », dont les mots ne sont pas isolés.

Construction
On peut évidemment utiliser cons, mais aussi list qui le généralise en ajoutant un
butoir nul!, et append qui allonge une liste existante, ou encore des conversions
type->list.
> ( cons 'a ( cons 'b ( cons 'c nul l ) ) )
( l ist ' a 'b ' c )
> ( list ' a 'b ' c )
( list ' a 'b ' c )
> ( l ist 1 2 3 4 )
( list 1 2 3 4 )
> ( l ist (list ' a ' b ' c ) ( l ist ' x ' y ) )
( list ( l ist 'a 'b ' c ) ( list 'x 'y) )
> ( append ( l ist ' a 'b ' c ) ( list 'x 'y) )
( list 'a 'b ' c 'x 'y)
> ( s tring->list "abcxy" )
( list #\a # \b # \ c #\x #\y)

Extracteurs physiques
(list-tail liste k) retourne la sous-liste obtenue en omettant les k premiers éléments
de la liste ; il y a erreur s'il y a moins de k éléments dans la liste.
De plus,
(list-ref liste k) = (car (list-tail liste k)
Cette écriture retourne le k-ième élément de la liste, numérotés 0, 1 , . . Ainsi
. :

> ( list-tail ' ( a b c d e ) 2 )


(c d e )
; ; qu ' on peut aus s i obtenir par ( cdr ( cdr ' ( a b c d e ) )
Bases du langage Scheme 1 19

> ( l i st-ref ' (a b c d e) 2 )


c
;; obtenu en style lisp par
;; ( car ( cdr ( cdr ' (a b c d e ) ) ) ) � ( car ( cdr (b c d e ) ) )
;; � ( car ( c d e ) ) � c
;; ou en abrégé par un ( caddr ' ( a b c d e ) )

Extracteur logique
(member obj Iist) est un quasi-prédicat qui retourne la première sous-liste de la
liste commençant par obj. Si obj n'existe pas dans la liste, le résultat est #f (faux), et
non la liste vide.
EXEMPLE
> (member 'a ' ( w x c v a z e r t y) )
(a z e r t y)
> (member ' ( a) ' (w x c a b z ( a z) c q) )
H
> (member ' ( a ) ' (x c ( a ) v b n ) )
( ( a) v b n ) •

Observateur
length rend le nombre d'éléments d'une liste, compté au premier niveau.
( length ' (a b c d) ) � 4
( length ( l ist (+ 2 5 ) ( * 3 9 ) ) ) � ( length ( list 7 2 7 ) ) � 2
( length ' ( a (b ( c d e ) ) f ) ) � 3

7.5.4 Listes associatives


On appelle liste associative, des listes de paires, présumées de style (clé . info) ou
(propriété . valeur) . L'expression
(assoc obj listeAssociative)
a pour valeur la première paire de la liste associative traitée commençant par obj , si
elle existe, et #f sinon.
(as soc 'peugeot ' ( ( renault .R2 5 ) (peugeot 4 0 6 ) (mazda
. . 3 2 3 ) ( smart
pulse ) ) ) � (peugeot .406)
( length ' ( ( renault . R2 5 ) (peugeot .4 0 6 ) (mazda . 3 2 3 ) ( smart
pulse) ) ) � 4
(assoc ( list ' a ) ' ( ( ( a ) ) ( (b) ) ( ( c ) ) ) ) � ( (a ) )
Le résultat n'est pas défini si la liste n'est pas formée de paires ou de listes.
Les listes associatives conviennent particulièrement à la représentation de
• dictionnaires: ((entrée définition)@)
• graphes: ((sommet successeurs ) Efl)
• grammaires non contextuel/es: ((notion développement)Efl), où le dévelop­
pement est soit une séquence soit une alternative,
• listes de propriétés ((clé (attribut valeur) Efl)"il)
et sont par là un outil essentiel en Intelligence Artificielle.
1 20 A2 - Eléments pratiques : Scheme

7.6 OBJETS GLOBAUX

7.6.1 Principe de leur création


On les définit dans la fenêtre [def] . Sauf incident donnant lieu à message d'erreur,
l 'obj et défini sera (après analyse) connu dans l 'espace de travail, et utilisable dans
des expressions.

7.6.2 Variables globales


Supposons saisi en [ def] :
( de:fine col lection ' ( ( renault . R2 5 ) (peugeot . 4 0 6 ) (mazda . 3 2 3 )
( smart . pulse) ) )
Le passage à l 'exécution crée une variable globale collection ayant la liste pour
valeur. En l 'absence d' incident, on a dorénavant :
> ' collection ; ; usage littéral du symbole collection
> collection ; ; le symbole renvoie à la variable globale
( ( renault . R2 5 ) (peugeot . 4 0 6 ) (mazda . 3 2 3 ) ( smart . pulse ) )
> ( car collection )
( renault . R2 5 )
> ( cdr collection )
( (peugeot . 4 0 6 ) (mazda . 3 2 3 ) ( smart . pulse ) )
> ( length collection )
4
> ( assoc 'mazda collection )
(mazda . 3 2 3 )

7.6.3 Fonctions

Expressions paramétrées ou À-expressions

Considérons une expression de la forme :


(lambda (paramètres) séquence)
où paramètres est une suite de symboles différents, et séquence une suite
d'expressions pouvant utiliser ces symboles comme paramètres. Une telle expres­
sion, ou/orme lambda est une fonction anonyme.
Soit maintenant une expression de la forme :
((lambda (paramètres) séquence) arguments)
où arguments est une suite de valeurs. Lors de son évaluation, l 'environnement est
étendu en liant les paramètres aux arguments, puis la séquence est évaluée expres­
sion par expression dans l 'environnement ainsi étendu.
Ainsi :
( lambda ( x ) (+ x x ) ) � fonction anonyme à l paramètre
( ( lambda ( x ) ( + x x ) ) 7 ) � 14
;; car x e s t l i é à 7 avant l ' évaluation d e ( + x x ) .
Bases du langage Scheme 121

Fonctions élémentaires : cas d u carré


dejine permet de construire des fonctions, en nommant des À-expressions .
Le schéma général est alors
(define nom_de_laJonction (lambda (liste_des_paramètres) (expression paramétrée)))
Les arguments sont passés par valeur. Supposons saisi en [ def] :
(define carre ( lambda ( n ) (* n n) )
Après [exec], l ' absence d' incident entraîne l 'existence dans l 'espace de tra­
vail de carre, fonction à un argument qu'elle élève au carré :
> carre
Jtprocedure : carre ; ; compte-rendu de la création de la fonction
' carre '
> ( carre 1 1 )
121
> ( carre 2 5 6 )
65536
> (carre ( carre ( length ' ( a b c d) ) )
256

Variantes e t expressions conditionnelles

Forme cond
L'écriture
(cond (cond l exprl ) (cond2 expr2) . . . (else expm) )
signifie :
si cond l alors exprl sinonSi cond2 alors expr2 sinonS i . . . sinon expm.
Comme il s'agit d'une expression, celle-ci est a priori indéfinie en l 'absence de
branche else.
En fait chaque clause (condition expression) peut être de la forme (condition e 1
e2 . . . en ). Dans ce cas, si 'condition' est vrai, e 1 , e2, . . . en sont évaluées successive­
ment, la valeur de en étant la valeur finalement rendue.
De plus, une expression cond est utilisable dès que ses conditions sont définies
de la première jusqu'au cas utile inclus. En matière de prototypage, ceci facilite les
essais d'applications incomplètes . . . Mais pour stabiliser une application, cela mon­
tre qu'un jeu d'essais sera facilement incomplet.

Forme if
(if condition expressionSiVrai expressionSiFaux ) est une forme brève pour :
(cond (condition expressionSiVrai) (else expressionSiFaux) ).
La forme if exige des expressions pures, et n'accepte pas de séquence en tant
que telle. Pour tourner cette contrainte,
(cond (condition e l e2 e3) (else e4 e5 e6) )
devrait être remplacée par
1 22 A2 - Eléments pratiques : Scheme

(if condition (begin e l e2 e3) (begin e4 e5 e6) )


qui perd beaucoup de la clarté recherchée.
On peut interpréter (and bl b2 . . . bn ) comme (if bl (and b2 . . . bn) #f).
L'évaluation séquentielle des conjonctions permet ainsi d'utiliser sans dommage des
conditions partiellement définies si elles sont précédées de conditions assurant leur
validité (dites selon le contexte : pré-conditions, filtres, gardes . . . ) comme dans
(and indice_valide test_indicé . . . ) .

7.6.4 Polymorphisme
On peut écrire des fonctions réagissant en fonction de la nature des arguments. Ainsi
la fonction :
( define double ( lambda ( chose)
( cond ( ( nul l ? chose ) ( ) )
( ( number? chose ) ( * 2 chose ) )
( else ( l ist chose chose ) )
)))
donnera à l 'exécution
> (double ( ) )
()
> (double 4 ) ; ; second cas
8
> (double ' a ) ; ; tiers cas
(a a)
> (double ' (b l a) )
( (b l a) (b l a) )
> (double " aha" )
( " aha " "aha" )

7. 7 RÉCURSIVITÉ

7.7.1 Fonctions récursives


Une fonction récursive est une fonction qui s'appelle elle-même, directement ou
non 2 0 • Pour que ce ne soit pas un cercle vicieux, l 'arrêt de l ' évaluation est nécessaire.
Une fonction récursive comprendra donc :
• une forme conditionnelle permettant la détection d' un ou plusieurs cas

d 'arrêt, renvoyant à des expressions élémentaires ou des à fonctions évalua­


bles en un nombre fini d'étapes ;
• la définition d ' un ou plusieurs cas de régression, s 'appuyant sur la réutilisa­

tion de la fonction.
Une fonction récursive est valide si les cas de régression sont tels qu'un appel
quelconque se ramène toujours en un nombre fini d 'étapes à un cas de la plage
d'arrêt : on dit alors la récursivité convergente. Sinon, la fonction n'est que partiel­
lement définie.

2 0 C 'est un des rares mécanismes nécessaire à l 'algorithmie (Alonzo CHURCH, 1 94 1 ).


Bases du langage Scheme 1 23

Factorielle
(define fact ( lambda ( n )
( cond ( (< n 0 ) " fact l ' argwnent doit être positi f " )
; ; o n blinde
( (= n 0 ) 1 ) ;; 0 ! = 1
( else ( * n ( fact ( - n 1 ) ) ) )
; ; sinon fact ( n ) = n* fact ( n- 1 )
)))

> ( fact 2 4 )
6204 4 8 4 0 1 7 3 32 3 9 4 3 93 6 0 0 0 0

Générateur d e vecteur style APL


;; générateur iota ( n ) � ( 0 1 2 3 ... n )
;;
(define iota ( lambda ( n )
( cond ( ( < n 0 ) " iota : l ' argwnent doit être pos itif " )
( ( = n 0 ) ( list 0 ) ) , , ou ( cons 0 ( ) )
(else ( append ( iota ( - n 1 ) ) ( list n ) ) )
;; ( 0 1... n- 1 ) & ( n ) � ( 0 1 ... n )
)))
> ( iota 1 7 )
(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 6 17)

L e devin
"choisissez un nombre entre 0 et 1 0 0 0 "
" j e vais essayer de le deviner en 1 0 questions "
(define question ( lambda ( nwnero inf sup)
; ; (display ( list inf sup ) )
( cond ( ( < inf sup ) (bis section nwnero inf
( quotient ( + inf sup ) 2) sup) )
( ( = inf sup) (display ( list " j ' ai trouvé ! c ' est" inf) ) )
( else (display ( list ' Q nwnero "erreur · "
inf " > " sup ) ) ) ) ) )
(define bissection ( lambda ( nwnero inf milieu sup)
, , si le nombre est dans [ inf sup ] , est-il dans [ inf milieu- 1 ]
, , ou dans [milieu sup ] ? ?
( cond ( (< inf mil ieu )
(display ( list 'Q nwnero
" : le nombre est-il plus grand ou égal à" milieu ) )
[ i f ( eq? ( read) ' oui )
( question ( + nwnero 1 ) mi lieu sup)
( question ( + nwnero 1) inf ( - mil ieu 1 ) ) ) ]
(else ; ; inf = milieu = sup- 1 , une dernière question
(display ( list ' Q nwnero " : le nombre est-il égal à" milieu ) )
( i f ( eq? ( read) ' oui ) ( question (+ nwnero 1 ) milieu mi lieu)
( question ( + nwnero 1) sup sup) ) )
)))
(define j eu ( lambda ( ) ( question 1 0 1 0 0 0 ) ) )
( j eu )

@Xecute !I
Welcome...
"choisissez un nombre entre 0 et 1 0 0 0 " ; ; j ' ai choisi 7 7 7
1 24 A2 - Eléments pratiques : Scheme

" j e vais essayer de le deviner en 10 questions "


( q 1 : le nombre est-il plus grand ou égal à 5 0 0 ) ?oui
(q 2 : le nombre est-il plus grand ou égal à 7 5 0 ) ?oui
(q 3 : le nombre est-il plus grand ou égal à 8 7 5 ) ?non

(q 9 : le nombre est-il plus grand ou égal à 7 7 7 ) ?oui


( q 1 0 : le nombre est-il plus grand ou égal à 7 7 8 ) ?non
( j ' ai trouvé ! c ' est 7 7 7 )
>

7.7.2 Auto-extensibilité de Scheme


Les fonctions commodes telles que list-tail sont dérivables de fonctions plus élémen­
taires, comme dans :
( define list-tail ( lambda (x k)
(if ( zero? k) x ( li s t -tail ( cdr x ) ( - k 1) ) )
))

7.7.3 Traitement des arbres


Les arbres sont toujours
• soit un atome,
• soit une paire d'arbres.
Par dualité données/algorithmes, ils se traitent souvent selon le schéma récursif :
Le traitement T(A) d'un arbre A se ramène :
• si A est un atome, à un traitement « élémentaire » U(A) ;
• si A est une paire d'arbres, à une synthèse des traitements T(gauche(A) 2 1 ) et
T( droite(A) 22).

Nombre de feuilles d'un arbre


( define compte ( lambda (arbre )
[ cond ( (nul l ? arbre ) 0 ) ; ; arbre vide , butoir � 0
( ( feui lle? arbre ) 1 ) ; ; feuille � 1
; ; s inon , compte ( arbreGauche ) ) + compte (arbreDroit)
(else ( + ( compte ( car arbre ) ) ( compte ( cdr arbre ) ) ) )

))
, , test pour savoir si un arbre est réduit à un atome :
( define feui lle? ( lambda ( chose) ( not (pair? chose ) ) ) )

@Xecute !I
Bienvenue ...
> ( compte ( ) )
0
> ( compte ' a )
1
> ( compte ' ( a b c ) )
3

2 1 Concrètement, (car A).


22 Concrètement, (cdr A).
Bases du langage Scheme 1 25

> ( compte ' ( ( ( a b) c (d ( e ) ) ) ) )


5

7.8 PRÉDICATS ET QUASI-PRÉDICATS


Pour traiter les variantes et faciliter l 'écriture des fonctions récursives, Scheme four­
nit de nombreux tests prédéfinis, qui peuvent porter aussi bien sur les valeurs que sur
leurs types (ce qui permet le polymorphisme, § 7.6.4).
Les noms suffixés par un « ? » sont réservés aux /onctions booléennes rendant
soit #t (vrai) soit #f (false), appelées prédicats en Scheme. D 'autres fonctions, dites
quasi-prédicats sont exploitables par if et cond, qui, dans la tradition lisp, rendent
soit une valeur normale, liste ou autre, soit #f en cas d'échec.

7.8.1 Prédicats qualitatifs


Soit à mettre un arbre « à plat », c 'est-à-dire constituer à partir de cet arbre la liste
« plate » de ses feuilles, avec par exemple :
(a (b (c d) e) j) -7(a b c d ej)
Ce sera l 'objet de la fonction aplat, réalisée à l 'aide d'une fonction aplatO qui, à
partir d'un arbre A et d'une liste L, produit une liste formée de la mise à plat de A,
prolongée par L. En cours de traitement, le premier paramètre correspond à ce qui
reste à mettre à plat, tandis que le second (ou accumulateur) transmet ce qui a déjà
été obtenu. La fonction aplatO utilise les prédicats « de structure » :
pair? qui donne #t ssi l 'arbre est une paire d 'arbres, #f s'il est réduit à un atome ;
nul/? qui donne #t ssi est l 'arbre est vide, #f sinon.
(define apla t ( lambda ( arbre) ( apl a t O arbre ( ) ) ) )
; ; aplat se ramène à aplatO , avec une liste initiale vide
(define apl a t O ( lambda (arbre accu )
( cond
( (pair? arbre ) ; ; si « arbre » est une paire ,
; ; le résultat est la mise à plat du sous-arbre gauche ,
( apl a t O ( car arbre ) ( apl a t O ( cdr arbre ) accu ) ) )
; ; suivie de la liste obtenue par mise à plat du
; ; sous-arbre droit suivi de la liste « accu »
; ; sinon , « arbre » n ' est qu ' un atome
; ; si « arbre » est vide , « accu » est la réponse
( ( null ? arbre ) accu )
; ; si « arbre » est un autre atome ,
; ; on installe cet atome devant « accu »
(else (cons arbre accu ) )
)))
A l 'exécution :
> ( aplatO ' ( a (b c) d) ' (e f g) )
(a b c d e f g)
> (aplat ' (a (b ( c d) e ) f ) )
(a b c d e f)
> (aplat ' ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( a ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
(a)
1 26 A2 - Eléments pratiques : Scheme

Scheme fournit de plus les prédicats qualitatifs donnés tableau 7 . 3 .

Tableau 7.3 Prédicats qualitatifs.

Prédicats Signification

(boolean? obj) obj est-il booléen ?


(char? obj) obj est-il un caractère ?
(defined? symbol) symbol désigne-t-il une variable globale ?
(directory-exists? path) path correspond-il à un répertoire existant ?
(exact? z) z est-il entier ou rationnel ?
(file-exists? path) path conespond-il à un fichier existant ?
(inexact? z) z est-il flottant ?
(integer? obj) z est-il entier ?
(list? obj) obj est-il une liste (avec butoir(s)) ?
(null? obj) obj est-il une liste vide ?
(number? obj) obj est-il un nombre ?
(pair? obj) obj est-il une paire ?
(procedure? obj) obj désigne-t-il une fonction actuellement connue ?
(rational? obj) obj est-il un rationnel ?
(real? obj) obj est-il un réel (ou un complexe de partie imaginaire nulle) ?
(string? obj) obj est-il une chaîne ?
(svmbol? obi) obi est-il un symbole non vide ?

Tableau 7.4 Prédicats numériques.

Prédicats numériques Signification

(zero? z) (= 0 z)
(positive? x) (< 0 x)
(negative? x) (> 0 x)
(odd? n) n est-il impair ?
(even? n) n est-il pair ?
(< x y z . . . ) (and (< x y)(< y z) . . . )
(= X y Z . . . ) (and (= x y)(= y z) . . . )
(> X y z) (and (> x y)(> y z) . . . )
(<= X y z)
...
(>= X y z)
...

7.8.2 Prédicats entre valeurs élémentaires

Prédicats numériques
Ils sont donnés tableau 7.4.

Prédicats sur les caractères


Certains prédicats permettent la classification des caractères (tab. 7.5).
Ceux qui comparent deux caractères exploitent la convention suivante :
(char->integer caractère ) renvoie la représentation entière du caractère, et
(integer->char entier) fonctionne symétriquement.
Bases du langage Scheme 1 27

Les comparateurs de caractère ont une forme ( chark ? car l car2), où k désigne
un comparateur d'entiers, avec pour définition :
(chark ? car l car2) = (k (char->integer car i ) (char->integer car2))
Par exemple,
(char<=? a b) - (<= (char->integer a) (char->integer b))
et symétriquement, si x et y sont des entiers de [O 255] :
(<= x y) = (char<=? (integer->char x) (integer->char y))

Tableau 7.5 Classification de caractères.

le prédicat décide si kar est

(char-numeric? kar) un chiffre


(char-whitespace? kar) un espace, une tabulation, une fin de ligne, une fin de page
(char-alphabetic ? kar) une des 52 lettres
(char-upper-case? kar) une majuscule
(char-lower-case? kar) une minuscule

Les comparateurs de caractère de forme (char-cik ? carl car2), où k désigne un


comparateur d'entiers, fonctionnent de même, mais ne distinguent plus notamment
les majuscules des minuscules (tab. 7.5)

Prédicats sur les chaÎnes


Les prédicats :
(string=? $ 1 $ 2) et (string-ci=? $ 1 $ 2)
renvoient
• #t si les deux chaînes $ 1 et $ 2 sont de la même longueur et contiennent les

mêmes caractères aux mêmes positions,


• #f sinon,

string=? distinguant les majuscules des minuscules, contrairement à string-ci = ? .


De même les prédicats :
( string<? $ 1 $ 2 ) (string> ? $ 1 $ 2 ) ( string< = ? $ 1 $ 2 ) ( string>= ? $ 1 $ 2 )
( string-ci<? $ 1 $ 2 ) ( string-ci>? $ 1 $ 2 ) ( string-ci< = ? $ 1 $ 2 )
( string-ci> = ? $ 1 $ 2 )
sont l 'extension lexicographique aux chaînes des prédicats correspondants relatifs
aux caractères. Par exemple, string< ? exploite l 'ordre lexicographique entre chaînes
induit par char< ? sur les caractères.
Si deux chaînes sont de longueurs différentes, en étant identiques sur la lon­
gueur de la plus courte, la chaîne la plus courte est considérée comme lexicographi­
quement inférieure à la plus longue.
Ex : "abra" � "abracadabra"
1 28 A2 - Eléments pratiques : Scheme

7 .9 ÉQUIVALENCES
Les tests eq? et equal? décident de l 'équivalence entre objets quelconques.
• eq ? est une version allégée : il décide correctement de l 'équivalence entre ob­
jets élémentaires, mais utilisant si possible la comparaison entre pointeurs plu­
tôt qu'entre objets, il trouvera différentes deux données identiques d 'origines
différentes ;
• equal? est une version récursive « totale », capable de comparer deux arbres
- ou structures chaînées - au risque de se faire piéger si une donnée comprend
une liste circulaire.
Exemples d'équivalences :
> ( eq? 5 5 )
#t
> ( equal ? 5 5 )
#t
> ( eq? 5 ( + 2 3 ) )
#t
> ( equal? 5 ( + 2 3 ) )
#t
> (eq? ' (a b c ) ( list ' a 'b ' c ) )
#f
> (equal ? ' (a b c ) ( list ' a ' b ' c ) )
#t
> ( de fine x ( list ' a 'b ' c ) )
> ( eq? x x)
#t

7 . 10 EXEMPLES

7.1 0.1 Produit scalaire


Cette fonction réalise aussi bien le produit scalaire traditionnel que toute somme
pondérée ou de produits, comme facture = Li quantité · prix_unitaire;.
( define proScal ( lambda (x y) ; ; vecteur = liste
( cond ( ( nul l ? x) 0 ) ; ; vecteur x épuisé
( (nul l ? y) 0) ; ; vecteur y épuisé
Il n

;; I xk · Yk = X; · Y; + L xk · Yk
k=i k=i+l
( else ( + (* ( car x) ( car y) )
(proScal ( cdr x) ( cdr y) ) ) )
l ))
IExecuteï:J
Bienvenue... .
(proscal ' ( 1 2 3 4 5 ) ' ( 5 6 7 8 ) )
; ; seuls contribuent les 4 premiers nombres de x
70
> (proscal ' ( 1 2 3 4 ) ' ( 5 6 7 8 ) )
70
Bases du langage Scheme 1 29

7.10.2 Evaluation d'un polynôme


;; On utilise un Schéma de Homer : aO +a l ·x + a2·x2+ . . . = aO+ x (a l + a2·x + . . . )
(define polynome ( lambda (x coeffs )
; ; coeffs =(aO al a2 a3 . . . an)
[ cond ( (nul l ? coeffs ) 0 )
(else ( + ( car coeffs )
( * x (polynome x ( cdr coeffs ) ) ) ) )
)))
@xecuteij
Bienvenue...
> (polynome - i ' ( 1 2 3 4 5 6 ) )
-3
> (polynome -0 . 0 1 ' ( 1 1 1 1 1 1 1 1 1 1 1 1 ) )
0 . 9900990099009901
> ( / 1 (polynome 1 / 1 0 0 ' ( 1 1 1 1 1 1 1 1 1 1 1 1 ) ) )
10000000000000000000000/ 10101010101010101010101

7.10.3 Primalité
Il s'agit de définir un test (premier? N) décidant si l 'entier N est premier.
On utilise :
• (remainder n p) qui donne le reste de la division de n par p,

• (quotient n p) qui donne la partie entière du quotient de n par p.

On essaie comme diviseurs 2 puis les impairs jusqu'à la racine de N.


(define premi er ? ( lambda (n)
( cond ( (<= n 0 ) # f )
( ( < n 4 ) *t> 1, 2, 3 premiers
( else ( indivisible? n 2 ) )
)))
(define indi vi sibl e ? ( lambda ( n candidat)
(display ( list 'essai n * \ : candidat ) )
; ; trace de la nouvelle récurrence
( cond ( ( ( remainder n candidat ) 0 ) * f ) ; ; n divis ible
=

( ( < ( quotient n candidat) candidat ) * t l


; ; n indivisible car n < candidat 2
(else ( indivisible? n
( + candidat 1 ( remainder candidat 2 ) ) ) )
)))

7.10.4 Les ensembles comme listes plates sans répétition


;; convention Scheme : les fonctions de conversion ont un nom de style type]->
type2
(define l i s te->ensemble ( lambda ( L )
(cond ( (null ? L) ( ) ) ; ; l iste vide -> ensemble vide
( ( not (pair? L) ) ( list L) ) ; ; autre atome->dans l ' ensemble
, , s inon , L est une vraie liste
; ; le premier élément de L est-il répété ?
; ; si oui, on le saute
( (member ( car L) ( cdr L) ) ( l i ste->ensemble ( cdr L) ) )
; ; s inon , on l ' intègre à l ' ensemble
(else ( cons ( car L) ( l i ste->ensemble ( cdr L) ) ) )
)))
130 A 2 - Eléments pratiques : Scheme

( define ensemble? ( lambda (L)


(or ( nul l ? L)
( not (pair? L) )
; ; ou si L est une vraie liste
( and ( not (member ( car L) ( cdr L) )
; ; dont le premier élément n ' est pas répété
; ; et le reste est un ensemble
( ensemble? ( cdr L) )
)))

( define union ( lambda (El E2 ) ( liste->ensemble ( append El E2 ) ) ) )

(define di ff ( lambda (El E2 ) di fférence ensembliste


1 1

( cond ( (null ? E l ) () )
( (member ( car El ) E2 ) ( diff ( cdr El ) E2 ) )
1 premier élément de El interdit si présent dans E2
1

(else ( cons ( car El ) ( diff ( cdr El ) E2 ) ) )


; ; sinon , premier élément de E l retenu
)))

( define L ' ( a b r a c a d a b r a ) ) 1 1 liste


( define A ' ( a b c d e f ) ) 1 1 ensemble
donne comme exécution
> (ensemble? ( ) )
#t
> (ensemble ? L)
#f
> (ensemble ? A)
#t
> ( ensemble ? ( l iste->ensemble L) )
#t
> ( l i ste->ensemble L)
( c d b r a)
> (union L A)
(r a b c d e f )
> (diff ( liste->ensemble L) A )
(r)

7. 1 1 EXERCICES

7.11.1 Ecrire une phrase


Essayer les fonctions display et write. Créer une fonction écrire telle que :
(écrire ' (le chat est sur le banc)) -7 le chat est sur le banc.

7.11.2 Test de la factorielle


Verifier les effets de (map fac! (iota 7))
et de (map fact (iota (read))) .
Bases du langage Scheme 131

7.11.3 Style et performances


(time expr) donne la valeur de expr et le temps nécessaire pour l 'évaluer.
On s ' intéresse à la suite de Fibonacci définie par
fib(O) = 0, fib( l ) = 1 , puis fib(n) = fib(n- 1 ) + fib(n-2)
(Frécon 2002, ch. 6).
Comparer, pour n= 5, 1 0, 1 5, 20, 25, les performances de
(define fib ( lambda (n)
( cond ( (< n 0 ) ( list "erreur f i b : argument " n " négatif" )
( (member n ' ( 0 1 ) ) n)
(else (+ ( fib ( - n 1 ) ) ( fib ( - n 2 ) ) ) )
)))
et de
(define fib2 ( lambda ( n )
( i f (< n 2 )
( i f (< n 0 ) ( list "erreur fib2 argument " n " négatif " ) n)
( + ( fib ( - n 1 ) ) ( fib ( - n 2 ) ) )
)))
Le temps observé varie comme une exponentielle. Pourquoi ?
« fib2 » devrait être plus rapide que « fib ». Pourquoi ?

7.11.4 Simplification
Réécrire la fonction f9 l définie ci-après sous la forme la plus simple possible.
(define f91 ( lambda ( n )
( cond ( ( < n 0 ) ( f91 ( + n 7 ) ) )
( ( > n 1 3 ) ( f9 1 ( - n 3 ) ) )
(else 9 1 ) )
))

7.1 1.5 Le devin (version 2)


Ecrire une version qui cherche un entier n non nul, non borné a priori.

7. 1 2 INDICATIONS

Pour 7.11.1
(define écrire ( lambda (phrase)
( cond ( ( null ? phrase) (display # \ . ) )
(else (display ( car phrase ) )
(display # \ space ) ( écrire ( cdr phrase) ) ) ) ) )
Comparer l 'effet de écrire à celui de display ou write.

Pour 7.11.3
En dernière analyse, les fib() sont fournis par une arborescence binaire dont chaque
nœud est un +, et chaque feuille soit un 0 soit un 1 (à 50/50) ; le nombre d 'additions
1 32 A2 - Eléments pratiques : Scheme

varie comme le nombre de 1 , c'est-à-dire comme le résultat, qui est de l 'ordre de


1 ,62".
Pour n élevé, vérifier que fib2 est environ 20% plus rapide que fib. En effet,
pour n correct, on fait dans fib deux tests par évaluation, tandis que dans fib2 on fait
un seul test dans le cas général, et deux seulement dans les cas terminaux.

Pour de 7.11.5
En simulant l 'exécution de f9 1 pour divers arguments, on vérifiera que la fonction
donnée est invariante, et finalement équivalente à
(define f91 ( lambda ( n ) 9 1 ) )

Pour 7.1 1.5 / devin (v. 2)


Cette version plus complexe cherche un entier n non nul, non borné a priori. Pour
cela, on cherche à cadrer n dans un intervalle [inf sup] où inf est une puissance de
1 00, et sup inf2, puis on s ' inspire de la méthode précédente. Mais comme les ordres
=

de grandeur sont incertains, et les petits nombres plus probables que les grands, on
prend la moyenne géométrique (inf * sup) 'h comme valeur intermédiaire entre inf et
sup, plutôt que la moyenne arithmétique (inf + sup)/2. Ainsi, l ' intervalle [ 1 OO 1 0000]
est-il partagé en [ 1 OO 1 000] et [ l 000 1 0000] (chaque décade supposée équiprobable)
plutôt que [ 1 00 5050] et [5050 1 0000] .
• Les deux méthodes coincident sur les petits intervalles : la première est alors

plus légère.
• Plus le cadrage est fin (et donc long) plus la finition est rapide . . . un équilibre

doit être trouvé


" choisissez un nombre au moins egal a un"
" j e vais es sayer de le deviner" ; ; s ' affiche lors du chargement
(define question ( lambda ( numero inf sup)
; ; (display (list ' q numero inf sup) )
( cond ( ( < inf sup) (bissection numero inf
( inexact->exact ( floor ( sqrt ( * inf sup) ) ) ) sup) )
( ( inf sup) (display
=

( list " j ' ai trouvé ! c' est" inf) ) )


(else (display ( list ' Q numero
" erreur : " inf " > " sup ) ) ) ) ) )
(define bi ssection ( lambda ( numero inf med sup)
, , (display ( l ist 'biss : numero inf med sup) )
( cond ( ( < inf med)
(display ( list 'Q numero
" : le nombre est-il plus grand ou égal à" med) )
( i f ( eq? ( read) ' oui )
(question ( + numero 1 ) med sup)
( question ( + numero 1) inf ( - med 1 ) ) ) )
(else ; ; inf med < sup
=

(display ( list 'Q numero


" : le nombre est-il égal à" med ) )
( i f ( eq? ( read) ' oui )
(question (+ numero 1 ) med med)
(question ( + numero 1) (+ med 1) sup) ) )
)))
Bases du langage Scheme 1 33

( define cadrage ( lambda ( numero inf sup)


; ; (display ( l ist inf sup ) )
(display ( list 'Q numero
" : le nombre est-il plus grand ou égal à" sup) )
( i f ( eq? ( read) ' oui )
( cadrage ( + numero 1 ) sup ( * sup sup) )
( question ( + numero 1 ) inf sup)
)))
(define j eu ( lambda ( ) ( cadrage 1 1 1 0 0 ) ) )
( j eu )
@Xecute !I
Bienvenue ... .
"choisissez un nombre au moins egal a un " ; ; 31 7
" j e vais essayer de le deviner "
(q 1 : le nombre est-il plus grand o u égal à l O O ) oui
(q 2 : le nombre est-il plus grand ou égal à l O O O O ) non
(q 3 : le nombre est-il plus grand ou egal a l O O O ) non
(q 4 : le nombre est-il plus grand ou egal a 3 1 6 ) oui

(q 1 0 : le nombre est-il plus grand ou egal a 3 2 0 ) non


(q 1 1 : le nombre est-il plus grand ou egal a 3 1 7 ) oui
( q 12 : le nombre est-il égal à 3 1 7 ) oui
( j ' ai trouve ! c ' est 3 1 7 )
> ( j eu )
( q 1 : le nombre est-il plus grand ou égal à l O O ) oui ,, c ' es t 7 7 7 7
(q 2 : le nombre est-il plus grand ou égal à l O O O O ) non
(q 3 : le nombre est-il plus grand ou egal a l O O O ) oui
(q 4 : le nombre est-il plus grand ou egal a 3 1 62 ) oui

(q 14 : le nombre est-il plus grand ou egal a 7 7 7 7 ) oui


(q 1 5 : le nombre est-il plus grand ou egal a 7 7 8 0 ) non
(q 16 : le nombre est-il égal à 7 7 7 7 ) oui
( j ' ai trouve ! c ' est 7 7 7 7 )
CHAPITRE 8

PREMIÈRES APPLICATIONS

8. 1 COMPLÉMENTS

8.1.1 Mise au point

Trace
La mise au point des fonctions est facilitée par des affichages intermédiaires qu' on
peut obtenir par (display valeur), la valeur pouvant être une liste, comme dans :
(display (list 'nomFonction pari par2 par3)).
Pour aller à la ligne, (newline) remplace avantageusement (display #\newline).
Lorsque la mise au point est achevée, ne pas enlever ces affichages, mais les
basculer en commentaires ( ;; --) afin de faciliter les évolutions ultérieures . . . et leur
mise au point, qui doit montrer d'abord que l 'évolution est non régressive : ce qui
marchait marche encore.

Parenthèses
Il faut, surtout en fin de fonction, des lots de parenthèses. DrScheme autorise éga­
lement les paires de crochets et les paires d'accolades, dont il vérifie l 'appariement.
On peut s'en servir pour clarifier, en suivant une convention fixe. Comparer :
(cond ( (eq? ( car suite ) u ) ( chiffre 1 ( cdr suite) u q d) )
( (eq? ( car suite ) q) ( chi ffre 5 ( cdr suite ) u q d) )
(else ( cons 0 suite ) )

( cond [ ( eq? ( car suite) u ) ( chi ffre 1 ( cdr suite ) u q d) ]


[ (eq? ( car suite ) q) ( chiffre 5 ( cdr suite ) u q d) ]
[ else ( cons 0 suite ) ]

Ergonomie : A chaque couche sa marque


Mise au point et maintenance reposent sur l 'exploitation des messages d'erreur, qui
doivent dire « quoi » et « où ». Ce dernier point est très sensible : une erreur est
d'autant plus confuse et désastreuse que le point de détection est éloigné du point
d'origine.
Le repérage de la détection repose sur la fonction, et d'abord sur son niveau
lorsque l 'application comporte plusieurs couches.
1 36 A2 - Eléments pratiques : Scheme

Supposons que l 'environnement (ici DrScheme) émette ses messages d'erreur


en anglais ; vous vous faciliterez la recherche des erreurs au niveau applicatif en
utilisant à ce niveau exclusivement le français pour vos variables, vos fonctions, vos
messages :
• devant une fonction de conversion list->set fautive ou douteuse, la question

peut se poser de rechercher dans l ' aide en ligne si elle est prédéfinie et com­
ment . . . alors qu'elle a été introduite dans un recoin de votre application !
• avec la convention ci-dessus, si une fonction liste->ensemble est fautive, vous

savez immédiatement qu'elle relève de votre projet, et que vous l ' avez définie
(documentée ?) quelque part.
Une application qui n'émettrait que des erreurs en français peut alors être consi­
dérée comme correctement blindée, en ce sens qu'aucune erreur ne remonte du ni­
veau applicatif/francophone au niveau générique/anglophone sous-j acent avant
d'avoir été interceptée.

8.1.2 Variables locales


Les langages de la famille Scheme utilisent peu l 'affectation, pratiquement réservée
aux apprentissages : la liaison des paramètres à la valeur des arguments correspon­
dants en tient généralement lieu.
Pour éviter de recalculer de nombreuses fois une même valeur, on pourra donc
passer celle-ci à une fonction intermédiaire ; si cette possibilité est trop artificielle,
on peut créer une/des variable(s) locale(s) par la construction :
(let ((var] exprl) . . . . (varn exprn))
« traitement »

Noter que ces variables sont locales à la forme let, qui crée et initialise chaque
variable, exécute le traitement, puis finalement liquide ces variables. Une variable
locale est justifiée si elle est employée au moins deux fois.

8.2 DÉVELOPPEMENT D 'APPLICATIONS


Une application un tant soit peu complexe peut être bâtie de plusieurs façons.
La méthode descendante (top-down) analyse l'application jusqu'à se trouver
ramené aux moyens (fonctions) dont on dispose.
La méthode ascendante (bottom-up) vise à se doter de fonctions ad hoc, de
complexité croissante, à J'aide desquelles l'application s 'exprimerait simplement.
La méthode des types abstraits préconise une analyse allégée, ramenant
l'application à l 'utilisation des types et fonctions qu 'on aimerait avoir, une seconde
analyse s'occupant de concrétiser ces types et fonctions désirables.
Dans ces deux dernières méthodes, on parle d'outillage surtout si l'on envisage
la réutilisation ultérieure des types et fonctions définis en vue de cette application.
Avec un peu d'astuce, les fonctions manquantes peuvent touj ours être construi­
tes en Scheme (voir § 7.7.2 et §9. 1 1 .3), et souvent réutilisées.
Premières applications 1 37

Indentation d 'arbres
La fonction display affiche tout obj et licite ; mais l 'affichage à la queue-leu-leu des
éléments d'un arbre complexe peut le rendre illisible. Peut-on clarifier l'affichage de
ces arbres ?
Dans cette solution, la fonction joli sort sur une ligne les atomes ou (sous-)listes
courtes ; les (sous-)listes plus longues sont détaillées élément par élément, avec une
indentation accrue. On a par exemple :
(define j ol i ( lambda (arbre )
( sor 0 arbre ) ) )
(define sor ( lambda ( n arbre )
; ; n représente une colonne de départ
( cond ( (atome ? arbre ) ( sorligne n arbre ) ) , , atome
( (< (nb arbre ) 7 ) ( sorligne n arbre ) )
, , liste courte
; ; s inon , l iste multiligne ( 1 élément / ligne )
(else ( tab n ) (display " ( " ) ( sor 0 ( car arbre ) )
( sorsuite ( + 1 n ) ( cdr arbre ) )
( s orligne n " ) " )
))))
(define sorsui te ( lambda ( n arbre )
( cond ( ( nul l ? arbre ) ( ) )
( (atome ? arbre ) ( sorligne n arbre ) )
(else ( sor n ( car arbre ) )
( s orsuite n ( cdr arbre ) )
))))
; ; outillage réu t i l i sable ===================================
(define sorl i gne ( lambda ( n . blancs truc ) (tab n . blancs )
(display truc ) ( newline ) ) )
(define tab ( lambda ( n ) (display (make-string n # \ space ) ) ) )
; ; tabulation
(define nb ( lambda ( liste) ; ; nb d' atomes dans liste
( cond ( ( nul l ? liste) 0 )
( (atome ? liste) 1 )
(else ( + ( nb ( car liste) ) ( nb ( cdr liste) ) ) ) ) ) )
(define a tome ? ( lambda (truc) ( not (pair? truc) ) ) )
; ; variable de test =======================================
(define v . 4 0 6 ' ( (marque peugeot ) (modele 4 0 6 ) ( depuis 1 9 8 7 ) (places
4) (vitesse max 1 4 5 ) ( utac (1 9) (2 1 2 ) (3 8 ) ) ) )

Essai
Une exécution donnera :
Bienvenue dans DrScheme ...

> ( j oli V . 4 0 6 )
>
( (marque peugeot)
(modele 4 0 6 )
(depuis 1 9 8 7 )
(places 4 )
138 A2 - Eléments pratiques : Scheme

(vitesse max 1 4 5 )
( utac ; ; sous-liste complexe , détaillée sur plusieurs lignes
( 1 9)
(2 12)
(3 8)
)
)
> (j oli ' ( * (+ a b c) (+ d e f) ) )
(*
( + a b c)
( + d e f)
)

Ad hoc ou standard ?
On pourra vérifier que joli réalise sensiblement ce qu' on peut attendre de la fonction
officielle pretty-print. Si nous en ignorons l 'existence - elle est plus agréable que
fondamentale - il peut être plus rapide de construire joli que de (re)trouver pretty­
print dans la documentation. On pourra également construire une fonction joli si
nous souhaitons une version modifiée de pretty-print, au-delà de l ' ajustement de ses
paramètres. Par contre, si pretty-print convient, son usage à la place de joli allègera
le code et facilitera la communication de l ' application.

8.3 DE LA NUMÉRATION ROMAINE À LA NUMÉRATION ARABE


Un changement de numération est facilement automatisable en Scheme. L 'analyse du
nombre entré exploite les règles de la numération en entrée. La production de son
image se conforme aux règles de la numération de sortie.

; ; convers ion chi ffres romains -> chi ffres arabes


; ; =================================================
i; principe . :
;; le nombre en chi ffres romains , lu comme un symbole , est d' abord
trans formé en une liste de caractères ,
ii puis o n trans forme progres sivement l e couple
i; ( l i ste chiffres romains 0 )
; ; e n aj outant à droite l a contrepartie de l a lettre numérale
;i reconnue à gauche , j usqu ' à épuisement
;i ainsi
; ; (mcdxliv 0) -> ( cdxliv 1 0 00 ) -> (dxliv 1 1 0 0 ) -> (xliv 1 4 0 0 )
ii -> ( liv 1 4 1 0 ) -> ( iv 1 4 4 0 ) - > (v 1 4 4 1 ) - > ( ( ) 1 4 4 4 )
ii
;; la fonction « tête » traite des milliers
;; la fonction « tranche » exploite la régularité
;; des centaine s , dizaine s , unités ;
;; la fonction « chi ffre » transcode les lettres numérales en tenant
;; compte du caractère soustracti f d' une lettre unitaire
;; suivie d' une lettre 5 ou 1 0 fois plus forte , comme dans
;; 1 2 3 4 5 6 7 8 9
;; i ii i i i iv v vi vii viii ix
(define arabe ( lambda ( romains )
; ; symbole -> liste de caractères
( let ( ( image (valeur ( string->list ( symbol->string romains ) ) ) ) )
Premières applications 139

( i f ( nul l ? ( car image ) ) ; ; entrée épuisée ?


( display (list romains ' -> ( cdr image ) ) )
( di splay ( list ' erreur : romains ' - > image ) ) ) )
))
(de fine valeur ( lambda ( romains )
( tranche ( tranche
( tranche ( tete romains 0 ) # \ c # \ d # \m 1 0 0 )
#\x #\1 #\c 10)
# \ i # \v #\x 1 )
))
(define tete ( lambda ( romains accu ) ;; milliers m à mmm
; ; ( display ( list romains # \ 1 accu ) )
( cond ( (null? romain s ) ( cons ( ) accu ) )
( ( eq? ( car romains ) # \m ) ( tete ( cdr romains ) ( + 1 0 0 0 accu ) ) )
(else ( cons romains accu ) )
)))
(define tranche ( lambda ( couple u q d poids )
·

, , couple = ( romains . accu )


( let ( ( reste ( chiffre ( car couple) u q d 0 ) ) )
;; ( car couple ) = romains , ( cdr couple ) = accu
( cons ( car reste ) (+ ( cdr couple )
( * poids ( cdr reste) ) ) )
)))
(define chi ffre ( lambda ( suite u q d cumul)
; ; poids des lettres numérales u : 1 q : 5 d : 1 0
; ; (display ( list suite u q d cumul ) )
[ cond ( (nul l ? suite ) ( cons suite cumul ) )
( ( = cumul 0 )
( cond ( ( eq? ( car suite ) u ) ( chiffre ( cdr suite ) u q d 1) )
( (eq? ( car suite ) q) ( chiffre ( cdr suite ) u q d 5) )
(else ( cons suite 0 ) ) ) )
( ( = cumul 1 )
( cond ( (eq? ( car suite ) u ) ( chiffre ( cdr suite) u q d 2) )
; ; 2 cas soustractifs uq-> 4 ud ->9
( ( eq? ( car suite ) q) ( cons ( cdr suite ) 4 ) )
( ( eq? ( car suite ) d) ( cons ( cdr suite ) 9 ) )
( else ( cons suite 1 ) ) ) )
( (member cumul ' ( 2 5 6 7 ) )
; ; incrément unitaire possible
( cond ( ( eq? ( car suite ) u)
( chiffre ( cdr suite ) u q d ( + cumul 1 ) ) )
(else ( cons suite cumul ) ) ) )
(else ( cons suite cumul ) ) ]
))
Ce qui donne à l 'exécution :
Bienvenue . . .
> (arabe 'mmdcxliv)
(mmdcxliv -> 2 64 4 )
> (arabe 'mmmdccclxxxvii i )
(mmmdccclxxxviii -> 3 8 8 8 )
> (arabe 'mdcclxxxix)
(mdcclxxxix -> 1 7 8 9 )
> (arabe 'dix)
(dix -> 5 0 9 ) ; ; gag !
> (arabe 'mince )
(erreur : mince -> ( (n c e ) . 1 0 0 1 ) )
1 40 A2 - Eléments pratiques : Scheme

8.4 RECHERCHE DE CHEMINS

8.4.1 Graphes d'essai


Ils sont définis en Scheme par une liste associative de couples (sommet successeurs).
Ici :
;; graphe orienté à 7 sommets de sortance 2

( define G ' ( (a b c) (b c d) ( c d e ) (d e f) ( e f g) ( f g a) (g a b) ) )
;; graphe symétrique à 2 6 sommets de sortance 2 à 6 , inspiré du
clavier AZERTY

(define K ' ( (a z q) ( z e s q a) (e r d s z) ( r t f d e ) (t y g f r)
(y u h g t ) (u i j h y) ( i o k j u) (o p 1 k i ) (p m 1 o)
(q a z s w) ( s q z e d x w) (d s e r f c x s )
(f d r t g v c) (g f t y h b v) ( h g y u j n b )
(j h u i k n ) ( k j i o 1 ) ( 1 k o p m ) ( m p 1 ) (w q s x)
(x w s d c ) ( c x d f v) ( v c f g b) ( b v g h n) ( n b h j) ) )

8.4.2 Recherche par niveaux

Discussion (cf aussi § 3.4. 1)


Le principe est simple : si le sommet de départ (niveau 0) n'est pas le sommet
d 'arrivée, on s ' intéresse aux successeurs du sommet de départ, qui forment le niveau
l ; si aucun n'est le sommet d'arrivée, on passe à leurs successeurs (niveau 2) et de
là à tous les descendants nécessaires (niveau 3 . . ) jusqu'à atteindre le sommet
.

d'arrivée (niveau n).


La convergence du procédé suppose que l'on ne tourne pas en rond : pour cela,
on se restreint à la recherche des chemins élémentaires, car il y en a au moins un par
chemin quelconque ; dans ces chemins élémentaires, aucun sommet n'est répété ; on
restreint donc les successeurs à envisager aux successeurs utiles non encore ren­
contrés.
Si un niveau s ' avère vide, il n'y a pas de solution.
A ce stade, l ' invocation de (chemin 'a 'g G) donnerait quelque chose comme :
((a) (b c) (d e) (f g))
où l'on doit comprendre que g vient de d ou e ; d n'est pas possible dans G, c'est
donc e ; qui vient de b ou c ; mais seul c est possible, qui vient de a. Il y a donc un
problème de finition, pour extraire le chemin cherché des pistes explorées. Il suppose
de retrouver le(s) prédécesseur(s) d'un sommet, ce qui est assez lourd avec la repré­
sentation adoptée pour le graphe.
On apporte donc deux modifications : chaque sommet envisagé sera suivi de son
prédécesseur, et les niveaux seront traités en une file, de telle façon que le rang dans
la file reflète le niveau. Ainsi obtiendra-t-on ((a) (b a)(c a)(d b)(e c)(f d)(g e))) d'où
le chemin inverse (g e c a) obtenu par chaînage arrière, et le chemin cherché (a c e
g).
Premières applications 141

Programmation
Un des problèmes est de rendre certains calculs collectifs : si (z e s q a) désigne (e s
q a) comme liste des successeurs de z, comment former une liste ((e z) (s z) (q z) (a
z)) ? et comment reformer (e s q a) à partir d'une telle liste ?
Le premier problème est résolu par une construction
(map (lambda (x) (list x 'z)) '(e s q a)) -? ((e z) (s z) (q z)(a z))
et le second par une construction
(map car '((e z) (s z) (q z) (a z)) -? (e s q a)
map, appelée par (mapfonc liste), forme la liste des résultats obtenus en appli­
quant/one à chacun des postes de la liste : d'où l 'exemple. D ' autre part/one n'a pas
besoin d'être un nom-de-fonction, mais doit avoir pour valeur un corps-de-fonction,
ce qui est aussi le cas si jonc est une forme lambda. D ' où le fonctionnement
(map (lambda (x) (list x 'z)) '(e s q a)) -? ((e z)(s z)(q z)(a z))
où la forme lambda est appliquée à chacun des postes de la liste, et forme autant de
listes terminées par z, collectées en une même liste finale. Ainsi
(map cadr '((a b) (d e) (g h))) -? (b e h)
(map (lambda (n) (expt n n)) '(l 2 3 4 5)) -? (1 4 2 7 256 3125) .
Finalement, nous proposons pour la recherche par niveau :
(define chemin ( lambda ( départ arrivée graphe )
( i f ( and '( assoc départ graphe ) ( assoc arrivée graphe ) )
[ let ( ( file (pistes départ arrivée graphe ( )
( l ist ( list départ ) ) ) ) )
(display ( l ist ' file ' obtenue file) ) ( newl ine )
( reverse (défaire départ arrivée file ) )
l
( l ist ' s orrunet départ ' ou arrivée ' hors 'graphe graphe )
)))
(define pi s tes ( lambda ( départ arrivée graphe traités visités )
; ; (display ( list ' D : départ 'A : arrivée 'G : graphe ' T : traités
; ; 'V : vis ités ) ) ( newline )
[ cond ( (nul l ? visité s ) "pas de solution " )
( (eq? ( caar visité s ) arrivée ) ( append traités visités ) )
(else (pistes départ arrivée graphe
( append traités ( l ist ( car vis ités ) ) )
; ; avancée d' un poste dans la file
( append ( cdr visité s )
( successeurs ( caar visité s ) graphe
(map car ( append traités visités ) ) )
))

l ))
(define successeurs ( lambda ( sommet graphe rencontrés )
, , (display ( l ist ' suce sommet ) ) ( newline )
(map (lambda (x) (l i s t x sommet) )
(diff ( cdr ( as soc sommet graphe ) ) rencontré s )
)))
1 42 A2 - Eléments pratiques : Scheme

(define diff ( lambda (El E2 ) ; ; diff ensembliste classique


( cond ( ( nul! ? E l ) ( ) )
( ( nul ! ? E2 ) E l )
( (member ( car E l ) E2 ) (diff ( cdr E l ) E2 ) )
(else ( cons ( car E l ) ( diff ( cdr E l ) E2 ) ) )
)))
(define défa i re ( lambda (départ arrivée faisceau )
; ; (display faisceau ) ( newline )
( i f (eq? départ arrivée ) ( list départ )
( cons arrivée ( dé faire départ ( cadr ( assoc arri­
vée faisceau ) ) faisceau) ) ) ) )
Bienvenue... .
> ( chemin ' a 'g G)
( file obtenue ( ( a ) (b a ) ( c a ) ( d b) ( e c ) (f d) ( g e ) ) )
(a c e g) ; ; tai l l e 3
> ( chemin ' a 'g K )
( file obtenue ( ( a ) (z a ) ( q a ) ( e z) (s z) ( w q) ( r e ) (d e) (x s) (t
r ) (f r ) ( c d) ( y t ) ( g t ) (v f ) ( u y) (h y) ) )
( a z e r t g) ; ; taille 5
> ( chemin ' a 'n G)
( sommet a ou n hors graphe ( ( a b c ) (b c d) ( c d e ) (d e f ) ( e f g)
(f g a ) ( g a b ) ) )

> ( chemin ' a 'n K )


( file obtenue ( ( a ) (z a ) ( q a ) ( e z) ( s z) ( w q) ( r e ) ( d e) ( x s) (t
r ) (f r ) ( c d) ( y t ) ( g t ) (v f ) (u y) ( h y) (b g) (i u ) (j u ) ( n h)
(o i) ( k i ) ) )
(a z e r t y h n) ; ; tai l l e 7
>

8.4.3 Recherche en profondeur

Discussion (cf. § 3.4.2)


Le principe est simple : si le sommet de départ (niveau 0) n'est pas le sommet
d'arrivée, on s ' intéresse aux successeurs du sommet de départ, qui forment le niveau
l . Si aucun n'est le sommet d'arrivée, on en choisit un et on passe à ses successeurs
(niveau 2) ; si aucun n'est l 'arrivée, on en choisit un et on s 'intéresse à ses succes­
seurs ; on poursuit de niveau en niveau jusqu'à ce que :
• soit on atteigne l 'arrivée, et le chemin est donné par la suite des sommets

choisis à chaque étape, formant « fil d'Ariane » ;


• soit le niveau n formé est vide : le choix précédent constitue une impasse, et

on le retire du niveau n - 1 ;
- si ce niveau n - 1 contient au moins un sommet, on en sélectionne un et on
repart en avant ;
- si ce niveau n 1 se trouve vidé, on régresse au niveau n-2
-

- si finalement le niveau initial se trouve vidé, il n'y a pas de solution.


La convergence du procédé suppose que l ' on ne tourne pas en rond : pour cela,
on se restreint à la recherche des chemins élémentaires, en restreignant les succes­
seurs envisagés aux successeurs utiles non encore rencontrés sur le chemin actif
formé des nœuds actuellement sélectionnés.
Premières applications 1 43

Pro grammation
;; « chemin » blinde l ' opération, un sommet hors-graphe pouvant
;; induire une recherche longuement infructueuse avant diagnostic) ,
;; et introduit une l iste d' interdits vide
;; pour la véritable recherche , e ffectuée par cheminO
(de fine chemin ( lambda ( départ arrivée graphe )
( i f (and (assoc départ graphe ) (assoc arrivée graphe ) )
( reverse ( cheminO départ arrivee graphe ( ) ) )
(list ' sommet départ ' ou arrivée 'hors ' graphe graphe )
)))
(define chemin O ( lambda (départ arrivée graphe parcourus)
; ; parcourus doit éviter les bouclages
[ i f ( eq? départ arrivée) ( cons arrivée parcourus )
(poss ibles ( successeurs départ graphe parcourus )
arrivée graphe ( cons départ parcourus ) )
l))
;; le plus récent sommet de départ introduit un niveau de succes­
seurs possibles
(define possibles ( l ambda (niveau arrivée graphe piste )
;; (display ( list niveau arrivée piste) )
; ; trace si nécessaire
( i f (or ( null ? niveau ) (> (length pi s te) 8) ) ( )
, , le test de longueur a pour but d' accélérer le processus
; ; et de favoriser un chemin raisonnable ; alternative :
;; ou le premier sommet du niveau donne une solution ,
;; ou s ' i l mène à une impasse , on es saie le reste du niveau
;; solution! , variable locale à ( let ... )
( let ( ( solution! ( cheminO
( car niveau ) arrivée graphe piste ) ) )
( i f ( nul l ? solution ! )
(pos sibles ( cdr niveau ) arrivée graphe piste )
solution! )
))))
; ; les succes seurs utiles sont ceux donnés par le graphe , sauf ceux
déj à parcourus
(define successeurs ( lambda ( sommet graphe interdits )
(diff ( cdr ( as soc sommet graphe ) ) interdits )
))
; ; reprise d' un classique
(define diff ( lambda (El E2 ) ( cond ( (null ? El ) ( ) )
( (member ( car E l ) E2 ) ( diff ( cdr E l ) E2 ) )
(else ( cons ( car E l ) (diff ( cdr E l ) E2 ) ) )
)))
On obtient ainsi :
Bienvenue ....
> (chemin 'a 'g G)
( (b c) g ( a ) ) ( ( c d) g (b a ) ) ( (d e ) g ( c b a ) ) ( (e f) g (d c b a ) ) ( ( f
g) g ( e d c b a) ) ( (g) g ( f e d c b a ) )
(a b c d e f g)
> ( chemin ' a ' g K)
( ( z q) g ( a ) ) ( ( e s q) g (z a ) ) ( (r d s) g ( e z a ) ) ( ( t f d) g (r e z
a) ) ( ( y g f) g ( t r e z a ) ) ( (u h g) g ( y t r e z a ) ) ( ( i j h) g (u y t
1 44 A2 - Eléments pratiques : Scheme

r e z a ) ) ( ( o k j ) g (i u y t r e z a ) ) ( (p 1 k) g (o i u y t r e z
a) ) ( ( k j ) g ( i u y t r e z a) ) ( (j o 1 ) g ( k i u y t r e z a) ) ( ( j ) g
( i u y t r e z a ) ) ( (h k n) g ( j i u y t r e z a ) ) ( ( ) g ( i u y t r e z
a ) ) ( ( j h) g (u y t r e z a ) ) ( (h i k n) g ( j u y t r e z a ) ) ( (g n b) g
(h j u y t r e z a ) ) ( ( i k n) g ( j u y t r e z a ) ) ( ( o k) g ( i j u y t
r e z a) ) ( (k n) g (j u y t r e z a) ) ( (i o 1) g ( k j u y t r e z
a ) ) ( (n ) g ( j u y t r e z a ) ) ( (b h) g ( n j u y t r e z a ) ) ( ( ) g ( j u y
t r e z a) ) ( (h) g (u y t r e z a ) ) ( (g j n b) g (h u y t r e z a ) )
(a z e r t y LI h g)
> (chemin 'a 'n G)
( sommet a ou n hors graphe ( ( a b c) (b c d) (c d e) (d e f) ( e f g)
(f g a) ( g a b) ) )
> (chemin 'a 'n K)
( ( z q) n ( a ) ) ( ( e s q) n ( z a ) ) ( ( r d s ) n ( e z a ) ) ( ( t f d) n ( r e z
a ) ) ( ( y g f ) n ( t r e z a ) ) ( (u h g) n ( y t r e z a ) ) ( ( i j h) n (u y t
r e z a ) ) ( ( o k j ) n ( i u y t r e z a ) ) ( (p 1 k) n (o i u y t r e z
a) ) ( ( k j ) n ( i u y t r e z a) ) ( ( j o 1 ) n ( k i u y t r e z a) ) ( ( j ) n
( i u y t r e z a ) ) ( (h k n) n ( j i u y t r e z a ) ) ( ( ) n ( i u y t r e z
a ) ) ( ( j h) n (u y t r e z a ) ) ( (h i k n) n ( j u y t r e z a ) ) ( (g n b) n
(h j u y t r e z a ) ) ( ( i k n) n ( j u y t r e z a ) ) ( ( o k) n ( i j u y t
r e z a) ) ( ( k n) n ( j u y t r e z a ) ) ( ( i o 1 ) n ( k j u y t r e z
a ) ) ( (n ) n ( j u y t r e z a) )
(a z e r t y LI j n)

8.4.4 Comparaison
La méthode par niveau fournit par nature les Tableau 8.1 Complexité des recherches
chemins les plus simples. Mais si k est le nombre par niveau et en profondeur.
moyen de successeurs utiles pour un sommet,
développer n niveaux demande une place mé­ Sommets Taille du chemin
moire en k0 pour la méthode par niveaux, en k·n obtenu
....
seulement pour la recherche en profondeur : on ::J
<lJ
X
::J "O
préfère donc cette dernière - aux résultats sou­ "'
<lJ
c
<lJ ., > ..8
vent médiocres et obtenus lentement - lorsqu'on t: •<lJ ..c 0
"' ï:i ....
> o. o.
o. ....
sait ou l'on craint que la mémoire soit insuffi­ . ., 'E"' "' c
"O � o. .,
sante.
a g G 3 7
a g K 5 9
8.5 JEU DE NIM DÉTERMINISTE a n G / /
a n K 7 9
Le jeu de Nim se joue à 2 joueurs, avec un tas de - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
jetons. A chaque partie, chaque j oueur a le droit de prendre à son tour de 1 à k je­
tons. Celui qui prend le dernier jeton a gagné.

Analyse du jeu
Si le but est de laisser 0 jeton, on se convaincra facilement que tout autre multiple de
k + 1 est une position gagnante au sens suivant : le j oueur retirant un nombre p de
j etons ( 1 $; p $; k), l 'autre joueur pourra toujours en retirer k + l - p, se ramenant ainsi
soit à 0 (partie gagnée) soit au multiple de k+ l immédiatement inférieur.
Premières applications 1 45

Si Nim vous propose 26 jetons, et que chacun peut retirer de 1 à 7 jetons, devez­
vous commencer ? Oui : en retirant 2 j etons, nim en reçoit 24, multiple de 8. Quoi
qu'il fasse, vous vous ramènerez à 1 6, 8 puis O . . .
Si Nim vous propose 24 jetons, et que chacun peut retirer de 1 à 5 jetons, devez­
vous commencer ? 24 est multiple de 6, il n'y a rien à faire pour bien commencer :
déclinez l'offre, et laissez nim se débrouiller . . . s'il le peut.
D 'une partie sur l 'autre, pour mettre un peu de sel, le jeu ci-après ajuste k,
l ' incrémentant si le joueur a gagné, le décrémentant sinon.

Compléments Scheme
En entrée, read convertit la première représentation externe d 'objet Scheme trouvée
sur le flot d'entrée en l 'objet Scheme correspondant - et pointe ensuite sur la pre­
mière position au-delà de cette représentation dans ce flux.
(random k) fournit un nombre tiré « au hasard » dans [O, k-1 ]

Solution Scheme
(define nim ( lambda ( )
(partie 5 ) ) )
(define partie ( lambda ( k)
(affiche-règles k)
(display " Partons d' un tas de " )
( let ( (gagnant ( j eu k ( + 1 1 ( random ( * 5 k) ) ) ) ) )
( newl ine )
(display ( i f ( eq? gagnant ' lui )
"Bravo ! Vous ave z gagné . " "J' ai gagné . " ) )
(newline )
(display "Encore une partie ? " )
( i f (eq? ( read) ' oui )
( i f ( eq? gagnant ' lui ) (partie ( + k 1 ) )
(partie ( - k 1 ) ) ) ; ; moi
(display " au revoi r . . . " )

)))
(define affiche-règles ( lambda ( k)
(display ( list
"Le j eu de Nim se j oue à 2 j oueurs avec un tas de j etons . "
" Pour cette partie, chaque j oueur en prendra à son tour de 1 à " k
" . Celui qui prendra le dernier j eton a gagné . " #\newline )
)))
(define jeu ( lambda ( k N)
(display ( list N " j etons . Voulez-vous commencer? " ) )
( i f ( eq? ( read) ' oui ) ( aLui k N) ( aMoi k N) )
))
(define aLui ( lambda ( k N)
(newline )
( let ( ( J ( l ireNbJetons (min k N) ) ) )
( i f ( J N) ' lui ( amoi k ( - N J) ) )
=

))
1 46 A2 - Eléments pratiques : Scheme

(define aMoi ( lambda (k N)


(newline ) (display " I l reste " ) (display N)
( i f (> N 1 ) (display " j etons . J' en prends " )
( display " j eton . Je prends " ) )
( let ( (R ( remainder N (+ k 1 ) ) ) ) le truc , ,

( let ( (J ( i f ( zero? R) ( + 1 ( random k) ) R) ) )


(display J) (display " , et j ' en laisse " )
( let ( (R2 ( - N J) ) )
(display R2 ) (di splay " . " )
( i f ( = R2 0 ) 'moi ( aLui k R2 ) )

))))
( define lireNbJetons ( lambda (plafond)
(display "Combien prene z-vous de j etons ? " )
( let ( ( J ( read) ) )
( cond ( ( and ( integer? J) ( > J 0 ) ( <= J plafond) ) J)
; ; J entier correct
(else ( display
"Réponde z par un nombre entier de 1 à " )
( display plafond) ( display " . " )
( l ireNbJetons plafond ) )
))))

8.6 RENDRE LA MONNAIE


Comment rendre automatiquement la monnaie à une caisse ou dans un distributeur
automatique ? On connaît la suite des valeurs faciales des pièces théoriquement dis­
ponibles, et pour chaque valeur combien on en a effectivement.

8.6.1 Analyse
Si je dois rendre 37 oros, et que j ' ai 2 pièces de 1 0, 5 et 2 oros, et 3 de 1 oro, je
rends :
min(37 : 1 0, 2) = 2 pièces de 10 oros, reste 1 7 oros
min( l 7 : 5 , 2) = 2 pièces de 5 oros, reste 7 oros
min(7 : 2, 2) = 2 pièces de 2oros, reste 3 oros
min(3 : 1 , 3)= 3 pièces de 1 oro, et le tour estjoué !
Ce procédé déterministe simple peut être mis en échec. Si j e dois rendre 26 oros,
et que j ' ai 2 pièces de 1 0 oros, 2 de 5 oros et 3 de 2 oros, j 'obtiens :
min(26 : 1 0, 2) = 2 pièces de 1 0 oros, reste 6 oros
min(6 : 5 , 2) = 1 pièce de 5 oros, reste 1 oro,
queje n 'arrive pas à rendre.
Or il est clair que 26 = 2* 1 0 + 3 *2 : la monnaie peut et doit être rendue, mais
cette solution doit être bâtie par essais et erreurs : s ' il reste 6 oros à rendre :
• si je rendais 1 pièce de 5 oros, il me resterait 1 oro à rendre, et je ne pourrais

pas ;
• si je ne rends pas de pièce de 5 oros, il me reste 6 oros à rendre que je rends

avec les 3 pièces de 2 oros.


Premières applications 1 47

Il restera évidemment des cas d 'impossibilité réelle pour rendre la monnaie,


mais cette méthode-ci améliore le service en éliminant les fausses impossibilités.

8.6.2 Solution Scheme


; ; variables globales
(define magasin ( list 2 3 4 0 1 1 1 3) )
(de fine valeurs ( list 1 0 0 0 5 0 0 2 0 0 1 0 0 5 0 2 0 1 0 5 ) ) ; ; en centimes
; ; fonctions
(define rendre ( lambda (valeur) ; ; réel -> entier
( editer (monnaie ( inexact->exact ( round
( * 1 0 0 valeur) ) ) magasin valeurs ) ) ) )

(define monnaie ( lambda (arendre resteMagasin resteValeurs )


; ; ( newline ) (display ( list arendre ' ? resteMagasin resteValeurs ) )
( cond ( ( zero? arendre ) nul l ) , , succès
( (nul l ? resteMagasin) # f ) , , échec
( (null ? resteValeurs ) # f )
(else (essai arendre ( car resteMagasin) ( car resteValeurs )
( cdr resteMagasin) ( cdr resteValeurs ) ) ) )
))
(define essai
( lambda (aRendre nbPieces valPieces resteMagasin resteValeurs )
( cond
( ( zero? aRendre ) ( ) ) ; ; succès
( ( or ( zero? nbPieces ) (< arendre valPieces ) ) ; ; rien à ce niveau
(monnaie aRendre resteMagasin resteValeurs ) )
(else ; ; tentons de rendre 1 pièce de valeur val Pieces
( let ( ( cas (essai (- arendre valPiece s ) (- nbPieces 1 )
valPieces resteMagasin resteValeurs ) ) )
( i f cas ( cons val Pieces cas )
(monnaie arendre resteMagasin resteValeurs ) ) )
))))
(define edi ter ( lambda ( liste)
( cond ( ( not liste) " impossible " )
( (null ? liste ) nul l )
(else ( cumul 1 ( car liste) ( cdr liste) ) )
)))
(define cumul ( lambda (n v liste)
( cond ( (nul l ? liste ) ( list n ' * ( * v 0 . 0 1 ) ) )
( ( v ( car liste) )
=

( cumul ( + n 1 ) v ( cdr liste) ) )


(else ( append ( list n ' * ( * v 0 . 0 1 ) ' + )
( editer liste) ) ) )
))
D'où l 'exécution
Bienvenue... .
> magasin
(2 3 4 0 1 1 1 3)
> valeurs
( 1 0 0 0 5 00 2 0 0 1 0 0 50 20 10 5 )
> ( rendre 2 . 55)
(1 * 2 . 0 + 1 * 0 . 5 + 1 * 0 . 05)
1 48 A2 - Eléments pratiques : Scheme

> ( rendre 2 . 7 0 )
(1 * 2 . 0 + 1 * 0 . 5 + 1 * 0.2)
> ( rendre 3 . 1 0 )
" impossible"
> ( rendre 3 . 5 0 )
" impossible"
> ( rendre 4 . 1 0 )
(2 * 2 . 0 + 1 * 0 . 1 )
> ( rendre 6 )
(3 * 2 . 0)
> ( rendre 5 . 95 )
( 1 * 5 . 0 + 1 * 0 . 5 + 1 * 0 . 2 + 1 * 0 . 1 + 3 * 0 . 05 )

8 .7 EXERCICES

8.7.1 Style et performances


On considère de nouveau la suite de Fibonacci, calculée par fib3 et fib3 1
(define fib3 ( lambda ( n )
( i f ( <n 0 ) ( list "erreur fib3 : argument " n "négatif" )
( car ( fib3 1 n ) )
))
(define fib31 ( lambda (n) ; ; rend une paire ( fib n ) . ( fib n - 1 )
[ cond ( ( = n 0) ' (0 . 1) )
( (= n 1) ' (1 . 0 ) )
(else ( let ( (paire ( fib3 1 ( - n 1 ) ) ) )
( cons ( + ( car paire ) ( cdr paire ) ) ( car paire ) )
))
l))
A l'aide de la fonction time (cf. 7. 1 1 .3), vérifier que cette solution est beaucoup
plus rapide que les précédentes.
Montrer que son temps de calcul est une fonction linéaire de l'argument.
Utilise-t-elle davantage de mémoire ?

8. 7 .2 Table des distances


On considère un réseau routier modélisé par un graphe G = ((a (b 20)(c 35)) (b . . . )
s ' il y a une route de 20 km de a à b, et une route de 35 km de a à c.
Ecrire une procédure produisant une table T dont la consultation pour (x y)
donne (x y z 357) si la route la plus courte de x à y est une route (x z . . . y) de lon­
gueur 357 km.

8.8 INDICATIONS

Pour 8.7.1
Fib3 1 crée une variable locale à chacun des niveaux 2 à n, mais demande un temps
de calcul proportionnel à n seulement, car chaque appel à fib3 l en engendre au plus
un autre.
Premières appl ications 1 49

« n » peut être assez grand pour que les temps de calcul de fib ou fib2 soient

ob servables - car ils sont en 1 ,62" - sans que celui de fib3 , qui est en n, le soit : pour
n>20, le rapport dépasse 1 000.

Pour 8.7.2
Définir le format de T, puis l 'initialisation de T par G. Expliciter puis exploiter les
relations :
(a x b 357) • (x y 1 8) = (a y b 375).
min( (a x b 357), (a x c 370) )= (a x b 357)
CHAPITRE 9

VERS L'IA EN SCHEME

Ce chapitre a pour but de montrer que scheme (ou lisp) est un moyen en principe
suffisant - bien qu'un peu léger - pour couvrir l 'intelligence Artificielle, ou du
moins en donner un avant-goût. Les exemples sont variés, et leur intérêt devrait se
renforcer à la lecture du reste de l 'ouvrage.

9. 1 JEU DES ANIMAUX


Ce jeu sans prétention a pour but de donner une idée d'un degré 0 de la gestion de
connaissances. Zanimos est un jeu interactif sur des animaux : partant d'un « arbre
des connaissances » tel que
(gros éléphant rat)
il vous demandera si l 'animal auquel vous pensez est gros (et il vous proposera élé­
phant) ou non (et il vous proposera rat). Si vous contestez la réponse (oui, l 'animal
est gros ; non, ce n'est pas un éléphant), il voudra s 'instruire en demandant à quel
animal vous pensez, et une qualité qui le distingue de la réponse contestée. Il pourra
ainsi enrichir l 'arbre de ses connaissances (factuelles) et poursuivre le dialogue.

9.1.1 Analyse
Une variable globale Dico contiendra l'arbre des connaissances, de type binaire
étiqueté :
(attribut sousArbreOui sousArbreNon)
Supposons que votre animal soit gros, sans que ce soit un éléphant : vous pen­
siez à un dinosaure. Le jeu vous demande une qualité distinctive du dinosaure (par
rapport à l'éléphant) ; si vous répondez « disparu », on doit effectuer la transforma-
tion : (gros éléphant rat) � (gros (disparu dinosaure éléphant) rat).
En vue d'une nouvelle exécution, la fonction set! mettra à jour Dico en lui assi­
gnant le résultat de substituer, fonction qui construit une copie de Dico dont la
feuille « éléphant » est remplacée par le nouveau triplet.

9.1.2 Une solution Scheme


(define Di co ' (gros éléphant rat ) )
(define jeu ( lambda (arbre )
( i f (pair? arbre ) ( exploiter arbre ) ( fin arbre ) ) ) )
(define expl oi ter ( lambda (arbre )
(display ( list "Votre animal est-il " ( car arbre ) " ? " ) )
( i f ( eq? ( read) ' oui )
( j eu ( cadr arbre ) ) ; ; cadr second=
1 52 A2 - Eléments pratiques : Scheme

( j eu ( caddr arbre ) ) ; ; caddr= third


)))
(define fin ( lambda ( animal )
(display ( list "Est-ce un " animal " ? " ) )
( i f ( eq? ( read) ' oui ) (display "J' ai trouvé ")
(développer animal ) )
( display "Une autre recherche ? " )
( i f ( eq? ( read) ' oui ) ( j eu Dico )
(display " Dommage . . . Au revoi r . " )
l))
(define développer ( lambda ( animal)
( display " Instruisez-moi . "
" A quel animal pensiez vous? un ( e ) " )
[ let ( ( ani2 ( read) ) )
(display ( l ist " donnez une qualité de " ani2
" qui le distingue de " animal ) )
( set ! Dico
( substituer ( list ( read) ani2 animal) animal Dico) )
l
))
(de fine subs ti tuer ( lambda (arbuste clé arbre )
; ; (display ( list " remplacer " clé " par " arbuste " dans " arbre ) )
( cond [ ( nul l ? arbre ) ( ) ]
( (pair? arbre ) ( list ( car arbre )
( substituer arbuste clé ( cadr arbre ) )
( substituer arbuste clé ( caddr arbre ) ) ) ]
[ ( eq? arbre clé) arbuste ]
[ else arbre ] ) ) )
( define ecrire ( lambda (msg) (display msg) ( newline ) ) )
; ; lancement automatique : préambule
( ecrire " Je veux discuter avec vous d' animaux . " )
( ecrire "Au départ , j e sais seulement qu ' un éléphant est plus gros
qu' un rat " )
( ecrire "Aidez-moi à e n savoi r plus " )
( j eu Dico)
; ; lancement automatique par [ Execute ! ]
Bienvenue... .
Je veux discuter avec vous d' animaux .
Au départ , j e sais seulement qu ' un éléphant est plus gros qu' un rat .
Aidez-moi à en savoir plus .
(Votre animal est-il gros ? ) oui
(Est-ce un éléphant ? ) non
Instruisez-moi . A quel animal pensiez vous ? un ( e ) dinosaure
(donnez une qualité de dinosaure qui le distingue de élé-
phant ) disparu
Une autre recherche ? oui
(Votre animal est-il gros ? ) oui
(Votre animal est-il disparu ? ) non
(Est-ce un éléphant ? ) non
Instruisez-moi . A quel animal pensiez vous ? un ( e ) baleine
(donnez une qualité de baleine qui le distingue de éléphant ) marin
Une autre recherche ? oui
(Votre animal est-il gros ? ) non
Vers l ' IA en Scheme 1 53

(Est-ce un rat ? ) non


Instrui sez-moi . A quel animal pensiez vous? un ( e ) mouche
(donnez une qualité de mouche qui le distingue de rat ) insecte
Une autre recherche ? oui
(Votre animal est-il gros ? ) non
(Votre animal est-il insecte ? ) non
(Est-ce un rat ? ) oui
J' ai trouvé ! Une autre recherche ?non
Dommage . . . Au revoir .

9.2 NIM À APPRENTISSAGE


Ce jeu donne l'exemple d'un programme à apprentissage, centré sur un jeu de Nim.
Rappelons que le jeu se joue à 2 joueurs, avec un tas de jetons. A chaque partie,
chaque joueur aura le droit de prendre à son tour de 1 à 5 jetons. Celui qui prend le
dernier jeton a gagné.

9.2.1 Analyse
Comme expliqué dans la section 9.3, les positions gagnantes seront les multiples de
5+ 1 = 6. Cette connaissance a priori n'est plus exploitée par le programme. On va au
contraire demander à nimApp de retrouver cette propriété en gérant ses essais et
erreurs.
Pour cela, une liste globale listeG, vide au départ, contiendra par la suite la liste
des positions présumées gagnantes, d'après les parties déjà jouées. Dans un cas plus
sérieux, listeG pourrait être un fichier. D ' autre part, deux listes, jeuLui et jeuMoi,
assurent le suivi d'une partie : nimApp note dans jeuLui les positions attein­
tes/rendues par l 'adversaire, et dans jeuMoi celles atteintes/rendues par nimApp.
Celles-ci sont définies ainsi : si nimApp reçoit N jetons et peut jouer de 1 à k jetons
(où k= min (N, 5)), il regarde si une des positions N- 1 à N-k est connue gagnante
(par listeG), et si oui il l 'atteint en retirant le nombre correspondant de jetons. En fin
de partie, listeG est mis à j our : on lui retire les positions atteintes par le perdant,
présumées enregistrées à tort, et on lui ajoute celles atteintes par le gagnant, présu­
mées sûres ; nimApp apprend ainsi le jeu par la fin. Certaines positions présumées
gagnantes pourront donc être remises en cause. Cependant, les valeurs enregistrées
seront de plus en plus sûres, le niveau du j eu étant lentement relevé. L 'apprentissage
sera considéré comme réussi si la liste des positions gagnantes, progressivement
complétée, ne contient à la longue que des multiples de 6.
Ce jeu est plus évolué que Zanimos, dont l 'apprentissage était exclusivement
additif. Ici, des positions apprises gagnantes à tort pourront être remises en cause par
l 'expérience. Cette version assez simple gère les positions gagnantes plutôt que de
qualifier des paires (situation, trait). Nous utilisons de fait une métaconnaissance :
dans les jeux auxquels on peut assigner une fonction de Grundy, le gain de la partie
est lié à la situation atteinte plutôt qu' au mouvement fait. Sinon, tout ce qui est fait
ici avec des listes plates devrait être fait avec des listes associatives, l 'apprentissage
serait beaucoup plus lent, et ne pourrait être accéléré que par l 'introduction d 'un
mécanisme inductif.
1 54 A2 - Eléments pratiques : Scheme

9.2.2 Compléments Scheme


Nos listes sont de fait des ensembles. Avec
(require-library "[Link]" " .. \\maCollec")
ou la fonction include, nous récupérons diff et union définis précédemment dans un
fichier « [Link] » contenu dans le répertoire maCollec.
La mise à j our des listes préalablement définies se fait ici par l'affectation :
(set ! nomDe Variable nouvelle Valeur)

9.2.3 Solution
( include " . . \ \maCollec\ \ensembles . scm" )
; ; ------- importe textuellement di ff et union
; ; un mécani sme plus raffiné exploite des modules
(de fine nouvell eLigne ( lambda (msg)
( newline ) (display msg) ) )
(de fine l i s teG () ) ; ; positions présumées gagnantes
(de fine j euLui () ) , , coups de l ' adversaire
( de fine j e uMoi () ) ; ; coups du programme
(de fine nimApp ( lambda ( ) (partie 5 2 ) ) ) ; ; le j eu lui-même
( define partie ( lambda ( k niv)
(affiche-règles k)
( se t ! j euLui ( ) )
( se t ! j euMoi ( ) )
( nouvelleLigne " Partons d' un tas de " )
( let ( (gagnant ( j eu k ( + k niv ( random ( * niv k) ) ) ) ) )
; ; varions les départs
(nouvelleLigne ( i f ( eq? gagnant ' lui)
"Bravo ! Vous avez gagné . " "J' ai gagné . " ) )
( se t ! listeG ; ; m . à . j . liste gagnante
( i f ( eq? gagnant ' lui)
(union j euLui ( diff listeG j euMoi ) )
(union j euMoi ( diff listeG j euLu i ) ) ) )
( nouvelleLigne
( list "posi tions présumées gagnan tes : " listeG) )
; ; trace apprentis sage
( nouvelleLigne "Encore une partie ? " )
( i f ( eq? ( read) ' oui ) (partie 5 ( + niv 1 ) )
(display " Dommage . . . Au revoi r . " )

))
(define a ffiche-règles ( lambda ( k )
(display " Le j eu de Nim se j oue à 2 j oueurs "
" avec un tas de j etons . Pour cette partie , "
" chaque j oueur en prendra à son tour de 1 à " )
(display k)
(display " . Celui qui prendra le dernier j eton a gagné . " )
(nouvelleLigne "Ce programme est à apprentissage "
" aye z la patience de m' apprendre à gagner ! " ) ) )
Vers l ' IA en Scheme 1 55

(define jeu ( larnbda ( k N)


(display N) ( display " j etons . Voulez-vous commencer? " )
( i f (eq? ( read) ' oui ) ( aLui k N ) ( aMoi k N) )
))
(define aLui ( lambda ( k N)
( let ( ( J ( l ireNbJetons (min k N) ) ) )
( se t ! j euLui ( cons ( - N J) j euLui ) )
( i f ( = J N) ' lui ( amoi k ( - N J) ) )
)))
(define aMoi ( larnbda ( k N)
( nouvelleLigne "Il reste ") ( display N)
(if ( > N 1) (display " j etons . J' en prends " )
(display " j eton . Je l e prends " ) )
( let ( (Nl ( aJouer (- N (min N k) ) (- N 1 ) ) ) )
(display ( - N Nl ) ) (display " , et j ' en laisse " )
(display Nl ) (display " . " )
( set ! j euMoi ( cons N l j euMoi ) )
( i f ( = Nl 0 ) 'moi ( aLui k Nl ) )
)))
(define aJouer ( larnbda (vmin vmax)
( i f (member vmin l isteG) vmin
( i f ( < vmin vmax) ( aJouer ( + 1 vmin ) vmax) vmax) )
))
(define l i reNbJe tons ( lambda (plafond)
(display "Combien prenez-vous de j etons ? " )
( let ( ( J ( read) ) )
( cond ( (and ( integer? J) ( > J 0 ) ( <= J plafond) ) J)
(else (display " Répondez par un nombre entier de 1 à " )
(display plafond) (display " . " )
( lireNbJetons plafond ) )
))))

(nouvelleLigne " >>ce j eu se lance par ( nimApp) " )


donne
Bienvenue... .
>>ce j eu se lance par ( nimApp)
> (nimApp )
Le j eu de Nim se j oue à 2 j oueurs avec un tas de j etons . Pour cette
partie, chaque j oueur en prendra à son tour de 1 à 5 . Celui qui pren­
dra le dernier j eton a gagné .
Ce programme est à apprentissage : ayez la patience de m' apprendre à
gagner !
Partons d' un tas de 1 5 j etons . Voulez-vous commencer? oui
Combien prenez-vous de j etons ? 3
Il reste 1 2 j etons . J' en prends 1 , et j ' en laisse 1 1 . Combien prenez ­
vous de j etons ?5
Il reste 6 j etons . J' en prends 1, et j ' en laisse 5 . Combien prenez ­
vous de j etons ? 5
Bravo ! Vous ave z gagné .
(posi ti ons présumées gagnan tes : (0 6 1 2) )
Encore une partie ?oui
Le j eu de Nim se j oue à 2 j oueurs avec un tas de j etons . Pour cette
partie, chaque j oueur en prendra à son tour de 1 à 5 . Celui qui pren­
dra le dernier j eton a gagné .
1 56 A2 - Eléments pratiques : Scheme

Ce progranune est à apprenti s sage : ayez la patience de m' apprendre à


gagner !
Partons d' un tas de 8 j etons . Voulez-vous commencer?oui
Combien prene z-vous de j etons ?2
Il reste 6 j etons . J' en prends 1, et j ' en laisse 5 . Combien prenez ­
vous de j etons?5
Bravo ! Vous avez gagné .
(posi t i on s présumées gagnan tes : (0 6 1 2) )
Encore une partie ?oui
Le j eu de Nim se j oue à 2 j oueurs avec un tas de j etons . Pour cette
partie, chaque j oueur en prendra son tour de 1 à 5 . Celui qui prendra
le dernier j eton a gagné .
Ce progranune est à apprentissage : ayez la patience de m' apprendre à
gagner !
Partons d' un tas de 1 5 j etons . Voulez-vous commencer?oui
Combien prenez-vous de j etons?3
I l reste 1 2 j etons . J' en prends 1, et j ' en laisse 1 1 . Combien prenez ­
vous de j etons ? 5
I l reste 6 j etons . J' en prends 1 , et j ' en laisse 5 . Combien prenez ­
vous de j etons?5
Bravo ! Vous avez gagné .
(positions présumées gagnantes (0 6 1 2 ) )
Encore une partie ?oui

Partons d' un tas de 33 j etons . Voulez -vous commencer?oui


Combien prenez-vous de j etons ?3
Il reste 3 0 j etons . J' en prends 1 , et j ' en laisse 2 9 . Combien prenez -
vous de j etons ? 5
I l reste 2 4 j etons . J' en prends 1 , et j ' en laisse 2 3 . Combien prenez -
vous de j eton s ? 5
I l reste 1 8 j etons . J' en prends 1 , et j ' en laisse 1 7 . Combien prenez-
vous de j etons?5
Il reste 12 j etons . J' en prends 1 , et j ' en laisse 1 1 . Combien prenez-
vous de j etons?5.
I l reste 6 j etons . J' en prends 1 , et j ' en laisse 5 . Combien prenez -
vous de j eton s ? 5
Bravo ! Vous avez gagné .
(positions présumées gagnantes ( 1 8 2 4 30 0 6 1 2 ) )
Encore une partie ?oui

Partons d' un tas de 29 j etons . Voulez-vous commencer?oui


Combien prene z-vous de j etons ? 3
I l reste 2 6 j etons . J' en prends 2 , et j ' en laisse 2 4 . Combien prenez­
vous de j etons?5

I l reste 3 j etons . J' en prends 3 , et j ' en laisse O .


J' ai gagné .
(positions présumées gagnantes : ( 1 8 24 30 0 6 1 2 ) )
Encore une partie ?oui

Partons d' un tas de 41 j etons . Voulez-vous commencer?oui


Combien prenez-vous de j etons ? 5
I l reste 3 6 j etons . J' en prends 1 , et j ' en laisse 35 . Combien prenez­
vous de j etons ? 5

I l reste 6 j etons . J' en prends 1 , et j ' en laisse 5 . Combien prenez­


vous de j eton s ? 5
Vers l ' IA en Scheme 157

Bravo ! Vous ave z gagné .


(positions présumées gagnantes ( 3 6 18 24 30 0 6 1 2 ) )
; ; << tou tes mul tipl es de 6
Encore une partie ?non
oommage . . . Au revoir .

9.3 ANALYSE D'UNE PHRASE

En introduction au Traitement des Langues Naturelles, on désire ici analyser une


phrase en langue naturelle, de prototype « Le chat est sur le banc » (pour plus de
détails, cf. sect. 1 3 .3, ch. 23 et 30).

9.3.1 Cadrage
Le principe est d' identifier les mots et les groupements remarquables de mots, en
supposant que la phrase se conforme à une grammaire simple. Ici, nous supposerons
la phrase organisée en sujet, verbe, complément, sujet et complément renvoyant au
groupe nominal qu'on supposera réduit à un déterminant suivi d'un nom.
En pratique, nous nous donnons la grammaire suivante, inspirée de 4.7.2:
(define gramma ire
' ( (phrase seq suj et verbe complement
( suj et seq groupeNominal)
(verbe alt "est" " était" " sera " )
( complement seq preposition groupeNominal )
(groupeNominal seq determinant nom)
(determinant alt " l e " " la " " le s " "un" "une " "des" "ce"
" cet " " cette " " ces" "chaque " " tout " )
(nom alt "banc " " chat " " chatte" "chien "
" chienne " " tapi s " )
(preposition alt " sur" " sous " "dans" "devant"
"derrière " )
))
Cette liste est formée de sous-listes de structure
(notion développement)
le développement étant formé d'un connecteur alt/seq suivi d'une liste d'éléments :
• ait préfixe une alternative, satisfaite dès qu'un de ses éléments est rencontré,

• seq préfixe une séquence, qui n'est reconnue que si chacun de ses éléments

est successivement reconnu dans le texte.


Chaque élément est soit un symbole s'il désigne une notion, soit une chaîne s ' il
correspond à une occurrence à rechercher dans le texte entré.
Une telle grammaire permet deux styles d'exploitation :
• soit on applique le principe de Peter Lucas ( 1 96 1 ), qui définit un analyseur à

raison d'une fonction booléenne d'analyse par notion de la grammaire ;


- ces fonctions ont un effet de bord standard : tout mot reconnu est consom­
mé et doit faire passer au suivant ;
- modifier la grammaire suppose de modifier le programme ;
1 58 A2 - Eléments pratiques : Scheme

• soit on pose que la grammaire est une structure de données ; on écrit alors
des fonctions de navigation dans cette structure et de confrontation au texte ;
modifier la grammaire, c'est modifier la structure de données ; seul un chan­
gement de catégorie de la grammaire peut exiger une modification de
l 'analyseur.

9.3.2 Une solution Scheme


Nous considérons ici la grammaire comme structure de données.
Nous procédons à une analyse descendante : pour savoir s ' il y a une phrase,
nous cherchons s'il y a un suj et, et pour cela s'il y a un groupe nominal, et pour cela
s'il y a tout d'abord un déterminant (article, possessif. . . ).
Notre analyse est dite indirecte (ou paresseuse) : le programme ne lit rien a
priori, mais demande un mot s ' il n'en a pas un d'avance pour vérifier l 'existence
d'un terminal.
De plus, on conviendra que le mot « stop » termine une phrase.
La forme
( case ( cadr devt ) ; ; selon sélecteur...
( (alt ) (trace ( l ist notion (alternative ( cddr devt ) ) ) ) )
( ( seq) (trace ( list notion ( sequence ( cddr devt ) ) ) ) )
( else (display ( list ' notion notion " mal définie " ) ) )

est une forme plus claire et plus rapide équivalente à


( cond ( ( equal ? ( cadr devt ) ' alt )
(trace ( list notion ( alternative ( cddr devt ) ) ) ) )
( ( equal ? ( cadr devt ) ' seq)
(trace ( list notion ( sequence ( cddr devt ) ) ) ) )
(else (display ( l ist ' notion notion " mal définie " ) ) ) ) ) )

La trace utilise write plutôt que display afin de rendre apparente la distinction
symbole/notion et terminal/chaîne. On écrit :
(define mo t (} ) ; ; global pour réduire les passages de paramètres
(define tes t( lambda (notion ) ; ; pour une notion isolée
(write ( l ist ' test notion ' ? mot ) )
( cond ( ( nul l ? mot ) (motSuivant ) ( test notion ) )
( ( and ( null ? notion ) ( equal? mot " stop" ) ) ( ) )
( ( terminal ? notion)
( i f ( equal? notion mot ) (trace mot ) # f ) )
(else ( suite notion ( assoc notion grammaire ) ) ) ) ) )
; ; assoc récupère dans gramma i re la règle développant la notion
(define sui te ( lambda ( notion devt )
; ; (write ( list ' - > ( cdr devt ) ' ? mot ) )
( i f ( null ? devt )
(display ( list 'notion notion " non définie " ) )
[ case (cadr devt )
( ( alt) (trace ( l ist notion (alternative ( cddr devt ) ) ) ) )
( ( seq) (trace ( l ist notion ( sequence ( cddr devt ) ) ) ) )
(else (display ( l ist ' notion notion " mal dé finie " ) )
)) ) )
Vers l ' IA en Scheme 1 59

(define sequence ( lambda ( devt )


( write ( list ' sequence devt ' ? mot ) )
( i f ( null? devt ) ( )
( let ( ( resul ( test ( car devt ) ) ) )
( i f resul
( append resul ( sequence ( cdr devt ) ) ) # f ) )

))
(define a l terna t i ve ( lambda (devt )
( write ( list ' alternative devt ' ? mot ) )
( i f ( nul l ? devt ) # f
( let ( ( rep ( test ( car devt ) ) ) )
( i f rep (begin (motSuivant ) rep)
( alternative ( cdr devt ) ) )

)))
(define notion ? ( lambda ( truc ) ( symbol? truc ) ) )
(define terminal ? ( lambda (truc) ( string? truc ) ) ) ; ; symbol * string
(define mo tSui vant ( lambda ( ) ( newline ) (display 'mot?
( se t ! mot ( symbol->string ( read) ) )
))
(define trace
( lambda (truc)
(display '>> ) ( write truc ) ( newl ine )
; ; à mettre derrière des points-virgule pour rendre trace transparent
truc ) )
(define ana lyse ( lambda () ( se t ! mot ( ) ) ( test 'phrase ) ) )

9.3.3 Utilisation
Le lancement se fait par (analyse). Les mots sont à rentrer un à la fois, en réponse à
l 'invite mot ? Après le dernier mot, taper stop à la demande suivante.
Bienvenue... .
> (analyse)
(test phrase ? () )
mo t ?l e
( test phrase ? " le " ) ( sequence ( suj et verbe complement ) ? " le " ) ( test
suj et ? " le " ) ( sequence ( groupenominal ) ? " le " ) ( test groupenominal ?
"le " ) ( sequence (determinant nom) ? " le " ) ( test determinant ?
" le" ) (alternative ( " le " " la " " le s " "un" "une " "de s " " ce " " cet"
"cette " " ces " " chaque " " tout " ) ? " le " ) ( test " le " ? " le " ) >> " le "
mo t ?cha t
>> (determinant "le" )
( sequence (nom) ? " chat " ) ( test nom ? " chat " ) ( alternative ( "banc"
"chat " " chatte " " chien" " chienne " " tapi s " ) ? " chat " ) ( test "banc" ?
"chat " ) ( alternative ( " chat " " chatte" " chien" " chienne " " tapis " ) ?
"chat " ) ( test " chat " ? " chat " ) >>"chat "
mo t ?est
>> (nom " chat " )
( sequence ( ) ? "est" ) >> (groupenominal (determinant " le " nom " chat " ) )
( sequence ( ) ? "est " ) >> ( suj et ( groupenominal ( determinant " le " nom
"cha t " ) ) )
( sequence (verbe complement ) ? "est " ) ( test verbe ? "est " ) ( alternative
( "e st" " était " " sera" ) ? "est " ) ( test "est" ? "est " ) >>"est"
1 60 A 2 - Eléments pratiques : Scheme

mo t ?sur
>> (verbe "est " )
( sequence ( complement ) ? " sur" ) ( test complement ? " sur" ) ( sequence
(preposition groupenominal ) ? " sur" ) ( test preposition ?
" sur" ) (alternative ( " sur" " sous " "devant " "derrière " "dans " ) ?
" sur" ) ( test " sur" ? " sur" ) >>" sur"
mo t ?le
>> (preposition " sur" )
( sequence ( groupenominal ) ? " le " ) ( test groupenominal ? " le " ) ( sequence
(determinant nom) ? "le" ) ( test determinant ? " le " ) ( alternative ( " le"
" la " " les " "un" "une " "de s " "ce" " cet" " cette " " ces " "chaque " " tout " )
? " le " ) ( test " le " ? " le " ) >> " le "
mo t ?ban c
>> (determinant "le" )
( sequence ( nom) ? "banc" ) ( test nom ? "banc " ) ( alternative ( "banc"
" chat " " chatte " " chien" " chienne " " tapis " ) ? "banc " ) ( test "banc " ?
"banc " ) >>"banc"
mo t ?s top
>> ( nom "banc " )
( sequence ( ) ? " s top" ) >> ( groupenominal ( determinant " le " nom "banc" ) )
( sequence ( ) ? " s top" ) >> ( complement (preposition " sur" groupenominal
(determinant " le " nom "banc" ) ) )
( sequence ( ) ? " stop" ) >> (phrase ( suj et (groupenominal ( determinant
" le " nom " chat " ) ) verbe "est" complement (preposition " sur" groupeno­
minal (determinant " le " nom "banc " ) ) ) )
(phrase
( suj et
( groupenominal (determinant " le " nom " chat " ) )
verbe
"est"
complement
(preposition " sur" groupenominal (determinant " le" nom "banc " ) ) ) )

9.4 GÉNÉRATEUR DE PHRASE


Le programme précédent peut être inversé en un générateur aléatoire de phrase. Pour
cela, il suffit que chaque alternative donne lieu à un tirage au sort de la possibilité
retenue, et que chaque terminal soit l 'obj et d'un ordre d'écriture. Le résultat est
grammatical au sens réduit adopté : il ne respecte pas de règle d'accord ni, à plus
forte raison, de règles de pertinence.
Il serait nettement plus difficile de sortir une phrase sans faute et de significa­
tion précise que des phrases surréalistes et faiblement grammaticales.

9.5 CALCUL SYMBOLIQUE

9.5. l Présentation
DÉFINITION. On appelle calcul symbolique (automatique) ou calcul formel, toute
forme de calcul littéral automatique.
Un tel calcul semble possible puisque toute formule peut être représentée par
un arbre, et en tant que tel peut être construite et découpée.
Vers l ' IA en Scheme 161

De fait, les premiers travaux sur l e suj et remontent à 1 956 23 , mais s e sont déve­
24
loppés à partir de 1 965 sur de grosses machines (MacSyma, MIT) , puis sur micro­
ordi nateur à partir de 1 976 (Université de Hawaï).
Cette technique est beaucoup employée en physique théorique, car elle permet
d'envisager des solutions génériques et/ou d'échapper aux imprécisions des métho­
des numériques dont on peut ainsi retarder et réduire l 'usage.

9.5.2 Analyse
L'assimilation opérateur� fonction suggère d 'associer à toute formule infixée une
représentation par un arbre correspondant à cette formule sous forme préfixée :
a - x*y - z 7 -a* xyz -

-+ (- (- a (* x y)) z) à la lisp/scheme.
Variables et constantes constitueront les feuilles, et les nœuds seront de type
binaire étiqueté :
(opérateur opérandeGauche opérandeDroit).

Sortie des formes internes


On en déduit directement la fonction écrire, la première à définir pour pouvoir tester
les autres. On allège son écriture par une construction case, variante de cond dans le
cas où toutes les conditionnelles se ramènent à l 'appartenance d'un même sélecteur à
une liste pour chaque cas.
Divers traitements seront possibles sur la base de la représentation interne adop-
tée.

Réduire
Une des difficultés est l 'aspect luxuriant des réponses obtenues par ces traitements
automatiques : l ' application systématique de certaines formules se fait sans autres
inconvénients que la multiplication des 0 et des 1 . On ne peut donc faire grand-chose
sans procédure de réduction, servant à clarifier des réponses par ailleurs exactes (-+
réduire ).
On n'utilise ici que quelques stratégies assez primitives, mais susceptibles de
déclencher d'autres réductions :
• évaluation des opérations aux opérandes constants -7
remplacement d 'une sous-expression par une constante,
• s ' il y a un opérande constant, essai d'exploitation comme élément neutre ou
absorbant pour l 'opérateur,
•exploitation d' idempotences et d'autres effets (op x x) :
(max x x)-+ x, (min x x)-+ x, (- x x) -+ 0, (/ x x)-+ 1 . . .
règles d'autant plus efficaces qu'elles exploitent un test d'égalité entre arbres préala­
blement réduits. Ces stratégies utilisent des schémas généraux faciles à étendre si on

23 Par
Grace Hoppers, plus connue comme principale conceptrice du premier Cobol .
24
Voir aussi (Arditi 1 996, ch. 1 1 ) .
1 62 A2 - Eléments pratiques : Scheme

ajoute de nouveaux opérateurs. Pour ce qui est de reconnaître les éléments remar­
quables, ceux-ci sont documentés en fonction de leur rôle dans une liste associative,
où l 'opérateur concerné joue Je rôle de clé. Dans la construction
(let ((cas (assoc op ' [(+ 0) (* 1 ) (- 0) (/ 1 )(/\ l )]))) ;; x + 0 =x . . .
si l 'opérateur est renseigné dans la liste entre [], assoc fournit à la variable locale cas
le couple (op élémentRemarquable) sinon #f. Si cas contient un couple, il ne reste
alors qu' à comparer élémentRemarquable et la valeur à tester.
Dans la fonction auxiliaire évaluation, on notera :
• le remplacement de notre symbole interne !\ par la fonction expt, fonction

Scheme d 'exponientiation,
• l'emploi de eval pour ranimer les noms de notions figés par quote pour être

transmis.

Substituer / Evaluer
Subst remplace par une formule g donnée toute occurrence d'une variable x dans une
formule f ; évaluer substitue de même une valeur à chaque occurrence d'une varia­
ble, ce qui appelle une réduction.

Dériver
La fonction dériv dérive par rapport à une variable donnée une formule donnée ; les
arbres correspondants sont engendrés à / 'économie via reduire3, fonction auxiliaire
de réduire.

Lecture des formules


La lecture est plus complexe : la fonction formule doit mettre sous forme préfixée
des formules parenthésées de type usuel, allégées par l'utilisation de « priorités » et
d 'associativité à droite, dont on rend compte par des règles de grammaire récursives
à gauche. On s ' inspire de la méthode de Peter Lucas évoquée au paragraphe 9.3 . l ,
sur l a base d'une fonction par notion à exploiter (expression, terme, facteur, pri­
maire . . . ).
On règle la question des récursivités à gauche à l ' aide de la fonction de segmen­
tation
( segment corps ops fin sinon debut reste) où
(corps ops fin) figurent le cas complexe, et (sinon) le cas élémentaire.
On souhaite reconnaître le cas complexe en fragmentant l 'entité à reconnaître en
deux segments : début est le segment le plus long possible, et fin le plus court possi­
ble, qui soient séparés par un des opérateurs de ops. Pour arriver à cet état, on vérifie
et transmet chaque élément de « début » vers « reste », en commençant par le dernier
de « début ». En cas de réussite, on analyse « début » comme production de type
« corps » et « reste » comme production de type « fin ». Si la fragmentation échoue,
la totalité de l 'entité à reconnaître se retrouve dans « reste », et doit être une produc­
tion de type « sinon ».
Vers l ' IA en Scheme 1 63

9. 5.3 Une solution scheme

Sortie des formes internes


(define ecrire ( lambda ( arbre )
( i f ( atom? arbre ) (display arbre )
( ecrireTriplet ( car arbre )
( cadr arbre ) ( caddr arbre ) ) ) ) )
(define ecrire Tripl e t ( lambda ( op gauche droite )
( case op
, , si opérateur connu , écriture infixée
[ (+ - * / " ) (display " ( "
( ecrire gauche ) (display op ) ( ecrire droite )
(display " ) " ) ]
; ; sinon fonction quelconque
[ else ( display op)
(display " ( " ) ( ecrire gauche ) (display " " )
( ecrire droite ) (di splay " ) " ) ]
)))
(define a tom ? ( lambda (truc) ( not (pair? truc ) ) ) ) ; ; ou feuille?

Réduire
(define reduire( lambda ( arbre )
[ i f ( atom? arbre ) arbre
; ; les feuilles sont irréductibles
; ; mai s un nœud est présumé triplet
( reduire3 ( car arbre )
( reduire ( cadr arbre ) ) ( reduire ( caddr arbre ) ) )
l))
(define reduire3 ( lambda ( op gauche droite )
, , traitement d' un noeud éclaté
( cond ( ( and ( number? gauche) ( number? droite ) )
( evaluation op gauche droite ) )
( ( eltNeutreGauche ? op gauche ) droite )
( (eltNeutreDroite? op droite ) gauche )
( (eltAbsorbantGauche ? op gauche ) gauche )
( ( eltAbsorbantDroite? op droite ) droite )
( (equal? gauche droite )
; ; op x x idempotences et autres
( case op
[ ( -) 0 ] ; ; x - x -> O
[ (/) lJ i i X / X -> l
[ (+) ( list ' * 2 gauche ) ] ; ; x + x -> 2 * x
[ (*) ( list ' " gauche 2 ) J ; ; x * x -> x " 2
[ (max min ) gauche ]
; ; max x x -> x , min x x -> x
[ else ( list op gauche droite ) ] ) )
(else ( list op gauche droite ) ) ) ) )
(define eva l ua ti on ( l ambda ( op valGauche valDroite )
( i f (equal? op ' " ) ( expt valGauche valDroite )
; expt , fonction Scheme d' exponentiation
( ( eva l op) valGauche valDroite ) )
))
1 64 A2 - Eléments pratiques : Scheme

; ; éléments remarquables ?================================


( define el tNe u t reDroi te ? ( lambda ( op droite)
(display ( list ' eltnd op droite ) )
( let ( ( cas ( assoc op ' [ ( + 0 ) ( * 1 ) ( - 0 ) ( / 1 )
(" 1) ) ) ) ) i; X + 0 = x ...
( and (pair? cas ) ; ; op clé dans la liste
( equal? ( cadr cas ) droite ) )
)))

( define el tNeutreGa u che ? ( lambda ( op gauche )


(display ( list ' eltng op gauche ) )
( let ( ( cas ( as soc op ' [ ( + 0 ) ( * 1 ) J ) ) )
; ; O+x = x...
( and (pair? cas ) ; ; op clé dans la liste
( equal? ( cadr cas ) gauche ) )
)))
( define el tAbsorban tDroi te ? ( lambda ( op droite )
; ; (display ( list ' eltnd op droite ) )
( let ( ( cas ( assoc op ' [ ( * 0 ) ) ) ) ) ; ; x * 0 = 0
( and (pair? cas ) ; ; op clé dans la liste
( equal? ( cadr cas ) droite ) )
)))
( define el tAbsorbantGa u che ? ( lambda ( op gauche )
; ; (display ( list ' eltng op gauche ) )
( let ( ( cas (as soc op ' [ ( * 0 ) ( " 1 ) ) ) ) )
; ; 0 * X = O ...
( and (pair? cas ) ; ; op clé dans la liste
( equal? ( cadr cas ) gauche ) )
)))

Substituer / évaluer

# I . . . 1 # est un commentaire délimité utilisé pour clarifier le rôle des paramètres.


( define s ubs t ( lambda
( formulel # l à la place de l # variable # l dans l # formule2 )
(di splay ( list ' subst de formulel ' à variable 'dans formule2 ) )
[ cond ( (or (pair? variable) ( nurnber? variable ) )
" subst : le second argument n ' est pas une variable " )
( (atom? formule2 )
( i f ( equal? variable formule2 ) formulel formule2 ) )
( ( = 1 ( length formule2 ) )
( subst formulel variable ( car formule2 ) ) )
(else ( list ( car formule2 )
( subst formulel variable ( cadr formule2 ) )
( subst formulel variable ( cddr formule2 ) ) ) )
J) )

( define eva l uer ( lambda


( formulel # l à la place de l # variable # l dans l # formule2 )
(display ( list ' evaluation de formulel 'pour variable
'valant fo rmule2 ) )
(if (or (pair? variable ) ( nurnber? variable) )
" évaluer : le second argument n ' est pas une variable "
( redui re (s ubs t formule2 variable formule l ) ) )
))
Vers l ' IA en Scheme 1 65

Dériver
(define deri v ( lambda ( # ! par rapport à l # variable # l de l # arbre )
(display ( l ist "dérivée par rapport à " variable "
de " arbre ) )
[ cond ( (or (pair? variable) ( number? variable ) )
"évaluer : le second argument n ' est pas une variable " )
( ( atom? arbre ) ( i f ( equal ? arbre variable ) l 0 ) )
( (=· 1 ( length arbre ) ) ( deriv variable ( car arbre ) ) )
(else ( deriv3 variable ( car arbre )
( cadr arbre ) ( caddr arbre ) ) )
)))
(define deriv3 ( lambda ( x op u v)
( case op
[ ( - + ) ( reduire3 op (deriv x u ) ( deriv x v ) ) )
[ (*) ( somme (produit ( deriv x u ) v)
(produit u ( deriv x v) ) ) )
[ (/) (difference ( quotientR ( deriv x u) v)
( quotientR (produit u (deriv x v) ) ( carre v) ) )
( ( A expt ) ( somme (produit (produit v
(puiss u (difference v 1 ) ) ) ( deriv x u) )
(produit ( list ' log 'e u )
(produit (puiss u v) (deriv x v) ) ) ) ]
[ else ( list 'dérivée/ x ' de op u v ' ? ? ? ) ) )
))
;i création à l ' économie des arbres néces saires
===================

(define somme (lambda ( a b) ( re