2026-01-17 23:10:49 +01:00
# Graphes et POO
2025-03-09 18:32:21 +01:00
> Tout comme les arbres, il nous est possible de représenter les graphes sous la forme d'une classe Python.
Nous souhaitons représenter le graphe ci-dessous sous la forme d'une classe Graphe.

On pourra créer celui-ci de cette manière
```python
g = Graphe ([ 'A' , 'B' , 'C' , 'D' , 'E' ])
g . ajoute_arete ( 'A' , 'B' )
g . ajoute_arete ( 'A' , 'C' )
g . ajoute_arete ( 'A' , 'D' )
g . ajoute_arete ( 'A' , 'E' )
g . ajoute_arete ( 'B' , 'C' )
g . ajoute_arete ( 'C' , 'D' )
g . ajoute_arete ( 'D' , 'E' )
```
Nous souhaitons aussi pouvoir tester si deux sommets sont voisins avec la méthode `sont_voisins` :
```python
>>> g . sont_voisins ( 'E' , 'A' )
True
>>> g . sont_voisins ( 'E' , 'B' )
False
```
Enfin, nous voulons pouvoir obtenir facilement la liste de tous les voisins d'un sommet avec la méthode `voisins` :
```python
>>> g . voisins ( 'C' )
[ 'A' , 'B' , 'D' ]
```
L'objet de type `Graphe` aura comme attributs :
- une liste `liste_sommets` (donnée en paramètre dans la liste `liste_sommets` )
- un dictionnaire `adjacents` , où chaque sommet se verra attribuer une liste vide `[]` .
### Implémentation
```python
class Graphe :
def __init__ ( self , liste_sommets ):
self . liste_sommets = liste_sommets
self . adjacents = { sommet : [] for sommet in liste_sommets }
def ajoute_arete ( self , sommetA , sommetB ):
self . adjacents [ sommetA ] . append ( sommetB )
self . adjacents [ sommetB ] . append ( sommetA )
def voisins ( self , sommet ):
return self . adjacents [ sommet ]
def sont_voisins ( self , sommetA , sommetB ):
return sommetB in self . adjacents [ sommetA ]
```
-------------
2026-01-17 23:10:49 +01:00
Merci à [Gilles Lassus ](https://glassus.github.io/terminale_nsi/T1_Structures_de_donnees/1.4_Graphes/cours/#3-creation-dune-classe-graphe ) pour la source.
---
Auteur : Florian Mathieu
2026-08-11 23:29:02 +02:00
Licence CC BY-SA
2026-01-17 23:10:49 +01:00
2026-08-11 23:29:02 +02:00
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Licence Creative Commons" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a> <br />Ce cours est mis à disposition selon les termes de la <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Licence Creative Commons Attribution - Partage dans les Mêmes Conditions 4.0 International</a>.