
Description du probl`eme
Entr´ee: Une s´equence de nbits w=b1b2· · · bn
Sortie: Vrai si on peut ´ecrire wsous la forme w=w1w2· · · wm
(m>0) tel que wiest l’encodage binaire d’un nombre
premier, faux sinon.
Exemple: La s´equence w= 1110110 est la concat´enation de 11 (3), 101
(5) et 10 (2). Remarquez que cette solution n’est pas unique puisqu’on
peut aussi d´ecomposer wen 11101 (29) et 10 (2).
Fran¸cois Lemieux (UQAC) La programation dynamique 13 / 51
Approche diviser-pour-r´egner
Sequence(w)
Si (Premier(w)=1) alors retourner vrai
Si (n=1) retourner faux
Trouver une d´ecomposition w=uv
Si Sequence(u)=vrai et Sequence(v)=vrai alors
retourner vrai
Sinon
retourner faux
Si on pouvait trouver efficacement une telle d´ecomposition alors
l’algorithme Sequence serait aussi efficace.
Fran¸cois Lemieux (UQAC) La programation dynamique 14 / 51
Remarque
Une id´ee serait de choisir ucomme le plus petit pr´efixe de wtel que
Premier(u) = 1.
Si un tel pr´efixe n’existe pas alors on retourne faux.
Malheureusement, cette id´ee ne fonctionne pas.
Exemple: Si w= 10110001 alors 10 (2) est le plus petit pr´efixe de wqui
soit premier. Cependant, la seule d´ecomposition possible de west 101 (5)
et 10001 (17).
Fran¸cois Lemieux (UQAC) La programation dynamique 15 / 51