arbres/flots/coloration
Transcription
arbres/flots/coloration
Arbres ● ● G = (X, U). H = (X, T), T U est une forêt si H ne contient pas de cycle. Si G est connexe et que aucune arête ne peut être ajoutée sans créér de cycle, G est un arbre. 1 2 U 3 5 6 ● 4 7 Tout arbre contient |X|-1 arêtes L.L. - Graphes 1 Arbres ● ● G = (X, U). H = (X, T), T U est une forêt si H ne contient pas de cycle. Si G est connexe et que aucune arête ne peut être ajoutée sans créér de cycle, G est un arbre. 1 2 U T 3 5 6 ● 4 1 7 Tout arbre contient |X|-1 arêtes L.L. - Graphes 6 2 3 4 5 7 2 Arbre couvrant de poids minimum ● G = (X, U), avec poids associés aux arêtes. Trouver, à partir d'un sommet S0 , un arbre H = (X', T), X' X, T U t.q : ● – |X'| soit maximum et – ∑ (wuT) soit minimum. H est un arbre couvrant de poids minimum 10 15 1 2 5 20 10 30 4 6 L.L. - Graphes 10 50 30 7 2 35 45 3 10 15 1 OU ? 5 20 10 6 30 4 50 35 45 30 7 3 10 3 Arbre couvrant de poids minimum ● Est-ce l'arbre couvrant de poids minimum ? Algorithme de Kurskal ou Prim ∑ (wuT) = 160 15 1 2 50 4 6 L.L. - Graphes 10 5 20 10 ∑ (wuT) = 165 30 7 15 1 2 35 5 30 OU ? 4 3 6 35 45 30 7 3 4 Arbre couvrant de poids minimum Algorithme de Prim ● ● A partir de S0, ajout d'un sommet à l'arbre à chaque étape – une arête de connexion à l'arbre par sommet – N-1 étapes, N-1 arêtes Même principe de marquage que avec Dijkstra D[i], poids de l'arête de connexion u pour Si a[i] = a.u, arête de connexion u pour Si ● a = ∓1 suivant que Si est/n'est pas dans l'arbre L.L. - Graphes 5 Prim - énoncé Prim(Graphe G = (X, U), sommet S0)(Tableaux D, a) 1-Initialisation D[0]= - SiX, i0, D[i] + Si X, a[i] - 2-Itération courante choisir Si t.q Si (D[i]=+) ou (SiX, a[i]>0) fin Sinon a[i] - a[i] Pour toute arête u = (Si Sj) Si (wu < D[j]) et (a[j] < 0) D[j] wu a[j] -u D[i] = min{j | a[j]<0}D[j] L.L. - Graphes 6 Arbre couvrant de poids minimum une étape S1 S2 S3 S4 S5 S6 S7 D - a + 35 -u1 15 u3 - 10 u2 - 30 -u5 35 2 20 10 6 u7 u1 u6 4 L.L. - Graphes 10 1 30 u2 u5 45 u8 7 5 50 u4 u9 u3 15 3 60 7 Arbre couvrant de poids minimum une étape S1 S2 S3 S4 S5 S6 S7 D - a + 35 -u1 15 u3 45 -u8 10 u2 30 - +u5 minimu m 35 2 20 10 6 u7 u1 u6 4 L.L. - Graphes 10 1 30 u2 u5 45 u8 7 35 5 50 u4 u9 60 2 u3 15 3 20 10 6 u7 u1 u6 4 10 1 30 u2 u5 45 u8 7 5 50 u4 u9 u3 15 3 60 8 Arbre couvrant de poids minimum résultat S1 S2 S3 S4 S5 S6 S7 D - a + 35 u1 15 u3 20 u6 10 u2 10 u7 30 u5 35 2 20 10 6 L.L. - Graphes u7 4 1 u1 u6 10 30 u2 u5 45 u8 7 5 50 u4 u9 u3 15 3 60 9 Arbre couvrant de poids minimum Applications ● ● La construction/couverture de réseau (télephone, routier/transport, informatique) Souvent dans le plan – graphe complet ou diag. Voronoi -> triangles de Delaunay -> Arbre L.L. - Graphes http://www-sop.inria.fr/prisme/fiches/Voronoi/index.html.fr 10 Arbre couvrant de poids minimum exemples STP (Spanning Tree Protocol) pour la diffusion Ethernet – éviter les rebouclages http://www.cs.berkeley.edu/~bonachea ● L.L. - Graphes 11 Arbre couvrant de poids minimum Applications ● Définition de régions dans une image arêtes entre pixels voisins pondérées par la similarité entre les pixels (1) – Arbre de poids min/ simil max (2) – et coupe des arêtes de coût supérieur à un seuil 2 1 arbre (1) L.L. - Graphes (2) 12 Problèmes de flot réseau électrique ● ● ● L'ensemble de l'électricité produite est consommée : Il y a équilibre entre les producteurs et les consomateurs à tout moment Loi d'Ohm : les courants entrants et sortant s'équilibrent à chaque intersection L.L. - Graphes 13 Problèmes de flot ● Flux: nombre fu associé à chaque arc u U de G=(X, U, C) ● Flot: L'ensemble des flux sur G constitue un flot ssi (1) ∑ u w+(i) fu = ∑ u w-(i) fu Loi de conservation – w+(i) : arcs sortants de Si – w-(i) : arcs entrants de Si (2) u U, fu cu Flux admissible L.L. - Graphes 3 50 30 30 20 5 50 20 4 80 70 2 20 20 40 30 1 70 20 6 100 50 capacité flux 14 Graphe de flot ● ● G=(X, U, C) – Sommet source S, sans arc entrant – Sommet puits P sans arc sortant Flot de S à P, avec loi de conservation respectée sauf pour S et P – Valeur de flot : f = ∑ 10 9 f=9+10 S 15 10 L.L. - Graphes u (S) fu = ∑ 13 9 2 5 5 6 0 3 15 5 u -1(P) fu 4 14 14 P capacité flux f=14+5 15 Flot maximum ● Maximiser la valeur flot de S à P dans G Flot maximum dans G0 S – G0: ajout de l'arc u0, avec une capacité , dans G – Flot maximum dans G0 flux maximum pour u0 10 2 13 5 6 15 L.L. - Graphes 4 3 15 G G0 14 S P 2 10 13 5 6 15 flux max 4 15 3 14 P u0 16 Graphe d'écart ● Soit un graphe de flot G=(X, U, C) et un flot f sur G le graphe d'écart GD(f) = (X, UD ,CD) est défini par : arc u=(Si Sj) U – u+ = (Si Sj) UD, avec cD(Si Sj) = cu - fu – u- = (Sj Si) UD, avec cD(Sj Si) = fu dans GD : dans G : 2 13 capacité 9 flux 4 cu – f u = 4 2 4 fu = 9 capacités L.L. - Graphes 17 Graphe d'écart exemple S 10 9 15 10 13 9 2 6 0 4 5 3 capacité flux 5 15 5 14 14 P G Flot maximum dans G si il n'existe aucun chemin S P dans GD Flot max ici ? L.L. - Graphes capacité GD 1 S 9 10 5 4 2 4 9 5 6 3 14 5 P 10 18 Ford-Fulkerson - énoncé FordFulkerson(Graphe G = (X, U, C))(Flot F) 1-Initialisation Flot f (0, 0, ..., 0) 2-Itération courante Trouver un chemin A de S P dans GD(f) Si A non trouvé fin Flot max L.L. - Graphes Sinon r min u XcD(u) r: capacité résiduelle ff+r Si u+ X, fu fu + r Si u- X, fu fu - r 19 Ford-Fulkerson – une étape S 10 9 15 10 13 9 2 6 0 4 5 3 capacité flux L.L. - Graphes G 5 15 5 14 14 construire GD(f) P f = 19 20 Ford-Fulkerson -- exemple S 10 9 15 10 G 13 9 2 6 0 3 capacité flux 1 4 5 5 15 5 f = 19 capacité GD 14 14 S P 9 10 5 4 2 4 9 5 6 3 14 5 P 10 Trouver un chemin A de S P dans GD(f) L.L. - Graphes 21 Ford-Fulkerson -- exemple S 10 9 15 10 G 13 9 2 6 0 3 capacité flux 1 4 5 5 15 5 f = 19 capacité GD 14 14 9 S P 10 5 4 2 4 9 5 6 3 14 5 P 10 r min u AcD(u) = 1 L.L. - Graphes 22 Ford-Fulkerson -- exemple S 10 9 15 10 13 9 2 6 0 3 S 15 10 2 1 14 14 6 0 S 4 10 5 4 15 6 G 14 14 4 2 ff+r 5 3 9 P f = 19 13 10 flux L.L. - Graphes 5 15 5 capacité GD 4 5 capacité flux 10 10 G 4 9 5 6 3 14 5 P 10 Si u+ X, fu fu + r Si u- X, fu fu - r P f = 20 23 Ford-Fulkerson -- exemple capacité GD 1 Etape suivante : mise à jour de GD ● à partir de G ou ● à partir de GD ● S 10 S 15 10 2 13 10 6 0 4 5 3 4 15 6 f = 20 L.L. - Graphes 2 G 14 14 P 5 14 5 5 P 10 3 capacité GD S 4 9 6 5 capacité flux 10 10 9 4 10 10 3 2 10 4 6 3 4 14 1 6 9 P 24 Problèmes de flot ● Quelle est la capacité de transfert entre Brest et Nice ? L.L. - Graphes 25 Flot maximum - variantes ● Maximiser la capacité résiduelle r – ● Algorithme capa Max Edmonds-Karp Pas toujours optimal en nombre d'étapes 2 20 30 S 10 L.L. - Graphes P 25 3 25 26 Flot maximum - variantes ● Flot maximum avec coût minimum – Coûts associés aux arcs, en plus des capacités Busaker et Gowen 2 10 S 90 € 18 13 120 € 160 € 3 L.L. - Graphes 4 120 € 70 € 15 14 P 27 Couplage maximal ● Associer dans un graphe G=(X, U) les sommets 2 par 2 pour obtenir un couplage maximum : – Sommets dits compatibles reliés par des arêtes – Sélectionner un sous-ensemble E U d'arêtes non adjacentes (couples disjoints) t.q : ∑ ● uE wu est maximum Si, u U, wu = 1, couplage de cardinalité maximale L.L. - Graphes 28 Couplage de cardinalité maximale exemple: maximiser le nombre de duos Cléopatre Iphigénie Juliette Fanny Chimène Achille César Rodrigue Roméo Marius L.L. - Graphes Cl Ip Ju Fa Ch Ac Cé Rd Rm Ma 29 Couplage de poids maximal Problème d'affectation ● ● Dans un graphe biparti On cherche à maximiser ou minimiser le coût du couplage, mesuré par le poids des arêtes sélectionnées 40 ● 12 24 16 11 87 13 54 45 31 48 Résolution par l'algorithme de Busaker et Gowen (il existe aussi la méthode hongroise) L.L. - Graphes 30 Couplage de poids maximal Problème d'affectation ● Exemple : qui fait quoi ? coût E/h Toto Titi Tata L.L. - Graphes Jardin 4 8 3 Maison Enfants 3 7 2 5 3 3 31 Flot maximum - applications Flot Max / Coupe Min ● Le flot maximum d'un graphe de flot est égale à la coupe de taille/capacité minimale dans ce graphe capacité flux 50 40 3 30 30 L.L. - Graphes 2 20 20 40 40 Coupe de capacité 140 5 50 50 4 Coupes de taille 2 10090 1 70 50 6 100 80 32 Flot Max / Coupe Min ● Où sont le flot max et la coupe min dans Brest centre ? http://www.mappy.fr L.L. - Graphes 33 Coloration de graphes ● On appelle k-coloration d'un graphe G = (X, U), la répartition des sommets de X en k ensembles disjoints X1, X2, ..., Xk t.q. : – – ● S X, S Xi CS = i, i [1..k] est la couleur associée à S u = (S1 S2) U, CS1 ≠ CS2. Deux sommets adjacents sont de d'une couleur différente Nombre chromatique : nombre de couleurs minimum pour colorer l'ensemble du graphe L.L. - Graphes 34 Exemples Théorème des 4 couleurs Graphe biparti Graphe de Pertersen L.L. - Graphes http://www.inria.fr/actualites/2005/images/b4couleurs.jpg 35 Nombre chromatique g(G) Théorème de Brooks : Pour un graphe G, g(G) D (D : degré max des sommets) Exceptions – g(G) = D+1 : ● Cycle impair ● Graphe complet g(S6) = 2 graphe G g(G) graphe complet Kn cycle Cn, n>1 n 3 2 2 3 4 étoile Sn, n>1 roue Wn, n>2 L.L. - Graphes g(K6) = 6 g(C5) = 3 g(W5) = 3 g(C6) = 2 g(W6) = 4 si n impair si n pair si n impair si n pair http://mathworld.wolfram.com/ChromaticNumber.html 36 Applications ● Coloration générale – ● aigle éléphant zèbre girafe onyx Couverture de graphes de tigre compatibilité (classes rhino panda disjointes d'éléments, par ex. EDT, allocation de Animaux compatibles au zoo ressources) Théorème des 4 couleurs – Coloration de cartes Téléphonie mobile , .... Réduire les fréquences utilisées pour couvrir une région par un http://research.yale.edu/.../ar ensemble de cellules ticles-logic-graph.gif L.L. - Graphes 37 Algorithme glouton - énoncé coloriage(Graphe G = (X, U))(tableau C de couleurs) 1-Initialisation couls 0 SiX, C[i] 0 Si couleur c 1≤c≤couls t.q. Sjadjacents(Si), C[j] c Alors C[i] c 2-Itération courante Tant que SiX non colorié L.L. - Graphes Sinon couls couls + 1 C[i] couls 38 Exemple 1 3 L.L. - Graphes 2 4 39 Exemple 1 3 L.L. - Graphes 2 4 40 Exemple 1 3 L.L. - Graphes 2 4 1 3 2 4 41 Exemple 1 3 L.L. - Graphes 2 4 1 3 2 4 1 3 2 4 42 Exemple 1 3 2 4 1 3 2 4 1 3 1 2 4 2 Est – ce optimal ? 3 L.L. - Graphes 4 43 Conclusion sur l'exemple ● ● Heuristique (donne une solution approchée) – Rapide (O(n)) – Meilleure solution non garantie (depend de l'ordre d'examen des sommets) Algorithme optimal en O(en) 1 3 L.L. - Graphes 1 2 4 Ok 2 Non ! 3 4 44 Coloration de graphe Algorithme par énumération ● Toutes les colorations en au plus M couleurs pour G= (X, U) – Enumerer toutes les solutions (|X|M) – Sommets déjà colorés Colorer le sommet suivant avec toutes les couleurs disponibles M=2 |X| = 5 S1 S2 S3 S4 S5 L.L. - Graphes Arbre de recherche 45 Coloration de graphe Enumération implicite ● Dans certains cas, inutile de colorier tous les sommets 1 ??? 3 2 S1 S2 S3 S4 S5 L.L. - Graphes 5 4 M=2 |X| = 5 ??? 46 Coloration de graphe Enumération implicite ● Dans certains cas, inutile de colorier tous les sommets 1 2 S1 S2 S3 S4 S5 L.L. - Graphes 5 3 4 M=2 |X| = 5 S1 S2 S3 S4 S5 M=2 |X| = 5 Coupe dans l'arbre de recherche Solutions énumérées implicitement 47 Coloration de graphe Arbre de recherche ● Toutes les colorations en au plus M couleurs pour G= (X, U) 1 2 5 4 S1 S2 S3 S4 S5 L.L. - Graphes 3 M=2 |X| = 5 Que signifie cet arbre ? 48 Algorithme par énumération ● ● C[i] = 0 ≤ c ≤ M+1 – 0 pour non colorié – M+1 si impossible à colorier suivant(C, s) détermine la couleur suivant pour Ss 1 2 L.L. - Graphes 5 suivant(C, 2) : 3 S1 S2 4 2 1 0 0 0 2 3 0 0 0 49 Algorithme par énumération ● ● C[i] = 0 ≤ c ≤ M+1 – 0 pour non colorié – M+1 si impossible à colorier suivant(C, s) détermine la couleur suivant pour Ss coloriage(Graphe G = (X, U), M)(tableau C de couleurs) 1-Initialisation SiX, C[i] 0 s1 Aucune couleur attribuée Sommet courant fin faux L.L. - Graphes 50 Algorithme par énumération 2-Itération courante suivant(C, s) cas 1 : (C[s] ≤ M) et (s < |X|) s s+1 Avancer dans l'arbre cas 2 : (C[s] ≤ M) et (s = |X|) afficher(C) Une solution trouvée cas 3 : (C[s] > M) et (s > 1) C[s] 0 s s-1 Non coloriable cas 4 : (C[s] > M) et (s = 1) fin vrai L.L. - Graphes Retour à la racine 51 Algorithme par énumération déroulement ● Dérouler l'algorithme sur le graphe suivant ... 1 2 5 4 L.L. - Graphes 3 # Init 1 2 3 ... C C[1] C[2] C[3] C[4] C[5] Cas 0 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1 1 1 2 0 0 1 ... ... ... ... ... ... S 0 1 2 3 ... 52 Coloration de graphe application ● ● ● Emploi du temps contrainte de partage de ressource entre une tâche Ti et une tâche Tj Graphe G = (X, U) – X, ensemble des tâches Ti – u = (Ti Tj) U si Ti et Tj ne peuvent s'exécuter simultanément Trouver une affectation des tâches respectant les contraintes d'exclusion, sachant que toutes les tâches ont le même temps d'exécution L.L. - Graphes 53 Coloration de graphe exemple ● ● Examens pour les étudiants : – a, b, c et d : info – a, e, f, g : bio – e, f, g : lettres – b, d, f : histoire Minimiser le nombre de creneaux d'examens – formulation du problème d'optimisation – graphe associé – application L.L. - Graphes 54 Coloration de graphe exemple ● ● Examens pour les étudiants : – a, b, c et d : info – a, e, f, g : bio – e, f, g : lettres – b, d, f : histoire a b c d e f g Info Bio Lettres Hist. Formulation du problème d'optimisation – Correspond à trouver le nombre chromatique du graphe d'incompatibilité L.L. - Graphes 55 Coloration de graphe exemple ● ● Examens pour les étudiants : – a, b, c et d : info – a, e, f, g : bio – e, f, g : lettres – b, d, f : histoire a b c d e f g Info Bio Lettres Hist. graphe associé Info Bio L.L. - Graphes Histoire Lettres incompatibilités Bio Lettres Hist. Info Bio Lettres 56 Coloration de graphe exemple ● ● Examens pour les étudiants : – a, b, c et d : info – a, e, f, g : bio – e, f, g : lettres – b, d, f : histoire 3 creneaux d'examens, info même temps que lettres Info Histoire Bio Lettres L.L. - Graphes 57 Coloration de graphe un autre exemple Carré Latin (Sudoku) ● – Un carré A de taille N x N contient sur chaque ligne et colonne les nombres de 1 à N une et une seule fois ● 9 couleurs (1 par nombre de la grille) ● 81 sommets de type (x,y) – 2 sommets de la même ligne, 2 sommets de la même colonne sont adjacents – 2 sommets d'un même groupe sont adjacents L.L. - Graphes 58 Coloration de graphe Coloriage des arêtes ● Colorier les arêtes : 2 arêtes adjacentes ne peuvent avoir la même couleur 1 B 3 A D 2 B C 4 Graphe G L.L. - Graphes A C D Arête D adjacente donc incompatible avec A, B et C 59 Coloration de graphe Coloriage des arêtes ● Colorier les arêtes : 2 arêtes adjacentes ne peuvent avoir la même couleur 1 B 3 A D 2 A B C 4 C D Graphe G' à colorier L.L. - Graphes 60 Coloration de graphe définition ● [rappel] Nombre chromatique – ● Nombre minimum de couleurs pour colorier les sommets d'un graphe. Indice chromatique – Nombre minimum de couleurs pour colorier les arêtes d'un graphe. L.L. - Graphes 61 Coloration de graphe preuve de l'existence d'une grille ● ● Le coloriage permet de prouver que le carré latin de la matrice A existe Graphe biparti G = (X, U) avec X = L C, – – L correspond aux indices de lignes, C aux indices de colonnes de A. G est complet (x1 L, x2 C, (x1x2) U) L.L. - Graphes 62 Coloration de graphe preuve de l'existence d'une grille ● [propriété] Dans un graphe biparti, de degré maximal des sommets ∆, l'indice chromatique est ∆. – ● x1 L adjacent à tous les sommets de C → clique, donc nombre chromatique dans G' = ∆ Dans le graphe de la matrice, ∆ = N. La coloration se fait en N couleurs, correspondant chacune à un des nombres du carré. arête (xa xb) est coloriée en couleurs[i], Aab = i L.L. - Graphes 63 Coloration de graphe un 3ème exemple ● Mot de passe à cryptage public – Graphe 3-colorable public, qui sert de login – Coloriage sert de mot de passe ● ● Générer un graphe 3-colorable – ● La difficulté (pb NP-complet) sert de preuve Méthode inductive Prouver que l'on sait le colorier sans révéler le coloriage – Réutilisable – Pas de stockage sur le serveur L.L. - Graphes 64 Coloration de graphe générer un graphe 3-couleurs ● ● A partir d'un graphe 3 couleurs – Ajouter un sommet, avec une couleur aléatoire (couleurs 1 à 3) – Le connecter à un nombre aléatoire d'autres sommets de couleurs différentes de la sienne Graphe assez grand, nombre d'arêtes suffisant pour rendre la solution introuvable en temps limité L.L. - Graphes 65 Coloration de graphe vérification de la capacité à colorier ● ● Choix par l'observateur de 2 sommets au hasard – Dévoiler les 2 couleurs (elles doivent être différentes si sommets adjacents) – Permuter aléatoirement toutes les couleurs (sans changer de coloriage) Au bout de r essais, la probabilité d'une erreur approche 100% si le coloriage n'est pas connu. – Permuter les couleurs entre chaque test permet de préserver le secret du coloriage global. – Tiers de confiance nécessaire pour faire les permutations L.L. - Graphes 66