Pour un arc u = (x i, x j ), x i est l origine et x j est la destination. une partie de. Un arc (x i,x i ) est appelé uneboucle.

Documents pareils
Eléments de Théorie des Graphes et Programmation Linéaire

Chapitre 5 : Flot maximal dans un graphe

MIS 102 Initiation à l Informatique

Introduction à la théorie des graphes. Solutions des exercices

Une nouvelle approche de détection de communautés dans les réseaux sociaux

Théorie des Graphes Cours 3: Forêts et Arbres II / Modélisation

Feuille TD n 1 Exercices d algorithmique éléments de correction

Quelques algorithmes simples dont l analyse n est pas si simple

Exemples de problèmes et d applications. INF6953 Exemples de problèmes 1

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

STAGE IREM 0- Premiers pas en Python

BACCALAUREAT GENERAL MATHÉMATIQUES

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

Modèles à Événements Discrets. Réseaux de Petri Stochastiques

Faculté des sciences Département de mathématiques. Théorie des graphes

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Introduction au maillage pour le calcul scientifique

L exclusion mutuelle distribuée

1 Définition et premières propriétés des congruences

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Licence Sciences et Technologies Examen janvier 2010

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Baccalauréat ES Antilles Guyane 12 septembre 2014 Corrigé

Conception de réseaux de télécommunications : optimisation et expérimentations

Correction du baccalauréat ES/L Métropole 20 juin 2014

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

Info0804. Cours 6. Optimisation combinatoire : Applications et compléments

Resolution limit in community detection

Probabilités. C. Charignon. I Cours 3

Chapitre 6. Fonction réelle d une variable réelle

Intelligence Artificielle Planification

Chp. 4. Minimisation d une fonction d une variable

Les structures de données. Rajae El Ouazzani

Programmation linéaire

Objectifs. Clustering. Principe. Applications. Applications. Cartes de crédits. Remarques. Biologie, Génomique

4 Exemples de problèmes MapReduce incrémentaux

Programmation par contraintes. Laurent Beaudou

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

Introduction à la théorie des graphes

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Université Paris-Dauphine DUMI2E 1ère année, Applications

Chapitre 2 Le problème de l unicité des solutions

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

TP3 : Manipulation et implantation de systèmes de fichiers 1

Master IMA - UMPC Paris 6 RDMM - Année Fiche de TP

Algorithmes récursifs

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

Statistiques Descriptives à une dimension

Cours de Probabilités et de Statistique

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

Cours de Master Recherche

MANUEL DRIVELINK DRIVELINK

ARBRES BINAIRES DE RECHERCHE

Programmes des classes préparatoires aux Grandes Ecoles

Nouvelles propositions pour la résolution exacte du sac à dos multi-objectif unidimensionnel en variables binaires

Exercices - Polynômes : corrigé. Opérations sur les polynômes

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Rappel sur les bases de données

Parallélisme et Répartition

Intégration de la dimension sémantique dans les réseaux sociaux

Cours d algorithmique pour la classe de 2nde

L apprentissage automatique

BACCALAURÉAT GÉNÉRAL SESSION 2012 OBLIGATOIRE MATHÉMATIQUES. Série S. Durée de l épreuve : 4 heures Coefficient : 7 ENSEIGNEMENT OBLIGATOIRE

1 Recherche en table par balayage

Atelier Transversal AT11. Activité «Fourmis» Pierre Chauvet.

Par : Abdel YEZZA, Ph.D. Date : avril 2011 / mise à jour oct (ajout de la section 3 et augmentation de la section 1)

Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR

Modélisation multi-agents - Agents réactifs

Cours Informatique Master STEP

Résolution d équations non linéaires

Agrégation des portefeuilles de contrats d assurance vie

Techniques d interaction dans la visualisation de l information Séminaire DIVA

Cours de Recherche Opérationnelle IUT d Orsay. Nicolas M. THIÉRY. address: Nicolas.Thiery@u-psud.fr URL:

Continuité et dérivabilité d une fonction

Pourquoi l apprentissage?

ÉPREUVE COMMUNE DE TIPE Partie D

MABioVis. Bio-informatique et la

Eteindre. les. lumières MATH EN JEAN Mme BACHOC. Elèves de seconde, première et terminale scientifiques :

Plus courts chemins, programmation dynamique

Programmation Linéaire - Cours 1

Les arbres binaires de recherche

Représentation d un entier en base b

Cours Fonctions de deux variables

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Bac Blanc Terminale ES - Février 2011 Épreuve de Mathématiques (durée 3 heures)

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Géométrie Algorithmique Plan du cours

Qu est-ce qu une probabilité?

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Entraînement au concours ACM-ICPC

Baccalauréat ES/L Métropole La Réunion 13 septembre 2013 Corrigé

Ebauche Rapport finale

Optimisation for Cloud Computing and Big Data

Glossaire des nombres

Système immunitaire artificiel

Algorithmique et Programmation

Texte Agrégation limitée par diffusion interne

Jeux sous forme extensive (Jeux dynamiques)

Transcription:

. éfinition et concepts de base MP Lycée Janson de Sailly Chapitre Eléments NOTIONSde SURthéorie LES GRPHES des graphes La théorie des graphes est née en 76 quand Euler démontra qu il était impossible de traverser chacun des sept ponts de la ville russe de Königsberg (aujourd hui Kaliningrad) une fois exactement et de revenir La théorie au point des graphes de départ. est née en Les 76 ponts quandenjambent Euler démontra lesqu il bras était deimpossible la Pregel de traverser chacun des sept ponts de la ville russe de Königsberg (aujourd hui Kali- coulent unede foispart exactement et d autre et de revenir de l île au point de de Kneiphof. départ. Les ponts ansenjambent la figure quiningrad) suivante, les brasles de la noeuds Pregel qui représentent coulent de part lesetrives. Chapitre d autre de l île de Kneiphof. ans la figure suivante, les nœuds représentent les rives. Eléments de théorie des graphes B e manière générale, un graphe permet de représenter simplement la structure, les connexions, les cheminements possibles d un ensemble complexe comprenant un grand nombre de situations, en exprimant les relations, les dépendances entre ses éléments. Les graphes sont très utiles pour modéliser les réseaux de communication, les réseaux ferroviaire ou routier, les arbre généalogiques, les diagrammes de suc- La théorie des graphes est née en 76 quand Euler démontra qu il était impossible de traverser chacun des sept ponts de la ville russe de Königsberg (aujourd hui Kaliningrad) une fois exactement et de revenir Fig..: au point Les sept de départ. ponts de Les ponts enjambent Les 7 ponts de Königsberg les bras de la Pregel qui coulent de part et d autre de l île de Kneiphof. ans la figure suivante, La lesthéorie nœudsdes représentent graphes constitue les rives. un domaine des mathématiques qui, historiquement, s est aussi développé au sein de disciplines diverses telles que la chimie (modélisation de structures), la biologie (génome), les sciences sociales (modélisation des relations) ou en vue d applications industrielles (problème du voyageur de commerce). Elle constitue l un des instruments les plus courants et les plus efficaces pour résoudre des problèmes discrets C posés en Recherche Opérationnelle (RO). e manière B générale, un graphe B permet de représenter C simplement la structure, les connexions, les cheminements possibles d un ensemble complexe comprenant un grand nombre de situations, en exprimant les relations, les dépendances entre ses cession éléments de (e.g., tâches réseau en de gestion communication, de projet, réseaux etc ferroviaire... ou routier, arbre généalogique, diagramme de succession de tâches en gestion de projet,...). Fig..: Les sept ponts de Königsberg En plus de son existence purement mathématique, le graphe est aussi une structure aussi de une données structure puissante de pourdonnées l informatique. puissante pour l informatique. La théorie des graphes constitue un domaine des mathématiques qui, historiquement, s est aussi développé au sein de disciplines diverses telles que la chimie (modélisation de structures), la biologie (génome), les sciences sociales (modélisation des relations) ou en vued applications éfinitions industrielles (problème du voyageur de commerce). Elle constitue l un des instruments les plus courants et les plus efficaces pour résoudre des problèmes discrets posés en Recherche Opérationnelle (RO). e manière générale, un graphe permet de représenter simplement la structure, les connexions, graphes les cheminements non-orientés. possibles d un ensemble complexe comprenant un grand nombre de situations, en exprimant les relations, les dépendances entre ses éléments (e.g., réseau de communication, réseaux ferroviaire ou routier, arbre généalogique, diagramme de succession de tâches en gestion de projet,...). En plus de son existence purement mathématique, le graphe est aussi une structure de données puissante pour l informatique. C En plus de son existence purement mathématique, le graphe est Il existe deux types de graphes, les graphes orientés et les B C.. Concepts orientés ans beaucoup d applications, les relations entre éléments d un ensemble sont orientées, i.e., un élément x peut être en relation avec un autre y sans que y soit nécessairement en relation avec x. Onparlealorsdegrapheorienté (en nglais directed graph ou plus simplement digraph). Un graphe G =(X, U) est déterminé par: un ensemble X = {x,,...,x n } dont les éléments sont appelés sommets ou Soit S = {x, nœuds,..., (cex dernier n } unterme ensemble est plutôt fini dans dele contexte cardinal desn, réseaux) dont; les CHP. - ELÉMENTS E THÉORIE ES GRPHES (P. Lopez) 4 un ensemble U = {u,u,...,u m } du produit cartésien X X dont les éléments sont appelés arcs. Soit. U éfinition une partie de Pour un arc et S u concepts S, formée =(x i,x j ), x i de donc est base de couples (x l extrémité initiale, x j l extrémité i, x j ). U est finale (ou bien origine et destination). L arc u part de x i et arrive à x j... Concepts Graphiquement, orientésl arc u se représente de la manière suivante (diagramme sagittal) :. Graphes orientés éléments seront par la suite appelés sommets. appelé ensemble des arcs. éfinition : graphe orienté ans beaucoup d applications, les relations entre élémentsu d un ensemble sont orientées, i.e., un élément x peut être en relation avec un autre y sans que y soit nécessairement en relation avec x. Onparlealorsdegrapheorienté (en nglais directed graph ou plus simplement digraph). Un graphe G =(X, U) est déterminé par: Fig..: rc u =(x i,x j ) un ensemble X = {x Un arc (x,x i,,...,x i ) est appelé n } dont les éléments sont appelés sommets ou uneboucle. nœuds (ce dernier terme est plutôt dans le contexte des réseaux) ; un ensemble U = {u,u,...,u m } du produit cartésien X X dont les éléments sont appelés arcs. Pour un arc u =(x i,x j ), x i est l extrémité initiale, x j xl extrémité i finale (ou bien origine et destination). L arc u part de x i et arrive à x j. Graphiquement, l arc u se représente de la manière Fig. suivante.: Boucle (diagramme sagittal) : Un graphe orienté est un couple x i G = (S, U) où S est x j un ensemble fini appelé ensemble des sommets et où U est une partie de S S, appelé ensemble des arcs associé à S. Pour un arc u = (x i, x j ), x i est l origine et x j est la destination. L arc u part de x i et arrive à x j. Graphiquement, l arc u se représente de la manière suivante (diagramme sagittal) : Un p-graphe est un grapheu dans lequel il n existe jamais plus de p arcs de la forme (i, j) entre deux sommets quelconques. x i Un arc (x i,x i ) est appelé uneboucle. Fig..: rc u =(x i,x j ) Exemple : prenons S = {x,, x, } et U = { (x, ), (x, x ), (x, ), (, ), (, x ) }. Le graphe G = (S, U) est représenté sur la figure suivante : x i x Fig..: Boucle x x x x Un p-graphe est un graphe Fig. dans.4: lequel -graphe il n existe jamais plus de Fig. p arcs.5: de -graphe la forme graphe (i, j) entre deux sommets quelconques. x La densité d un-grapheestdonnée par le quotient m/n,rapportdunombreeffectif d arcs sur le nombre maximal théorique. x x Fig..4: -graphe Un arc (x i, x i ) s appelle une boucle. x j x x Fig..5: -graphe graphe La densité d un-grapheestdonnée par le quotient m/n,rapportdunombreeffectif d arcs sur le nombre maximal théorique. x

. Graphes non-orientés ans un graphe non-orienté, U est un ensemble formé uniquement de singletons de type {x i } ou de paires {x i, x j } d éléments de S. U est appelé ensemble d arêtes. Un graphe non orienté est alors simplement défini comme un couple G = (S, U). Une arête {x i, x j } est représentée par un simple trait liant les deux sommets x i et x j. x i x j Par exemple, la version non-orientée du graphe précédent est donnée par S = {x,, x, } et : U = { { }, {x, }, {x, x }, {x, }, {, x } } Ce graphe est représenté ci-dessous : x.4 Représentation par une matrice d adjacence La représentation d un graphe dans un ordinateur peut se faire à l aide d une matrice d adjacence. ans ce but, étant donné la bijection qui existe entre tout ensemble fini S = {x,,...x n } et l intervalle entier [[0, n ]], l ensemble des sommets sera dorénavant cet intervalle entier. Un sommet sera donc un entier naturel compris entre 0 et n. éfinition (matrice d adjacence) Étant donné un graphe G = (S, U) (orienté ou non), avec S = [[0, n ]], la matrice d adjacence est la matrice n n définie par : { s il existe un arc ou une arête entre i et j ij = 0 sinon Exemples : ) Quelle est la matrice d adjacence associée au graphe représenté ci-après? x. Sommets adjacents (ou voisins) éfinition eux sommets sont dits adjacents (ou voisins) s ils sont joints par un arc (dans le cas orienté) où une arête (dans le cas non-orienté). 0 ) Quelle est la matrice d adjacence associée au graphe non-orienté ci dessous?. Une deuxième possibilité est d utiliser des listes d adjacence, dont nous ne parlerons pas ici, mais que les étudiants en option informatique peuvent avoir déjà étudié.

0 x 0 5 u u 4 ) Quelle est la propriété d une matrice d adjacence associée à un graphe non-orienté? Cas d un graphe pondéré Un graphe peut être pondéré. ans un tel graphe, les différents arcs ou arête sont affectés de poids qui sont des nombres représentant une propriété. Par exemple, si un graphe a pour sommets des villes et pour arêtes des routes entre chaque ville, alors on peut décider que chaque arête aura comme poids le nombre de kilomètres entre les deux villes qu elle relie. ans le cas où le graphe est pondéré, on peut convenir de remplacer les par les poids w ij associé à l arc (ou l arête) reliant i et j et les 0 par un nombre qui est différent de tous les poids w ij rencontrés. ij = { wij s il existe un arc ou une arête entre i et j a avec (i, j), a w ij. sinon.5 Chemin dans un graphe Un chemin entre deux sommets i et j d un graphe G est une suite d arcs (ou d arêtes) qui relient ces deux sommets. i est l origine du chemin et j en est l extrémité. Par exemple : u u u 6 u 7 u 5 x < (0, 4), (4, ), (, ) > est un chemin entre 0 et..6 rbre des chemins associé à un sommet Étant donné un sommet s, on peut construire un arbre des chemins dont ce sommet est le point de départ. La raison d être de cet arbre est de nous indiquer quels sont les sommets qui sont accessibles en prenant s comme point de départ. On dit que s est la racine de cet arbre. Ce concept marche pour des graphes orientés et non-orientés. Version naïve de la construction de l arbre Version efficace de la construction de l arbre x 0 5 u u u u 6 u 4 u 7 u 5 x Exemple : construire l arbre des chemins associé au sommet 0, puis celui associé au sommet..7 pplication Téléchargez le programme graphe.py sur le site de la mp. Celui-ci contient :

Un graphe simple (c est à dire non pondéré) G = (S, U) où S est déclaré sous la forme d une liste de sommets et où U est une liste de listes à éléments qui sont les arcs entre deux sommets. Un graphe pondéré G = (S, U) où U est donné sous la forme d une liste de listes à éléments [i, j, wij] : les deux premiers éléments représentent l arc (i, j) et le troisième élément wij est le poids de cet arc. Tous les poids étant strictement positifs, on pourra choisir 0 dans la matrice d adjacence pour indiquer qu il n y a pas d arc entre i et j.. essiner les deux graphes G et G.. Écrire une fonction Matdj(S, U) qui prend S et U en paramètres et qui retourne la matrice d adjacence du graphe (S, U).. Écrire de même une fonction MatdjPond(S, U) qui fait la même chose dans le cas d un graphe pondéré. 4. Écrire une liste couleur de n = Card(S) éléments et telle que couleur[i] soit la couleur du sommet i. Pour sa création, cette liste sera initialisée en donnant "blanc" comme valeur à tous ses éléments. Résumé : l algorithme utilise :. Une liste distance qui contient les distances entre les sommets i et l origine s0. Cette liste est initialisée : distance[i] = si i s0 et distance[s0] = 0 La liste est mise à jour à chaque étape de l algorithme.. Une liste de sommets F dont la distance peut encore varier, appelée file de priorité.. Une fonction extrairemin(f) qui élimine de F le sommet i0 dont la distance à s0 est la plus petite. Cette fonction renvoie i0. 4. Une fonction recalculer(u, v, ) qui recalcule la distance entre les sommets u et v. est la matrice d adjacence et [u,v] est le poids de l arc (arête) (u, v). lgorithme de ijkstra : plus court chemin entre deux sommets dans un graphe L algorithme de ijkstra permet de trouver le plus court chemin entre un sommet origine s0 et tout sommet accessible s dans un graphe pondéré où tous les poids sont positifs. Typiquement, le poids w ij de l arc (i, j) représente la distance entre i et j. Cet algorithme fonctionne aussi bien pour les graphes non orientés que pour les graphes orientés. Principe : sur feuille. 4

Parcours d un graphe en profondeur Partant d un sommet origine s 0 S, nous voulons visiter (explorer) tous les sommets accessibles à partir de s 0. Il y a deux façons de le faire : par un parcours en largeur ou par un parcours en profondeur. Nous n examinerons ici que le parcours en profondeur.. Parcours en profondeur ans le parcours en profondeur, on utilise une fonction récursive visiter(u, S, ) où u est un sommet du graphe, S l ensemble des sommets et la matrice d adjacence associée. Principe : sur feuille Implémentation en Python : dans fichier.py. Questions. essiner l arbre des appels récursifs obtenu en lançant la fonction visiter(0, S, ) pour le graphe représenté ci-dessous. Vous indiquerez pour chaque sommet l ordre dans lequel il a été visité. 0 4. On peut programmer l ordre des visites des sommets grâce à une liste ordre qui est d abord initialisée à [] (liste vide). À chaque fois qu un sommet est visité, on l insère "à droite" dans cette liste. Écrire la fonction pretraitement(u) pour qu elle mette à jour la liste ordre (déclarée comme une variable globale) lors de la visite du sommet u. 4. Tester visiter sur le graphe précédent qui est G = (S, U) dans le fichier graphe.py 5. Comment écrire un programme qui permet de visiter tous les sommets du graphe?. Composantes connexes d un graphe non orienté ans le graphe G précédent, il y a deux parties disjointes formées des sommets {0,,, 4, 5, 7} et {, 6} qu on appelle composantes connexes du graphe. Par définition : éf : composante connexe d un graphe non orienté On appelle composante connexe d un graphe G = (S, U) un sous-ensemble C S de sommets, tel que, (i, j) C, il existe un chemin entre i et j. Le parcours en profondeur permet de trouver toutes les composantes connexes d un graphe. 6 5 7 8. Même question si on part du sommet 4 en lançant visiter(4, S, ).. Écrire une liste connexe de n = Card(S) éléments qui sera initialisée avec des 0. Par définition : connexe[i] contiendra le numéro de la composante connexe associée au sommet i.. Écrire un programme utilisant la fonction visiter qui actualise la liste connexe (on pourra utiliser une variable numconnexe) au fur et à mesure de la découverte des sommets du graphe.. ppliquer ce programme au graphe G. 5