[pyar] [Consulta] Invariante

SAn gringotumadre en gmail.com
Sab Jun 15 11:04:12 ART 2013


2013/6/14 Apokalyptica Painkiller <apokalyptica79 en gmail.com>
>
> Hola gente vuelvo con oooooooooootra preguntonta, es sobre invariante como dice el título.
>
> Los invariantes se refieren a estados o situaciones que no cambian dentro de un contexto o porción de código.
> El invariante de ciclo permite conocer cómo llegar desde las precondiciones hasta las postcondiciones. El invariante de ciclo es, una aseveración que debe ser verdadera al comienzo de cara iteración.
> Los invariantes son de gran importancia al momento de demostrar que un algoritmo funciona, de esta forma es más fácil entender cómo funciona un algoritmo y encontrar posibles errores. Además, son útiles a la hora de determinar las condiciones iniciales de un algoritmo, ya que también deben cumplirse para ese caso.
>
> Entiendo lo que dice y más con el siguiente ejemplo:
>
> def potencia(a, b):
>       """ Devuelve la potencia n del número b, con n entero mayor que 0 """
>
>       p = 1
>       for i in range(n):
>            p *= b
>       return p
>
> En este caso, el invariante del ciclo es que la variable p contiene el valor de la potencia correspondiente a esa iteración. Teniendo en cuenta esta condición, es fácil ver que p debe comenzar el ciclo con un valor de 1, ya que ese es el valor correspondiente a p0 (elevado a la 0).
>
> Mi pregunta es, se usa? Es común su uso?

Entiendo que lo usarias en el estudio de un algorítmo. Por ejemplo si
tenes que *demostrar* la correctitud de un algoritmo, o tal vez
simeplemente como una ayuda para entenderlo.
Tambien podría ser útil si estas trabajando en compiladores y optimizaciones.

No se me ocurre una utilidad práctica en el "día a dia del programador".

Alguna otra idea?
SAn


More information about the pyar mailing list