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

Un élément représentant une ville.

Ville.__init__(x, y, nom='')
Paramètres:
  • x – coordonnée en x de la ville.
  • y – coordonnée en y de la ville.
  • nom (str) – nom de la ville.
Ville.distance(ville)

Distance euclidienne entre la ville courante et la ville ville.

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 queue queue (à 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 depart jusqu’à 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 depart jusqu’à 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 depart jusqu’à 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 depart jusqu’à 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 depart jusqu’à 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 depart jusqu’à 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 depart jusqu’à 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 depart jusqu’à 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.