Sunteți pe pagina 1din 74

MD y JCR

Verificacin de algoritmos iterativos


MD y JCR
Introduccion
Se Iundamenta en la posibilidad de encadenar las
sentencias en secuencia
Permite seguir la transIormacion de los datos de
sentencia en sentencia
Desde los datos de entrada que cumplen la precondicion
hasta los resultados que cumplen la postcondicion
Este seguimiento se realiza intercalando entre las
sentencias los predicados que describen las
transIormaciones
Cada sentencia tiene una precondicion y una postcondicion
que deIinen su especiIicacion
MD y JCR
Introduccion
Para cada sentencia se estudian reglas que deIinan su
especiIicacion correcta
Se deIinen reglas para las estructuras basicas: secuencial,
de seleccion y de repeticion, y tambien para las
asignaciones
La regla de la estructura de repeticion se basa en dos
conceptos:
El invariante es un predicado valido para todos los estados
del bucle
La Iuncion limitadora permite determinar la Iinalizacion de
la ejecucion del bucle
MD y JCR
Introduccion
Se establece un procedimiento de veriIicacion de un
esquema simple de algoritmo iterativo
Se ha elegido este esquema por ser muy comun como
Iragmento repetido de algoritmos mas complejos
Por simplicidad del proceso se inicia la veriIicacion
utilizando solo Iunciones con parametros de entrada
Se Iinaliza extendiendola a Iunciones y procedimientos con
parametros de entrada/salida
MD y JCR
Algoritmos iterativos correctos
Un algoritmo es correcto cuando la ejecucion del
algoritmo a partir de cualquier dato de entrada que
satisIace la precondicion proporciona un resultado que
satisIace la postcondicion
Los algoritmos iterativos estan Iormados por un conjunto
de sentencias que se ejecutan secuencialmente
Las transIormaciones del estado del computo se pueden
describir a traves de un lenguaje Iormal como el de los
predicados
1
, ... ,
n
S s s
MD y JCR
Algoritmos iterativos correctos
Entre cada dos sentencias de un algoritmo correcto
siempre es posible establecer un predicado
Se satisIace siempre que el Ilujo de ejecucion del algoritmo
pasa por ese punto
La precondicion, Q, y la postcondicion, R, son
predicados del estado del computo inicial y Iinal del
algoritmo
La especiIicacion pre/post de un algoritmo viene dada
por la terna Q} S R}
MD y JCR
Algoritmos iterativos correctos
Al introducir asertos intermedios en el algoritmo se
tiene:
La especiIicacion de una sentencia se expresa mediante
la terna
P
i-1
es la precondicion de s
i
y P
i
su postcondicion
P
i-1
es la postcondicion de s
i-1
y P
i
es la precondicion de s
i1
, , , ,
0 1 1 1
...
n n n
Q P s P P s P R


, ,
P s P
i i i 1
MD y JCR
Como se demuestra la correctitud de un
algoritmo?
Si es posible establecer predicados intermedios entre las
sentencias de un algoritmo
y se demuestra que cada especiIicacion es
correcta, siendo ,
entonces el algoritmo seria correcto
, ,
P s P
i i i 1
0 n
P Q y P R
MD y JCR
Como se demuestra la correctitud de un
algoritmo?
Para cada s
i
los predicados se pueden determinar
deduciendo P
i-1
a partir de:
P
i
y s
i
mediante reglas o axiomas que garantizan la
correctitud de la especiIicacion de la sentencia
La veriIicacion se va a llevar a cabo en sentido
inverso al Ilujo de ejecucion
Comenzando por la postcondicion del algoritmo, R, y
Iinalizando en la precondicion, Q
MD y JCR
Regla de veriIicacion de la asignacion
Una asignacion se expresa:
donde x es una variable y e una expresion del mismo tipo
que x
La transIormacion que realiza es:
Se evalua la expresion e y su valor se asigna a x que pierde
su antiguo valor
0
MD y JCR
Regla de la asignacion
La especiIicacion correcta de la asignacion
es:
El predicado se construye sustituyendo en R
todas las apariciones libres de x por la expresion e
Dominio(e) o Dom(e)
es verdadero para aquellos datos para los que sea posible
la evaluacion de la expresion e
en caso contrario es Ialso
0
)
,
,
Dominio e
0

R 0 R
R

0
MD y JCR
Regla de veriIicacion de la asignacion
La regla permite calcular una precondicion admisible
a partir de la postcondicion
El signiIicado intuitivo de la regla es:
La precondicion es verdadera solo para aquellos valores en
los que e es evaluable
y
Si x ha de satisIacer cierta propiedad despues de ejecutarse
la instruccion dicha propiedad ha de ser satisIecha por e
antes de ejecutarse la misma
MD y JCR
Ejemplos de la regla de veriIicacion de la
asignacion
Obtener Q segun las distintas expresiones de R de
Iorma que la especiIicacion sea
correcta
Se supone que no hay desbordamiento al incrementar i
, ,
1 Q i i R +
)
Dominio i1 verdadero
) ) )
) )
1
2
Dom 1 Dom 1 1 2
Dom 1 1
i
i
R i
Q i R i i
i i
+
>
+ + + >
+ >
Restando 1
MD y JCR
Ejemplos de la regla de veriIicacion de la
asignacion
Obtener Q segun las distintas expresiones de R de
Iorma que la especiIicacion sea
correcta
Se supone que no hay desbordamiento al incrementar i
, ,
1 Q i i R +
)
Dominio i1 verdadero
) ) )
) )
1
0
Dom 1 Dom 1 1 0
Dom 1 0
i
i
R i f
Q i R i i f
i i f
+
+ >
+ + + + >
+ + >
Restando 1 y sustituyendo por
un predicado equivalente
MD y JCR
Ejemplos de la regla de veriIicacion de la
asignacion
Obtener Q segun las distintas expresiones de R de
Iorma que la especiIicacion sea
correcta
Se supone que no hay desbordamiento al incrementar i
, ,
1 Q i i R +
)
Dominio i1 verdadero
) ) )
1
2*
Dom 1 Dom 1 2*
i
i
R y k
Q i R i y k
+
=
+ + =
o hay apariciones
libres de i
MD y JCR
Ejemplos de la regla de veriIicacion de la
asignacion
Obtener Q segun las distintas expresiones de R de
Iorma que la especiIicacion sea
correcta
Se supone que no hay desbordamiento al incrementar i
,
)
) ) ,
)
1
0,..., 2
Dom 1 Dom 1 0,..., 2
i
i i
i
R i n y
Q i R i i n y
+
n =
+ + n =
, ,
1 Q i i R +
)
Dominio i1 verdadero
,
)
0,..., 2 R n y

n =
La variable i no es libre esta
ligada por el cuantiIicador
Es mas adecuado
escribir R asi
MD y JCR
Ejemplos de la regla de veriIicacion de la
asignacion
Cuando en e aparecen componentes de un vector o
una operacion parcial
En Dominio(e) se deIine expresamente el rango del
indice del vector o de los elementos que intervienen
en la operacion parcial
Si v es un vector de enteros, una precondicion para la
especiIicacion es:
, . J,
0 Q ; i R >
) . J ) ) . J )
Dom Dom 1 0
0

Q 0 R ; i i n ; i A A >
Rango del indice del vector
MD y JCR
Regla de veriIicacion de la asignacion
multiple
Son asignaciones simultaneas de una lista de expresiones
a una lista de variables de los tipos adecuados:
Cada e
i
es del mismo tipo que x
i
y todas las x
i
tienen distintos
nombres
La transIormacion que realiza es:
Se evaluan todas las expresiones e
i
y se asignan los valores
obtenidos a las variables correspondientes que pierden sus
valores anteriores
La asignacion multiple se utiliza siempre que no inIluya
el orden en que tienen lugar las asignaciones
1 1
,..., ,...,
n n
0 0
MD y JCR
Regla de la asignacion multiple
La especiIicacion correcta de la asignacion
es:
1 1
,..., ,...,
n n
0 0
) )
,
,
1
1
,...,
1 n ,..., 1 1
Dom e ... Dom e ,..., ,...,
n
n
0 0
n n
R 0 0 R
eneralizacion de la asignacion simple
MD y JCR
Ejemplo de la regla de veriIicacion de la
asignacion multiple
Obtener Q para que la especiIicacion
sea correcta
, ) ) ,
, , 0, 1, 1 1 0 Q i f r n r R i f n r + + + = + >
) ) )
) ) ) ) )
) ) ) )
0, 1, 1
, ,
Dom 0 Dom n1 Dom r1
Dom 0 Dom n1 Dom r1 0 1 1 1 0
Dom 0 Dom n1 Dom r1 1
n r
i f r
Q R
n n r
r
+ +

+ + = + + >
>
verdadero
MD y JCR
Regla de veriIicacion de la estructura
secuencial
La estructura secuencial se utiliza para encadenar
computos
En una estructura secuencial de dos instrucciones:
s
1
s
2
el estado del computo Iinal producido por s
1
se convierte en
el inicial de s
2
MD y JCR
Regla de la estructura secuencial
Si las especiIicaciones Q} s
1
P} y P} s
2
R} son
correctas entonces la especiIicacion Q} s
1
, s
2
R} es
correcta
Es necesario recordar que: para encontrar el predicado
P se actua en sentido inverso al Ilujo de ejecucion del
algoritmo
La estructura secuencial con
predicados intermedios:
,
,
,
1
2
Q
s
P
s
R
MD y JCR
Ejemplo de la regla de veriIicacion de la
estructura secuencial
Obtener Q y R de Iorma que la especiIicacion del
siguiente algoritmo sea correcta:
ModiIica x e y, se toma como postcondicion:
,
,
Q
y
y y
y
R
+


) )
R A B y = =
MD y JCR
Ejemplo de la regla de veriIicacion de la
estructura secuencial
Se obtiene la precondicion de la asignacion
y
)
) ) )
Dom
Dom A B
y

y R
y y y


= =
,
) ) ) ,
) ) ,
Dom A B
A B
Q
y
y y
y y y
y
R y
+

= =

= =
MD y JCR
Ejemplo de la regla de veriIicacion de la
estructura secuencial
L es la postcondicion de la asignacion
se obtiene la precondicion de esta asignacion:
y y
)
) ) ) ) ) )
) ) ) )
Dom
Dom Dom A B
Dom Dom A B
y
y
U y
y y y y
y y y y


= =
= =
) ) ) B A Dom = = y y y
MD y JCR
Ejemplo de la regla de veriIicacion de la
estructura secuencial
U es la precondicion de la asignacion
y la postcondicion de y +
y y
,
) ) ) ) ,
) ) ) ,
) ) ,
Dom Dom A B
Dom A B
A B
Q
y
U y y y y
y y
y y y
y
R y
+
= =

= =

= =
MD y JCR
Ejemplo de la regla de veriIicacion de la
estructura secuencial
A partir de U se obtiene Q para:
)
) ) )
) )
) ) ) ) )
Dom
Dom Dom Dom
A B
Dom Dom Dom A B
y

Q y U
y y y y
y y y
y y y
+
+
+ +
= + =
+ = =
) ) ) ) B A Dom Dom = = y y y y U
y +
MD y JCR
Ejemplo de la regla de veriIicacion de la
estructura secuencial
El algoritmo intercambia los valores de x e y siempre
que su suma sea evaluable
) ) ) ) ) ,
) ) ) ) ,
) ) ) ,
) ) ,
Dom Dom Dom A B
Dom Dom A B
Dom A B
A B
Q y y y
y
U y y y y
y y
y y y
y
R y
+ = =
+
= =

= =

= =
MD y JCR
Regla de veriIicacion de la estructura de
seleccion
La Iorma mas simple de la estructura de seleccion es:
si B entonces s
1
si no s
2
fin si
Si la condicion booleana B es cierta se ejecuta s
1
, pero no s
2
En caso contrario se ejecuta s
2
, pero no s
1
A partir de la postcondicion se construye la precondicion
de la estructura de seleccion mediante la siguiente regla
MD y JCR
Regla de la estructura de seleccion
Si las especiIicaciones Q
1
} s
1
R} y Q
2
} s
2
R} son
correctas entonces la especiIicacion
es correcta
La estructura de seleccion con todos los predicados:
) ) ) ) ,
, , , ,
, R
R s Q R s Q B
B Q B Q B
si fin sino entonces si
2 2 1 1
2 1
Dom
) ) ) ) , , R s s B B Q B Q B si fin sino entonces si
2 1 2 1
Dom
MD y JCR
Regla de la estructura de seleccion
Cuando no existe si no se considera s
2
nada
Equivale a sustituir Q
2
}s
2
R} por
La especiIicacion correcta es:
Dominio(B) o Dom(B)
es verdadero para aquellos datos para los que sea posible la
evaluacion de la condicion booleana B
en caso contrario es Ialso
, ,
2
Q R
) ) ) ) , , R s B B R B Q B si fin entonces si
1 1
Dom
MD y JCR
Ejemplo de la regla de veriIicacion de la
estructura de seleccion
Calcular una precondicion para el siguiente Iragmento de
algoritmo:
Aplicando la regla de la asignacion para cada alternativa:
) ) )
) )
1
1
Dom 1 Dom 1 1 0
Dom 1 1

Q R

+
+ + + >
+ >
) ) )
) )
1
2
Dom 1 Dom 1 1 0
Dom 1 1

Q R

>
>
, , 0 1 1 0 > + R Q si fin sino entonces si
MD y JCR
Ejemplo de la regla de veriIicacion de la
estructura de seleccion
Aplicando la regla de la estructura de seleccion :
)
) ) ) )
) ) ) )
) ) ) ) ) ) )
Dom 1 1 0
Dom 0
Dom 1 1 0
Dom 0 Dom 1 1 Dom 1 1

Q



+ >




>

|

+ = >
|
Para x0 y x -1 no se cumple la postcondicion
MD y JCR
Regla de veriIicacion de la estructura de
seleccion multiple
Su sintaxis es:
caso
B
1
s
1
. . .
B
n
s
n
fin caso
B
i
son expresiones booleanas y s
i
secuencias de instrucciones
En cada ejecucion exactamente una de las B
i
debe ser
cierta
Si ninguna o mas de una lo es el algoritmo es incorrecto
MD y JCR
Regla de la estructura de seleccion multiple
Si las especiIicaciones Q
1
} s
1
R}, ... , Q
n
} s
n
R} son
correctas y
es verdadera entonces la especiIicacion
es correcta
donde
) )
1 1
...
n n
Q Q B Q B
) ) )
1
1 1
UA ,..., Dom 1
n
n
n i
i i
B B B f i
= =
+ +
=

' ' ' '

)
0
1
i
i
si B falso
f i
si B ;0rdad0ro
=
|
=
,
=
|
) , R s B s B Q B Dom
n n i
n
i
caso fin caso F F

|
,
|

'
+

'

=
. . .
1 1
1
eneralizacion de la estructura de seleccion
MD y JCR
Ejemplo de la regla de veriIicacion de la
estructura de seleccion multiple
Calcular una precondicion para el siguiente Iragmento de
algoritmo:
,
, 0
1 0
1 0
1 0
>
+ F >
F =
F
y R
y
y
y
Q
caso fin
caso
MD y JCR
Ejemplo de la regla de veriIicacion de la
estructura de seleccion multiple
Aplicando la regla de la asignacion para cada alternativa:
) ) )
) ) ) )
1
1
Dom 1 Dom 1 1 0
Dom 1 1 Dom 1 1

y
Q R


>
>
) ) )
) )
1
3
Dom 1 Dom 1 1 0
Dom 1 1

y
Q R

+
+ + + >
+ >
) ) )
)
1
2
Dom 1 Dom 1 1 0
Dom 1 verdadero
y
Q R >

Al multiplicar por -1
se invierte el sentido
de la desigualdad
MD y JCR
Ejemplo de la regla de veriIicacion de la
estructura de seleccion multiple
Se comprueba que una y solo una de las tres condiciones
puede ser verdadera:
UA(B
1
, B
2
, B
3
) es verdadera
Se construye la precondicion:
) ) ) )
) ) )
) ) ) ) )
Dom 1 1 0 0
Dom 1 1 0
Dom 1 1 0 Dom 1 0
Q


=
| |
+ > >
|
= + >
| | |
Para x-1 no se cumple la postcondicion
MD y JCR
Ejemplo de la regla de veriIicacion de la
estructura de seleccion multiple
Para completar la precondicion hay que aadir la
conjuncion de los dominios de las expresiones
booleanas:
La precondicion completa:
) )
3
1
Dom Dom
i
i
B
=
+


' '

) ) ) )
,
) ) )

Dom Dom Dom 1 1


0 Dom 1 0
Q


|
= + >
| |
MD y JCR
Regla de veriIicacion de la estructura de
repeticion. Invariante
La Iorma basica de la estructura de repeticion es la
preevaluada:
mientras B hacer s fin mientras
Comienza evaluando la condicion booleana B:
si es Ialsa el bucle es equivalente a la instruccion nada
en otro caso se ejecuta s, se vuelve a evaluar B y se repite el
proceso hasta que B sea Ialsa
Para poder razonar sobre el eIecto de la estructura de
repeticion es necesario inventar un predicado especial
denominado invariante
MD y JCR
SigniIicado intuitivo del invariante
Ejemplo donde todas las variables son de tipo entero
El bucle evoluciona desde un estado inicial
hasta un estado Iinal descrito incompletamente por
) ) )
0
0 0 1 P i q p = = =
) ) )
? ?
n
P i n q p = = =
mientras fin
hacer mientras
2
1
1 ; 0 ; 0
+
+
+


p p
p q q
i i
n i
p q i
MD y JCR
SigniIicado intuitivo del invariante
Las variables van cambiando de valor pero mantienen invariables
las relaciones transversales de la tabla en Iuncion de i
Las relaciones entre las variables en cualquier estado i se deIinen a
traves del predicado:
estado i q p
P
0
0 0 1
P
1
1 1 3
P
2
2 4 5
P
3
3 9 7
. . . .
) ) )
2
2* 1 para 0
i
P q i p i i n = = + A A
mientras fin
hacer mientras
2
1
1 ; 0 ; 0
+
+
+


p p
p q q
i i
n i
p q i
Impar: 2*i es par, 2*i1 es impar
Cuadrado de i
MD y JCR
Invariante
Es un predicado comun que incluye a todos los
predicados que describen las transIormaciones que
realiza cada iteracion de la estructura de repeticion
El invariante se satisIace:
Antes de la primera comprobacion de la condicion
Antes de cada iteracion
Despues de cada una de ellas
Despues de la ultima iteracion
El invariante P es a la vez precondicion y postcondicion
de s, ya que s modiIica el estado pero no las relaciones
entre las variables
MD y JCR
Invariante
En el ejemplo anterior el invariante:
La evaluacion de la condicion del bucle va variando con
los diIerentes valores de la variable i
Una de las premisas de P ha de contener el rango
completo de los valores que puede tomar la variable
controladora del bucle
Incluye todos los posibles valores que toma la variable cuando
se evalua la condicion B del bucle,
) ) )
2
0
... 0 2* 1
n
P P P i n q i p i A A = = +
) ) )
0
Dom( ) Dom ... Dom 0
n
B B B i n A A
) ) ) )
2
0 2* 1 0 i n q i p i i n A A = = + A A
)
Dom P B
MD y JCR
Invariante
Si el bucle termina satisIace que constituyen la
postcondicion del bucle
P B
)
)
) )
) ) )
)
)
)
2
2
2
0 2* 1
2* 1
2* 1
P B i n q i p i i n
i n q i p i
i n q n p n
A A = = + >
= = = +
= = = +
) ) )
2
0 2* 1 P i n q i p i A A = = +
mientras fin
hacer mientras
2
1
1 ; 0 ; 0
+
+
+


p p
p q q
i i
n i
p q i
)
B i n >
interseccion
MD y JCR
Funcion limitadora
La exigencia de que s mantenga la invarianza de P no
garantiza que la estructura de repeticion termine
Ejemplo de un caso extremo: si s nada
mantiene la invariabilidad de cualquier predicado
y
el bucle itera indeIinidamente
Es necesario establecer un mecanismo para determinar la
Iinalizacion del bucle
MD y JCR
Funcion limitadora
Proporciona para cada estado una cota del numero
de iteraciones que Ialtan por realizar para completar
el numero maximo de veces que se puede ejecutar s
Se debe utilizar la expresion mas simple que mas se
ajuste al numero de iteraciones
Hay que encontrar una Iuncion
que satisIaga:

La Iuncion 9 es estrictamente decreciente


9 F estado :
0 P B 9 >
MD y JCR
Funcion limitadora
En el ejemplo:
9(n, i, p, q)n-i

n-i es estrictamente decreciente a medida que crece el valor


de i
) )
) ) ) ) )
0 0
P B i n i n
i n i n i n n i n i
A
A > >
mientras fin
hacer mientras
2
1
1 ; 0 ; 0
+
+
+


p p
p q q
i i
n i
p q i
Despues de
inicializacion i0 n
1 iteracion i1 n-1
2 iteracion i2 n-2
. . . . . . . . .
i iteracion i n-i
de iteraciones
que Ialtan para
completar el bucle
Restando i
Solo las premisas de P
que relacionan i con n
Implicacion ampliando
el rango es verdadera
MD y JCR
Regla de la estructura de repeticion
preevaluada
Si se cumple:
es verdadera
La especiIicacion es correcta
es verdadera
La Iuncion 9 es estrictamente decreciente
Entonces la especiIicacion
es correcta
)
Dom P B
, ,
P B s P
0 P B 9 >
, , B P s B P mientras fin hacer mientras
MD y JCR
VeriIicacion a posteriori
Se van a aplicar las reglas de veriIicacion a
algoritmos que respondan al siguiente esquema
El invariante P se ha escrito por comodidad al lado de la
palabra hacer
Se satisIace en varios puntos
,
,
, R
s
P B
r iniciali:a
Q
mientras fin
hacer mientras
MD y JCR
VeriIicacion a posteriori
Se ha seleccionado el esquema anterior por dos
razones:
1) Muchos algoritmos responden a este esquema
2) Si el algoritmo es mas complejo, se puede descomponer
en pequeos algoritmos como el esquema propuesto
Si un algoritmo mas complejo consta de varios
bucles en secuencia:
Establecer predicados intermedios que sirvan como
postcondicion de un bucle y precondicion del siguiente
VeriIicar cada bucle por separado
MD y JCR
VeriIicacion a posteriori
Si un algoritmo mas complejo consta de varios
bucles anidados:
VeriIicar el mas interno
VeriIicar el bucle inmediatamente mas externo, el bucle
interno se trata como una instruccion simple de la que
solo se conoce su precondicion y su postcondicion
Continuar con el mismo proceso hasta veriIicar el bucle
mas externo
MD y JCR
Puntos a demostrar para veriIicar la
correctitud del esquema propuesto
1. Inventar un invariante P y una Iuncion limitadora t.
Comprobar que
2.
3.
4.
5.
6. La Iuncion 9 es estrictamente decreciente
)
Dom P B
P B R
, ,
Q iniciali:ar P
, ,
P B s P
0 P B 9 >
El orden de los puntos del 2 al 6 es irrelevante en cuanto a la validez de la
veriIicacion ya que se han de demostrar todos
Para simpliIicar las demostraciones de todos los puntos se obviaran los dominios
de las expresiones y de las condiciones booleanas cuando no sean relevantes
El invariante se satisIace antes de la 1 iteracion
La estructura repetitiva es la ultima sentencia del algoritmo
Premisas de la regla de la estructura
de repeticion preevaluada
MD y JCR
Puntos a demostrar para veriIicar la
correctitud del esquema propuesto
El esquema algoritmico completo
,
,
,
,
,
, R
B P
P
s
B P
B
P
r iniciali:a
Q

mientras fin
hacer mientras
MD y JCR
Ejemplo
Proponer un invariante, una Iuncion limitadora y
veriIicar Iormalmente la Iuncion suma que realiza la
suma de los elementos de un vector
,
. J ) )
.J
. J

,
|

'
+

'

=
+
+
A

>

=
n
; s R
i i
i ; s s
n i
i s
s 0n90ro n 0n90ro ; 0n90ro
n Q
1
1
1 , 0 ,
, suma
0
3
3
funcin fin
mientras fin
hacer mientras
devuelve funcin
MD y JCR
Ejemplo
1. Inventar un invariante P
Despues de
inicializacion i1 s0
1 iteracion i2 sv|1|
2 iteracion i3 sv|1|v|2|
3 iteracion i4 sv|1|v|2| v|3|
. . . . . . . . .
(i-1) iteracion
. J
0
1
s ;

=
=

. J
1
1
s ;

=
=

. J
2
1
s ;

=
=

. J
3
1
s ;

=
=

. J
1
1
i
s ;

=
=

. J
, 0,1

1
s i
i n
s s ; i
i i

A
+
+
mientras hacer
fin mientras
MD y JCR
Ejemplo
1. Inventar una Iuncion limitadora t
Despues de
inicializacion i1 n
1 iteracion i2 n-1
2 iteracion i3 n-2
3 iteracion i4 n-3
. . . . . . . . .
(i-1) iteracion i n-i1
. J
, 0,1

1
s i
i n
s s ; i
i i

A
+
+
mientras hacer
fin mientras
MD y JCR
Ejemplo
1. Inventar un invariante P y una Iuncion limitadora t.
Comprobar que
)
Dom P B
. J )
1
1
1 1
i
P s ; i n

=
+
= A A +

' '

)
Dom es verdadero P B
)
, , , 1 9 ; n i s n i = +
MD y JCR
Ejemplo
2. P B R
. J ) )
. J ) . J
1
1
1
1 1
1 1
1
i
i n
P B s ; i n i n
s ; i n s ; R

= =
+
= A A + >

' '
+ +
= = + =

' ' ' '


MD y JCR
Ejemplo
3.
, ,
Q iniciali:ar P
. J )
. J )
) )
1, 0
1
1, 0
,
1
,
0
1
1 1
0 1 1 1
verdadero 0 0
i
i s
i s
P s ; i n
; n
n n Q

=
=
+
+
= A A +



' '
' '
+
+
= A A +



' '
' '
A >

MD y JCR
Ejemplo
4.
, ,
P B s P
. J ) . J )
. J ) . J )
. J
) . J . J )
. J )
1
1
1
1 1
1
1
1
1
1 1 0
Dom 0
1 0
1
i
i i
i
i
i
s ; i
i
s
i
i
P s ; i n s ; i n
s ; i s ; i n
i n s ; i ; i n
s ; i n P B

+
= =
+
=
=

=
+ +
+ +
= A A + = A A



' ' ' '
' ' ' '
+
+
+ = A A



' '
' '
+
+
A A + = A A



' '
' '
+
= A A

' '

. J ) ) . J ) n i ; s n i n i ; s B P
i i
A A

'
+

'

= A + A A

'
+

'

=


=

=
1 1 1
1
1
1
1

MD y JCR
Ejemplo
5.
6. A medida que crece el valor de i la expresion n-i1
decrece por tanto la Iuncion t es estrictamente
decreciente
0 P B 9 >
. J ) )
) ) ) )
) )
1
1
1 1 1
1 1 1 1 1 1
0 1 1 0 1 0 1 0
i
P B s ; i n i n
i n i n i n i n
n i n i 9 n i 9 n i

=
+
+
= A A + +



' '
' '
A A + + A + +
+ + > = + > = + >

MD y JCR
EspeciIicacion de Iunciones y procedimientos
con parametros de e/s
Para poder hacer reIerencia en la postcondicion al
valor que poseia un parametro u antes de ejecutar el
algoritmo se emplea el siguiente convenio:
En la precondicion se da un nombre U al valor del
parametro aadiendo una premisa de la Iorma uU
En la postcondicion se empleara este nombre para hacer
reIerencia al valor inicial de u
MD y JCR
Ejemplo
Dado un vector de enteros v y tres enteros n, x e y,
establecer la especiIicacion correcta del procedimiento
sustituir que sustituye en v todas las apariciones de x
por y
Si se establece la siguiente especiIicacion:
La postcondicion indica que si v|u|x tambien sea cierto que
v|u|y pero esto solo es posible si xy
El error de la especiIicacion surge debido a que es necesario
distinguir el valor de v antes y despues de la ejecucion
,
. J )
, . J . J , y ; ; n R
y 0n90ro 0n90ro n 0n90ro ; 0n90ro s 0
n Q
= F = V
A A
., . . , 1
, , , / sustituir
1000 0
nto procedimie
MD y JCR
Ejemplo
Es necesario completar la postcondicion ya que no exige
nada sobre los elementos de v cuyo valor inicial es distinto
de x
) ) ,
. J )
, . J . J , y ; ' n R
y 0n90ro 0n90ro n 0n90ro ; 0n90ro s 0
' ; n Q
= F = V
= A A
., . . , 1
, , , / sustituir
1000 0
nto procedimie
) ) ,
. J )
, . J . J ) . J . J . J ) , ' ; ' y ; ' n R
y 0n90ro 0n90ro n 0n90ro ; 0n90ro s 0
' ; n Q
= F = F = V
= A A
., . . , 1
, , , / sustituir
1000 0
nto procedimie
MD y JCR
Ejercicio 1
Proponer un invariante, una Iuncion limitadora y
veriIicar Iormalmente la Iuncion busquedaoAcotada
que realiza una busqueda lineal no acotada
) , . J ) ,
. J ) )
.J
.J ) , . J ) , ; i i ; R
i i
i ;
i
i 0n90ro 0n90ro ; 0n90ro
; n n Q
V =
+

= n >
3 3
. .
1 , ... , 1
1
1
, Acotada busquedao
, ... , 1 0
funcin fin
mientras fin
hacer mientras
devuelve funcin
MD y JCR
Ejercicio 1
1. Inventar un invariante P
Despues de
inicializacion i1
1 iteracion i2
2 iteracion i3
3 iteracion i4
. . . . . . . . .
(i-1) iteracion
, . J
)
, . J
)
1, 2 3,..., ; n ; 3 3 V n =
. J ) , . J )
1 2,..., ; n ; 3 3 n =
, . J
)
, . J
)
1, 2, 3 4,..., ; n ; 3 3 V n =
, . J
)
, . J
)
1,..., 1 ,..., i ; i n ; 3 3 V n =
, . J
)
1,..., n ; 3 3 n =
. J
1

1
i
; i
i i

+
mientras hacer
fin mientras
MD y JCR
Ejercicio 1
1. Inventar una Iuncion limitadora t
Despues de
inicializacion i1 n-1
1 iteracion i2 n-2
2 iteracion i3 n-3
3 iteracion i4 n-4
. . . . . . . . .
(i-1) iteracion i n-i
. J
1

1
i
; i
i i

+
mientras hacer
fin mientras
MD y JCR
Ejercicio 1
1. Inventar un invariante P y una Iuncion limitadora t.
Comprobar que
)
Dom P B
)
Dom es verdadero P B
, . J
)
, . J
)
)
1,..., 1 ,..., 1 P i ; i n ; i n 3 3 V n = A A
)
, , 9 ; i n i =
MD y JCR
Ejercicio 1
2. P B R
, . J
)
, . J
)
) . J )
. J ) , . J
)
1,..., 1
,..., 1
1,..., 1
P B i ;
i n ; i n ; i
; i i ; R

3 3

V
n = A A =
= V
. J
1

1
i
; i
i i

+
mientras hacer
fin mientras
MD y JCR
Ejercicio 1
3.
, ,
Q iniciali:ar P
, . J ) , . J ) ) )
) , . J ) , . J ) )
, . J ) )
) , . J ) Q ; n n
n ; n ;0rdad0ro
n ; n ;
n i ; n i ; i P
i
i
= n >
A = n
A A = n V
A A = n V
3 3
3 3
3 3
3 3
., . . , 1 0
1 ., . . , 1
1 1 ., . . , 1 1 1 ., . . , 1
1 ., . . , 1 ., . . , 1
1
1
. J
1

1
i
; i
i i

+
mientras hacer
fin mientras
MD y JCR
Ejercicio 1
4. (1 version)
, ,
P B s P
) ) , . J )
, . J ) )
, . J ) , . J )
)
, . J ) , . J )
) . J ) , . J )
, . J ) )
B P
n i ; n i
; i i ; n i
; n i ; i B P
n i
; n i ; i
n i ; n i
; i n i P i
i
i

A A = + n
V A A
= n V
A A
= + n V
A + A = + n
V + A + A +
+
1 ., . . , 1
., . . , 1 1
., . . , 1 ., . . , 1
1 1
., . . , 1 ., . . , 1
1 1 ., . . , 1
., . . , 1 1 1 2 1 Dom
1
3 3

3 3
3 3
3 3

. J
1

1
i
; i
i i

+
mientras hacer
fin mientras
MD y JCR
Ejercicio 1
4. (2 version)
, ,
P B s P
) ) , . J )
, . J ) ) , . J )
. J ) , . J ) )
, . J ) , . J )
) . J ) , . J ) . J )
, . J ) )
B P
n i ; n i
i ; ; i i ; n i
; n i ; i B P
n i ; n i i ;
; i n i ; n i
; i n i P i
i
i

A A = + n
V A A
= n V
A A = + n
V A + A = + n
V + A + A +
+
1 ., . . , 1
1 ., . . , 1 1
., . . , 1 ., . . , 1
1 1 ., . . , 1
1 ., . . , 1 1 1 ., . . , 1
., . . , 1 1 1 2 1 Dom
1
3 3

3 3
3 3
3 3

. J
1

1
i
; i
i i

+
mientras hacer
fin mientras
MD y JCR
Ejercicio 1
5.
6. A medida que crece el valor de i la expresion n-i
decrece por tanto la Iuncion t es estrictamente
decreciente
0 P B 9 >
, . J
)
, . J
)
) . J ) )
) )
1,..., 1 ,...,
1 1
0 0
P B i ; i n ;
i n ; i i n
i n n i 9 n i
3 3 V n =
A A A A
A > = >

S-ar putea să vă placă și