Projet (partie graphes)

publicité
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)
Téléchargement