Inscription / Connexion Nouveau Sujet
Niveau algorithmique
Partager :

Preuve de programme (par récurrence, invariant de boucle)

Posté par
milfrousse
26-04-14 à 14:48

Bonjour,

Je dois rédiger un rapport assez complexe et dans une partie, il faut que je montre que l'algorithme est correcte, par récurrecence, invariant ou autre.

Voici l'algorithme :

Entier PLSCA(X, Y , m, n)
Debut
  Pour i := 0 a m faire
    L(i; 0) := 0;
  Fin
  Pour j := 0 a n faire
    L(0; j) := 0;
  Fin
  Pour i := 1 a m faire
    Pour j := 1 a n faire
      Si X[i] = Y [j] alors
        L(i, j) := L(i-1,j-1) + 1 ;
      Sinon
        L(i, j) := max {L(i, j-1),L(i-1, j)} ;
      Fin
    Fin
  Fin
  retourner L(m, n) ;
Fin

Il cherche la plus longue sous-séquence commune entre 2 chaines de caractère

J'ai commencer la preuve comme ceci :

invariant :
S(k): nous savons qu'a un certain moment nous nous trouvons a la ligne i et la colonne j. Si i+j=k et si L(i,j)=V, nous avons a cet endroit trouvé V éléments pour la plus longue sous-séquence commune.

Base :
Si k=0 alors i+j=0, ce qui veut dire que i=0 et j=0. Nous savons, conformément au théoreme que nous ne trouverons pas d'avantage d'élément pour la plus longue sous-séquence commune puisque L(0,0)=0, l'hypothese est donc vérifiée pour i+j=0

la réccurence :

La je bloque, je pense démarrer par "Si la proposition est vrai pour i+j=k alors elle l'est pour i+j=k+1" mais faut faire tout le traitement et la je ne vois pas du tout, si jamais quelqu'un peut m'aidé

merci

Posté par
carpediem
re : Preuve de programme (par récurrence, invariant de boucle) 26-04-14 à 16:33

salut

tu compares X[i] et Y[j] .... mais as-tu initié ces variables ?

Posté par
milfrousse
re : Preuve de programme (par récurrence, invariant de boucle) 26-04-14 à 18:19

autant pour moi, oui
C'est les varibles en entrée X et Y 2 chaines de caractere et m, n leur taille

Ce que je cherche surtout c'est faire la preuve par récurrence (induction) sur l'algo.
Il fonctionne, c'est un algo sur le probleme de la plus longues sous séquence commune entre 2 séquences.

Posté par
nombrilist
re : Preuve de programme (par récurrence, invariant de boucle) 03-05-14 à 20:13

Et comment arrives-tu à repérer les emplacements de départ de la suite commune dans X et Y respectivement ?

Posté par
milfrousse
re : Preuve de programme (par récurrence, invariant de boucle) 05-05-14 à 10:03

Dans ce cas, on ne sait pas, il n'indique que la taille de la plus grande suite commune.



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !