Mi chiedo se esiste una regola/schema per procedere con la correttezza dell'algoritmo di dimostrazione? Per esempio abbiamo una funzione $ F $ definita sui numeri naturali e definito di seguito:Strategie generali di prova per mostrare la correttezza delle funzioni ricorsive?
function F(n,k)
begin
if k=0 then return 1
else if (n mod 2 = 0) and (k mod 2 = 1) then return 0
else return F(n div 2, k div 2);
end;
dove $ n \ \ text {div} \ 2 = \ left \ lfloor \ frac {n} {2} \ right \ rfloor $
il compito è dimostrare che $ F (n, k) = \ begin {casi} 1 \ Leftrightarrow {n \ choose k} \ \ text {mod} \ 2 = 1 \ 0 \ text {altrimenti} \ end {casi} $
Non sembra molto complicato (mi sbaglio?), ma non so come dovrebbe essere strutturato questo tipo di prova. Sarei molto grato per l'aiuto.
Mi piace questo meglio della mia risposta. Sarebbe probabilmente utile aggiungere una prova che i 4 casi derivati coprono NxN, per giustificare la conclusione induttiva. –
Questo approccio mi piace di più. Ma non è ancora semplice per me, come usare la base di induzione per mostrare queste implicazioni .. – xan
C'è un refuso in f (2 * n + 1, k)? Dovrebbe essere f (2 * n + 1, 2 * k)? – xan