Adloun

Le même sous-problème, vingt-deux millions de fois

Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 14 — Exploration exhaustive et retour sur trace

Énoncé

Le retour sur trace du sac à dos donné en exemple s'appelle avec deux paramètres : la capacité restante et l'indice de l'objet courant. Compter, sur une instance, le nombre d'appels et le nombre de couples distincts de paramètres. Que conclure ?

Corrigé

Instance choisie pour être la pire : objets de poids , de valeurs , capacité .

appelscouples distinctsrapport
10551
157100
2010176
241224788 978

Lecture. À , l'algorithme fait vingt-deux millions d'appels pour ne rencontrer que deux cent quarante-sept situations différentes. Chaque situation est donc recalculée, en moyenne, quatre-vingt-neuf mille fois — et le calcul recommencé est identique à chaque fois, puisqu'il ne dépend que de .

Le nombre de couples est borné par , soit ici , dont sont effectivement atteints. C'est polynomial en et , tandis que le nombre d'appels est exponentiel.

Ce que cela annonce. Retenir le résultat de chaque couple dans une table, et le relire au lieu de le recalculer, ramène le coût au nombre de couples : . C'est exactement la programmation dynamique du chapitre chap:dynamique — et l'écart mesuré ici, , est la raison d'être de ce chapitre.

Un mot de prudence. n'est pas polynomial en la taille de l'entrée : s'écrit avec chiffres. On dit que ce coût est pseudo-polynomial. Si vaut , la table est hors de portée et le retour sur trace redevient préférable. Aucune des deux méthodes ne domine l'autre : le chapitre chap:probabilistes en dresse le bilan complet.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.