Claudio Freire wrote: >
>
> 2009/9/18 Alberto Bertogli <albertito@???
> <mailto:albertito@???>>
>
> Si queres demostrar que el algoritmo de Dijkstra funciona, lo
> podes expresar
> de forma matematica y sale sin mayores complicaciones. Se ve todos los
> cuatrimestres en alguna clase de algoritmos 3 en Exactas en la UBA.
>
>
> :D
>
> La hice de macho pistola después de cursar Algo 2 un día, y luego la
> vi en Algo 3.
>
> Hacerlo con toda rigurosidad no es sencillo - cierto que no tiene
> mayores complicaciones. Pero es un algoritmo muy elegante, pensado ya
> desde el vamos en términos de invariantes, variantes, guardas, etc..
>
> El tema es: no tendrá mayores complicaciones, pero lleva muuucho
> trabajo hacerlo con toda la formalidad.
>
>
> Con lo que no estoy de acuerdo es con tu criterio de "valer la
> pena". Pesar
> algo en base a cuan facil o dificil es hacer algo que no vas a
> hacer, creo que
> no tiene sentido.
>
>
> Hm... siempre me cuesta explicar este punto.
>
> A ver si me sale ahora.
>
> Si yo tengo bien internalizada la técnica de demostración, es
> intuitiva después de todo, y programo, desde el vamos, pensando en
> cumplir sus preceptos, entonces no necesito hacer la demostración
> rigurosamente. Puedo hacerla de forma intuitiva a medida que escribo
> el código.
>
> Un ejemplo tonto:
>
> i = 0
> n = int(raw_input("cuántos?"))
> while i < 10:
> print "hola"
>
> Me dice "noooo"
> ¿por qué?
>
> Porque no veo "función variante" ;-)
>
> Lo corrijo:
>
> i = 0
> n = int(raw_input("cuántos?"))
> while i < n:
> print "hola"
> i += 1
>
> De nuevo nooooo.
> ¿por qué?
> Porque no veo que la función variante tenga cota. LOL, muchísimo más interesante sería que vieras que la entrada no está
validada y va a salir con una excepción no controlada.
En cuanto al break te prometo que nunca lo voy a usar en una función que
vaya a probar formalmente, y creo que la mayoría puede facilmente
prometerte lo mismo, en cuanto a programación en el mundo real ........
;c)