Je possède un certain nombre d'actions, qui sont pondérées par leur temps d'éxécution. Ce que je veux faire : éxécuter ces actions le plus rapidement possible.
Exemple :
Je veux écrire :ExeMplE
Sachant que :
écrire une lettre = 1s
passer de majuscule en minuscule = 2s
passer de minuscule en majuscule = 3s
changer la couleur = 5s
Donc il y a tout d'abord la méthode :
Mettre en rouge / Passer en majuscule / Ecrire une lettre / Passer en minuscule / Mettre en bleu / Ecrire une lettre / Passer en rouge / Ecrire une lettre / Passer en majuscule / Passer en vert / Ecrire une lettre / Passer en rouge / Passer en minuscule / Ecrire une lettre / Passer en jaune / Ecrire une lettre / Passer en noir / Passer en majuscule / Ecrire une lettre
5+3+1+3+5+1+5+1+3+5+1+5+2+1+5+1+5+3+1 = 56s si je ne me suis pas trompé.
Il y a moyen de faire plus rapide dans ce cas la en évitant des changements de couleur en écrivant par exemple toutes les lettres rouges, puis toutes les lettres vertes.... etc.
Ce que je cherche donc c'est un algorithme qui trouve l'enchainement d'action le moins consomateur de temps...
-> J'avais essayé de calculer toutes les combinaisons différentes, puis de calculer le temps de chacune des combinansons, de les trier et de prendre la plus rapide...
Mais le temps de faire tous les calculs, j'ai le temps de faire la combinaison la plus longue ^^ donc ça servait à rien...
-> J'avais essayé de de limiter le plus possible les apels aux actions les plus couteuses...
A = 3s
B = 2s
C = 1s
Mais souvent j'ai moins de A que de B; j'optimise en évitant de faire 1 A, mais pour cela il faut que je fasse 4 B en plus,(par exemple) ce qui est plus long qu'un A. Donc ça n'a pas optimisé en fait...
Voila, je m'en remet à vous...
Partager