name: inverse layout: true class: center, middle, inverse --- # Introduction IA - CM 1 ## Inès de Courchelle ## 2023-2024  --- layout: false # Lets go ## Objectifs - Connaître la recherche aveugle et la recherche guidée - Appliquer un algorithme A*
--- # Définition IA .otro-blockquote[reproduire des comportements liés aux humains, tels que le raisonnement, la planification et la créativité. CNIL]
--- # Historique ## 1940 - Rorbert Wiener, pionnier de la cybernétique, - « théorie entière de la commande et de la communication, aussi bien chez l’animal que dans la machine ». - Warren McCulloch et Walter Pitts dès 1943 un premier modèle mathématique et informatique du neurone biologique (neurone formel) avait été mis au point par. ## 1950 John Von Neumann et Alan Turing : transition entre les calculateurs à la logique décimale du XIXème siècle et des machines à la logique binaire ## 1956 conférence de Dartmouth - Le terme IA est inventé --- # Historique ## 1960s Terry Winograd SHRDLU (monde de blocs) ## 1970s Systèmes experts : Mycin, Dendral
--- # Historique ## 1988 Puissance 4 résolu par Victor Allis et James Allen (indépendamment) ## 1997 Deep Blue bat Kasparov ## 2002 invention d’Arimaa, conçu pour être compliqué pour un ordinateur --- # Historique ## Les assistants #### 2007 - Siri
#### 2014 - Alexa
#### 2022 - Chat GPT
--- # Historique ## Années 2000 - 2015 : Alphago (google Deepmind) bat Fan Hui 5-0 - 2016 : Alphago - Lee Sedol 4-1 - 2016 : Google annonce la traduction automatique quasi parfaite GNMT - 2017 : Alphago bat Ke Jie 3-0 - 2017 : Alphago Zero apprend à jouer sans expertise humaine - 2017 : Humans are still better than AI at Starcraft - for now - 2017 : Apple : iphone X, reconnaissance de visage par réseau de neurones - 2018 : Uber : premier accident mortel impliquant une voiture autonome - 2018 : FDA autorise le diagnostic autonome de la rétinopathie - 2019 : Une IA de Starcraft bat les meilleurs joueurs mondiaux - 2020 : Alphafold (une IA de Deepmind) replie les protéines - 2020 : Une IA du MIT reconnaît le COVID --- # Actualités ## Alexandre Astier
Article huffingtonpost
## Sam Altman
Article huffingtonpost
## François Saltiel
Repenser l'IA grâce à Turing
--- # [Rappel] Généralités sur les arbres ## Qu'est ce qu'un arbre ?
## De manière générale - Structure de stockage des fichiers sur un disque dur - Expression formelle de calculs - Arbres de décision - ... --- # Généralités sur les arbres ## Des exemples
--- # Généralités sur les arbres ## En Vrai
## En Info
--- # Définition d'un arbre ## Définition (Théorie des graphes) .otro-blockquote[Un arbre est un graphe (orienté ou non), connexe et sans cycle.] ## Définition (Récursive) .otro-blockquote[Un arbre est un arbre qui possède des liens ou des pointeurs vers d'autres arbres.] --- # Le vocabulaire ## Un arc
--- # Le vocabulaire ## Un noeud
--- # Le vocabulaire ## Noeud externe ou feuille
C'est un noeud qui n'a pas d'arc sortant ! --- # Le vocabulaire ## Noeud interne
C'est un noeud qui n'est pas externe ! --- # Le vocabulaire ## La racine
Tout en haut quoi ! --- # Le vocabulaire ## Noeud frères ou soeurs
--- # Le vocabulaire
#### Noeud ancêtre 1 est l'ancêtre de 9 #### Noeud descendant 9 est le descendant de 1 --- # Le vocabulaire
#### La taille C'est le nombre de noeud dans l'arbre (ici de 10) #### Le nombre de feuille C'est le nombre de feuille ou noeud externe (ici de 6) --- # Le vocabulaire
#### Le degré d'un noeud - C'est le nombre de descendants d'un noeud. - Ce n'est pas tous les descendants, mais juste les fils (descendants du 1er niveau, mais pas encore dessous). #### Le degré d'un arbre C'est le plus grand des degrés de ses noeuds (ici de 5) --- # Le vocabulaire
#### Profondeur d'un noeud c’est la distance du chemin qui relie la racine au nœud. #### La hauteur c’est la profondeur maximale de ses nœuds (ici de 2) --- # Le vocabulaire ## Le cheminement #### Longueur La longueur de cheminement d'un arbre correspond à la somme des hauteurs de chacun des noeuds. #### Externe La longueur de cheminement externe d'un arbre correspond à la somme des hauteurs de chacune des feuilles. #### Interne La longueur de cheminement interne d'un arbre correspond à la somme des hauteurs des nœuds internes de l'arbre. --- # Le vocabulaire ## Le cheminement .pull-left[ - Longueur de cheminement (LC) => 15 - Longueur de cheminement externe (LCE) => 12 - Longueur de cheminement interne (LCI) => 3 ] .pull-right[
] --- # Recherche aveugle ## Définition Recherche dans laquelle aucune heuristique n’est disponible pour distinguer un chemin de recherche. Elle s'oppose à la recherche guidée : Il y a des heuristiques pour guider les choix, la recherche aveugle n'utilise aucune heuristique. ## En profondeur .otro-blockquote[Si l'arbre n'est pas vide, le parcours de l'un des deux sous-arbres est terminé avant que ne commence celui de l'autre. On explore jusqu’au bout une branche pour passer à la suivante (on va vers les fils avant d'aller vers les frères)] --- # Recherche aveugle ## En Largeur .otro-blockquote[On explore les noeuds un par un sur un même niveau. On passe ensuite sur le niveau suivant, et ainsi de suite (on va vers les frères avant de parcourir les fils)] --- # Recherche # Parcours en profondeur ## Type Préfixe - Chaque noeud est visité avant leur fils - La racine est traitée avant les appels récursifs sur les sous-arbres gauche et droit
--- # Parcours en profondeur ## Type Préfixe
[0,1,2,7,3,4,5,8,9,6,10,12,13,15,14,16] --- # Parcours en profondeur ## Type Infixe - On visite chaque noeud après son fils à gauche et avant son fils à droite - La racine est traitée entre les appels sur les sous-arbres gauches et droits - .underR[Attention] : Le type infixe n'est que pour les arbres binaires, alors que le préfixe et postfixe peut être pour tous les types d'arbres
--- # Parcours en profondeur ## Type Infixe
[7,2,1,4,3,5,8,0,12,10,13,6,9,14,15,16] --- # Parcours en profondeur ## Type Postfixe (ou suffixe) - on visite chaque noeud après avoir visité chacun de ses fils - la racine est traitée après les appels récursifs sur les sous-arbres gauche et droit
--- # Parcours en profondeur ## Type Postfixe (ou suffixe)
[7,2,4,8,5,3,1,12,13,10,6,14,16,15,9,0] --- # Parcours en largeur ## Définition - On visite l'arbre niveau par niveau - Les nœuds de niveau 0 sont sont d'abord parcourus puis les nœuds de niveau 1 et ainsi de suite - Dans chaque niveau, les nœuds sont parcourus de la gauche vers la droite
--- # Parcours en largeur
[0,1,9,2,3,6,15,7,4,5,10,14,16,8,12,13] --- # Exemple d'utilisation ## Recherche d'un élément dans un arbre Pour trouver un élément spécifique, vous pouvez utiliser une recherche en profondeur pour parcourir l'arbre et comparer l'élément recherché avec les nœuds. ## Résolution de jeux Dans des jeux comme les échecs, les algorithmes de recherche aveugle, tels que la recherche en profondeur limitée ou la recherche en largeur, sont utilisés pour explorer les différentes combinaisons de mouvements possibles. --- # Exemple d'utilisation ## Navigation sur un site web Lorsqu'un moteur de recherche web explore et indexe les pages web, il utilise souvent des algorithmes de recherche en profondeur ou en largeur pour parcourir les liens entre les pages du site. ## Trouver le chemin le plus court dans un graphe Les algorithmes de recherche en largeur (comme l'algorithme de Dijkstra) sont utilisés pour trouver le chemin le plus court entre deux nœuds dans un graphe pondéré. ## Résolution de labyrinthes La recherche en profondeur et la recherche en largeur peuvent être utilisées pour résoudre des labyrinthes en trouvant un chemin à partir du point de départ jusqu'à la sortie. --- # Cependant ## Problèmatique Ce type de recherche es qualifié d'aveugle car on visite tout les noeuds de l'arbres
--- # Recherche guidée ## Qu'est ce que c'est ? C'est une méthode de recherche qui utilise des informations supplémentaires pour orienter la recherche vers un objectif ou une solution de manière plus efficace que la recherche aveugle. ## Quand ? - Systèmes de menu : avec des catégories et sous catégories - Support de client en ligne pour diagnostiquer un problème - ... --- # Exemple de problème ## Robotique (Bloc) Trouver une succession d'étapes (un plan) pour qu'un robot réarrange une pile de blocs. Le robot ne peut bouger qu'une pile de blocs à la fois. Un bloc ne peut être déplacé que s'il est au sommet d'une pile. Il peut alors être déplacé sur la table (nouvelle pile), ou sur une autre pile. L'objectif est de trouver une séquence de déplacements entre la situation initiale et une situation finale. ## Jeu (Taquin) Résoudre un puzzle de 8 cases (jeu à un joueur). Un puzzle de 8 cases est constitué de 8 tuiles glissantes numérotées de 1 à 8, placées dans un tableau 3*3. Une des cases est donc vide, et chaque tuile adjacente à cette case vide peut y glisser, laissant une nouvelle case vide. La situation finale correspond à un arrangement particulier des tuiles dans le tableau. --- # Modélisation informatique ## Robotique (Bloc) #### Structure de données liste de piles #### Voisinage déplacement d'un sommet de pile ## Jeu (Taquin) #### Structure de données liste ordonnée de coordonnées (vide,1,...,n) #### Voisinage permutation de la case vide avec une case voisine (distance de Manhattan = 1) \\[ d_{Manhattan}=(x1−x2)+(y1−y2) \\] --- # Algorithme A* ## Définition L'algorithme A* est une technique de recherche guidée. ## Quand ? Il est utiliser pour rechercher un chemin. ## Comment ? Il utilise une fonction d'évaluation qui combine le coût actuel pour atteindre un nœud avec une estimation du coût restant pour atteindre l'objectif. --- # Algorithme A* ## Principe - Évaluer chaque nœud exploré en utilisant deux valeurs : - **Coût réel** pour atteindre ce nœud depuis le nœud de départ (coût g) - **Coût heuristique** estimation du coût restant pour atteindre l'objectif à partir de ce nœud - L'algorithme maintient une "liste ouverte" de nœuds à explorer et sélectionne le prochain nœud à explorer en fonction d'une combinaison de ces deux coûts. ## Objectif Minimiser la valeur f(n) = g(n) + h(n) pour le nœud en cours d'examen. --- # Algorithme A* ## Différence avec Dijkstra - L’algorithme de Dijkstra permet de prendre en compte des arêtes de poids différents (alors que pour le parcours en largeur, elles ont toutes le même). - A* permet de prendre en compte une évaluation de la distance qui reste à parcourir alors que l’algorithme de Dijkstra ne prend en compte que la distance jusqu’au sommet considéré. - A* est un algorithme de branch and bound (Un algorithme par séparation et évaluation) --- # Algorithme A* ## Fonctions spécifiques
ALGO générique
--- # Quelques liens utiles ## Dijkstra’s algorithm
--- # Quelques liens utiles ## A* (A star) search algorithm
--- # Quelques liens utiles ## Maze solving