Algorithmique P2. Les paradigmes de résolution Suite Renaud Dumont, Ulg 2009-2010



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

Rappels sur les suites - Algorithme

Licence Sciences et Technologies Examen janvier 2010

CORRECTION EXERCICES ALGORITHME 1

1 Recherche en table par balayage

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

La carte MasterCard prépayée RIA n'est pas une carte de crédit. Il s'agit d'une valeur

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

Correction TD algorithmique

Les arbres binaires de recherche

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

Algorithmes de recherche

RÉALISATION DE GRAPHIQUES AVEC OPENOFFICE.ORG 2.3

TP 1. Prise en main du langage Python

6. Hachage. Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses

Initiation à la programmation en Python

Algorithmique I. Algorithmique I p.1/??

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Items étudiés dans le CHAPITRE N5. 7 et 9 p 129 D14 Déterminer par le calcul l'antécédent d'un nombre par une fonction linéaire

Exercices de dénombrement

Algorithmique avec Algobox

LE PROBLEME DU PLUS COURT CHEMIN

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

Suites numériques. Exercice 1 Pour chacune des suites suivantes, calculer u 1, u 2, u 3, u 10 et u 100 : Introduction : Intérêts simpleset composés.

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

Chapitre 5 : Flot maximal dans un graphe

Algorithme. Table des matières

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

Recherche dans un tableau

Représentation d un entier en base b

Nouvelles propositions pour la résolution exacte du sac à dos multi-objectif unidimensionnel en variables binaires

Resolution limit in community detection

FORD C-MAX + FORD GRAND C-MAX CMAX_Main_Cover_2013_V3.indd /08/ :12

Leçon 01 Exercices d'entraînement

Introduction. I Étude rapide du réseau - Apprentissage. II Application à la reconnaissance des notes.

Propagation sur réseau statique et dynamique

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

LE PROCESSUS ( la machine) la fonction f. ( On lit : «fonction f qui à x associe f (x)» )

P1 : Corrigés des exercices

La construction du nombre en petite section

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

Bases de données documentaires et distribuées Cours NFE04

Objets Combinatoires élementaires

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

STATISTIQUES DESCRIPTIVES

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

avec des nombres entiers

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Problème : Calcul d'échéanciers de prêt bancaire (15 pt)

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Plus courts chemins, programmation dynamique

Probabilités Loi binomiale Exercices corrigés

Programmation Objet - Cours II

V- Manipulations de nombres en binaire

Cours de Probabilités et de Statistique

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Chp. 4. Minimisation d une fonction d une variable

Solutions du chapitre 4

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

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

Fonctions homographiques

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

Programmation Linéaire - Cours 1

Annexe B : Exemples. Avis de vente aux enchères liées Système de plafonnement et d échange de droits d émission de gaz à effet de serre (GES)

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

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Algorithmique et Programmation, IMA

Raisonnement par récurrence Suites numériques

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

Représentation des Nombres

Quel système d équations traduit cette situation? x : la hauteur du rectangle. y : l aire du rectangle. C) y = 4x + 25.

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

B = A = B = A = B = A = B = A = Recopier sur la copie chaque expression numérique et la réponse exacte. Réponse A Réponse B Réponse C Solution

Prénom : MATHÉMATIQUES. 120 minutes Compas, règle métrique, rapporteur, équerre, calculatrice non programmable

Première partie. Modélisation des problèmes en programmes linéaires notés PL

Par combien de zéros se termine N!?

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

SOMMAIRE... SOMMAIRE... SOMMAIRE... SOMMAIRE... SOMMAIRE... SOMMAIRE... LES MESURES

Equations cartésiennes d une droite

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

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

OLYMPIADES ACADEMIQUES DE MATHEMATIQUES. 15 mars 2006 CLASSE DE PREMIERE ES, GMF

Programmation linéaire

Les suites numériques

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

Bases de programmation. Cours 5. Structurer les données

Le chiffre est le signe, le nombre est la valeur.

Chapitre 9. Algorithmique. Quelques définitions. L'informatique au lycée.

Résolution de systèmes linéaires par des méthodes directes

Travaux dirigés n 1. Programmation linéaire

D'UN THÉORÈME NOUVEAU

Correction TD Algorithmique 5.3 Pile Liste 5.3 Pile

Logistique, Transports

Nombre dérivé et tangente

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Date : Note /20 : EVALUATION Nom : Prénom : Classe : Traitement sur mots

Transcription:

Algorithmique P2 Les paradigmes de résolution Suite Renaud Dumont, Ulg 2009-2010

Glouton : Exercice 1 Vous souhaitez vous rendre de Liège à Brest en scooter Votre réservoir vous permet de rouler R Km Vous connaissez la liste des pompes à essence disponibles sur la route, donnée sous la forme d'une liste : s[d 1,d 2,,d k ] Chaque élément s[i] donne la distance qui le sépare de la station précédente (ou du départ) s[0] à d 1 kilomètres du départ s[1] à d 2 kilomètres de s[d 1 ] Etc. on suppose d i <= R pour i=1..k, d k symbolisant l'arrivée

Glouton : Exercice 1 On souhaite faire le moins d'arrêts possibles 1. Ecrire un algorithme glouton en pseudocode résolvant le problème, càd renvoyant la liste des pompes à essence où l'on doit s'arrêter. 2. Donner une version en python de votre algorithme 3. Pour un réservoir de 250 Km, tester avec la liste [120,142,90,70,130,150,84,25,110]

Solution 1. Algorithme glouton ReFuel(liste_pompes) <Le réservoir est initialement rempli> Tant que "Brest n'est pas atteint" i = prochaine pompe Si "Plein nécessaire pour atteindre i+1" Faire le plein Ajouter i à la liste des pompes sélectionnées Retourner la liste des pompes sélectionnées Glouton? Oui. A chaque étape, on effectue un choix permettant d'atteindre la pompe suivante la plus éloignée (prob local global). Remarque : il est tout à fait possible d'établir une solution basée sur la programmation dynamique.

Solution 2. Python (exemple) def station(chaine): r = 600 i = 0 listefinale = [] while (i+1) < len(chaine) : r = r - chaine[i] if chaine[i+1] > r : r = 600 listefinale.append(i) i=i+1 return listefinale

Soit un voleur dévalisant un magasin Variante "entière" Il trouve n objets Le i ème vaut v i euros et pèse w i kilogrammes (v i et w i entiers) Il dispose d'un sac à dos ne pouvant porter que W kilogrammes (W entier). Exemple : lingots d'or de qualité différente Variante "fractionnaire" Même principe mais le voleur peut prendre des fractions d'objets Exemple : poussière de métaux précieux Problème : quels objets doit-il emporter pour maximiser la valeur des biens volés?

Variante entière (prog. dynamique) Soit le chargement de valeur maximale pesant au plus W kilos. Si on retire l'objet j du sac, le reste du chargement doit être le meilleur que puisse prendre le voleur pour un poids maximum de W-w j à partir des n-1 objets initiaux, l'objet j étant exclu. Variante fractionnaire (algo glouton) Si on retire un poids w d'un objet j, le reste du chargement doit être le meilleur qu'il puisse prendre pour un poids W-w à partir des n-1 objets initiaux et des w j -w kilos de l'objet j.

Exercice 2: 1. Sur le cas simple ci-contre, illustrer la solution optimale dans le cas 1. de la variante entière 2. de la variante fractionnaire 2. Donner un algorithme de recherche exhaustive et sa complexité 3. Donner un algorithme utilisant le paradigme de l'algorithme glouton pour la version fractionnaire 4. Montrez que cet algorithme est optimal 5. Donnez un contre-exemple montrant que l'algorithme glouton pour la variante entière n'est pas optimal 6. Donnez un algorithme résolvant la variante entière à l'aide de la programmation dynamique 1 5 kg 2 10 kg 3 15 kg v.ent. 30 50 60 v. frac. 6 /kg 5 /kg 4 /kg sac à dos 25 kg dispo.

1. Solution optimale 1. pour variante entière sac à dos 2 15 kg 3 p3 25 kg dispo. 1 5 kg 10 kg 15 kg 10 kg p2 v.ent. 30 50 60 v. frac. 6 /kg 5 /kg 4 /kg 110

1. Solution optimale 2. Pour variante fractionnaire sac à dos 1 2 3 15 kg 25 kg dispo. 10 kg p3 10 kg p2 v.ent. 10 kg 5 kg 5 kg p1 30 50 60 v. frac. 6 /kg 5 /kg 4 /kg 120

2. Algo Recherche exhaustive Il y a N objets, donc 2 N combinaisons possibles On teste toutes ces combinaisons afin de trouver celle de valeur maximale de poids total inférieur ou égal à W Complexité O(2 N )

3. Algo glouton (Fract.) Trier les objets selon leur valeur décroissante au kilo Prendre la plus grande quantité de l'objet de plus grande valeur au kilo Si le sac à dos le permet, on prend l'entièreté de l'objet puis on recommence avec l'objet suivant jusqu'à ce que le sac soit plein Sinon la quantité nécessaire pour le remplir

4. Algo glouton optimal? Soit la solution construite (G) et une solution optimale (S). Les objets sont triés par valeur au kilo décroissante. Pour le premier objet dont les quantités diffèrent, on rajoute dans S la quantité manquante de cet objet On retire alors un poids égal en objets de valeur au kilo inférieure Cela est toujours possible vu l'ordre de comparaison de G et S. Comme dans le cas de la location de voiture, cela conduit à modifier un élément dans la solution optimale. La suite de la démonstration est équivalente et notre solution sera donc optimale.

5. Contre-exemple algo glouton et variante entière sac à dos 1 2 3 15 kg 25 kg dispo. espace perdu 10 kg p2 v.ent. 10 kg 5 kg 5 kg p1 30 50 60 v. frac. 6 /kg 5 /kg 4 /kg 80

6. Algo Programmation dynamique Soit une récurrence définissant la valeur du butin emporté. B(i,w) représente la valeur maximale du butin composé de certains des i premiers objets ici, les objets ne sont pas ordonnés (uniqu. numérotés) et qu'il pèse au maximum w kilos.

On a plusieurs cas à considérer : Le ième objet est plus lourd que la capacité du sac on ne peut pas le prendre le problème revient à rechercher le meilleur butin parmi les i -1 premiers objets Il est possible de prendre le ième objet : On ne le prend pas Le problème revient à rechercher le meilleur butin parmi les i - 1 premiers objets On le prend la valeur du butin est celle du ième objet + celle du butin constitué à partir des i-1 premiers objets Le poids portable pour la suite du calcul est diminué du poids de l'objet i La (non-)sélection du ième objet permettra de maximiser la valeur dérobée.

On obtient alors l'équation suivante : B(i,w) = B(i-1,w) si w i >w Max(v i +B(i-1,w-w i ),B(i-1,w)) sinon On tire de cette équation l'algorithme de programmation dynamique qui suit.

SaD(W, n, (w,v)) {Poids du sac, # éléments, liste des éléments} pour w 0 à W B[0,w] = 0 pour i 1 à n B[i,0] = 0 pour i 1 à n pour w 0 à W si w i > w alors B[i,w] = B[i-1,w] sinon B[i,w] = Max(v i +B(i-1,w-w i ),B(i-1,w)) Que fournit cet algorithme? Il renvoie la valeur maximale du butin emporté ( B[n,W]) Comment connaitre les éléments contenus dans le sac? Au départ de B[n,W] Si B[i,k]!= B[i-1,k], l'élément i est dans le sac à dos Sinon, il n'est pas emporté.