{width=40%}
{width=40%}
::::
::::
...
@@ -269,12 +270,12 @@ avec $k$ la longueur de la chaîne (le nombre d'arêtes du chemin).
...
@@ -269,12 +270,12 @@ avec $k$ la longueur de la chaîne (le nombre d'arêtes du chemin).
## Définition
## Définition
* Un **cycle** dans un graphe *non-orienté* est une chaîne de longueur $\geq 3$ telle que le 1er sommet de la chaîne est le même que le dernier, et dont les arêtes sont distinctes.
* Un **cycle** dans un graphe *non-orienté* est une chaîne de longueur $\geq 3$ telle que le 1er sommet de la chaîne est le même que le dernier, et dont les arêtes sont distinctes.
* Pour un graphe *orienté* on parle de **circuit**.
* Pour un graphe *orienté*, on parle de **circuit**.
* Un graphe sans cycles est dit **acyclique**.
* Un graphe sans cycles est dit **acyclique**.
## Exemples
## Exemples
{width=100%}
{width=100%}
# Question de la mort
# Question de la mort
...
@@ -289,7 +290,7 @@ avec $k$ la longueur de la chaîne (le nombre d'arêtes du chemin).
...
@@ -289,7 +290,7 @@ avec $k$ la longueur de la chaîne (le nombre d'arêtes du chemin).
* La complexité des algorithmes sur les graphes s'expriment en fonction du nombre de sommets $V$, et du nombre d'arêtes $E$:
* La complexité des algorithmes sur les graphes s'expriment en fonction du nombre de sommets $V$, et du nombre d'arêtes $E$:
* Si $|E|\sim |V|^2$, on dit que le graphe est **dense**.
* Si $|E|\sim |V|^2$, on dit que le graphe est **dense**.
* Si $|E|\sim |V|$, on dit que le graphe est **peu dense**.
* Si $|E|\sim |V|$, on dit que le graphe est **peu dense**.
* Selon qu'on considère des graphes denses ou peu denses, différentes structure de données peuvent être envisagées.
* Selon qu'on considère des graphes denses ou peu denses, différentes structures de données peuvent être envisagées.
## Question
## Question
...
@@ -461,7 +462,7 @@ $$
...
@@ -461,7 +462,7 @@ $$
. . .
. . .
* $\mathcal{O}(|V|^2)$.
* $\mathcal{O}(|V|^2)$
* Quel est l'espace nécessaire pour stocker une matrice d'adjacence pour un graphe non-orienté?
* Quel est l'espace nécessaire pour stocker une matrice d'adjacence pour un graphe non-orienté?
. . .
. . .
...
@@ -488,7 +489,7 @@ $$
...
@@ -488,7 +489,7 @@ $$
# La liste d'adjacence (non-orienté)
# La liste d'adjacence (non-orienté)
* Pour chaque sommet $v\in V$, stocker les sommets adjacents à $v$-
* Pour chaque sommet $v\in V$, stocker les sommets adjacents à $v$.
* Quelle structure de données pour la liste d'adjacence?
* Quelle structure de données pour la liste d'adjacence?
. . .
. . .
...
@@ -573,31 +574,31 @@ graph LR;
...
@@ -573,31 +574,31 @@ graph LR;
. . .
. . .
$$
$$
\mathcal{O}(|E|)
\mathcal{O}(|V|+|E|)
$$
$$
* Pour les graphes *non-orientés*: $\mathcal{O}(2|E|)$.
* Pour les graphes *non-orientés*: $\mathcal{O}(|V|+2|E|)$.
* Pour les graphes *orientés*: $\mathcal{O}(|E|)$.
* Pour les graphes *orientés*: $\mathcal{O}(|V|+|E|)$.
## Définition
## Définition
* Le **degré** d'un sommet $v$, est le nombre d'arêtes incidentes du sommet (pour les graphes orientés on a un degré entrant ou sortant).
* Le **degré** d'un sommet $v$, est le nombre d'arêtes incidentes du sommet (pour les graphes orientés on a un degré entrant ou sortant).
* Comment on retrouve le degré de chaque sommet avec la liste d'adjacence?
* Comment retrouve-t-on le degré de chaque sommet avec la liste d'adjacence?
. . .
. . .
* C'est la longueur de la liste chaînée.
* C'est la longueur de la liste chaînée si le graphe est non-orienté.
# Parcours
# Parcours
* Beaucoup d'applications nécessitent de parcourir des graphes:
* Beaucoup d'applications nécessitent de parcourir des graphes:
*Trouver un chemin d'un sommet à un autre;
*trouver un chemin d'un sommet à un autre;
*Trouver si le graphe est connexe;
*trouver si le graphe est connexe.
* Il existe *deux* parcours principaux:
* Il existe *deux* parcours principaux:
* en largeur (Breadth-First Search);
* en largeur (Breadth-First Search);
* en profondeur (Depth-First Search).
* en profondeur (Depth-First Search).
* Ces parcours créent *un arbre* au fil de l'exploration (si le graphe est non-connexe cela crée une *forêt*, un ensemble d'arbres).
* Ces parcours créent *un arbre* au fil de l'exploration (si le graphe est non-connexe, cela crée une *forêt*, c.-à-d. un ensemble d'arbres).