Plus courts chemins, programmation dynamique

Documents pareils
Chapitre 5 : Flot maximal dans un graphe

LE PROBLEME DU PLUS COURT CHEMIN

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

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

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Programmation linéaire

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

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

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

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

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

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

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

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

Problème 1 : applications du plan affine

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé

3. Conditionnement P (B)

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

Représentation d un entier en base b

Fonctions de plusieurs variables : dérivés partielles, diérentielle. Fonctions composées. Fonctions de classe C 1. Exemples

Structures algébriques

Durée de L épreuve : 2 heures. Barème : Exercice n 4 : 1 ) 1 point 2 ) 2 points 3 ) 1 point

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

Annexe 6. Notions d ordonnancement.

Polynômes à plusieurs variables. Résultant

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

Algorithmique et Programmation

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

La fonction exponentielle

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

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

Master IAD Module PS. Reconnaissance de la parole (suite) Alignement temporel et Programmation dynamique. Gaël RICHARD Février 2008

Recherche dans un tableau

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

Fonctions de plusieurs variables, intégrales multiples, et intégrales dépendant d un paramètre

Baccalauréat ES Amérique du Nord 4 juin 2008

Initiation à LabView : Les exemples d applications :

Cours d Analyse. Fonctions de plusieurs variables

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

Programmation linéaire

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

Limites finies en un point


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

La classification automatique de données quantitatives

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

Premiers exercices d Algèbre. Anne-Marie Simon

Probabilités sur un univers fini

1 Recherche en table par balayage

Baccalauréat L spécialité, Métropole et Réunion, 19 juin 2009 Corrigé.

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

Algorithmes de recherche

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

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

Cours de Master Recherche

Fonctions de plusieurs variables

Chapitre 2. Matrices

Axiomatique de N, construction de Z

Une forme générale de la conjecture abc

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Cercle trigonométrique et mesures d angles

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

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

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

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

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

Résolution d équations non linéaires


MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

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

ELEC2753 Electrotechnique examen du 11/06/2012

Baccalauréat ES Antilles Guyane 12 septembre 2014 Corrigé

Équations non linéaires

Model checking temporisé

Jean-Philippe Préaux

Un K-espace vectoriel est un ensemble non vide E muni : d une loi de composition interne, c est-à-dire d une application de E E dans E : E E E

Programmation linéaire et Optimisation. Didier Smets

Resolution limit in community detection

ACTUARIAT 1, ACT 2121, AUTOMNE 2013 #12

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours d initiation à la programmation en C++ Johann Cuenin

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA

LA PHYSIQUE DES MATERIAUX. Chapitre 1 LES RESEAUX DIRECT ET RECIPROQUE

Représentation des Nombres

Théorie et codage de l information

Correction de l examen de la première session

L exclusion mutuelle distribuée

Correction : E = Soit E = -1,6. F = 12 Soit F = y = 11. et G = -2z + 4y G = 2 6 = 3 G = G =

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

Quelques Algorithmes simples

Rappels sur les suites - Algorithme

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

Diviser un nombre décimal par 10 ; 100 ; 1 000

Chapitre 11. Séries de Fourier. Nous supposons connues les formules donnant les coefficients de Fourier d une fonction 2 - périodique :

DOSSIER TECHNIQUE R-GO SPA. Production et assemblage 100 % Française. 3 Rue Pierre Mendès France ARGENTAN

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Feuille d exercices 2 : Espaces probabilisés

Continuité et dérivabilité d une fonction

Exercice autour de densité, fonction de répatition, espérance et variance de variables quelconques.

Transcription:

1 Plus courts chemins, programmation dynamique 1. Plus courts chemins à partir d un sommet 2. Plus courts chemins entre tous les sommets 3. Semi-anneau 4. Programmation dynamique 5. Applications à la bio-informatique

2 Graphes orientés avec longueur Soit un graphe orienté G = (X, A, or, ext, l) X = {x 1, x 2,..., x n } Ensemble de sommets A Ensemble d arcs or : A X, ext : A X origine et extrémité de chaque arc l : A Z longueur des arcs 1. Une marche est une suite d arcs a 1, a 2,..., a p telle que pour tout 1 i < p: or(a i+1 ) = ext(a i ) 2. Un chemin est une marche a 1, a 2,..., a p telle que pour tout i j on ait: or(a i ) or(a j ) 3. Un circuit est un chemin tel que or(a 1 ) = ext(a p )

3 Plus courts chemins à partir d un sommet On se donne un graphe orienté G aux arcs valués par l(x, y) et un sommet x 0, trouver pour chaque sommet x : 1. La longueur du plus court chemin de x 0 à x 2. La suite des arcs constituant ce plus court chemin Structures de données : d[x] la longueur du plus court chemin de x 0 à x (avec mise à jour) pere[x] sommet qui précède x sur le plus court chemin de x 0 à x

4 7 1 2 4 3 2 1 3 4 2 2 7 6 7 6 1 2 2 8 3 5 10 3 2 3 5 1 2 9

5 5 1 2 3 4 3 7 7 3 4 4 2 3 6 2 1 3 5 2 3 5 8 7 6 2 3 9 2 10

6 Relaxation de l arc x, y Relaxation Si d[y] > d[x] + l(x, y) Alors d[y] = d[x] + l(x, y) pere[y] = x

7 Algorithme de Dijkstra Les distances sont supposées positives Un ensemble F initialisé à X les valeurs de d[x] sont initialisées à sauf : d[x0] = 0. Tant que F non vide : Soit y l élément de F ayant un d[y] minimal Pour tout arc a d origine y Faire Relaxation(a) Supprimer y de F.

8 Algorithme de Dijkstra: preuve de correction d[x] δ(x 0, x) lorsqu un sommet x quitte F on ne peut pas trouver un chemin plus court entre x 0 et x par la suite Si le chemin le plus court entre x 0 et x passe par y, alors il est composé d un chemin le plus court entre x 0 et y et d un plus court y et x. point fixe

9 Implantation 1. Gérer F comme une file? 2. Trouver le plus petit d[x] 3. Heaps, Fibonacci Heaps 4. Retrouver le chemin le plus court

10 Algorithme de Dijkstra dans le cas d arcs de longueurs négatives La version précédente ne donne pas le bon résultat On propose la modification suivante: Tant que F non vide : Soit y l élément de F ayant un d[y] minimal Pour tout arc a d origine y Faire Relaxation(a) Si relaxation modifie la valeur de ext(a) alors ajouter ext(a) à F. Supprimer y de F

11 Analyse de cette modification Donne le bon résultat s il n y a pas de circuit de longueur négative Mais un exemple montre que la complexité peut être exponentielle Exemple de Johnson Un graphe D n ayant n sommets x 1, x 2,..., x n et des arcs entre tous les sommets (dans les deux sens) Les longueurs des arcs (x i, x j ) pour i < j est 2 n

12 Exemple de Johnson (suite) Les longueurs des arcs (x i, x j ) pour i > j sont toutes négatives et sont données par les relations suivantes l(x 2, x 1 ) = 2, i > 2, l(x i+1, x 1 ) = l(x i, x 1 ) 2 i 2 1 i 2, 1 < j < i, l(x i, x j ) = l(x i, x j 1 ) + 1

13 Exemple n = 5 l(x 5, x 1 ) = l(x 4, x 1 ) 5 = l(x 3, x 1 ) 3 5 = l(x 2, x 1 ) 2 8 = 12 On obtient facilement la matrice des longueurs : x 1 x 2 x 3 x 4 x 5 x 1 0 32 32 32 32 x 2-2 0 32 32 32 x 3-4 -3 0 32 32 x 4-7 -6-5 0 32 x 5-12 -11-10 -9 0

14 F = {x 1, x 2, x 3, x 4, x 5 } 0 F = {x 1, x 2, x 3, x 4 } -12-11 -10-9 0 F = {x 2, x 3, x 4 } -12-11 -10-9 0 F = {x 1, x 3, x 4 } -13-11 -10-9 0 F = {x 3, x 4 } -14-13 -10-9 0 F = {x 1, x 2, x 4 } -14-13 -10-9 0 F = {x 2, x 4 } -14-13 -10-9 0...... F = {x 4 } -15-13 -10-9 0 F = {x 1, x 2, x 3 } -16-15 -14-9 0...... F = {x 1 } -19-17 -14-9 0

15 Analyse de l exécution Il n y a pas de circuit de longueur négative x 1 sort une fois sur deux x 2 une fois sur quatre Au total 2 n 1 étapes de calcul

16 Les distances peuvent être négatives Algorithme de Ford Pour i= 1 à n-1 faire Pour tout arc a du graphe Faire Relaxation(a) Remarque Pour vérifier qu il n y a pas de circuit négatif on refait un tour de relaxation: si une nouvelle valeur est modifiée c est qu il existe un circuit négatif

17 Plus courts chemins entre tous les couples de sommets On calcule les δ k (x, y) par l algorithme suivant : Pour tous les couples x, y on pose : δ 0 (x, y) = l(a) s il existe un arc a entre x et y et sinon. Pour k = 1, 2, 3,..., n faire Pour tout couple x, y Pour tout sommet z successeur de x δ k+1 (x, y) = min(δ k (x, y), δ 0 (x, z) + δ k (z, y))

18 Preuve de valdité Il suffit de vérifier que δ k (x, y) est la longueur du plus court chemin composé de k arcs au plus entre x et y Par récurrence sur k Recherche du chemin Maintenir un tableau suivant[x][y] qui contient le sommet qui suit x dans le chemin qui mène de x à y

19 Algorithme de Roy-Warshall ( en n 3 ) Pour k de 1 à n faire Pour i de 1 à n faire Pour j de 1 à n faire Si delta[i][j] > delta[i][k] + delta[k][j] Alors delta[i][j] = delta[i][k] + delta[k][j]

20 Un exemple d illustration 2 6 1 2 4 2 5 1 5 4 3 1 3 8 2

21 Semi-anneau Un ensemble muni de deux lois notées, : La loi est associative, commutative Elle possède un élémént neutre 0 La loi est associative La loi est distributive par rapport à 0 est un zéro pour

22 Exemples de semi-anneaux 1. Un anneau, par exemple Z 2. Les entiers naturels N avec + et 3. Le semi-anneau de Boole à deux éléments 0, 1 avec (1 + 1 = 1) 4. Les opérations min + sur N 5. Les opérations max sur l intervalle réel [0, 1] 6. Union et concaténation pour les ensembles de mots

23 Graphes à arcs valués sur un semi-anneau Le semi anneau a pour lois, : Sommets X, Arcs A, Valuation λ Valuation d un chemin f = a 1, a 2,..., a k = λ(f) = λ(a 1 ) λ(a 2 )... λ(a k ) Valuation d un ensemble Γ = {f, g,... u, v} de chemins λ(f) = λ(f) λ(g)... λ(u) λ(v)

24 Algorithme sur un semi anneau quelconque On calcule les λ k (x, y) par l algorithme suivant : Pour tous les couples x, y λ 0 (x, y) = λ(a) s il existe un arc a entre x et y et ε sinon. Pour k = 1, 2, 3,..., n faire Pour tous les x, y faire λ k+1 (x, y) = λ k (x, y) λ k (x, z) λ k (z, y)

25 Applications Min et + : Les plus courts chemins Max et : La fiabilité maximale dans un réseau Semi-anneau de Boole: Existence de chemins Union, concaténation: Forme rationnelle d un langage reconnu par un automate

26 Principe de la programmation dynamique 1. La solution d un problème P k contient les solutions de problèmes ayant des tailles plus petites 2. La construction de la solution pour P k s effectue à l aide d un faible nombre d informations sur P j, j < k

27 Exemple 1: faire un produit de matrices de tailles différentes On se donne n matrices M 1, M 2,..., M n chaque M i a m i lignes et m i+1 colonnes, les entrées sont des nombres (réels ou entiers). On cherche la matrice produit: M 1 M 2... M n Il faut trouver l ordre des produits à effectuer de façon à minimiser le nombre total d opérations. Remarque: Le calcul de M i 1 M i demande O(m i 1 m i m i+1 ) opérations.

28 Exemple Trois matrices M 1, M 2, M 3 de tailles respectives 10 100, 100 5 et 5 50 1. Le calcul de M 1 M 2 demande 5 000 multiplications de nombres le produit ensuite par M 3 fait faire 2 500 de plus soit un total de 7 500 2. Le calcul de M 2 M 3 demande 25 000 multiplications de nombres, la détermination ensuite de M 1 M 2 M 3 utilise 50 000 multiplications soit un total de 75 000 Conclusion Il vaut mieux faire ((M 1 M 2 )M 3 ) que calculer (M 1 (M 2 M 3 ))

29 Cas général On note c i,j le nombre minimum de multiplications pour calculer M i M i+1... M j On a alors c i,i = 0, c i 1,i = m i 1 m i m i+1 On découpe M i M i+1... M j en M i... M k et M k+1... M j en choisissant le meilleur k: c i,j = min [c i,k + c k+1,j + m i m k+1 m j+1 ] k=i,j 1 On doit déterminer M 1,n

30 Un exemple: i 1 2 3 4 5 6 7 m i 30 35 15 5 10 20 25 c i,j 1 2 3 4 5 6 1 0 - - - - - 2-0 - - - - 3 - - 0 - - - 4 - - - 0 - - 5 - - - - 0-6 - - - - - 0

31 Un exemple: i 1 2 3 4 5 6 7 m i 30 35 15 5 10 20 25 c i,j 1 2 3 4 5 6 1 0 15 750 - - - - 2-0 2 625 - - - 3 - - 0 750 - - 4 - - - 0 1 000-5 - - - - 0 5 000 6 - - - - - 0

32 Calcul de c 1,3 : i 1 2 3 4 5 6 7 m i 30 35 15 5 10 20 25 c 1,3 = min [c 1,1 + c 2,3 + m 1 m 2 m 4, c 1,2 + c 3,3 + m 1 m 3 m 4 ] = min [0 + 2625 + 30 35 5, 15750 + 0 + 30 15 5] = min [7 875, 18 000]

33 Un exemple: i 1 2 3 4 5 6 7 m i 30 35 15 5 10 20 25 c i,j 1 2 3 4 5 6 1 0 15 750 7 875 - - - 2-0 2 625 4 375 - - 3 - - 0 750 2 500-4 - - - 0 1 000 3 500 5 - - - - 0 5 000 6 - - - - - 0

34 Un exemple: i 1 2 3 4 5 6 7 m i 30 35 15 5 10 20 25 c i,j 1 2 3 4 5 6 1 0 15 750 7 875 9 375 - - 2-0 2 625 4 375 7 125-3 - - 0 750 2 500 5 375 4 - - - 0 1 000 3 500 5 - - - - 0 5 000 6 - - - - - 0

35 Un exemple: i 1 2 3 4 5 6 7 m i 30 35 15 5 10 20 25 c i,j 1 2 3 4 5 6 1 0 15 750 7 875 9 375 11 875-2 - 0 2 625 4 375 7 125 10 500 3 - - 0 750 2 500 5 375 4 - - - 0 1 000 3 500 5 - - - - 0 5 000 6 - - - - - 0

36 Un exemple: i 1 2 3 4 5 6 7 m i 30 35 15 5 10 20 25 c i,j 1 2 3 4 5 6 1 0 15 750 7 875 9 375 11 875 15 125 2-0 2 625 4 375 7 125 10 500 3 - - 0 750 2 500 5 375 4 - - - 0 1 000 3 500 5 - - - - 0 5 000 6 - - - - - 0

37 Retrouver les étapes du calcul un tableau pour les valeurs des k intermédiaires K i,j 1 2 3 4 5 6 1 - - 1 3 3 3 2 - - - 3 3 3 3 - - - - 3 3 4 - - - - - 5 5 - - - - - - 6 - - - - - - Pour calculer M i... M j on pose k = K i,j donné par le tableau puis on calcule M i... M k et M k+1... M j et on les multiplie entre elles.

38 Sac à dos Des objets 1, 2,..., n de poids w 1, w 2,..., w n Chacun rapporte un bénéfice b 1, b 2,..., b n Trouver le bénéfice maximum réalisable sachant que la charge maximale est P 0

39 Sac à dos: idée pour P 0 entier pas trop grand On note B(k, p) le bénéfice maximal reálisable avec des objets 1, 2,..., k et le poids maximal p On a pour k = 1: B(1, p) = { 0 si p < w1 b 1 si p w 1 Pour k > 1 B(k, p) = { B(k 1, p) si p < wk max(b(k 1, p), B(k 1, p w k ) + b k ) si p w k

40 Exemple pour le sac à dos Objets 1 2 3 4 5 6 7 8 Poids 2 3 5 2 4 6 3 1 Bénéfices 5 8 14 6 13 17 10 4 Poids total P 0 = 12

41 Sac à dos: Objets 1 2 3 4 5 6 7 8 Poids 2 3 5 2 4 6 3 1 Bénéfices 5 8 14 6 13 17 10 4 B(k, p) 0 1 2 3 4 5 6 7 8 9 10 11 12 k = 1 0 0 5 5 5 5 5 5 5 5 5 5 5

42 Sac à dos: Objets 1 2 3 4 5 6 7 8 Poids 2 3 5 2 4 6 3 1 Bénéfices 5 8 14 6 13 17 10 4 B(k, p) 0 1 2 3 4 5 6 7 8 9 10 11 12 k = 1 0 0 5 5 5 5 5 5 5 5 5 5 5 k = 2 0 0 5 8 8 13 13 13 13 13 13 13 13

43 Sac à dos: Objets 1 2 3 4 5 6 7 8 Poids 2 3 5 2 4 6 3 1 Bénéfices 5 8 14 6 13 17 10 4 B(k, p) 0 1 2 3 4 5 6 7 8 9 10 11 12 k = 1 0 0 5 5 5 5 5 5 5 5 5 5 5 k = 2 0 0 5 8 8 13 13 13 13 13 13 13 13 k = 3 0 0 5 8 8 14 14 19 22 22 27 27 27

44 Sac à dos: B(k, p) 0 1 2 3 4 5 6 7 8 9 10 11 12 k = 1 0 0 5 5 5 5 5 5 5 5 5 5 5 k = 2 0 0 5 8 8 13 13 13 13 13 13 13 13 k = 3 0 0 5 8 8 14 14 19 22 22 27 27 27 k = 4 0 0 6 8 11 14 14 20 22 25 28 28 33 k = 5 0 0 6 8 13 14 19 21 24 27 28 33 35 k = 6 0 0 6 8 13 14 19 21 24 27 30 33 36 k = 7 0 0 6 10 13 16 19 23 24 29 31 34 37 k = 8 0 4 6 10 14 17 20 23 27 29 33 35 38

45 Alignements de séquences Pour deux mots sur l alphabet {A, C, G, T } on cherche un alignement qui optimise une fonction qui mesure la similarité Exemple: GATGCAT et AT CGAT G A T - G C A T - A T C G - A T

46 Algorithme de calcul du meilleur alignement p(a, b) est d autant plus grand que les lettres sont similaires. b a, p(a, a) > 0 > p(a, b) p(a, b) = p(b, a) q < 0 exprime la similarité d une lettre avec l espacement: p(a, e) = p(e, a) = q ms i,j = max ms i 1,j 1 + p(u i, v j ) ms i 1,j + q ms i,j 1 + q

47 Principe d un algorithme en espace linéaire Le calcul des meilleurs scores peut se faire sur une seule ligne Le problème est de retrouver l alignement une fois que l on a le score On procède par divide and conquer Pour aligner u et v on prend i comme la moitié de la longueur de u On calcule le score a j du meilleur alignement de u 1 u 2... u i 1 avec chaque facteur gauche v 1 v 2... v j de v On calcule le score b k du meilleur alignement de u i+1 u i+2... u n avec chaque facteur droit v k v k+1... v n de v On cherche le a j 1 + b j+1 + p(u i, v j ) le meilleur

48 Calcul de la complexité de l algorithme en espace linéaire On montre que le nombre de comparaison C(m, n) 2mn Vrai pour m = 1 C(m, n) mn 2 + mn 2 + C(m/2, j) + C(m/2, n j) C(m, n) mn 2 + mn 2 + mj + m(n j) 2mn