ajout cours parcours, POO sur les graphes
This commit is contained in:
70
Graphes/POO.md
Normal file
70
Graphes/POO.md
Normal file
@@ -0,0 +1,70 @@
|
||||
## Graphes et POO
|
||||
|
||||
> 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]
|
||||
```
|
||||
|
||||
|
||||
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
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.
|
||||
Reference in New Issue
Block a user