Algorithmique P2
Algorithmique P2Algorithmique P2
Algorithmique P2
Algorithmique P2
Algorithmique P2Algorithmique P2
Algorithmique P2
Les paradigmes de résolution – Suite
Renaud Dumont, Ulg
2009-2010
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
Glouton : Exercice 1
Glouton : Exercice 1Glouton : Exercice 1
Glouton : Exercice 1
disponibles sur la route, donnée sous la forme
d'une liste : s[d1,d2,…,dk]
Chaque élément s[i] donne la distance qui le sépare de la
station précédente (ou du départ)
s[0] à d1kilomètres du départ
s[1] à d2kilomètres de s[d1]
Etc.
on suppose di<= R pour i=1..k, dksymbolisant l'arrivée
On souhaite faire le moins d'arrêts possibles
1. Ecrire un algorithme glouton en pseudo-
code résolvant le problème, càd renvoyant
la liste des pompes à essence où l'on doit
Glouton : Exercice 1
Glouton : Exercice 1Glouton : Exercice 1
Glouton : Exercice 1
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]
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"
Solution
SolutionSolution
Solution
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.
2. Python (exemple)
def station(chaine):
r = 600
i = 0
listefinale = []
while
(i+1) <
len
(chaine) :
Solution
SolutionSolution
Solution
while
(i+1) <
len
(chaine) :
r = r - chaine[i]
if chaine[i+1] > r :
r = 600
listefinale.append(i)
i=i+1
return listefinale
1 / 18 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !