fbpx
Wikipedia

Ciclo invariante

De manera informal, ciclo invariante es algún predicado o condición que se mantiene en cada iteración de un ciclo. Por ejemplo:

int j = 9; for(int i=0; i<10; i++) j--; 

En este ejemplo se cumple la invariante de ciclo para cada iteración, ya que se mantiene la condición siguiente:

 i + j == 9 

Otra invariante más débil es:

i >= 0 && i < 10 //(condición terminal)  //o bien  j <= 9 && j >= 0 

Las invariantes de ciclo sirven para probar que un algoritmo esté correcto.

Propiedades

  • Inicialización. Es verdadera desde la primera iteración.
  • Mantenimiento. Es verdadera después de una iteración del ciclo. Se mantiene verdadera antes de la iteración próxima.
  • Terminación. Cuando finaliza el ciclo, la invariante aporta una propiedad que indica que el algoritmo es correcto.

Ejemplos

Insertion sort

import java.util.Arrays; class InsertionSort{ public static void main(String[]args){ int[]array={5,2,4,6,1,3}; String out=""; out+=Arrays.toString(array)+"\nResult:\n"; //start for(int i=1;i<array.length;i++){ int key=array[i]; int j=i-1; out+="array["+j+"] > key = "+array[j] +" > "+key+" = "+(array[j]>key)+"\n"; while(j>=0 && array[j]>key ){ array[j+1]=array[j];out+=" \tarray["+j+"+1]=array["+j+"]\n"; j--; } array[j+1]=key; } out+=Arrays.toString(array)+"\n"; System.out.println(out); } } 

Referencias

Introduction to Algorithms. Third Edition. Thomas H. Cormen. 2009.

  •   Datos: Q2238838

ciclo, invariante, manera, informal, ciclo, invariante, algún, predicado, condición, mantiene, cada, iteración, ciclo, ejemplo, este, ejemplo, cumple, invariante, ciclo, para, cada, iteración, mantiene, condición, siguiente, otra, invariante, más, débil, condi. De manera informal ciclo invariante es algun predicado o condicion que se mantiene en cada iteracion de un ciclo Por ejemplo int j 9 for int i 0 i lt 10 i j En este ejemplo se cumple la invariante de ciclo para cada iteracion ya que se mantiene la condicion siguiente i j 9 Otra invariante mas debil es i gt 0 amp amp i lt 10 condicion terminal o bien j lt 9 amp amp j gt 0 Las invariantes de ciclo sirven para probar que un algoritmo este correcto Propiedades EditarInicializacion Es verdadera desde la primera iteracion Mantenimiento Es verdadera despues de una iteracion del ciclo Se mantiene verdadera antes de la iteracion proxima Terminacion Cuando finaliza el ciclo la invariante aporta una propiedad que indica que el algoritmo es correcto Ejemplos EditarInsertion sort import java util Arrays class InsertionSort public static void main String args int array 5 2 4 6 1 3 String out out Arrays toString array nResult n start for int i 1 i lt array length i int key array i int j i 1 out array j gt key array j gt key array j gt key n while j gt 0 amp amp array j gt key array j 1 array j out tarray j 1 array j n j array j 1 key out Arrays toString array n System out println out Referencias EditarIntroduction to Algorithms Third Edition Thomas H Cormen 2009 https web archive org web 20130721040913 http espacio redsaltillo net programacion insertionsort algorithm Datos Q2238838Obtenido de https es wikipedia org w index php title Ciclo invariante amp oldid 125249179, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos