Algorithmes de recherche



Documents pareils
Cours de Master Recherche

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

Ordonnancement. N: nains de jardin. X: peinture extérieure. E: électricité T: toit. M: murs. F: fondations CHAPTER 1

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/ Présentation. 1.2 Ressources

LE PROBLEME DU PLUS COURT CHEMIN

Chapitre 5 : Flot maximal dans un graphe

Pourquoi l apprentissage?

Resolution limit in community detection

LibreOffice Calc : introduction aux tableaux croisés dynamiques

Vers l'ordinateur quantique

Algorithmes d'apprentissage

6. Hachage. Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses

Introduction. I Étude rapide du réseau - Apprentissage. II Application à la reconnaissance des notes.

1. Introduction Création d'une requête...2

Programmation par contraintes. Laurent Beaudou

MODE D'EMPLOI DE LA CALCULATRICE POUR LES COURTS SÉJOURS DANS L'ESPACE SCHENGEN

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

CORRECTION EXERCICES ALGORITHME 1

Apprentissage par renforcement (1a/3)

Support Agile avec Kanban quelques trucs et astuces par Tomas Björkholm

@telier d'initiation

Plus courts chemins, programmation dynamique

Calculateur quantique: factorisation des entiers

Atelier Transversal AT11. Activité «Fourmis» Pierre Chauvet.

Optimisation for Cloud Computing and Big Data

Messages d'erreurs. Redémarrez votre PC en cliquant sur Démarrer, en sélectionnant ensuite Arrêter puis en cochant Redémarrer

Raisonnement par récurrence Suites numériques

Optimisation Combinatoire (Méthodes approchées) II. Recherche Locale simple (Les bases)

Architecture des Systèmes d Information Architecture des Systèmes d Information

Tune Sweeper Manuel de l'utilisateur

BADPLUS V5 MANUEL D'UTILISATION. Imports de données joueurs à partir de la base fédérale en ligne Poona. Stéphan KIEFFER - Dominique BOSSERT

MDI Chèque de Allégroupe Réclamation

Algorithmique avec Algobox

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Importer les fichiers élèves - professeurs du secrétariat

I- Définitions des signaux.

Installation de Windows 2003 Serveur

Université Paris-Dauphine DUMI2E 1ère année, Applications

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Notice Générale - MODULE CLIENTS. I. Description générale du module. II. La liste des clients a. Accès

Programmation Objet - Cours II

Guide de démarrage rapide Centre de copies et d'impression Bureau en Gros en ligne

OPTIMISATION À UNE VARIABLE

Recherche dans un tableau

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

Initiation à la programmation en Python

Initiation à LabView : Les exemples d applications :

Conception d'un réseau de transport d'électricité

Intelligence Artificielle Planification

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Master IAD Module PS. Reconnaissance de la parole (suite) Alignement temporel et Programmation dynamique. Gaël RICHARD Février 2008

1. Création d'un état Création d'un état Instantané Colonnes Création d'un état Instantané Tableau... 4

t 100. = 8 ; le pourcentage de réduction est : 8 % 1 t Le pourcentage d'évolution (appelé aussi taux d'évolution) est le nombre :

HP Data Protector Express Software - Tutoriel 4. Utilisation de Quick Access Control (Windows uniquement)

Guide d'installation et de programmation Serrures modernes levier du clavier

Utilisation de la clé USB et autres supports de stockages amovibles

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Installation de Windows 2000 Serveur

Algorithmique et Programmation Fonctionnelle

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Modèle de changement d organisation. Leanpizza.net présente. Petit Guide Rapide du jeu de cartes Modèle de Changement d Organisation

Par : Abdel YEZZA, Ph.D. Date : avril 2011 / mise à jour oct (ajout de la section 3 et augmentation de la section 1)

1 - Clients 2 - Devis 3 - Commandes 4 - Livraisons 5 - Factures 6 - Avoirs 7 - Modèles

C f tracée ci- contre est la représentation graphique d une

Chaînes de Markov au lycée

Rappels sur les suites - Algorithme

Propagation sur réseau statique et dynamique

Programmation Par Contraintes

Cours admin 200x serveur : DNS et Netbios

Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons

Nouvelles propositions pour la résolution exacte du sac à dos multi-objectif unidimensionnel en variables binaires

Baccalauréat L spécialité, Métropole et Réunion, 19 juin 2009 Corrigé.

Correction du baccalauréat ES/L Métropole 20 juin 2014

CH.6 Propriétés des langages non contextuels

RÉALISATION DE GRAPHIQUES AVEC OPENOFFICE.ORG 2.3

Mesurer les performances (CPU) sous Linux

Partie 1 : la construction du nombre chez l'enfant. Page 2. Partie 2 : Des jeux et des nombres Page 8

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var Tel : bij@agasc.fr Word: Les tableaux.

SOMMAIRE. Travailler avec les requêtes... 3

Maintenance régulière de son ordinateur sous Windows

CHAPITRE VIII : Les circuits avec résistances ohmiques

Création d'un site neutre et présentation des éléments de la page d'accueil

Premiers pas sur le site ecommerce.cléde13.fr. Sommaire

Guide de l'utilisateur : Surveillance MédiaSource Analytique

Définitions. Numéro à préciser. (Durée : )

Feuille TD n 1 Exercices d algorithmique éléments de correction


Mémo d'utilisation de BD Dico1.6

EQUISIS E-BANKING A. "E-BANKING" VIREMENTS NATIONAUX PARAMETRAGE. Comptes centralisateurs financiers

Saisir et traiter les engagements de coûts

Les structures de données. Rajae El Ouazzani

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Séquence de découverte de SparkAngels Logiciel d entraide numérique

"! "#$ $ $ ""! %#& """! '& ( ")! )*+

Transférer et enregistrer les photos sur l'ordinateur

Structures algébriques

Simulation de variables aléatoires

Fête de la science Initiation au traitement des images

Analyse des Systèmes Asservis

Transcription:

Algorithmes de recherche 1

Résolution de problèmes par recherche On représente un problème par un espace d'états (arbre/graphe). Chaque état est une conguration possible du problème. Résoudre le problème consiste à trouve un chemin dans le graphe. Parcours aveugles non informés : profondeur, largeur. Parcours informés. 2

Exemple : la tour de cubes - - C A - - A -----> B - - B C - - 3

Contraintes On veut réarranger la pile de cubes, en ne déplaçant qu'un cube à la fois. On peut déplacer un cube uniquement s'il n'a pas un autre au dessus de lui. On peut poser un cube sur la table ou sur un autre cube. 4

Congurations et actions possibles C B A <-> A <-> A <-> A B B C B C C Compléter... 5

Éléments du graphe Les noeuds/états du graphe sont les congurations possibles du jeu. Les arcs du graphe sont les transitions possibles. Il y a (au moins) un état initial (p.e. C A B). Il y a (au moins) un état nal. Explicite (p.e. A B C). Implicite (décrit par une propriété). Trouver une solution consiste à trouver un chemin allant d'un état initial vers un état nal (p.e. un chemin de l'état C A B vers l'état A B C). Coût du chemin : somme de distances, nb d'opérateurs, etc. 6

Exemple : le 8-puzzle - - - - - - 5 4 1 2 3 - - - - - - 6 1 8 -----> 8 4 - - - - - - 7 3 2 7 6 5 - - - - - - 7

Éléments du graphe États : toutes les congurations possibles pour les entiers 1..8 dans le puzzle. Arcs : déplacer le blanc vers la gauche, vers la droite, vers le haut, vers le bas. État initial : toute conguration sauf celle de droite. État nal : celui à droite. Coût du chemin : nb de mouvements. 8

Exemple : l'aspirateur ------------------------- ---------------------- aspirateur poussiere aspirateur et ----> ---------------------- poussiere ------------------------- 9

Éléments du graphe États : toutes les congurations possibles pour l'aspirateur dans le carré double avec ou sans poussière. Arcs : déplacer l'aspirateur à droite, déplacer l'aspirateur à gauche, aspirer. État initial : celui à gauche. État nal : pas de poussière. Coût du chemin : nb d'opérateurs. 10

Algorithmes de recherche : idée générale 1. Démarrer la recherche avec la liste contenant l'état initial du problème. 2. Si la liste n'est pas vide alors : (a) Choisir (à l'aide d'une stratégie) un état e à traiter. (b) Si e est un état nal alors retourner recherche positive (c) Sinon, rajouter tous les successeurs de e à la liste d'états à traiter et recommencer au point 2. 3. Sinon retourner recherche négative. 11

Les stratégies C'est un critère qui permet de choisir un ordre pour traiter les états du problème. On tiendra compte de : La complétude L'optimalité (selon le coût). La complexité (en temps et en espace) mesurée par : b : branchement maximal de l'arbre de recherche d : profondeur de la meilleur solution m : profondeur maximale de l'espace d'états 12

Stratégies aveugles En largeur d'abord À coût uniforme En profondeur d'abord En profondeur limitée En profondeur itérative 13

Recherche en largeur d'abord 1 1 1 1 / \ / \ / \ 2 3 2 3 2 3 / \ / \ / \ 4 5 4 5 6 7 14

Structure de données On utilise une structure de liste : 1. Mettre 1 dans la liste. On obtient [1]. 2. Enlever le premier élement de la liste (le 1) et rajouter ses successeurs 2, 3. On obtient [2,3]. 3. Enlever le premier élement de la liste (le 2) et rajouter ses successeurs 4, 5. On obtient [3,4,5]. 4. Enlever le premier élement de la liste (le 3) et rajouter ses successeurs 6, 7. On obtient [4,5,6,7]. 15

Caractéristiques de la recherche en largeur d'abord Complète si b est ni. Complexité en temps : O(b d ) Complexité en espace : O(b d ) Optimale si coût = 1, non optimale en générale. 16

Variante : recherche à coût uniforme Problème : On veut aller de S à G en utilisant le chemin le plus court, où les distances sont données par le tableau suivant : dist(s,a) = 1 dist(s,b) = 5 dist(s,c) = 15 dist(a,g) = 10 dist(b,g) = 5 dist(c,g) = 5 17

S S S S / \ / \ / \ A B C A B C A B C 1 5 15 1 5 15 1 5 15 G G G 11 11 10 18

Structure de données On utilise une structure de liste triée : 1. Mettre S dans la liste avec son coût initial. On obtient [(S,0)]. 2. Enlever le premier élement de la liste (S,0) et rajouter ses successeurs A, B, C à la liste d'états en respectant l'ordre croissant. Pour cela on calculera le coût total de chaque successeur : coût de S + coût de chaque arc. On obtient [(A,1),(B,5),(C,15)]. 3. Enlever le premier élement de la liste (A,1) et rajouter son successeur G à la liste en respectant l'ordre croissant. Pour cela on calculera le coût total de G : coût de A + coût de l'arc A -> G. On obtient [(B,5),(G,11),(C,15)]. 19

4. Enlever le premier élement de la liste (B,5) et rajouter son successeur G à la liste en respectant l'ordre croissant. Pour cela on calculera le coût total de G : coût de B + coût de l'arc B -> G. On obtient [(G,10),(G,11),(C,15)]. 20

Observations et variantes Le coût est associé à chaque arc. Si coût de chaque arc = 1, alors recherche à coût uniforme = recherche en largeur d'abord. 21

Recherche en profondeur d'abord 1 1 1 1 1 1 / \ / \ / \ / \ / \ 2 3 2 3 2 3 2 3 2 3... / \ / \ / \ / \ 4 5 4 5 4 5 10 11 / \ / \ 6 7 8 9 22

Structure de données On utilise une structure de pile : 1. Mettre 1 dans la pile. On obtient [1]. 2. Enlever le premier élement de la pile (le 1) et rajouter ses successeurs 2, 3. On obtient [2,3]. 3. Enlever le premier élement de la pile (le 2) et rajouter ses successeurs 4, 5. On obtient [4,5,3]. 4. Enlever le premier élement de la pile (le 4) et rajouter ses successeurs 6, 7. On obtient [6,7,5,3]. 5. Enlever le premier élement de la pile (le 6) qui n'a pas de succeseurs. On obtient [7,5,3]. 6. Enlever le premier élement de la pile (le 7) qui n'a pas de 23

succeseurs. On obtient [5,3]. 7. Enlever le premier élement de la pile (le 5) et rajouter ses successeurs 8, 9. On obtient [8,9,3]. 8. Enlever le premier élement de la pile (le 8) qui n'a pas de succeseurs. On obtient [9,3]. 9. Enlever le premier élement de la pile (le 9) qui n'a pas de succeseurs. On obtient [3]. 10. Enlever le premier élement de la pile (le 3) et rajouter ses successeurs 10, 11. On obtient [10,11]. 11. Enlever le premier élement de la pile (le 10) et rajouter ses successeurs 12, 13. On obtient [12,13,11]. 12. Enlever le premier élement de la pile (le 12) qui n'a pas de succeseurs. On obtient [13,11]. 24

13. Enlever le premier élement de la pile (le 13) qui n'a pas de succeseurs. On obtient [11]. 14. Enlever le premier élement de la pile (le 11) et rajouter ses successeurs 14, 15. On obtient [14,15]. 15. Enlever le premier élement de la pile (le 14) qui n'a pas de succeseurs. On obtient [15]. 16. Enlever le premier élement de la pile (le 15) qui n'a pas de succeseurs. On obtient []. 25

Caractéristiques de la recherche en profondeur d'abord Non complète si espace d'états inni. Complexité en temps : O(b m ) Complexité en espace : O(b m) Non optimale. 26

Variante : recherche en profondeur limitée C'est une recherche en profondeur d'abord où l'on explore les états jusqu'à une profondeur limitée. Exemple avec limite 2 1 1 1 1 / \ / \ / \ 2 3 2 3 2 3 / \ / \ 4 5 10 11 On rajoute les successeurs d'un état uniquement si on n'a pas dépassé la limite 2. 27

1. Mettre 1 dans la pile avec sa profondeur. On obtient [(1,0)]. 2. Enlever le premier élement de la pile (1, 0) et rajouter ses successeurs 2, 3 si on n'a pas dépassé la limite. On obtient [(2,1),(3,1)]. 3. Enlever le premier élement de la pile (2, 1) et rajouter ses successeurs 4, 5 si on n'a pas dépassé la limite. On obtient [(4,2),(5,2),(3,1)]. 4. Enlever le premier élement de la pile (4, 2) et ne rien rajouter. On obtient [(5,2),(3,1)]. 5. Enlever le premier élement de la pile (5, 2) et ne rien rajouter. On obtient [(3,1)]. 6. Enlever le premier élement de la pile (3, 1) et rajouter ses successeurs 10, 11 si on n'a pas dépassé la limite. On obtient 28

[(10,2),(11,2)]. 7. Enlever le premier élement de la pile (10, 2) et ne rien rajouter. On obtient [(11,2)]. 8. Enlever le premier élement de la pile (11, 2) et ne rien rajouter. On obtient []. 29

Variante : recherche en profondeur itérative C'est une itération de la recherche en profondeur limitée. Pour p de 0 a infini faire recherche_profondeur_limitee(p) 30

Caractéristiques de la recherche en profondeur itérative Complète. Complexité en temps : 1 + b + b 2 +... + b d = O(b d ). Complexité en espace : O(b d). Optimale si coût = 1. 31

Stratégies informées Meilleur d'abord L'algorithme A Heuristiques 32

Recherche meilleur en premier Compromis entre recherche en largeur et recherche en profondeur On associe à chaque état une mesure d'utilité unique On utilise cette mesure pour : Choisir l'état suivant à traiter Rajouter les successeurs d'un état à la liste d'états à traiter 33

Algorithme de recherche meilleur en premier 1. Démarrer la recherche avec la liste contenant l'état initial du problème. 2. Si la liste n'est pas vide alors : (a) Choisir un état e de mesure minimale à traiter. (b) Si e est un état nal alors retourner recherche positive (c) Sinon, rajouter tous les successeurs de e à la liste d'états à traiter par ordre croissant selon la mesure d'utilité. Recommencer au point 2. 3. Sinon retourner recherche négative. 34

Cas spéciaux de la recherche meilleur en premier Recherche gloutonne Algorithme A 35

Recherche gloutonne La mesure d'utilité est donnée par une fonction d'estimation h. Pour chaque état n, h(n) représente l'estimation du coût de n vers un état nal. Par exemple, dans le pb du chemin le plus court entre deux villes on peut prendre h 1 (n) = distance directe entre n et la ville destination. La recherche gloutonne choisira l'état qui semble le plus proche d'un état nal selon la fonction d'estimation. 36

Caractéristiques de la recherche gloutonne Incomplète (car boucles) Complexité en temps : O(b m ) Complexité en espace : O(b m ) Non optimale. 37

Algorithme A On évite d'explorer les chemins qui sont déjà chers. La mesure d'utilité est donnée par une fonction d'évaluation f. Pour chaque état n, f(n) = g(n) + h(n), où g(n) est le coût jusqu'à présent pour atteindre n h(n) est le coût estimé pour aller de n vers un état nal. f(n) est le coût total estimé pour aller d'un état initial vers un état nal en passant par n. 38

Caractéristiques de l'algorithme A L'heuristique de A est admissible : pour tout état n on a h(n) h (n) où h (n) est le vrai coût pour aller de n vers un état nal. Par exemple h 1 (n) h (n). Complet. Complexité en temps : exponentiel. Complexité en espace : tous les noeuds. L'algorithme A est optimal. 39

Exemple : Roumanie avec coûts estimés On veut aller de Arad à Bucharest. Etape 1 (Arad,366) Etape 2 (Sibiu,393=140+253) (Timisoara,447=118+329) (Zerind,449=75+374) 40

Un exemple : Roumanie avec coûts estimés Etape 3 (Rimnicu Vilcea,413=80+140+193) (Fagaras,417=99+140+178) (Timisoara,447) (Zerind,449) (Arad,646=140+140+366) (Oradea,671=151+140+380) 41

Un exemple : Roumanie avec coûts estimés Etape 4 (Pitesti,415=97+80+140+98) (Fagaras,417=99+140+178) (Timisoara,447) (Zerind,449) (Craiova,526=146+80+140+160) (Sibiu,553=80+80+140+253) (Arad,646=140+140+366) (Oradea,671=151+140+380) 42

Un exemple : Roumanie avec coûts estimés Etape 5 (Fagaras,417=99+140+178) (Bucharest,418=101+97+80+140+0) (Timisoara,447) (Zerind,449) (Craiova,526=146+80+140+160) (Sibiu,553=80+80+140+253) (Rimnicu Vilcea,607=97+97+80+140+193) (Craiova, 615=138+97+80+140+160) (Arad,646=140+140+366) (Oradea,671=151+140+380) 43

Un exemple : Roumanie avec coûts estimés Etape 6 (Bucharest,418=101+97+80+140+0) (Timisoara,447) (Zerind,449) (Bucharest,450=211+99+140+0) (Craiova,526=146+80+140+160) (Sibiu,553=80+80+140+253) (Sibiu,591=99+99+140+253) (Rimnicu Vilcea,607=97+97+80+140+193) (Craiova, 615=138+97+80+140+160) (Arad,646=140+140+366) (Oradea,671=151+140+380) 44

L'algorithme A est optimal (preuve) Supposons qu'un but G 2 pas optimal est dans la queue. Soit n un noeud dans la queue qui se trouve dans un chemin vers un but optimal G 1. f(g 2 ) = g(g 2 ) car h(g 2 ) = 0 > g(g 1 ) car G 1 est optimal f(n) car h admissible implique f(n) = g(n) + h(n) g(n) + h (n) = g(g 1 ) Comme f(g 2 ) > f(n), l'algorithme A ne va jamais choisir G 2. 45

Lors que la fonction d'évaluation décroît n g=5, h=4, f=9 1 m g=6, h=2, f=8 Perte de l'information car : f(n) = 9 dit que le vrai coût d'un chemin qui passe par n est 9. Donc le vrai coût d'un chemin qui passe par n et puis par m est aussi 9. 46

Modication de l'algorithme A lorsque f décroît Si m est un successeur de n : f ne décroît plus... f(m) = max(g(m) + h(m), f(n)) 47

Comment choisir entre deux heuristiques admissibles? - - - - - - 5 4 1 2 3 - - - - - - S= 6 1 8 -----> 8 4 = G - - - - - - 7 3 2 7 6 5 - - - - - - Deux heuristiques admissibles : h 1 (n) = nb de pièces mal placées h 2 (n) = Σ distance de chaque pièce à sa position nale 48

Dans l'exemple : h 1 (S) = 7 et h 2 (S) = 2 + 3 + 3 + 2 + 4 + 2 + 0 + 2 = 18 On dit que h 2 domine h 1 ssi h 2 (n) h 1 (n) pour tout n. Dans ce cas, on choisit l'heuristique dominante. Une heuristique dominante peut réduire l'espace de recherche considérablement. 49

Algorithmes d'amélioration itérative À utiliser lorsque le chemin qui mène vers une solution n'est pas important. Idée : améliorer l'état nal lui même. 50

Exemple : Les n-reines Placer n reines sur un damier de n n de telle sorte que les reines ne se trouvent sur la même ligne, ni colonne, ni diagonale. X X X X X X X X ---> X ---> --->... X X X 51

Algorithmes d'amélioration itérative Problème : se retrouver bloqué dans une solution locale (et pas globale) Solution : sortir de la localité en autorisant des changements drastiques de temps en temps. 52