Documente Academic
Documente Profesional
Documente Cultură
, ,
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
=
+
' '
) ) ) )
,
) ) )
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:
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 > = >