Implémentations de graphes 1 [email protected] Projet (partie graphes) Quels graphes Dans un premier temps, nous ne nous intéresserons qu'aux graphes orientés simples. Dénition Un graphe orienté simple G = (S , A) est la donnée d'un ensemble ni S (de sommets) et d'un ensemble A de couples d'éléments de S (d'arcs). Pour projet nal : graphes orientés simples valués 2 [email protected] Projet (partie graphes) Ensemble Constat Si on sait représenter un ensemble, on a une dénition naturelle d'un graphe sous forme d'objet avec deux attributs : un ensemble stockant les noms des sommets, un ensemble de couples de noms de sommets. Solutions en Python : Utilisation de listes, en faisant attention à l'unicité de chaque élément dans la liste (responsabilité du programmeur) Utilisation de la classe set. 3 [email protected] Projet (partie graphes) Ensemble Constat Si on sait représenter un ensemble, on a une dénition naturelle d'un graphe sous forme d'objet avec deux attributs : un ensemble stockant les noms des sommets, un ensemble de couples de noms de sommets. Solutions en Python : Utilisation de listes, en faisant attention à l'unicité de chaque élément dans la liste (responsabilité du programmeur) Utilisation de la classe set. 3 [email protected] Projet (partie graphes) Inconvénients et avantages implémentation 1 Avantage : Simple en représentation ; place mémoire faible ; Inconvénient Souvent peu manipulable algorithmiquement ; Conséquence sur la complexité en temps. 4 [email protected] Projet (partie graphes) Matrice booléenne Etape 1 : choix d'une indexation des sommets de 0 à n − 1 (n = nombre de sommets). Etape 2 : arc codé dans un tableau à deux dimensions (une liste de listes en python) tel que T [i ][j ] = 1 s'il y a un arc de i à j , T [i ][j ] = 0 sinon. 3b S 0 a aa <d e c 0 1 2 3 1 b 0 0 0 1 0 2 c 1 1 1 1 0 3 d 2 0 0 0 0 3 0 0 1 1 5 [email protected] Projet (partie graphes) Inconvénients et avantages implémentation 2 Avantage : Simple en représentation ; Utilisation possible de résultats d'algèbres linéaires. Inconvénient Souvent place mémoire perdue, problème pour de gros graphes. 6 [email protected] Projet (partie graphes) Représentation par ensemble de successeurs une liste, gérée comme un ensemble (pas de doublons) stockant les noms des sommets, une liste de listes de successeurs des sommets. Attention ! Si on appelle S la liste de sommets et Succ la liste de listes de successeurs et si i est le numéro d'un sommet, Succ [i ] est la liste de successeurs du sommet de nom S [i ]. 3b S aa <d e S = ['a', 'b', 'c', 'd'] Succ = [ [ 1 ], [ 1 ], [ 0, 1, 3 ], [ 3 ] ] c 7 [email protected] Projet (partie graphes) Inconvénients et avantages implémentation 3 Avantage : Simple en représentation ; Place mémoire optimisée ; Inconvénient : Moins manipulables que les matrices 8 [email protected] Projet (partie graphes) Choix Implémentation par matrices 9 [email protected] Projet (partie graphes) Etape 1 du projet Créer une classe Graphe_initiales_binomes. Avec comme attributs : une liste stockant les noms des chaînes de caractères ; une matrice d'entiers (0 ou 1) représentant les arcs. Avec comme premières méthodes : ajout d'un sommet ; ajout d'un arc ; achage d'un graphe. Plus éventuellement : suppression d'un sommet, suppression d'un arc. 10 [email protected] Projet (partie graphes)