CH.2 GRAPHES NON ORIENTÉS

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

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

LE PROBLEME DU PLUS COURT CHEMIN

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

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

Algorithmes de recherche

Pourquoi l apprentissage?

Jean-Philippe Préaux

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

Algorithmes d'apprentissage

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

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

Chapitre 5 : Flot maximal dans un graphe

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

CH.6 Propriétés des langages non contextuels

Communications collectives et ordonnancement en régime permanent pour plates-formes hétérogènes

chapitre 4 Nombres de Catalan

Cours des Méthodes de Résolution Exactes Heuristiques et Métaheuristiques

Ordonnancement. N: nains de jardin. X: peinture extérieure. E: électricité T: toit. M: murs. F: fondations CHAPTER 1

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Cours de Master Recherche

MIS 102 Initiation à l Informatique

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Resolution limit in community detection

Application 1- VBA : Test de comportements d'investissements

Continuité et dérivabilité d une fonction

Raisonnement par récurrence Suites numériques

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

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

Optimisation for Cloud Computing and Big Data

Cours Optimisation Partie Optimisation Combinatoire. Année scolaire Gérard Verfaillie ONERA/DCSD/CD, Toulouse

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

Colorations identiantes de graphes

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

Annexe 6. Notions d ordonnancement.

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

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/ Présentation. 1.2 Ressources

Conception d'un réseau de transport d'électricité

Programmation linéaire

4 Exemples de problèmes MapReduce incrémentaux

FONDEMENTS MATHÉMATIQUES 12 E ANNÉE. Mathématiques financières

Introduction à l étude des Corps Finis

Rapport de stage de première année de Master Optimisation de cache d instructions

t 100. = 8 ; le pourcentage de réduction est : 8 % 1 t Le pourcentage d'évolution (appelé aussi taux d'évolution) est le nombre :

Plus courts chemins, programmation dynamique

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme?

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme?

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

Algorithmique, graphes et programmation dynamique Notes de Cours Rapport de Travaux Pratiques. Laurent Canet

ARBRES BINAIRES DE RECHERCHE

Problèmes d ordonnancement dans les systèmes de production. Journée Automatique et Optimisation Université de Paris Mars 2003

Principes d implémentation des métaheuristiques

Nombres premiers. Comment reconnaître un nombre premier? Mais...

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

6. Les différents types de démonstrations

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Cryptographie et fonctions à sens unique

Table des matières. 1 Programmation linéaire 1

Programmation C++ (débutant)/instructions for, while et do...while

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

TP1 Méthodes de Monte Carlo et techniques de réduction de variance, application au pricing d options

Taux d évolution moyen.

Optimisation multi-objectif par colonies de fourmis : cas des problèmes de sac à dos

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

Ebauche Rapport finale

Cryptologie et physique quantique : Espoirs et menaces. Objectifs 2. distribué sous licence creative common détails sur

Simulation : application au système bonus-malus en responsabilité civile automobile

Structures algébriques

TSTI 2D CH X : Exemples de lois à densité 1

de calibration Master 2: Calibration de modèles: présentation et simulation d

Vers l'ordinateur quantique

Quelques tests de primalité

Fonction réciproque. Christelle MELODELIMA. Chapitre 2 :

DNS ( DOMAIN NAME SYSTEM)

Quelques algorithmes simples dont l analyse n est pas si simple

Chap 4. La fonction exponentielle Terminale S. Lemme : Si est une fonction dérivable sur R telle que : = et 0! = 1 alors ne s annule pas sur R.

Chapitre 3. Quelques fonctions usuelles. 1 Fonctions logarithme et exponentielle. 1.1 La fonction logarithme

Druais Cédric École Polytechnique de Montréal. Résumé

Cours 02 : Problème général de la programmation linéaire

Modélisation multi-agents - Agents réactifs

Fondements de l informatique Logique, modèles, et calculs

Circuits RL et RC. Chapitre Inductance

Théorie des graphes et optimisation dans les graphes

Corrigé des TD 1 à 5

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

Ministère de l Enseignement Supérieur et de la Recherche Scientifique. Mémoire de fin d études. Thème

Matrice d accès. Master SEMS, Pierre Paradinas. October 16, 2013

1 Recherche en table par balayage

Calculateur quantique: factorisation des entiers

Probabilités sur un univers fini

Calcul de développements de Puiseux et application au calcul du groupe de monodromie d'une courbe algébrique plane

NOTATIONS PRÉLIMINAIRES

1 - PRESENTATION GENERALE...

C f tracée ci- contre est la représentation graphique d une

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

Master of Science en mathématiques

Introduction à la théorie des graphes

Transcription:

CH.2 GRAPHES NON ORIENTÉS 2. Les graphes non orientés 2.2 L'arbre recouvrant de poids minimum 2. L'algoritme de Kruskal 2.4 L'algorithme de Prim Opti-comb. ch 2 2. Les graphes non orientés Certains problèmes ne font pas intervenir l'orientation des arcs. On a alors affaire à un graphe non orienté. Une autre façon de voir un tel graphe est d'imaginer qu'un arc st implique l'existence d'un arc ts. Dans la structure de données par liste de successeurs, il faut donc vérifier ces conditions. Les problèmes classiques sont la recherche d'un arbre recouvrant de poids minimum, la recherche de la connexité (simple), des points d'articulation, des circuits eulériens. Les problèmes précédents, applicables par exemple aux réseaux, sont résolubles par des algorithmes polynomiaux. D'autres problèmes de coloriage, de recherche de circuits hamiltoniens (voyageur de commerce), ne sont résolubles que par des algorithmes Opti-comb. ch 2 2

exponentiels, donc quasiment impossibles à résoudre de façon pratique. On doit donc, dans ce cas, recourir à des algorithmes approchés, fondés sur des hypothèses raisonnables (heuristiques) ou sur des méthodes de perturbations (recuit simulé). Ces problèmes font partie de la classe des problèmes NP-complets. La conjecture P NP, c'est-à-dire existe-t-il des problèmes pour lesquels il existe un algorithme exponentiel mais pas d'algorithme polynomial est un des problèmes ouverts dont la résolution rapporterait un million de dollars à son auteur. L'opinion générale est que cette conjecture est vraie. Si elle est fausse, tous les problèmes précédents, ainsi que de nombreux autres (notamment toute la cryptographie...) sont "faciles" à résoudre. Opti-comb. ch 2 2.2 L'arbre recouvrant de poids minimum Pour faire un réseau, on doit connecter des noeuds (sommets) par des lignes de communication (arêtes). L'établissement d'une ligne entre deux noeuds donnés a un certain coût (éventuellement infini). Le problème est de choisir quelles lignes construire de façon que tous les noeuds soient interconnectés au coût total minimum. Clairement, un tel réseau de coût minimal ne contient pas de cycle (sinon on pourrait enlever une des arêtes du cycle sans déconnecter). Un tel réseau est donc un arbre libre (c'est-à-dire un graphe connexe sans cycle). Un tel arbre libre est en fait un arbre (avec racine) dont on "oublie" la racine. Cet arbre est appelé arbre recouvrant de poids minimum (ARPM) Deux algorithmes différents permettent de résoudre le problème, le premier dû à Prim, le second à Kruskal. Opti-comb. ch 2 4

2 5 5 5 4 4 2 Graphe connexe avec l'arbre recouvrant de poids minimum. Poids 5. 5 Propriété à la base des algorithmes : si les sommets S du graphe sont divisés en 2 sous ensembles T et S T, alors tout ARPM contiendra au moins une arête de poids minimum reliant T à S T ; inversement, pour toute arête de poids minimum reliant T à S T, il existe un ARPM qui la contient. Opti-comb. ch 2 5 T S T Raisonnons par l'absurde : supposons que l'arpm ne contient aucune arête de poids s s' t t' minimum entre T et S T. Soit st une telle arête. Puisqu'on a un arbre recouvrant, il existe un chemin entre s et t dans cet arbre. Quand on ajoute st, on fait donc apparaître un cycle (donc un cycle élémentaire) qui contient s et t. Ce cycle contient nécessairement une arête, disons s't', qui relie un sommet de T à un sommet de S T. Si on enlève s't', on ne déconnecte donc pas le graphe (dans tout chemin contenant s't', on peut remplacer cette arête par l'autre chemin reliant s à t.) On a donc un graphe recouvrant connexe avec le même nombre n d'arcs. C'est donc un arbre recouvrant et son poids est strictement inférieur puisque s't' n'est pas de poids minimum. D'où contradiction. Réciproquement, si on part d'un ARPM, on choisit une arête st de poids minimum. Si elle n'est pas dans l'arpm, on peut de la rajouter, ce qui supprime cette fois une autre arête de poids également minimum. Opti-comb. ch 2

2. L'algorithme de Kruskal L'algorithme de Kruskal, est une implémentation directe de la propriété précédente. On construit un arbre, initialement vide, en choisissant à chaque étape l'arête de poids minimum reliant deux sommets non déjà reliés. Au départ, tous les sommets sont dans des composantes différentes. Si l'arête libre de poids minimum relie deux sommets dans des composantes distinctes, on la choisit et on fusionne les deux composantes auxquelles appartiennent ses extrémités. Sinon, on l'écarte et on examine l'arête de poids immédiatement supérieur. Opti-comb. ch 2 7 Exemple de l'algorithme de Kruskal 2 5 5 5 4 4 2 5 Composantes Arête Choix 2 4 5 oui 2 4 5 4 oui 2 4 5 25 oui 25 4 oui 4 25 4 non 2 oui 425 Opti-comb. ch 2 8

fonction KRUSKAL() { E = ; A = suite des arêtes triées; /**********************/ pour chaque sommet i faire /* Initialisation */ { /* n ensembles de */ CREER-ENSEMBLE(i); /* sommets */ } /**********************/ pour chaque arête(i, j) A faire /**********************/ si ENSEMBLE(i) ENSEMBLE(j) alors/* Iterations */ { /* Sommets non reliés */ E = E {(i, j)}; /* Arête ajoutée a E */ UNION-ENSEMBLES(i, j) /* Ensembles réunis */ } /* */ retourner(e); /**********************/ } Opti-comb. ch 2 9 La difficulté principale de l'algorithme de Kruskal est une implémentation efficace des sous-ensembles de l'ensemble des sommets. Plus précisément, il faut pouvoir - trouver le sous-ensemble auquel appartient un sommet donné ; - décider si deux sous-ensembles sont identiques ou différents ; - faire une union de deux sous-ensembles. Le temps d'exécution est très dépendant de la façon dont cette implémentation est réalisée. On peut réaliser ces sous-ensembles par des listes doublement chaînées. La création d'un ensemble à élément et l'union de 2 ensembles est en O(). La comparaison est en O(n). Opti-comb. ch 2 0

Complexité : En termes de complexité, on peut gérer les arêtes par une file de priorité, d'où O(a log a) = O(a log n). Si on gère les sous-ensembles par des listes doublement chaînées, l'initialisation est en O(n). La comparaison de 2 sous-ensembles étant en O(n) et l'union en O(), chaque itération est en O(n). Dans le pire des cas, on examine toutes les arêtes, soit, comme terme dominant de la complexité, O(n a). Une structure de forêt pour les sous-ensembles, associée à des algorithmes astucieux pour réaliser l'union permettent pour la totalité des itérations une complexité O(a log* n), où log* est la fonction logarithme itéré, fonciton réciproque de l'exponentielle itérée : exp*(k) = 2 exp*(k ) et exp* (0) =. (log* 2 4000 = 5) La complexité de l'algorithme de Kruskal est donc O(a log n). Opti-comb. ch 2 2.4 L'algorithme de Prim L'algorithme de Prim applique ce principe : l'ensemble T est initialisé avec un sommet ; puis, à chaque étape, on ajoute à cet ensemble le sommet de S T qui y est relié par l'arête de poids minimum ; de cette façon, on ne provoque pas de cycle et, comme le graphe est connexe, tous les sommets sont atteints. À chaque étape de l'itération, on cherche si le sommet qu'on vient de rajouter est relié par une arête de poids plus faible aux sommets non encore ajoutés. L'algorithme ressemble à celui de Dijkstra. La différence est dans la fonction d'actualisation. P[i, j] est le poids de l'arête de ij et si i et j ne sont pas reliés. On initialise S avec le sommet et on note D[i] le poids minimum d'une arête reliant S au sommet i. On choisit le sommet t qui a le D[t] minimum, puis on réévalue les D[i] des successeurs de t. Opti-comb. ch 2 2

2 5 5 5 4 4 2 5 Itér. S t D[2] D[] D[4] D[5] D[] 0 {} 5 {,} 5 5 4 2 {,,} 5 2 4 {,,,4} 4 5 2 4 4 {,,,4,2} 2 5 2 4 5 {,,,4,2,} 5 5 2 4 Un tableau C, modifié à chaque fois qu'une actualisation est faite, permet de retrouver les arêtes. Opti-comb. ch 2 fonction PRIM() { S = {}; /**********************/ pour chaque sommet i faire /* Initialisation */ { /* */ C[i] = ; D[i] = P[, i]; /* */ } /**********************/ pour k = à n - faire /**********************/ { /* Iterations */ t = sommet S tel que D[t] est minimum;/* */ S = S {t}; /* Sommet ajoute a E */ pour chaque i E adjacent à t faire/* */ si P[t, i] < D[i] alors /* Actualisation de D */ { /* */ D[i] = P[t, i]; /* */ C[i] = t; /* Actualisation de C */ } /* */ } /**********************/ } Opti-comb. ch 2 4

Complexité : La complexité est la même que pour l'algorithme de Dijkstra. Si le graphe a n sommets et a arêtes, l'initialisation est en O(n). Il y a n itérations. La recherche du minimum est en O(n) chaque fois, soit O(n 2 ) en tout Quant à l'actualisation, elle nécessite au total l'examen de toutes les arêtes dans les deux sens, soit 2a ; l'actualisation d'une valeur est en temps constant d'où O(a). Puisque typiquement n < a < n 2, la complexité finale est O(n 2 ). Ceci est vrai si le graphe est représenté par un tableau des successeurs. On peut représenter l'ensemble des sommets et les valeurs des tableaux par une file de priorité pour laquelle la recherche du minimum et l'actualisation d'une valeur sont en O(log n) ainsi que. On a ainsi une complexité O(a log n), bien meilleure si a < n 2. Comme pour Dijkstra, on peut en fait arriver à O(a + n log n) avec des tas de Fibonacci. Opti-comb. ch 2 5