tema 2. teoría y práctica de derivación de asignaciones representado
TRANSCRIPT
![Page 1: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/1.jpg)
2.3. Derivacion de algoritmos
Metodologıa de la ProgramacionTema 2. Teorıa y practica de derivacion de asignaciones representado
usando LATEX
Igor Ruiz-Agundez1
DeustoTech Computing, Deusto Institute of Technology, University of Deusto
1http://paginaspersonales.deusto.es/igor.ira/
![Page 2: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/2.jpg)
2.3. Derivacion de algoritmos
Teorıa 2.3.1. Derivacion de asignaciones
Practica Ejemplo 2. Intercambio de valores
Discusion Feed-back
![Page 3: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/3.jpg)
2.3. Derivacion de algoritmos
Teorıa 2.3.1. Derivacion de asignaciones
Practica Ejemplo 2. Intercambio de valores
Discusion Feed-back
![Page 4: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/4.jpg)
2.3. Derivacion de algoritmos
Teorıa 2.3.1. Derivacion de asignaciones
Practica Ejemplo 2. Intercambio de valores
Discusion Feed-back
![Page 5: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/5.jpg)
2.3. Derivacion de algoritmos
2.3.1. Derivacion de asignacionesTeorıa
Analisis de la postcondicion
Los resultados a obtener influyen en el diseno mucho mas que los datosde los que se dispone.Es por eso por lo que el analisis de la postcondicion es un buen metodopara desarrollar algoritmos.
![Page 6: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/6.jpg)
2.3. Derivacion de algoritmos
2.3.1. Derivacion de asignacionesTeorıa
Heurısticas derivadas del analisisde las postcondicion
Si en la postcondicionaparecen igualdades entrevariables del programa yexpresiones.
Podrıas satisfacerse mediante
Puede intentarsesatisfacerlas medianteasignaciones simples omultiples.
![Page 7: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/7.jpg)
2.3. Derivacion de algoritmos
2.3.1. Derivacion de asignacionesTeorıa
Heurısticas derivadas del analisisde las postcondicion
Si aparecen disyunciones.
Podrıas satisfacerse mediante
Hay varias maneras desatisfacer la postcondicion.
Puede intentarse disenandouna alternativa, cada unade cuyas ramas obtenga lapostcondicion a base desatisfacer una de lasdisyunciones.
![Page 8: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/8.jpg)
2.3. Derivacion de algoritmos
2.3.1. Derivacion de asignacionesTeorıa
Heurısticas derivadas del analisisde las postcondicion
Si aparecen conjunciones.
Podrıas satisfacerse mediante
Puede considerarse cadauna de ellas aisladamente eintentar satisfacerlas porseparado.
Es posible que al intentarsatisfacer una de ellas laotra se haga imposible desatisfacer.
Se puede crear alternativasen las cuales algunasconjunciones se satisfacenmediante la instruccionprotegida.
Las demas constan en laproteccion.
![Page 9: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/9.jpg)
2.3. Derivacion de algoritmos
2.3.1. Derivacion de asignacionesTeorıa
Heurısticas derivadas del analisisde las postcondicion
Estas indicaciones noevitan...
Podrıas satisfacerse mediante
El empleo de “prueba yerror”.
![Page 10: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/10.jpg)
2.3. Derivacion de algoritmos
2.3.1. Derivacion de asignacionesTeorıa
Requisitos
Hay que indicar en la especificacion que variables pueden cambiar devalor y cuales no.
Estrategia a seguir
La construccion de unprograma partenecesariamente de un parde asertos que constituyensu especificacion, porejemplo Prec y Post.
Ejemplo
{Prec}{Post}
![Page 11: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/11.jpg)
2.3. Derivacion de algoritmos
2.3.1. Derivacion de asignacionesTeorıa
Estrategia a seguir
Es comun en el proceso dederivacion de los programaspensar en una instruccion Ique nos podrıa ayudar aestablecer la postcondiciony situarla como ultimainstruccion del programa.
Ejemplo
{Prec}?
I
{Post}
![Page 12: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/12.jpg)
2.3. Derivacion de algoritmos
2.3.1. Derivacion de asignacionesTeorıa
Estrategia a seguir
En este caso habrıa quecontinuar el proceso haciaarriba, calculando el asertoB que deberıa cumplirseantes de la instrucciondisenada para que laejecucion de I lleve alcumplimiento de Post.
Ejemplo
{Prec}?
{B}I
{Post}
![Page 13: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/13.jpg)
2.3. Derivacion de algoritmos
2.3.1. Derivacion de asignacionesTeorıa
Estrategia a seguir
A partir de este momento elobjetivo serıa derivar unprograma cuyasprecondicion ypostcondicion fueran Prec yB. El proceso se repitehasta que la precondicioncalculada para determinadainstruccion coincida conPrec, la precondicion de laespecificacion inicial.
Ejemplo
{Prec}?
{B}I
{Post}
![Page 14: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/14.jpg)
2.3. Derivacion de algoritmos
Ejemplo 2. Intercambio de valoresEnunciado
Se pide
Derivar la siguiente especificacion que realiza un intercambio de valores.
Especificacion
var x , y : nat
{Prec : x = X ∧ y = Y }{Post : x = Y ∧ y = X}
![Page 15: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/15.jpg)
2.3. Derivacion de algoritmos
Ejemplo 2. Intercambio de valoresSolucion
Analisis de la postcondicion
La postcondicion es una conjuncion de dos igualdades.
Opciones
Considerarse cada una de ellas aisladamente e intentar satisfacerlaspor separado. Pero es posible que al intentar satisfacer una de ellasla otra se haga imposible de satisfacer.
Crear alternativas en las cuales algunas conjunciones se satisfacenmediante la instruccion protegida y las demas constan en laproteccion.
![Page 16: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/16.jpg)
2.3. Derivacion de algoritmos
Ejemplo 2. Intercambio de valoresSolucion
Primera aproximacion
Podrıamos pensar en una asignacion multiple.
Instrucciones
{Prec : x = X ∧ y = Y }< x , y >:=< y , x >
{Post : x = Y ∧ y = X}
![Page 17: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/17.jpg)
2.3. Derivacion de algoritmos
Ejemplo 2. Intercambio de valoresSolucion
Primera aproximacion
Podrıamos pensar en una asignacion multiple.
Instrucciones
{Prec : x = X ∧ y = Y }< x , y >:=< y , x >
{Post : x = Y ∧ y = X}
Reflexion
Sin embargo, la postcondicion es una conjuncion de dos igualdades.Tienen que cumplirse ambas simultaneamente. Ademas, no puedeverificarse.
![Page 18: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/18.jpg)
2.3. Derivacion de algoritmos
Ejemplo 2. Intercambio de valoresSolucion
Segunda aproximacion
Intentamos con una asignacion sobre la variable y . No podemos accederal valor inicial de X .
Instrucciones
{A1}y := x
{Post : x = Y ∧ y = X}
Buscamos {A1}{A1} ≡ Post[y ← x ]
≡ x = Y ∧ x = X
![Page 19: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/19.jpg)
2.3. Derivacion de algoritmos
Ejemplo 2. Intercambio de valoresSolucion
Segunda aproximacion
Intentamos con una asignacion sobre la variable y . No podemos accederal valor inicial de X .
Instrucciones
{A1}y := x
{Post : x = Y ∧ y = X}
Buscamos {A1}{A1} ≡ Post[y ← x ]
≡ x = Y ∧ x = X
≡ X = Y
![Page 20: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/20.jpg)
2.3. Derivacion de algoritmos
Ejemplo 2. Intercambio de valoresSolucion
Segunda aproximacion
Intentamos con una asignacion sobre la variable y . No podemos accederal valor inicial de X .
Instrucciones
{A1}y := x
{Post : x = Y ∧ y = X}
Buscamos {A1}{A1} ≡ Post[y ← x ]
≡ x = Y ∧ x = X
≡ X = Y
Reflexion
No podemos asegurarlo. No tenemos esa informacion.
![Page 21: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/21.jpg)
2.3. Derivacion de algoritmos
Ejemplo 2. Intercambio de valoresSolucion
Tercera aproximacion
Intentamos con una asignacion sobre la variable x . No podemos accederal valor inicial de Y .
Instrucciones
{A1}x := y
{Post : x = Y ∧ y = X}
Buscamos {A1}{A1} ≡ Post[x ← y ]
≡ y = Y ∧ y = X
![Page 22: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/22.jpg)
2.3. Derivacion de algoritmos
Ejemplo 2. Intercambio de valoresSolucion
Tercera aproximacion
Intentamos con una asignacion sobre la variable x . No podemos accederal valor inicial de Y .
Instrucciones
{A1}x := y
{Post : x = Y ∧ y = X}
Buscamos {A1}{A1} ≡ Post[x ← y ]
≡ y = Y ∧ y = X
≡ X = Y
![Page 23: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/23.jpg)
2.3. Derivacion de algoritmos
Ejemplo 2. Intercambio de valoresSolucion
Tercera aproximacion
Intentamos con una asignacion sobre la variable x . No podemos accederal valor inicial de Y .
Instrucciones
{A1}x := y
{Post : x = Y ∧ y = X}
Buscamos {A1}{A1} ≡ Post[x ← y ]
≡ y = Y ∧ y = X
≡ X = Y
Reflexion
Ocurrirıa lo mismo. No podemos asegurarlo. No tenemos esainformacion.
![Page 24: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/24.jpg)
2.3. Derivacion de algoritmos
Ejemplo 2. Intercambio de valoresSolucion
Cuarta aproximacion
Utilizamos una variable adicional.
Instrucciones
var z : nat
{A1}y := z
{Post : x = Y ∧ y = X}
Buscamos {A1}{A1} ≡ Post[y ← z ]
≡ x = Y ∧ z = X
![Page 25: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/25.jpg)
2.3. Derivacion de algoritmos
Ejemplo 2. Intercambio de valoresSolucion
Cuarta aproximacion
Utilizamos una variable adicional.
Instrucciones
var z : nat
{A1}y := z
{Post : x = Y ∧ y = X}
Buscamos {A1}{A1} ≡ Post[y ← z ]
≡ x = Y ∧ z = X
¿Podemos demostrar esto?
![Page 26: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/26.jpg)
2.3. Derivacion de algoritmos
Ejemplo 2. Intercambio de valoresSolucion
Cuarta aproximacion
Utilizamos una variable adicional.
Instrucciones
var z : nat
{A1}y := z
{Post : x = Y ∧ y = X}
Buscamos {A1}{A1} ≡ Post[y ← z ]
≡ x = Y ∧ z = X
¿Podemos demostrar esto?
Reflexion
No podemos demostrarlo. Seguimos operando sobre {A1}.
![Page 27: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/27.jpg)
2.3. Derivacion de algoritmos
Ejemplo 2. Intercambio de valoresSolucion
Cuarta aproximacion
Utilizamos una variable adicional y continuamos operando sobre {A1}.
Instrucciones
var z : nat
{A2}z := x ;
{A1 : x = Y ∧ z = X}y := z
{Post : x = Y ∧ y = X}
Buscamos {A2}{A2} ≡ A1[z ← x ]
≡ x = Y ∧ x = X
![Page 28: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/28.jpg)
2.3. Derivacion de algoritmos
Ejemplo 2. Intercambio de valoresSolucion
Cuarta aproximacion
Utilizamos una variable adicional y continuamos operando sobre {A1}.
Instrucciones
var z : nat
{A2}z := x ;
{A1 : x = Y ∧ z = X}y := z
{Post : x = Y ∧ y = X}
Buscamos {A2}{A2} ≡ A1[z ← x ]
≡ x = Y ∧ x = X
≡ X = Y
![Page 29: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/29.jpg)
2.3. Derivacion de algoritmos
Ejemplo 2. Intercambio de valoresSolucion
Cuarta aproximacion
Utilizamos una variable adicional y continuamos operando sobre {A1}.
Instrucciones
var z : nat
{A2}z := x ;
{A1 : x = Y ∧ z = X}y := z
{Post : x = Y ∧ y = X}
Buscamos {A2}{A2} ≡ A1[z ← x ]
≡ x = Y ∧ x = X
≡ X = Y
Reflexion
No podemos asegurarlo. No tenemos esa informacion.
![Page 30: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/30.jpg)
2.3. Derivacion de algoritmos
Ejemplo 2. Intercambio de valoresSolucion
Cuarta aproximacion
Utilizamos una variable adicional y continuamos operando sobre {A1}.Segundo intento.
Instrucciones
var z : nat
{A2}x := y ;
{A1 : x = Y ∧ z = X}y := z
{Post : x = Y ∧ y = X}
Buscamos {A2}{A2} ≡ A1[x ← y ]
≡ y = Y ∧ z = X
![Page 31: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/31.jpg)
2.3. Derivacion de algoritmos
Ejemplo 2. Intercambio de valoresSolucion
Cuarta aproximacion
Utilizamos una variable adicional y continuamos operando sobre {A1}.Segundo intento.
Instrucciones
var z : nat
{A2}x := y ;
{A1 : x = Y ∧ z = X}y := z
{Post : x = Y ∧ y = X}
Buscamos {A2}{A2} ≡ A1[x ← y ]
≡ y = Y ∧ z = X
// Por la Prec
≡ z = X
¿Podemos demostrar esto?
![Page 32: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/32.jpg)
2.3. Derivacion de algoritmos
Ejemplo 2. Intercambio de valoresSolucion
Cuarta aproximacion
Utilizamos una variable adicional y continuamos operando sobre {A1}.Segundo intento.
Instrucciones
var z : nat
{A2}x := y ;
{A1 : x = Y ∧ z = X}y := z
{Post : x = Y ∧ y = X}
Buscamos {A2}{A2} ≡ A1[x ← y ]
≡ y = Y ∧ z = X
// Por la Prec
≡ z = X
¿Podemos demostrar esto?
Reflexion
No podemos demostrarlo. Seguimos operando sobre {A2}.
![Page 33: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/33.jpg)
2.3. Derivacion de algoritmos
Ejemplo 2. Intercambio de valoresSolucion
Cuarta aproximacion
Utilizamos una variable adicional y continuamos operando sobre {A2}.
Instrucciones
{Prec : x = X ∧ y = Y }var z : nat
z := x
{A2 : z = X}x := y ;
{A1 : x = Y ∧ z = X}y := z
{Post : x = Y ∧ y = X}
Verificamos z := x
{Prec} ⇒ A2[z ← x ]
≡ x = X
![Page 34: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/34.jpg)
2.3. Derivacion de algoritmos
Ejemplo 2. Intercambio de valoresSolucion
Cuarta aproximacion
Utilizamos una variable adicional y continuamos operando sobre {A2}.
Instrucciones
{Prec : x = X ∧ y = Y }var z : nat
z := x
{A2 : z = X}x := y ;
{A1 : x = Y ∧ z = X}y := z
{Post : x = Y ∧ y = X}
Verificamos z := x
{Prec} ⇒ A2[z ← x ]
≡ x = X
// Por la Prec
≡ True
![Page 35: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/35.jpg)
2.3. Derivacion de algoritmos
Ejemplo 2. Intercambio de valoresSolucion
Cuarta aproximacion
Utilizamos una variable adicional y continuamos operando sobre {A2}.
Instrucciones
{Prec : x = X ∧ y = Y }var z : nat
z := x
{A2 : z = X}x := y ;
{A1 : x = Y ∧ z = X}y := z
{Post : x = Y ∧ y = X}
Verificamos z := x
{Prec} ⇒ A2[z ← x ]
≡ x = X
// Por la Prec
≡ True
Reflexion
Hemos terminado la derivacion.
![Page 36: Tema 2. teoría y práctica de derivación de asignaciones representado](https://reader031.vdocuments.net/reader031/viewer/2022031903/55aabf601a28ab3e568b45ff/html5/thumbnails/36.jpg)
2.3. Derivacion de algoritmos
Feed-backDiscusion
This slide is intentionally left blank