Méthodes de résolution de problèmes

Programmation dynamique

Top-down

FCT TOP_DOWN(n) :
    memo <- structure de mémoïsation (tableau ou table de hachage)
    FCT REMPLIR(memo, i) :
        [Relation de récurence de la fonction sans mémoïsation sous forme récursive]
        RENVOYER memo_i
    FIN FCT
    RENVOYER REMPLIR(memo, n)
FIN FCT

Bottom-up

FCT BOTTOM_UP(n) :
    memo <- structure de mémoïsation (tableau ou table de hachage)
    [Initialisation des valeurs initiales ie les cas de base]
    [Relation de récurence de la fonction sans mémoïsation sous forme itérative (boucle)]
    RENVOYER memo_n
FIN FCT

Note : On doit connaître le nombre d'itérations à réaliser pour faire du bottom-up

Backtracking

On suppose avoir :

  • une fonction racine() qui renvoie la construction initiale vide
  • une fonction fils(construction partielle) qui renvoie la liste des constructions avec 1 élément en plus que celle en paramètre
  • une fonction est_feuille(construction) qui détermine si la construction est complétée
FCT BACKTRACKING(construction) :
    SI est_feuille(construction) ALORS : //On vérifie si la construction est complète
        SI P(construction) ALORS : // On vérifie si la construction satisfait la propriété voulue
            S'arrêter avec cette construction comme solution
        SINON
            POUR CHAQUE construction_suivante dans fils(construction) FAIRE
                BACKTRACKING(construction_suivante)
        FIN SI
    FIN SI
FIN FCT

FCT RESOLUTION():
    BACKTRACKING(racine())
FIN FCT

Note : cette fonction ne comprend pas l'élagage de l'arbre