====== Graphes ====== ===== Définition ===== {{ :nsi:terminales:graphes:graphe_1.svg|}} Un graphe est composé de sommets -- //vertex// -- liés par des arêtes -- //edges//. On pourra noter $G(\mathcal{S}, \mathcal{A})$ pour désigner le graphe G qui possède un ensemble S de sommets et un ensemble A d'arêtes -- en anglais, G(V, E), pour //vertex// et //edge//. Dans cet exemple, * $\mathcal{S} = \lbrace A, B, C, D, E\rbrace$, * $\mathcal{A} = \lbrace (A,D), (A,B), (A,C), (B,E), (B,C), (D,E) \rbrace$ La position des sommets n'a pas d'importance. Seuls importent l'ensemble des sommets et leurs connexions. Ces deux graphes sont équivalents au précédent. {{ :nsi:terminales:graphes:graphe_2.svg |}} {{ :nsi:terminales:graphes:graphe_3.svg |}} ===== Vocabulaire ===== * Le **degré** d'un sommet est le nombre d'arête ayant ce sommet pour extrémité.\\ //Le degré de A est 3.// * L' **ordre** d'un graphe est le nombre de sommets.\\ //Le graphe est d'ordre 5.// * Deux sommets sont **adjacents** s'ils liés par une arête.\\ //A et B sont adjacents mais pas A et E.// * Un **chemin** ou **chaîne**, est une suite de sommets adjacents décrivant un chemin dans le graphe.\\ //E-B-C-A-B est un chemin mais pas E-B-D-E car il n'y a pas d'arête B-D.// * Une **chaîne fermée** est un chemin dont le premier point est égal au dernier. Une chaîne fermée où aucun sommet n'est répété (sauf le point de départ) est un **cycle**.\\ //E-B-A-D est une chaîne fermée et un cycle.//\\ //E-B-A-C-B-A-D-E est toujours une chaîne fermée mais pas un cycle (peut dépendre des définitions)// * Un graphe **complet** est ou chaque sommet est adjacent avec tous les autres. * Un graphe **connexe** est un graphe dans lequel on peut trouver un chemin reliant toute paire de sommets. **Exemple de graphe complet** {{ :nsi:terminales:graphes:graphe_5.svg |}} **Exemple de graphe non connexe** {{ :nsi:terminales:graphes:graphe_4.svg |}} ===== Graphe orienté ===== {{:nsi:terminales:graphes:graphe_6.png?direct&200 |}} Si les arêtes sont dotées d'une orientation, on dit que le graphe est orienté . * Ci-contre, le passage C → A est possible mais pas A → C. * Le parcours en double sens B → E et E → B nécessite deux arêtes. * A → B → C → A est un cycle mais pas A → D ← E → B ← A. * On peut envisager le cas d'un sommet pointant sur lui-même. * On peut arriver à D mais pas en partir. ===== Matrice d'adjacence ===== La matrice est une grille représentant l'existence de connexion d'un sommet à l'autre. Nous avons **n** sommets. La matrice sera une grille de **n × n**. * Le chiffre à la ligne **i** et la colonne **j** est 1 si l'arête sommet i → sommet j existe. * Ainsi le **1** représente la l'arête E → B. $$\begin{pmatrix}1 & 1 & 0 & 1 & 0\\ 0 & 0 & 1 & 0 & 1\\ 1 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0\\ 0 & \textbf{1} & 0 & 1 & 0\end{pmatrix}$$ ===== Graphe pondéré ===== {{:nsi:terminales:graphes:graphe_7.png?direct&200 |}} Les arêtes sont **pondérées** par un nombre, un poids. Cet exemple est orienté mais on pourrait pondérer un graphe non-orienté. Par exemple, si les sommets représentent des lieux dans une ville, les arêtes des rues, les pondération pourraient représenter un temps de trajet. Il y a des sens unique et le parcours en sens contraire peut-être plus long s'il faut faire un détour. Un problème classique est justement de chercher le chemin le plus court d'un point à un autre.