Énoncé de l'exercice conception et anlyse des algorithmes : Planification avec des délais
Une entreprise a une série de tâches \( J = \{1, 2, \ldots, n\} \) à exécuter. Chaque tâche \( i \) :
Prend exactement une unité de temps à être exécutée.
Génère un bénéfice \( g_i \) si elle est terminée avant sa date limite \( d_i \).
La ressource exécutant ces tâches ne peut réaliser qu'une seule tâche à un instant donné. L'objectif est de maximiser le bénéfice total tout en respectant les délais des tâches.
Données fournies
On vous donne :
Une liste de \( n \) tâches avec leurs bénéfices respectifs \( g_1, g_2, \ldots, g_n \).
Les délais associés \( d_1, d_2, \ldots, d_n \), indiquant la dernière unité de temps où une tâche peut être exécutée.
Exemple
Considérez les \( n = 4 \) tâches suivantes :
Tâche \( i \)
Bénéfice \( g_i \)
Date limite \( d_i \)
1
50
2
2
10
1
3
20
2
4
30
1
Questions
Déterminer les séquences possibles : Lister toutes les séquences réalisables des tâches (en respectant les dates limites) et calculer le bénéfice total pour chacune.
Identifier la séquence optimale : Quelle séquence maximise le bénéfice total ? Justifiez votre réponse.
Implémenter l'algorithme glouton : Développez un algorithme glouton pour résoudre ce problème. L'algorithme doit :
Trier les tâches par bénéfice décroissant.
Ajouter chaque tâche à une solution si elle respecte les contraintes de faisabilité (pas de dépassement de délai).
Appliquez cet algorithme à l'exemple donné.
Propriété d'optimalité : Expliquez pourquoi cet algorithme glouton est optimal pour ce problème en vous basant sur les concepts de faisabilité et de maximisation du bénéfice.
Gestion de tâches supplémentaires :Si une tâche peut être partiellement exécutée pour un bénéfice proportionnel (par exemple, une tâche nécessitant 2 unités de temps donne la moitié de son bénéfice si elle n'est exécutée qu'une unité), comment adapteriez-vous l'algorithme ?
Complexité :Analysez la complexité temporelle de l'algorithme développé.
Si vous avez trouvé les exercices corriges sur la Complexité des Algorithmes & Structure de donnée de Mr JoëlYk intéressants et utiles, pourquoi ne pas les partager avec d'autres personnes qui pourraient également en bénéficier ? Partagez ce lien sur les réseaux sociaux ou envoyez-le à vos amis et collègues. Vous pourriez aider quelqu'un à améliorer ses compétences en programmation ou à trouver des solutions à des problèmes complexes. N'oubliez pas que la connaissance doit être partagée pour grandir. Merci pour votre soutien et votre partage !
Contact WhatsApp : +237 652027193| Réaliser Par Joël_Yk