Implémentation

Nous allons voir trois techniques pour implémenter les graphes en Python.

Matrice d'adjacence

On utilise une matrice (comprenez un tableau à deux dimensions) pour représenter les liaisons entre les sommets du graphe. On utilise une liste de listes en Python.

Définition

La matrice d'adjacence d'un graphe contient autant de lignes et de colonnes qu'il y a de sommets dans le graphe.

Chaque coefficiant (chaque case du tableau) prend la valeur 0 ou 1 :

  • 0 si les sommets représentés par la ligne et la colonne du coefficiant ne sont pas reliés par une arête (ou un arc)

  • 1 s'ils sont reliés

Exemple

Matrice d'adjacence

1

2

3

4

5

6

1

0

1

0

0

0

1

2

1

0

1

0

0

1

3

0

1

0

1

0

0

4

0

0

1

0

1

1

5

0

0

0

1

0

0

6

1

1

0

1

0

0

ComplémentVariante

Il existe des variantes où la valeur du coefficiant indique le nombre d'arêtes, ou bien encore le poids de l'arête.

Listes d'adjacence

La liste d'adjacence d'une matrice indique pour chaque sommet avec quel autre sommet il est relié.

Définition

La liste d'adjacence d'un graphe est une liste qui contient autant de listes que de sommet. Chaque sous-liste liste les sommets reliés au sommet décrivant la sous-liste.

Exemple

Il est impératif de décaler la numérotation des sommets pour avoir les sommets 0, 1, 2 ... (les numéros suivent les indices dans la liste).

1
graphe = [
2
    [1, 5],
3
    [0, 2, 5],
4
    [1, 3],
5
    [4, 5],
6
    [3],
7
    [0, 1, 3]
8
]

Dictionnaire

Les deux méthodes vues posent un problème : il est difficile de conserver le libbelé des sommets. On propose donc un amélioration utilisant les listes d'adjacence et les dictionnaires.

Exemple

1
graphe = {
2
    1: [2, 6],
3
    2: [1, 3, 6],
4
    3: [2, 4],
5
    4: [5, 6],
6
    5: [4],
7
    6: [1, 2, 4]
8
}

Liste d'arêtes

Sur certains algorithmes, par exemple celui de Bellman-Ford, on préfére regarder le graphe comme une liste d'arêtes.

Définition

La liste d'arête d'un graphe est une liste qui contient autant d'éléments que le graphe comporte d'arêtes. Chaque élément est alors un tuple de sommet, où le premier est la source de l'arête et le second la destination.

Exemple

1
graphe = [
2
    (1, 2),
3
    (1, 6),
4
    (2, 1),
5
    (2, 3),
6
    (2, 6),
7
    (3, 2),
8
    (3, 4),
9
    (4, 3),
10
    (4, 5),
11
    (4, 6),
12
    (5, 4),
13
    (6, 1),
14
    (6, 2),
15
    (6, 4)
16
]