Loop invariant vs Assertions

5

Ho un esame sui concetti di programmazione questo sabato e sto facendo fatica a trovare alcune informazioni per capire meglio alcuni concetti.

Qual è la differenza tra invariante di loop e asserzione? Per me hanno lo stesso aspetto.

Inoltre, che cosa è esattamente il teorema di invarianza del ciclo while ?

Non sono sicuro se sono io o è ridicolmente difficile trovare informazioni specifiche sugli algoritmi e sullo pseudocodice online.

    
posta superM 10.01.2013 - 21:24
fonte

1 risposta

8

Un invariante è una condizione su cui è possibile fare affidamento per essere vero durante l'esecuzione di un programma. Ad esempio, un ciclo invariante è una condizione che è vera all'inizio e alla fine di ogni esecuzione di un ciclo.

Una asserzione è un predicato (una dichiarazione true-false) inserito in un programma per indicare che lo sviluppatore pensa che il predicato sia sempre vero in quel luogo. I programmatori spesso usano asserzioni nel loro codice per rendere espliciti gli invarianti.

While Teorema dell'invarianza del ciclo
Supponi che S sia un invariante del ciclo

While C do
 E

Supponiamo anche che S sia vero alla prima entrata del ciclo. Quindi S rimane true dopo ogni iterazione del ciclo. In particolare,

  1. Se il ciclo termina, allora S è vero dopo l'ultima iterazione.
  2. Se il ciclo non termina, S rimane sempre true.
risposta data 10.01.2013 - 21:29
fonte

Leggi altre domande sui tag