Licence Informatique Algorithmique des graphes

Slides:



Advertisements
Présentations similaires
Calcul du flot maximum Algorithme de Ford Fulkerson Maxime Chambreuil | Nicolas Fournel | Vianney Gremmel | Leïla Traoré | Marouane Zehni UV RO.
Advertisements

La recherche de chemin optimal
Explorer un espace d’états
Fabrice Lauri, François Charpillet, Daniel Szer
Algorithmes et structures de données avancés

Modélisation par le concept de graphe
Bloc1 : Théorie des graphes et problèmes d’ordonnancement
LES GRAPHES.
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.
Plus rapide chemin bicritère : un problème d’aménagement du territoire
R.K.Ahuja & James B.Orlin (1988)
Recherche Opérationnelle
Chapitre VIII. Introduction aux graphes
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
Sémantique axiomatique
Optimisation et Complexité
LES ARBRES IUP 2 Génie Informatique
Algorithme de Bellman-Ford
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT-10541
Structures de données IFT-2000
IFT Complexité et NP-complétude



1 Licence dinformatique Algorithmique des graphes Problèmes dordonnancement. Utilisation de ce document strictement réservée aux étudiants de l IFSIC dans.
Algorithmes d ’approximation
Optimisation dans les réseaux
Recherche Opérationnelle
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.
Introduction aux problèmes d'ordonnancement sans temps-morts.
GPA750 – Gestion de Projets
Pour le chemin le plus court pour tous les couples
Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK.

Heuristiques C. Recherche de la meilleure branche . Branch And Bound
Graphes 1. Introduction 2. Définition 3. Représentation mémoire
Arbres et graphes.
1 Licence d’informatique Algorithmique des graphes Cours 3 deuxième partie : Opérations et relations entre graphes. Composition, puissances. Utilisation.
Gestion de projet Planification.
Algorithmes Branch & Bound
Le problème central de l’ordonnancement (les plus longs chemins)
LE FLOT MAXIMAL et LA COUPE MINIMALE
1 Licence d’informatique Algorithmique des graphes Exploration de la descendance d’un sommet Utilisation de ce document strictement réservée aux étudiants.
1 Licence d’informatique Algorithmique des graphes Cours 7 : Graphes valués Chemins de valeur optimale Algorithme de Bellmann-Kalaba Utilisation de ce.
Licence d’informatique Algorithmique des graphes
Exploration systématique de graphes
Recherches locales et méta-heuristiques
1 Licence d’informatique Algorithmique des graphes Utilisation de ce document strictement réservée aux étudiants de l ’IFSIC dans le cadre de leur formation.
Optimisation pour la Conception de Systèmes Embarqués
Cours d'algorithmique 10 / Intranet 1 19 décembre 2006 Cours d’Algorithmique Logique de Hoare (fin) : Les boucles et les invariants.
2005/2006 Structures de Données Introduction à la complexité des algorithmes.
Licence d’Informatique Algorithmique des graphes

Algorithme de DIJKSTRA
Notion de Dépendance Fonctionnelle (DF)
2 Cadre du TER Projet Algol But du TER Conception et étude d’algorithmes de traitement de données dans un satellite d’observation de la voûte spatiale.
Algorithmes de tri.
Structures de données IFT-2000
4/25/2017 4:30 PM Arbres (2,4) CSI2510 CSI2510.
CSI2510 Structures de données et algorithmes Plus court chemin
Introduction à l’Informatique chap 3 Licence SPI Mme Delmotte.
Projet Théorie des graphes
Chapitre 3 Problèmes de Cheminement
UMLV ã Plus courts chemins Toutes paires d'états
Transcription de la présentation:

Licence Informatique Algorithmique des graphes Cours 8 Algorithmes de Dijkstra et Ordinal

Hypothèses particulières Sur les valeurs des arcs Sur la topologie du graphe Algorithmes GLOUTONS

Hypothèses particulières Sur les valeurs des arcs Sur la topologie du graphe Algorithmes GLOUTONS

Chemins de valeur additive minimale (min, +) Hypothèse : valeurs des arcs  0 plus généralement : valeurs des arcs moins bonnes que l’élément neutre de  Algorithme de DIJKSTRA

Principe : exploration selon la stratégie « meilleur d’abord » INVARIANT Tout sommet z est : dehors ® non visité, l(z) = +¥ en attente visité, au moins un prédécesseur terminé, aucun arc sortant visité, l(z) = min(v(u)), u chemin de x à z dont l’avant-dernier sommet est terminé, pred(z) = prédécesseur minimal de z terminé ® visité, tous les arcs sortants visités, l(z) = min(v(u)), u chemin de x à z pred(z) = prédécesseur minimal de z

Arrêt : Init : plus de sommet en attente Les sommets dehors sont inaccessibles, les sommets terminés ont leurs attributs corrects. Init : défini non ; en attente ) ( pred(x) x état ¬ l(x) tous les autres sommets sont dehors

Progression : Soit y en attente d’attribut  MINIMUM (des en attente) ; y devient terminé ; pourtout z successeur de y : fpourtout cas fcas z est dehors  z devient en attente ; z est en attente  z est terminé  rien

Preuve  Initialement, l’invariant est vérifié (par construction) La progression maintient l’invariant (voir détails plus loin)  Finalement, le résultat obtenu est correct (Conjonction de l’invariant et de la condition d’arrêt)

Preuve  Initialement, l’invariant est vérifié (par construction) La progression maintient l’invariant (voir détails plus loin)  Finalement, le résultat obtenu est correct  La condition d ’arrêt est obtenue après un nombre fini d’étapes (A chaque étape un nouveau sommet devient terminé).

Preuve  La progression maintient l’invariant (détails) Invariant au début d’une étape  Invariant à la fin de l’étape Pour tout sommet y subissant une transition d’état : dehors  dehors : état non modifié

 La progression maintient l’invariant (détail) Pour tout sommet z subissant une transition d’état : dehors  en attente : z a un seul prédécesseur terminé (y) et ses attributs sont initialisés conformément à la propriété des sommets en attente. z est dehors  z devient en attente ; cas en attente de minimal ur prédécesse terminé est sommet dernier avant l' dont à chemin )), ( min( z pred(z) x u v = l(z)

 La progression maintient l ’invariant (détail) Pour tout sommet z subissant une transition d ’état : en attente  en attente : z a un nouveau prédécesseur terminé (y) et ses attributs sont mis à jour conformément à la propriété des sommets en attente. z est en attente  en attente de minimal ur prédécesse recouvert est sommet dernier avant l' dont à chemin )), ( min( z pred(z) x u v = l(z)

 La progression maintient l’invariant (détail) Pour tout sommet y subissant une transition d ’état : en attente  terminé : Il faut montrer que les attributs de y sont définitifs C’est-à-dire y en attente d’attribut (y) minimum  (y)=valeur minimale des chemins de x à y.

T A y x t z Soit u = [x * y] un chemin de x à y Soit t=dernier sommet de u tel que tT u = [x * t].(t, z).[z * y]

T A y x t z u = [x * t].(t, z).[z * y] v(u) = v([x * t])+v(t, z)+v([z * y])

T A y x t z u = [x * t].(t, z).[z * y] v(u) = v([x * t])+v(t, z)+v([z * y]) 0 (hypothèse sur les arcs)

T A y x t z v(u)  v([x * t])+v(t, z)

T A y x t z t est terminé v(u)  v([x * t])+v(t, z) (t) (car t T) ® (t) = val. min. des chemins de x à t v(u)  v([x * t])+v(t, z) (t) (car t T)

T A y x t z z est en attente dont l’avant dernier sommet est terminé ® (z) = val. min. des chemins de x à z dont l’avant dernier sommet est terminé v(u)  (t) +v(t, z) (z) (car z A et t  T)

T A y x t z v(u)  (z)  (y) (critère de choix de y)

T A y x t z v(u)  (y)

T A y x t z v(u)  (y) Réciproquement : Propriété de (y) pour y A : (y) = valeur minimum d’une catégorie de chemins donc : il existe un chemin de x à y, de valeur (y)

T A y x t z (y)= valeur minimum des chemins de x à y le sommet y devient terminé

Un exemple d’exécution 7 7 d g 3 5 3 1 1 1 12 a b e h i 4 4 8 1 4 12 c f en attente terminés (a, 0, /) Un exemple d’exécution

terminés en attente (a, 0, /) (d, 5, a) (b, 1, a) (c, 4, a) 7 7 d g 3 12 (0) a b e h i 4 4 8 1 4 12 c f en attente terminés (a, 0, /) (d, 5, a) (b, 1, a) (c, 4, a)

terminés en attente (a, 0, /) (d, 5, a) (c, 4, a) (b, 1, a) (d, 4, b) 7 7 d g 3 5 3 1 1 1 12 (0) a (1) b e h i 4 4 8 1 4 12 c f en attente terminés (a, 0, /) (d, 5, a) (c, 4, a) (b, 1, a) (d, 4, b)

terminés en attente (a, 0, /) (d, 4, b) (e, 12, c) (f, 8, c) (b, 1, a) 7 7 d g 3 5 3 1 1 1 12 (0) a (1) b e h i 4 4 8 1 4 12 c f (4) en attente terminés (a, 0, /) (d, 4, b) (e, 12, c) (f, 8, c) (b, 1, a) (c, 4, a)

terminés en attente (a, 0, /) (e, 12, c) (f, 8, c) (g, 11, d) 7 7 (4) d g 3 5 3 1 1 1 12 (0) a (1) b e h i 4 4 8 1 4 12 c f (4) en attente terminés (a, 0, /) (e, 12, c) (f, 8, c) (g, 11, d) (b, 1, a) (e, 7, d) (c, 4, a) (d, 4, b)

terminés en attente (a, 0, /) (f, 8, c) (g, 11, d) (h, 8, e) (b, 1, a) 7 7 (4) d g 3 5 3 1 1 1 12 (0) a (1) b (7) e h i 4 4 8 1 4 12 c f (4) en attente terminés (a, 0, /) (f, 8, c) (g, 11, d) (h, 8, e) (b, 1, a) (f, 7, e) (c, 4, a) (d, 4, b) (e, 7, d)

terminés en attente (a, 0, /) (g, 11, d) (h, 8, e) (i, 19, f) 7 7 (4) d g 3 5 3 1 1 1 12 (0) a (1) b (7) e h i 4 4 8 1 4 12 c (7) f (4) en attente terminés (a, 0, /) (g, 11, d) (h, 8, e) (i, 19, f) (b, 1, a) (c, 4, a) (d, 4, b) (e, 7, d) (f, 7, e)

terminés en attente (a, 0, /) (g, 11, d) (i, 19, f) (b, 1, a) 7 7 (4) d g 3 5 3 1 1 1 12 (0) a (1) b (7) e (8) h i 4 4 8 1 4 12 c (7) f (4) en attente terminés (a, 0, /) (g, 11, d) (i, 19, f) (b, 1, a) (g, 9, h) (c, 4, a) (d, 4, b) (e, 7, d) (f, 7, e) (h, 8, e)

terminés en attente (a, 0, /) (i, 19, f) (i, 16, g) (b, 1, a) 7 7 (4) d (9) g 3 5 3 1 1 1 12 (0) a (1) b (7) e (8) h i 4 4 8 1 4 12 c (7) f (4) en attente terminés (a, 0, /) (i, 19, f) (i, 16, g) (b, 1, a) (c, 4, a) (d, 4, b) (e, 7, d) (f, 7, e) (h, 8, e) (g, 9, h)

terminés en attente vide (a, 0, /) (b, 1, a) (c, 4, a) (d, 4, b) 7 7 (4) d (9) g 3 5 3 1 1 1 12 (0) a (1) b (7) e (8) h (16) i 4 4 8 1 4 12 c (7) f (4) en attente terminés (a, 0, /) vide (b, 1, a) (c, 4, a) (d, 4, b) (e, 7, d) (f, 7, e) (h, 8, e) (g, 9, h) (i, 16, g)

Les sommets sont terminés dans l’ordre des  croissants 7 7 (4) d (9) g 3 5 3 1 1 1 12 (0) a (1) b (7) e (8) h (16) i 4 4 8 1 4 12 c (7) f (4) (a, 0, /) (b, 1, a) (c, 4, a) (d, 4, b) Les sommets sont terminés dans l’ordre des  croissants (e, 7, d) (f, 7, e) (h, 8, e) (g, 9, h) (i, 16, g)

Complexité O(n2) A chaque étape : 1 sommet devient terminé  Au plus n étapes A l’étape k : Sélection du sommet y à terminer : au plus n-k en attente  au pire n-k-1 comparaisons Mise à jour des successeurs de y :  au pire |(y)| tests (comparaisons) Globalement : O(n2) O(n2) + O(m) comparaisons Nombre d ’arcs

Hypothèses particulières Sur les valeurs des arcs Sur la topologie du graphe Algorithmes GLOUTONS

Hypothèse : GRAPHE SANS CIRCUIT hypothèse supplémentaire : le sommet de départ est racine du graphe

Hypothèse : GRAPHE SANS CIRCUIT hypothèse supplémentaire : le sommet de départ est racine du graphe point d’entrée tout sommet en est descendant Algorithme ORDINAL-RACINE

Principe : exploration selon la stratégie « points d’entrée » (Marimont) INVARIANT Tout sommet y est : dehors terminé

Arrêt : Init : tous les sommets sont terminés tous les autres sommets sont dehors

Progression : Soit y dehors dont tous les prédécesseurs sont terminés ; y devient terminé ;

Preuve  Initialement, l’invariant est vérifié (par construction)  La progression maintient l’invariant (voir détail + loin)  Finalement, le résultat obtenu est correct (Conjonction de l’invariant et de la condition d’arrêt)

Preuve  Initialement, l’invariant est vérifié (par construction)  La progression maintient l’invariant (voir détail + loin)  Finalement, le résultat obtenu est correct  La condition d’arrêt est obtenue après un nombre fini d’étapes (A chaque étape un nouveau sommet devient terminé).

Preuve  La progression maintient l’invariant (détail) Invariant au début d’une étape Invariant à la fin de l ’étape Pour tout sommet y subissant une transition d’état : dehors  dehors : état non modifié

 La progression maintient l’invariant (détail) Pour tout sommet y subissant une transition d ’état : dehors  terminé : y a tous ses prédécesseurs terminés tout prédécesseur z de y a ses attributs définitifs Donc y reçoit ses attributs définitifs

T z1 x z2 y z3 meilleur chemin de x à y via z1, valeur (z1)=21 4 z1 x 22 2 z2 y 17 10 z3 meilleur chemin de x à y via z1, valeur (z1)=21 meilleur chemin de x à y via z2, valeur (z2)=22 meilleur chemin de x à y via z3, valeur (z3)=17

T z1 x z2 y z3 meilleure valeur de chemin de x à y : 21 z1 4 x 22 z2 2 y 17 z3 10 meilleur chemin de x à y via z1, valeur (z1)=21 meilleur chemin de x à y via z2, valeur (z2)=22 meilleur chemin de x à y via z3, valeur (z3)=17 meilleure valeur de chemin de x à y : min((z1) +v(z1,y) , (z2) +v(z2,y) , (z3) +v(z3,y)) = min(25, 24, 27) pred(y) = z2

Preuve  La condition d’arrêt est obtenue après un nombre fini d’étapes (A chaque étape un nouveau sommet devient terminé). Progression : Soit y dehors dont tous les prédécesseurs sont terminés ; Choix toujours possible (absence de circuit) ; (cf. algorithme de Marimont)

Un exemple d’exécution 7 7 d g -3 5 3 1 -1 1 12 a a b e h i (0) 4 4 -1 8 -1 4 12 c f terminés (a, 0, /) (b)= (a)+1=1, pred(b)=a Un exemple d’exécution

(d)= min((a)+5,  (b)+3)=4, pred(d)=b 7 7 d g -3 5 3 1 -1 1 12 a a b e h i (0) (1) 4 4 -1 8 -1 4 12 c f terminés (a, 0, /) (b, 1, a) (d)= min((a)+5,  (b)+3)=4, pred(d)=b

(c)= min((a)+4,  (b)+4)=4, pred(c)=a 7 7 (4) d g -3 5 3 1 -1 1 12 a a b e h i (0) (1) 4 4 -1 8 -1 4 12 c f terminés (a, 0, /) (b, 1, a) (d, 4, b) (c)= min((a)+4,  (b)+4)=4, pred(c)=a

(e)= min((d)-3,  (c)+8)=1, pred(e)=c 7 7 (4) d g -3 5 3 1 -1 1 12 a a b e h i (0) (1) 4 4 -1 8 -1 4 12 (4) c f terminés (a, 0, /) (b, 1, a) (d, 4, b) (e)= min((d)-3,  (c)+8)=1, pred(e)=c (c, 4, a)

(f)= min((c)+4,  (e)-1)=0, pred(f)=e 7 7 (4) d g -3 5 3 1 -1 1 12 a a b (1) e h i (0) (1) 4 4 -1 8 -1 4 12 (4) c f terminés (a, 0, /) (b, 1, a) (d, 4, b) (f)= min((c)+4,  (e)-1)=0, pred(f)=e (c, 4, a) (e, 1, d)

(h)= min((e)-1,  (f)-1)=-1, pred(h)=f 7 7 (4) d g -3 5 3 1 -1 1 12 a a b (1) e h i (0) (1) 4 4 -1 8 -1 4 12 (4) c (0) f terminés (a, 0, /) (b, 1, a) (d, 4, b) (h)= min((e)-1,  (f)-1)=-1, pred(h)=f (c, 4, a) (e, 1, d) (f, 0, e)

(g)= min((d)+7,  (h)+1)=0, pred(g)=h (4) d g -3 5 3 1 -1 1 12 a a b (1) e h i (0) (1) (-1) 4 4 -1 8 -1 4 12 (4) c (0) f terminés (a, 0, /) (b, 1, a) (d, 4, b) (g)= min((d)+7,  (h)+1)=0, pred(g)=h (c, 4, a) (e, 1, d) (f, 0, e) (h, -1, f)

terminés (i)= min((f)+12,  (h)+12,  (g)+7 )=7, pred(i)=g (a, 0, /) (4) d g (0) -3 5 3 1 -1 1 12 a a b (1) e h i (0) (1) (-1) 4 4 -1 8 -1 4 12 (4) c (0) f terminés (a, 0, /) (b, 1, a) (d, 4, b) (i)= min((f)+12,  (h)+12,  (g)+7 )=7, pred(i)=g (c, 4, a) (e, 1, d) (f, 0, e) (h, -1, f) (g, 0, h)

terminés (a, 0, /) (b, 1, a) (d, 4, b) (c, 4, a) (e, 1, d) (f, 0, e) 7 7 (4) d g (0) -3 5 3 1 -1 1 12 a a b (1) e h (0) (1) (-1) (7) i 4 4 -1 8 -1 4 12 (4) c (0) f terminés (a, 0, /) (b, 1, a) (d, 4, b) (c, 4, a) (e, 1, d) (f, 0, e) (h, -1, f) (g, 0, h) (i, 7, g)