diff --git a/Graphes/PARCOURS.md b/Graphes/PARCOURS.md
index c5ff0fd..3390dc8 100644
--- a/Graphes/PARCOURS.md
+++ b/Graphes/PARCOURS.md
@@ -39,6 +39,16 @@ def bfs(graphe, depart):
file.append(voisin)
```
+
+
+### Illustration du parcours en largeur
+
+
+
+
+
+
+
### Parcours en profondeur (DFS - Depth First Search)
Le parcours en profondeur explore un chemin le plus loin possible avant de revenir en arrière. C’est une approche de type pile (LIFO).
@@ -64,6 +74,14 @@ def dfs(graphe, depart, visite=None):
dfs(graphe, voisin, visite)
```
+
+
+### Illustration
+
+
+
+----------
+
### Détection de cycles dans un graphe
Un cycle est une chaîne fermée sans répétition d’arêtes. Pour détecter un cycle dans un graphe non orienté, on peut utiliser DFS :
@@ -138,3 +156,12 @@ class Graphe:
print(f"{sommet}: {', '.join(map(str, voisins))}")
```
+------
+
+
+
+Auteur : Florian Mathieu
+
+Licence CC BY NC
+
+
Ce cours est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.
diff --git a/Graphes/POO.md b/Graphes/POO.md
new file mode 100644
index 0000000..db50184
--- /dev/null
+++ b/Graphes/POO.md
@@ -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.
\ No newline at end of file
diff --git a/Graphes/assets/graphe_poo.png b/Graphes/assets/graphe_poo.png
new file mode 100644
index 0000000..e532cd7
Binary files /dev/null and b/Graphes/assets/graphe_poo.png differ