Arbres couvrants minimaux



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

Chapitre 5 : Flot maximal dans un graphe

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

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

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

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

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

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

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

Quelques Algorithmes simples

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

Sujet 4: Programmation stochastique propriétés de fonction de recours

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

MIS 102 Initiation à l Informatique

Définitions. Numéro à préciser. (Durée : )

Algorithmes de recherche

Intégration et probabilités TD1 Espaces mesurés

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

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

Annexe 6. Notions d ordonnancement.

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

Big Data et Graphes : Quelques pistes de recherche

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

Baccalauréat ES Antilles Guyane 12 septembre 2014 Corrigé

Programmation Par Contraintes

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

Fonctions de plusieurs variables

Recherche dans un tableau

Big Data et Graphes : Quelques pistes de recherche

Chp. 4. Minimisation d une fonction d une variable

I. Polynômes de Tchebychev

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

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

BACCALAUREAT GENERAL MATHÉMATIQUES

Théorème du point fixe - Théorème de l inversion locale

Créer et modifier un fichier d'import des coordonnées approximatives avec Excel

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

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

Calcul différentiel sur R n Première partie

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

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

Cours d Analyse. Fonctions de plusieurs variables

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

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

Intégration et probabilités TD1 Espaces mesurés Corrigé

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

FIMA, 7 juillet 2005

Optimisation Discrète

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

Programmation linéaire

Image d un intervalle par une fonction continue

Limites finies en un point

Calcul intégral élémentaire en plusieurs variables

3 Approximation de solutions d équations

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

Le théorème de Perron-Frobenius, les chaines de Markov et un célèbre moteur de recherche

Algorithmes d'apprentissage

SUR CERTAINS SYSTEMES D EQUATIONS AVEC CONTRAINTES DANS UN GROUPE LIBRE (*)

Géométrie Algorithmique Plan du cours

Ordonnancement temps réel

LE PROBLEME DU PLUS COURT CHEMIN

Année 2014/ er septembre Version de Anca Muscholl, issue du poly de Marc Zeitoun. 1/143

Model checking temporisé

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

CAC: Un algorithme d arc-consistance. configurable, générique et adaptatif.

Continuité et dérivabilité d une fonction

Architecture des Systèmes d Information Architecture des Systèmes d Information

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

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

Théorie des graphes et optimisation dans les graphes

Développement décimal d un réel

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

Electricité : caractéristiques et point de fonctionnement d un circuit

Structures algébriques

Informatique Théorique : Théorie des Langages, Analyse Lexicale, Analyse Syntaxique Jean-Pierre Jouannaud Professeur

TD 1 - Structures de Traits et Unification

Optimisation des fonctions de plusieurs variables

ARBRES BINAIRES DE RECHERCHE

ANALYSE CATIA V5. 14/02/2011 Daniel Geffroy IUT GMP Le Mans

FICHE UE Licence/Master Sciences, Technologies, Santé Mention Informatique

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Jean-Philippe Préaux

Rappels sur les suites - Algorithme

Cours de Master Recherche

Resolution limit in community detection

Programmation linéaire et Optimisation. Didier Smets

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

Chapitre 7. Récurrences

Algorithmes de Transmission et de Recherche de l Information dans les Réseaux de Communication. Philippe Robert INRIA Paris-Rocquencourt

Modélisation multi-agents - Agents réactifs

La classification automatique de données quantitatives

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

Problème 1 : applications du plan affine

1 - PRESENTATION GENERALE...

Programmation Linéaire - Cours 1

Algorithmique I. Algorithmique I p.1/??

Programmation linéaire

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

Optimisation Combinatoire (Méthodes approchées) II. Recherche Locale simple (Les bases)

Plus courts chemins, programmation dynamique

Transcription:

Arbres couvrants minimaux Algorithmique L François Laroussinie er décembre 00

Plan Définitions Algorithme de Prim Algorithme de Kruskal Application au voyageur de commerce

Plan Définitions Algorithme de Prim Algorithme de Kruskal Application au voyageur de commerce

Arbres couvrants minimaux G = (S,A,w) : non-orienté, connexe et valué (w : A R). Définitions : un arbre couvrant de G est un graphe T = (S,A ) avec A A, connexe et acyclique. un arbre couvrant T = (S,A ) est dit minimal lorsque : w(a ) = min{w(a ) T = (G,A )est un AC deg} avec w(a) def = (x,y) A w(x,y) Propriété :Existence d un ACM Tout graphe non-orienté, valué et connexe admet un ou plusieurs ACM.

Exemple d ACM q 0 q q 8 q q q 5 5 q 6

Exemple d ACM q 0 q q 8 q q q 5 5 q 6

Exemple d ACM q 0 q q 8 q q q 5 5 q 6

Construire un ACM On va construire un ACM T = (S,A ) de manière incrémentale. Au début, A est vide. A chaque étape, on va choisir une nouvelle arête (u,v) tq A {(u,v)} est toujours un sous-ensemble d un ACM pour G. Def : on dit alors que (u,v) est compatible avec A.

Construire un ACM On va construire un ACM T = (S,A ) de manière incrémentale. Au début, A est vide. A chaque étape, on va choisir une nouvelle arête (u,v) tq A {(u,v)} est toujours un sous-ensemble d un ACM pour G. Def : on dit alors que (u,v) est compatible avec A. Tout le problème est de pouvoir décider (efficacement) si une arête est compatible avec un A... Comment connecter à moindre coût des sommets non encore reliés par A?

Comment vérifier la compatibilité d une arête? Soient C,..., C k les k composantes connexes de (S,A ). - On prend une partition [S,S ] de S qui respecte A. (i.e. (x,y) A, x et y sont dans le même S i ) (ou chaque C i est inclue soit dans S, soit dans S ) - On choisit une arête (x,y) telle que : (x,y) traverse la partition [S,S ], ( def = (x S et y S ) ou (x S et y S ) et w(x,y) est minimale parmi ces arêtes traversantes. )

Exemple q 0 q q 8 q q q 5 5 q 6

Exemple q 0 q q 8 q q q 5 5 q 6

Exemple q 0 q q 8 q q q 5 5 q 6

Exemple q 0 q q 8 q q q 5 5 q 6

Exemple q 0 q q 8 q q q 5 5 q 6

Compatibilité Théorème Étant donnés : G = (S,A,w) un graphe non-orienté, valué et connexe, A A tel qu il existe un ACM de G contenant A, (S,S ) une partition qui respecte A, et (u,v) une arête traversante minimale de (S,S ), alors (u,v) est compatible avec A. (i.e. il existe un ACM contenant A {(u,v)}).

Plan Définitions Algorithme de Prim Algorithme de Kruskal Application au voyageur de commerce

Algorithme de Prim idée A chaque étape de la construction de A : A correspond à un arbre et un ensemble de sommets isolés; L algorithme choisit une arête de poids minimal qui relie l arbre à un sommet isolé.

Algorithme de Prim idée A chaque étape de la construction de A : A correspond à un arbre et un ensemble de sommets isolés; L algorithme choisit une arête de poids minimal qui relie l arbre à un sommet isolé. Propriété [correction de l algorithme de Prim] A chaque étape, l arête choisie est compatible : on applique le théorème avec la partition (S,S ) suivante : S les sommets de l arbre; S les sommets isolés.

Algorithme de Prim A = On choisit un sommet de départ s. On ajoute à A une arête (s,x) de poids minimal, On ajoute à A une arête (q,q ) reliant un sommet isolé à l arbre en construction et de poids minimal, 5 recommencer le point jusqu à la connection de tous les sommets. A est une solution!

Exemple q 0 q q q 7 8 q q q 5 5 q 8 q 6

Exemple q 0 q q q 7 8 q q q 5 5 q 8 q 6

Exemple q 0 q q q 7 8 q q q 5 5 q 8 q 6

Exemple q 0 q q q 7 8 q q q 5 5 q 8 q 6

Exemple q 0 q q q 7 8 q q q 5 5 q 8 q 6 w(a ) = 5

Choix du plus proche sommet... A chaque étape, l algorithme doit choisir un sommet isolé le plus proche possible (en une transition) de l arbre A.

Choix du plus proche sommet... A chaque étape, l algorithme doit choisir un sommet isolé le plus proche possible (en une transition) de l arbre A. On stocke les sommets isolés dans une file de priorité F : la priorité de x sera sa distance à l arbre A.

Choix du plus proche sommet... A chaque étape, l algorithme doit choisir un sommet isolé le plus proche possible (en une transition) de l arbre A. On stocke les sommets isolés dans une file de priorité F : la priorité de x sera sa distance à l arbre A. En plus de Extraire-Min, on a besoin des fonctions suivantes : IndiceDansF[x] : donne l indice de x dans F. Π[x] : indique par quelle arête x est le plus proche possible de l arbre. MaJ-F-Prim(F,d,G,x,Π,IndiceDansF) : met à jour F après l ajout de x dans A.

Algorithme de Prim Procédure Recherche-ACM-Prim(G,s 0 ) begin pour chaque s S faire Π[s] :={ nil 0 si s = s 0 d[s] := sinon A := F := File(S, d, IndiceDansF) tant que F faire s := Extraire-Min(F) IndiceDansF[s] := si s s 0 alors A := A {(Π(s),s)} MaJ-F-Prim(F,d,G,s,Π,IndiceDansF) return A end

Algorithme de Prim (suite) Procédure MaJ-F-Prim(F, d, G, s, Π, IndiceDansF) begin pour chaque (s,u) A faire si (IndiceDansF[u] ) (w(s,u) < d[u]) alors Π(u) := s d[u] := w(s,u) //On réorganise... //F[i] : le sommet à la position i dans F. i := IndiceDansF[u] tant que (i/ ) (d[f[i/]] > d[f[i]]) faire F[i] F[i/] IndiceDansF[F[i]] := i IndiceDansF[F[i/]] := i/ i := i/; end

Complexité de l algorithme de Prim La complexité totale : la construction de la file : O( S ), chaque appel de ExtraireMin : O(log( S )) le coût total des MaJ(F,d,G,s,Π) est en O( A log( S )). ( ) O S log( S )+ A log( S ) O( A log( S ))

Plan Définitions Algorithme de Prim Algorithme de Kruskal Application au voyageur de commerce

Algorithme de Kruskal idée Deux caractéristiques : A décrit une forêt, une arête compatible est une arête de poids minimal reliant deux arbres de la forêt. Comment trouver la (une) plus petite arête reliant deux arbres de la forêt A?

Algorithme de Kruskal idée Deux caractéristiques : A décrit une forêt, une arête compatible est une arête de poids minimal reliant deux arbres de la forêt. Comment trouver la (une) plus petite arête reliant deux arbres de la forêt A? A = On trie les arêtes par poids croissant. Pour chaque arête (x,y) : Si (x,y) ne crée pas de cycle, alors on l ajoute à A A est une solution!

Algorithme de Kruskal q 0 q q q 7 8 q q q 5 5 q 8 q 6

Algorithme de Kruskal q 0 q q q 7 8 q q q 5 5 q 8 q 6

Algorithme de Kruskal q 0 q q q 7 8 q q q 5 5 q 8 q 6

Algorithme de Kruskal q 0 q q q 7 8 q q q 5 5 q 8 q 6

Algorithme de Kruskal q 0 q q q 7 8 q q q 5 5 q 8 q 6

Algorithme de Kruskal q 0 q q q 7 8 q q q 5 5 q 8 q 6 w(a ) = 5

Comment tester si x et y sont dans le même arbre? Pour tester efficacement si deux sommets sont dans le même arbre de A, on utilise des structures Union-Find : tester si x et y sont dans le même sous-ensemble : Représentant-Ens(x) associe à x un représentant canonique de l ensemble contenant s. Représentant-Ens(x) = Représentant-Ens(y) : renvoie VRAI ssi x et y sont dans le même arbre. Fusion(x,y) fusionne les deux ensembles contenant x et y. Complexité : le coût total de m opérations dont n opérations CréerEnsemble est en O(m α(m,n)). α(m,n) : fct réciproque de la fct d Ackermann. (<< log(m)).

Algorithme de Kruskal Procédure Recherche-ACM-Kruskal(G) begin A := pour chaque s S faire CréerEnsemble(s) Trier A par poids w(u,v) croissant pour chaque (x,y) A faire si Représentant-Ens(x) Représentant-Ens(y) alors A := A {(x,y)} Fusion(x, y) return A end

Complexité de l algorithme de Kruskal Tri : O( A log( A )) il y aura S arêtes ajoutées dans A. Il y aura donc S appels à Fusion(, ). Au pire, il y aura A appels à Représentant-Ens( ). Complexité totale en O( A log( A )) car A S.

Plan Définitions Algorithme de Prim Algorithme de Kruskal Application au voyageur de commerce

Le voyageur de commerce Une ville, des routes, des distances... Question : comment passer une et une seule fois par chaque ville en parcourant une distance minimale?

Le voyageur de commerce Une ville, des routes, des distances... Question : comment passer une et une seule fois par chaque ville en parcourant une distance minimale? Données : un graphe valué non-orienté, connexe : G = (S,A,w) Question : trouver un chemin hamiltonien de poids minimal.

Le voyageur de commerce Une ville, des routes, des distances... Question : comment passer une et une seule fois par chaque ville en parcourant une distance minimale? Données : un graphe valué non-orienté, connexe : G = (S,A,w) Question : trouver un chemin hamiltonien de poids minimal. C est problème très classique... et NP-complet.

Approximation du VdC avec les ACM On fait les hypothèss suivantes : G = (S,A,w) est complet. ( x,y S, (x,y) A) G = (S,A,w) vérifie l inégalité triangulaire : x,y,z S, on a : w(x,y)+w(y,z) w(x,z) Et on va essayer d approximer le circuit hamiltonien minimal...

Approximation du VdC Fonction Approx-VdC(Graphe G = (S,A,w)). choisir un sommet s S. construire un arbre couvrant minimal T de G à partir de s (avec l algorithme de Prim, ou Kruskal,...). soit L la liste des sommets visités lors d un parcours préfixe de T. retourner le cycle correspondant à L

Exemple q 0 q q 6 q q 5 q 5 q 6

Exemple q 0 q q 6 w(t acm ) = 0 q q 5 q 5 q 6

Exemple q 0 q q 6 w(t acm ) = 0 q q 5 q 5 q 6

Exemple () (6) (5) q 0 q q 6 () () () q q 5 q 5 w(t acm ) = 0 () Parcours : q 6 q 5 q q q q q 0 q 6

Exemple () (6) (5) q 0 q q 6 () () () q q 5 q 5 w(t acm ) = 0 w(c) = 6 () Parcours : q 6 q 5 q q q q q 0 q 6

Exemple (6) (5) () q 0 q q 6 () () (7) q q 5 q 5 w(t acm ) = 0 () Parcours : q 6 q q q q q 0 q 5 q 6

Exemple (6) (5) () q 0 q q 6 () () (7) q q 5 q 5 w(t acm ) = 0 w(c) = () Parcours : q 6 q q q q q 0 q 5 q 6

Borner l approximation Théorème Approx-VdC donne un cycle C dont le coût est inférieur à ( w(s opt )) où S opt est une solution optimale du problème. Pourquoi?

Borner l approximation Théorème Approx-VdC donne un cycle C dont le coût est inférieur à ( w(s opt )) où S opt est une solution optimale du problème. Pourquoi? Complexité : le coût de la recherche de l ACM...