Vous souhaitez embaucher la meilleure secrétaire parmi N candidates. Pour cela, elles sont interrogées une par une dans un ordre aléatoire mais vous devez prendre une décision juste après l'entretien, à savoir l'embaucher ou passer à la suivante.
Vous pouvez bien entendu classer la candidate par rapport à celles déjà vues mais vous ne connaissez pas les qualités de celles qui ne sont pas encore passées.
Quelle est la stratégie optimale pour maximer votre chance de sélectionner la meilleure candidate ?
Pour ce MPO, vous aurez en valeur d'entrée uniquement le nombre N de secrétaires qui viennent postuler pour le poste. Leurs qualités seront des nombres entre 0 et 1 (exclus) tirés aléatoirement par la machine au moment de l'entretien (donc inutile de les mémoriser quelque part avant de lancer votre programme)
La calculatrice affichera le numéro (entre 1 et N) de la secrétaire retenue ainsi que sa qualité.
Exemples :
Code : Tout sélectionner
MPO108(40) # 40 secrétaires se présentent
(19, 0.9582957304815056) # La n°19 a été retenue avec une qualité de 95,83 %
MPO(100) # 100 secrétaires se présentent
(46, 0.9844756088813564) # La n°46 a été retenue avec une qualité de 98,44 %
Quelques exemples pour vos recrutements
Code : Tout sélectionner
RECRUT1 = [0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 0.98]
Les 20 secrétaires arrivent dans cet ordre et sont à chaque fois meilleures que les précédentes.
L'algorithme ALGO_ZERO devrait vous proposer la 8e secrétaire.
RECRUT2 = [0.95, 0.9, 0.85, 0.8, 0.75, 0.7, 0.65, 0.6, 0.55, 0.5, 0.45, 0.4, 0.35, 0.3, 0.25, 0.2, 0.15, 0.1, 0.05, 0.02]
Les 20 secrétaires arrivent dans cet ordre et sont à chaque fois pires que les précédentes.
L'algorithme ALGO_ZERO devrait vous proposer la 20e secrétaire.
RECRUT3 = [0.336, 0.697, 0.116, 0.396, 0.776, 0.693, 0.49, 0.004, 0.065, 0.023, 0.532, 0.515, 0.953, 0.734, 0.649]
L'algorithme ALGO_ZERO devrait vous proposer la 13e secrétaire.