Documentation du code¶
-
class
recherche.moteurs_recherche.element.Element(nom='')¶ Un élément dans l’espace de recherche.
-
__init__(nom='')¶ Paramètres: nom (str) – nom de l’élément (optionnel).
-
distance(element)¶ Retourne la distance entre l’éléments courant et un autre.
(A implémenter différemment dans les sous-classes, si nécessaire.)
-
-
class
recherche.moteurs_recherche.ville.Ville(x, y, nom='')¶
Bases: recherche.moteurs_recherche.element.Element
-
class
recherche.moteurs_recherche.espace.Espace(elements=None, arcs=None)¶ Un espace de recherche dans lequel les éléments sont connectés par des arcs.
-
__init__(elements=None, arcs=None)¶ Paramètres: - elements (list) – une liste d’éléments.
- arcs (list) – une liste d’arcs sous forme de tuples
(element_1, element_2).
-
ajoute_arcs(arcs)¶ Ajoute des arcs à l’espace.
Les éventuels éléments nouveaux mentionnés dans les arcs seront aussi ajoutés à la liste d’éléments de l’espace.
Paramètres: arcs (list) – une liste d’arcs.
-
trouve_voisins(element)¶ Retourne: les voisins d’un élément.
-
-
class
recherche.moteurs_recherche.noeud.Noeud(element, parent=None, cout=0, cout_f=0)¶ Noeud généré de façon dynamique par un algorithme de recherche, encapsulant un élément de l’espace de recherche.
-
__init__(element, parent=None, cout=0, cout_f=0)¶ Paramètres: - element (Element) – l’élément encapsulé.
- parent (Noeud) – le noeud parent du noeud courant, c’est-à-dire le noeud qui a conduit à la découverte du noeud courant au cours de la recherche.
- cout – coût du noeud courant (utile uniquement pour A*).
- cout_f – coût heuristique du noeud courant (utile uniquement pour A*).
-
-
class
recherche.moteurs_recherche.recherche.Recherche(espace, optimisee=False)¶ Classe générique pour la recherche.
-
__init__(espace, optimisee=False)¶ Paramètres: - espace – l’espace de recherche.
- optimiser – indique si la recherche doit être optimisée pour éviter les cycles.
-
ajoute_successeurs(queue, successeurs)¶ Ajoute les successeurs
successeursà la queuequeue(à implémenter différemment pour DFS, BFS et A*).La queue peut éventuellement être modifiée par la méthode.
Paramètres: - queue (list) – la queue des noeuds à explorer.
- successeurs (list) – les successeurs à ajouter.
Retourne: la queue contenant tous les successeurs dans le bon ordre.
-
detecte_cycle(trace, noeud)¶ Vérifie si le noeud courant a déjà été visité par un autre chemin, et donc si l’on vient de parcourir un cycle dans l’espace de recherche.
Paramètres: trace (dict) – un dictionnaire contenant les noeuds déjà visités ; le dictionnaire associe à chaque élément le noeud qui l’encapsule. Cela permet de tester rapidement si l’élément du noeud courant est présent dans un autre noeud déjà visité. Retourne: True si le noeud courant a déjà été visité.
-
recherche(depart, but)¶ Recherche un chemin allant de
departjusqu’àbut.Paramètres: - depart – l’élément de départ.
- but – le l’élément but.
Retourne: le chemin de
depart `` à ``but, ou'échec's’il n’existe pas de chemin.
-
recherche_chemin(noeud_depart, noeud_but)¶ Recherche un chemin allant de
departjusqu’àbut.Paramètres: - noeud_depart – le noeud de départ.
- noeud_but – le noeud but.
Retourne: les éléments encapsulés au long du chemin, ou
'échec's’il n’existe pas de chemin.
-
trouve_successeurs(noeud)¶ Trouve les successeurs du noeud courant.
Retourne: une liste contenant les noeuds successeurs du noeud courant.
-
-
class
recherche.moteurs_recherche.dfs.RechercheDFS(espace, optimisee=False)¶
Bases: recherche.moteurs_recherche.recherche.Recherche
Recherche de chemin avec DFS.
RechercheDFS.__init__(espace, optimisee=False)¶
Paramètres:
- espace – l’espace de recherche.
- optimiser – indique si la recherche doit être optimisée pour éviter les cycles.
RechercheDFS.detecte_cycle(trace, noeud)¶Vérifie si le noeud courant a déjà été visité par un autre chemin, et donc si l’on vient de parcourir un cycle dans l’espace de recherche.
Paramètres: trace (dict) – un dictionnaire contenant les noeuds déjà visités ; le dictionnaire associe à chaque élément le noeud qui l’encapsule. Cela permet de tester rapidement si l’élément du noeud courant est présent dans un autre noeud déjà visité. Retourne: True si le noeud courant a déjà été visité.
RechercheDFS.recherche(depart, but)¶Recherche un chemin allant de
departjusqu’àbut.
Paramètres:
- depart – l’élément de départ.
- but – le l’élément but.
Retourne: le chemin de
depart `` à ``but, ou'échec's’il n’existe pas de chemin.
RechercheDFS.recherche_chemin(noeud_depart, noeud_but)¶Recherche un chemin allant de
departjusqu’àbut.
Paramètres:
- noeud_depart – le noeud de départ.
- noeud_but – le noeud but.
Retourne: les éléments encapsulés au long du chemin, ou
'échec's’il n’existe pas de chemin.
RechercheDFS.trouve_successeurs(noeud)¶Trouve les successeurs du noeud courant.
Retourne: une liste contenant les noeuds successeurs du noeud courant.
-
class
recherche.moteurs_recherche.bfs.RechercheBFS(espace, optimisee=False)¶
Bases: recherche.moteurs_recherche.recherche.Recherche
Recherche de chemin avec BFS.
RechercheBFS.__init__(espace, optimisee=False)¶
Paramètres:
- espace – l’espace de recherche.
- optimiser – indique si la recherche doit être optimisée pour éviter les cycles.
RechercheBFS.detecte_cycle(trace, noeud)¶Vérifie si le noeud courant a déjà été visité par un autre chemin, et donc si l’on vient de parcourir un cycle dans l’espace de recherche.
Paramètres: trace (dict) – un dictionnaire contenant les noeuds déjà visités ; le dictionnaire associe à chaque élément le noeud qui l’encapsule. Cela permet de tester rapidement si l’élément du noeud courant est présent dans un autre noeud déjà visité. Retourne: True si le noeud courant a déjà été visité.
RechercheBFS.recherche(depart, but)¶Recherche un chemin allant de
departjusqu’àbut.
Paramètres:
- depart – l’élément de départ.
- but – le l’élément but.
Retourne: le chemin de
depart `` à ``but, ou'échec's’il n’existe pas de chemin.
RechercheBFS.recherche_chemin(noeud_depart, noeud_but)¶Recherche un chemin allant de
departjusqu’àbut.
Paramètres:
- noeud_depart – le noeud de départ.
- noeud_but – le noeud but.
Retourne: les éléments encapsulés au long du chemin, ou
'échec's’il n’existe pas de chemin.
RechercheBFS.trouve_successeurs(noeud)¶Trouve les successeurs du noeud courant.
Retourne: une liste contenant les noeuds successeurs du noeud courant.
-
class
recherche.moteurs_recherche.astar.RechercheAStar(espace, optimisee=False)¶
Bases: moteurs_recherche.recherche.Recherche
Recherche de chemin avec A*.
RechercheAStar.__init__(espace, optimisee=False)¶
Paramètres:
- espace – l’espace de recherche.
- optimiser – indique si la recherche doit être optimisée pour éviter les cycles.
RechercheAStar.recherche(depart, but)¶Recherche un chemin allant de
departjusqu’àbut.
Paramètres:
- depart – l’élément de départ.
- but – le l’élément but.
Retourne: le chemin de
depart `` à ``but, ou'échec's’il n’existe pas de chemin.
RechercheAStar.recherche_chemin(noeud_depart, noeud_but)¶Recherche un chemin allant de
departjusqu’àbut.
Paramètres:
- noeud_depart – le noeud de départ.
- noeud_but – le noeud but.
Retourne: les éléments encapsulés au long du chemin, ou
'échec's’il n’existe pas de chemin.
RechercheAStar.trouve_successeurs(noeud)¶Trouve les successeurs du noeud courant.
Retourne: une liste contenant les noeuds successeurs du noeud courant.