Graphes 1. Introduction 2. Définition 3. Représentation mémoire

Slides:



Advertisements
Présentations similaires
Introduction à la Théorie des graphes
Advertisements

La recherche de chemin optimal
Connexité.
Algorithmes et structures de données avancées Cours 7
Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 1 Cours n° 5 Structures de données abstraites.
Algorithmes et structures de données avancées Cours 4
Algorithmes et structures de données avancées Cours 6 Patrick Reuter
Algorithmes et structures de données avancés
Structures de données et complexité

Au programme du jour …. Un peu plus de structures de données
Introduction à la Théorie des graphes
UMLV 1 Problème G = (S, A) graphe (orienté) Calculer H = (S, B) où B est la clôture réflexive et transitive de A. Note : (s,t) B ssi il existe un chemin.
Modélisation par le concept de graphe
Mise à Niveau en Recherche Opérationnelle
Bloc1 : Théorie des graphes et problèmes d’ordonnancement
Bloc1 : Théorie des graphes et problèmes d’ordonnancement
Visualisation d’information interactive 5 : Graphes
A.Faÿ 1 Recherche opérationnelle Résumé de cours.
Chap. 1 INTRODUCTION Beaucoup de problèmes de la vie courante, tels la gestion de réseaux de communication ou l'ordonnancement de tâches, correspondent.
Chapitre VI. Arbres (définition, parcours, représentation)
Nombre de chaînes de longueur r
Chapitre VIII. Introduction aux graphes
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
Plus courts chemins On présente dans ce chapitre un problème typique de cheminement dans les graphes : la recherche d'un plus court chemin entre deux sommets.
Les structures de données arborescentes
Algorithmes Branch & Bound
Heuristiques A. Introduction B. Recherche d ’une branche
Théorie des graphes Un peu de vocabulaire.
Pr ZEGOUR Djamel Eddine
LES ARBRES IUP 2 Génie Informatique
Algorithme de Bellman-Ford
IFT-2000: Structures de données Les graphes Dominic Genest, 2009.
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT-2000
Coloration gap sommet identifiante de graphes
IFT Complexité et NP-complétude
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.

Algorithmes d ’approximation
Recherche Opérationnelle
- GRAPHES - Composantes et types
MODULE 6 Optimisation de GRAPHES
Les Graphes. Graphes Un graphe G = (V, E) consiste en un ensemble V de noeud, et un ensemble E darêtes, tels que chaque arête dans E relie une paire de.
21 février 2006Cours de graphes 2 - Intranet1 Cours de graphes Les plus courts chemins, les chemins les plus légers : à laide de la vague, à laide de la.
Programmation dynamique
Atelier de formation : MAT optimisation II (les graphes).
Pour le chemin le plus court pour tous les couples
Structures de données IFT-10541

Exploration systématique de graphes
Arbres et graphes.
GRAPHES EN INFORMATIQUE. INTRODUCTION Les objets mathématiques appelés graphes apparaissent dans de nombreux domaines comme les mathématiques, la biologie,
Tutorat 7 - Introduction au Routage et OSPF
Algorithmes Branch & Bound
LE FLOT MAXIMAL et LA COUPE MINIMALE
Modèles Mathématiques et représentation discrètes pour la description des images couleur Luc Brun.
Exploration systématique de graphes
Problème de double digestion
Algorithme de DIJKSTRA
Sixième étape : pondérer les graphes. Longueur d’une chaîne d’un graphe quelconque = nombre des arêtes qui la constituent. Distance entre deux sommets.
CSI2510 Structures de données et algorithmes Plus court chemin
Traversées (Parcours ) de graphes
Introduction à la Théorie des graphes
Algorithmes Branch & Bound Module IAD/RP/RO Master d ’informatique Paris 6 Philippe Chrétienne.
Cycle, Cocycle, Arbre et Arborescence
Pr ZEGOUR Djamel Eddine
Transcription de la présentation:

Graphes 1. Introduction 2. Définition 3. Représentation mémoire 2.1 Graphe orienté 2.2 Graphe non orienté 3. Représentation mémoire 3.1 Matrice 3.2 Tableau de listes 4. Modèle 5. Parcours des graphes 5.1 ‘Depht first search’ 5.2 ‘Breadh First search’ 6. Applications. 6.1 Détermination du plus court chemin ( Algorithme de Dijkstra) 6.2 Problème du Voyageur du Commerce (PVC)

Graphes Introduction Les graphes sont des modèles pour représenter des relations entre objets(graphe orienté) ou des relations symétriques entre eux (graphe non orienté) Les sommets d'un graphe peuvent par exemple représenter des objets et les arcs des relations entre objets.

Graphes Graphe orienté : Ensemble de couples (u, v), u et v appartiennent à un ensemble de sommet( ou de nœuds). u est appelé la tête et v la queue. A chaque couple(u, v) est associé un arc u-->v. Nous dirons que u est adjacent à v. Un chemin est la séquence v1, v2, ...vn de sommets tels que v1-->v2, v2-->v3, ...vn-1-->vn sont des arcs. Longueur d’un chemin : nombre d'arcs qui le composent. Un chemin simple : tous les nœuds, sauf éventuellement le premier et le dernier, sont distincts. Graphe étiqueté.

Graphes Graphe orienté Composante fortement connexe d'un graphe est composé de l'ensemble maximal de nœuds dans lequel il existe un chemin de tout nœud de l'ensemble vers chaque autre nœud de l'ensemble. Formellement, soit G=(V, E) un graphe. On peut partitionner V en classes d'équivalence Vi : v1, v2, ...vr v equiv w <==> Il existe un chemin de v à w et un chemin de w à v. Soit Ti l'ensemble des arcs avec les têtes et les queues dans Vi. Les graphes Gi=(Vi, Ei) sont appelés les composantes fortement connexes de G. Un graphe est dit fortement connexe s'il a une seule composante fortement connexe.

Graphes Graphe non orienté Ensemble de paires ou d'arêtes(u, v). Chaque arête (u, v) représente en fait les deux arcs u-->v et v-->u. On parlera de cycle au lieu de circuit, Chaîne au lieu de chemin. Graphe connexe, ect... Arbre : Graphe non orienté connexe sans cycle. Graphe orienté fortement connexe et sans circuit.

Graphes Représentation mémoire 1. Matrice Si V = {v1, v2, ..., vn} est l'ensemble des sommets, le graphe est représenté par une matrice A[n, n] de booléens tels que A[i, j] est vrai s'il existe un arc de i vers j. Si le graphe est étiqueté, A[i, j] représentera la valeur. 2. Tableaux de listes linéaires chaînées Le graphe est représenté par un tableau Tete[1..n] où Tete[i] est un pointeur vers la liste des sommets adjacents à i.

Graphes

Graphes Modèle : CréerNoeud(u, info) LibérerNoeud(u) CréerArc(u, v, info) SupprimerArc(u, v) Valeur(u) : valeur rataché au noeud u Arc(u, v) : valeur ratachée à l'arc(u, v) Adjacent(u, i) : ième noeud adjacent à u.

Graphes Parcours d'un graphe : Depht first search parcours très utilisé sur les graphes : Recherche en profondeur d'abord". C'est la généralisation du parcours Préordre sur les arbres.

Graphes Parcours d'un graphe : Depht first search Principe : Initialement tous les nœuds sont marqués " non visités". Choisir un noeud v de départ et le marquer " visité". Chaque noeud adjacent à v, non visité, est à son tour visité en utilisant dfs récursivement. Une fois tous les noeuds accessibles à partir de v ont été visités, la recherche de v ( dfs(v) est complète. Si certains noeuds du graphe restent "non visités", sélectionner un comme nouveau noeud de départ et répéter le processus jusqu'à ce que tous les nœuds soient visités.

Graphes Parcours d'un graphe : Depht first search Algorithme : Dfs(v): Mark(v) := " visité" Pour chaque noeud w adjac à v: Si Mark(w)= " non visité" Dfs(w) Fsi Finpour

Graphes Parcours d'un graphe : Depht first search Initialisation : Pour v=1, n Mark(v):=" non visité " finpour Et comme appelant Pour v =1, n Si Mark(v) non visité: dfs(v) Fsi finpour L'algorithme construit une forêt (implicite) de recouvrement des recherches.

Graphes Parcours d'un graphe : Breadh first search Algorithme ( non récursif et utilise une file d'attente ) Mark(v) := "visité" CreerFile(F) ; Enfiler(F, v) Tantque Non Filevide(F) : Défiler(F, v) Pour w adjac à v Si Mark(w)non visité Mark(w):="visité" Enfiler(F, w) Inserer( v-->w , Arbre ) Fsi Finpour Fintantque

Graphes Parcours d'un graphe : Breadh first search Initialisation : Pour v=1, n Mark(v) := " non visité " finpour Appelant Pour v =1, n Si Mark(v) non visité : dfs(v) Fsi finpour

Graphes Application 1 : Détermination du plus court chemin ( Algorithme de Dijkstra) Soit G = (V, E) un graphe où V est l'ensemble des nœuds et E l'ensemble des arcs. Chaque arc a une valeur positive. Soit S un nœud quelconque. Le problème consiste à déterminer le coût du plus court chemin de S vers tous les autres nœuds de G, où la longueur d'un chemin désigne la somme des coûts des arcs sur ce chemin. G peut être par exemple, une carte de vols aériens, dans laquelle les nœuds représentent les villes et chaque arc u-->v représente la ligne aérienne de u vers v. La valeur de l'arc est donc le temps de vol de u vers v.

Graphes Algorithme de Dijkstra Soient V = { 1, 2, ..., n} et S = 1. C[1..n, 1..n] tableau de coûts tel que C[i, j] est le coût de l'arc i-->j sinon c'est l'infini. Le tableau D contiendra après exécution, la plus courte distance de S vers tous les autres nœuds. S = {1}

Graphes Algorithme de Dijkstra {initialisation des distances de S vers tous les autres nœuds } Pour i=2, n : D[i] := C[1, i] Finpour Pour i=1, n-1 . Choisir un nœud w dans V-S tel que D[w] est minimale. . Ajouter w à S . Pour chaque nœud v dans V-S D[v]=Min(D[v],D[w]+C[w,v])

Graphes Algorithme de Dijkstra ( Exemple )

Graphes Algorithme de Djikstra ( Trace ) w - 2 4 3 5 D[2 ] 10 10 10 10 10 D[3] & 60 50 50 50 D[4] 30 30 30 30 30 D[5] 100 100 90 60 60

Graphes Application 2 : Problème du Voyageur du Commerce (PVC) Un cycle Hamiltolnien dans un graphe non orienté est un chemin incluant tous les nœuds du graphe. Le PVC consiste à trouver dans un graphe étiqueté non orienté un cycle Hamiltolnien de poids minimal.