La première utilisation des graphes date de 1736 par Leonard Euler qui les a utilisés pour résoudre le problème des ponts de Koenigsberg.
Le problème est le suivant : En partant d'une zone de terre, est – il possible de revenir au point de départ en empruntant tous les points une fois et une seule.
Euler a étudié ce problème en construisant un graphe dans lequel les zones de terre sont les sommets et les ponts les arcs reliant les sommets.
Euler a défini le degré d'un sommet comme étant le nombre d'arcs qui lui sont incidents, et il a montré qu'il existe un chemin partout de n'importe quel sommet, passant par chaque arc exactement une fois et se terminant au point de départ si et seulement si le degré de chaque sommet est pair. Un tel chemin est un chemin eulérien.
[...] Le parcours est terminé quand la file est vide. Pour l'algorithme, on utilise un typeTfile avec les primitives initfile filevide enfiler(f, (pour enfiler un sommet), défiler (pour défiler un sommet) L'algorithme en C : En entrée : s :sommet de départ g :graphe visite :tableau de booléen En sortie : aucune Résultat : aucun Appel : largeur visite) Void largeur (int T_graph T_booleen visite [ ] ) { P_cellule t ; T_file f ; initfile ; traiter ; printf ; visite = VRAI ; enfiler ; while ( !filevide { s = défiler ; t = g.lsommet ; while { if ( !visite ( sommet] ) { printf t ( sommet) ; traiter sommet enfiler t ( sommet) ; visite ( sommet] = VRAI ; } t = t ( suivant ; } } } La boucle while est exécutée au plus n fois = nombre de sommets qui sont adjacent à s). [...]
[...] g sont les ponts reliant ces différentes zones. Le problème est le suivant :En partant d'une zone de terre, est il possible de revenir au point de départ en empruntant tous les points une fois et une seule. Euler a étudié ce problème en construisant un graphe dans lequel les zones de terre sont les sommets et les ponts les arcs reliant les sommets. c f d e b a g Euler a défini le degré d'un sommet comme étant le nombre d'arcs qui lui sont incidents, et il a montré qu'il existe un chemin partout de n'importe quel sommet, passant par chaque arc exactement une fois et se terminant au point de départ si et seulement si le degré de chaque sommet est pair. [...]
[...] Le graphe G3 est représenté par la matrice d'adjacence. Quel est le degré d'un sommet ? Pour un graphe non orienté, le degré de tout sommet i est la somme des éléments de la ligne i de la matrice d'adjacence. Pour 0 ( i ( n 1 Pour un graphe orienté : - le demi degré intérieur d'un sommet i est la somme sur la colonne i de la matrice d'adjacence. - le demi degré extérieur d'un sommet i est la somme sur la ligne i de la matrice d'adjacence. [...]
[...] Le parcours consiste à descendre le plus profondément dans un graphe quand cela est possible. Soit le graphe G5 suivant : La représentation par liste d'adjacence de ce graphe est la suivante : NULL NULL NULL NULL NULL NULL NULL NULL Le parcours en profondeur d'abord de ce graphe à partir de 0 donne : On part du sommet ensuite on choisit un sommet non visité t présent dans la liste d'adjacence de s et on procède à un parcours en profondeur à partir de t. [...]
[...] Pour des graphes incomplets, la plupart des éléments de la matrice sont nuls. Il est alors intéressant d'utiliser une représentation par listes d'adjacence )Listes d'adjacence Les n lignes de la matrice d'adjacence sont remplacées par n listes chaînées, une pour chaque sommet du graphe. Ainsi, chaque liste i ( i ( n contient les sommets qui sont adjacents au sommet i. Pour le graphe G1, la représentation par listes d'adjacence est : 0 NULL 1 NULL 2 NULL 3 NULL Pour G3 : 0 NULL 1 NULL 2 NULL La déclaration de la structure de données en C donne : #define MAX_SOMMET 50 typedef struct cellule *P_cellule ; typedef struct cellule { int sommet ; P_cellule suivant ; }T_cellule ; typedef struct graph { P_cellule lsommet [MAX_SOMMET] ; int nb_sommet ; }T_graphe ; On peut également utiliser un tableau pour stocker les listes d'adjacence, ce qui élimine les pointeurs. [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture