Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 ›...

22
Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci´on e Inteligencia Artificial Universidad de Sevilla Teor´ ıa de la Computabilidad Curso 2010–11 TC0, 2010–11 Lenguaje GOTO 2.1

Transcript of Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 ›...

Page 1: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia

Tema 2:El lenguaje GOTO

Dpto. Ciencias de la Computacion e Inteligencia ArtificialUniversidad de Sevilla

Teorıa de la ComputabilidadCurso 2010–11

TC0, 2010–11 Lenguaje GOTO 2.1

Page 2: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia

Modelos de computacion

El lenguaje GOTOSintaxisSemanticaFunciones computables

MacrosEjemplosExpansion de macros

TC0, 2010–11 Lenguaje GOTO 2.2

Page 3: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia

Modelos de Computacion

I Un Modelo de Computacion proporciona una definicionmatematica precisa del concepto de algoritmo.

I Un Programa es la expresion formal de un algoritmo en unmodelo.

I Caracterısticas generales:1. Especificacion:

I Datos de entrada y salida (suelen ser del mismo tipo).I Operaciones basicas.

Acciones primitivas que actuan sobre los datos de entrada.

2. Implementacion e Interpretacion:I Sintaxis: reglas gramaticales para la construccion de los

procedimientos mecanicos (programas).I Semantica: definicion logico-matematica de las funciones o

relaciones que definen los procedimientos.

TC0, 2010–11 Lenguaje GOTO 2.3

Page 4: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia

Funciones Computables

Un modelo de computacion, M, viene dado por:

I Un conjunto de datos de entrada y salida, DM .

I Un conjunto de programas PM (descrito por la sintaxis de M).

I Una descripcion del modo en que cada programa calcula unafuncion.

Sea P un programa en un modelo de computacion M.

I Asociamos a P una funcion sobre la estructura de datos

[[P]]M : D∗− −→ D donde, D∗ =⋃

k∈N−{0}

Dk

[[P]]M(d)= resultado de ejecutar P sobre el dato d .

Donde para cada aridad k , [[P]](k)M = [[P]]M �Dk

I Una funcion k-aria f : Dk− −→ D es M–computable siexiste un M-programa P tal que [[P]](k) = f . Denotamos porM–COMP al conjunto de funciones M–computables

TC0, 2010–11 Lenguaje GOTO 2.4

Page 5: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia

Modos de Computacion

Asocian a la semantica del modelo una definicion de solucion.

I Modo secuencial-determinista.La ejecucion sobre un dato es unica. Resuelve el problema demanera exacta.

I Modo paralelo. Ejecuta diversas tareas en procesadoresdistintos. Resuelve el problema de manera exacta.

I Modo no determinista.Admite instrucciones que pueden elegir entre dos o masopciones. Resuelve un problema si entre sus posiblessoluciones proporciona una solucion exacta del mismo.

I Modo probabilista.Los programas son deterministas, pero se admite comosoluciones programas que, con cierta probabilidad,proporcionan una solucion exacta del problema.

TC0, 2010–11 Lenguaje GOTO 2.5

Page 6: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia

El Lenguaje GOTO

Es un modelo secuencial y determinista con conjunto de datos: N.

I Sintaxis:

1. Variables:

De entrada: X1(= X ),X2,X3, ...De salida: YAuxiliares: Z1(= Z ),Z2,Z3, ...

2. Etiquetas: A1,B1,C1,D1,E1,A2,B2,C2,D2,E2, . . .I Notacion: A = A1, B = B1, C = C1, D = D1, E = E1.

3. Instrucciones: Para cada variable V y cada etiqueta L:I Incremento: V ←− V + 1I Decremento: V ←− V − 1I Condicional: IF V 6= 0 GOTO LI Skip: V ←− VI Instrucciones etiquetadas: Para cada etiqueta K :

[K ] V ←− V + 1[K ] V ←− V − 1[K ] IF V 6= 0 GOTO L[K ] V ←− V

TC0, 2010–11 Lenguaje GOTO 2.6

Page 7: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia

Programas GOTO

I Un programa GOTO (un G–programa) es una sucesion finitade instrucciones del lenguaje GOTO, P = I1, I2, .., In, cuyaultima instruccion NO es Y ←− Y .

I Si P = I1, . . . , In es un programa GOTO el numero n sedenomina longitud del programa y se denota por |P|.

I Caso lımite: el Programa Vacıo (con 0 instrucciones).

I Denotaremos por GOTOP al conjunto de los G-programas.

I Ejemplo:

P :

[A] X ←− X − 1

Y ←− Y + 1IF X 6= 0 GOTO A

I Cada programa expresa un procedimiento para calcular unacierta funcion (parcial) de Nn en N. El modo en que cadaprograma lleva a cabo esto se determina mediante lasemantica del lenguaje GOTO.

TC0, 2010–11 Lenguaje GOTO 2.7

Page 8: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia

Estados

Sea P un programa GOTO.

I Denotamos al conjunto de las variables del lenguaje GOTOmediante VAR.

I var(P) conjunto de variables que aparecen en P.

I Un estado de P es una aplicacion σ : VAR → N.

I Un estado es, esencialmente, una tabla variable–valor queguarda el valor de las variables del programa en un momentodado. Por ello, a veces, escribiremos V = m en lugar deσ(V ) = m.

TC0, 2010–11 Lenguaje GOTO 2.8

Page 9: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia

Descripciones instantaneas

Sea P un programa GOTO.

I Una descripcion instantanea, (d.i.) de P, es un pars = (i , σ) donde 1 ≤ i ≤ |P|+ 1 y σ es un estado de P.

I Cuando i = 1 y σ(V ) = 0 para toda variable V , salvo unnumero finito de variables de entrada, la d.i. se denominainicial.

I Cuando i = |p|+ 1, la d.i. se denomina terminal.

I Si s = (i , σ), escribiremos s(V ) en lugar de σ(V ).

TC0, 2010–11 Lenguaje GOTO 2.9

Page 10: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia

Semantica

Sea P un programa y s = (j , σ) y s ′ = (j ′, σ′) descripcionesinstantaneas de P con j 6= |p|+ 1.Diremos que s ′ es la descripcion instantanea siguiente de s enla computacion de P, y escribimos s `p s ′, si:

I Caso 1: Ij ≡ V ←− V + 1, s(V)=m. Entonces j ′ = j + 1 yI σ′ es σ sustituyendo V = m por V = m + 1.

I Caso 2: Ij ≡ V ←− V − 1, s(V)=m. Entonces j ′ = j + 1 yI Si m > 0, σ′ es σ sustituyendo V = m por V = m − 1.I Si m = 0, σ′ = σ

I Caso 3: Ij es de tipo SKIP. Entonces j ′ = j + 1 y σ′ = σ.I Caso 4: Ij ≡ IF V 6= 0 GOTO L. Entonces σ′ = σ y

I Si s(V ) = 0, entonces j ′ = j + 1I Si s(V ) 6= 0

I Si existe k tal que Ik es la primera instruccion etiquetada conL, entonces j ′ = k

I Si no existe tal k, j ′ = |p|+ 1

TC0, 2010–11 Lenguaje GOTO 2.10

Page 11: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia

Computacion de un programa

Una computacion de un programa P es una sucesion de d.i. de P,s = s1, . . . , sk , . . . tal que:

I s1 = (1, σ) es una d.i. inicial.

I Para todo k , con sk no terminal, existe k + 1 tal quesk `p sk+1

Una computacion s de p es finita si y solo si existe k tal que sk esterminal. En tal caso, escribiremos P(s) ↓ y diremos que dichacomputacion para. En caso contrario, la computacion s es infinita;escribiremos P(s) ↑ y diremos que no para.

Lema. Para todo P ∈ GOTOP se verifica:

I Ausencia de bloqueo: Para toda d .i ., s, no terminal, existe s ′

tal que s `p s ′.

I Determinismo: Para cada d .i . inicial existe una unicacomputacion.

TC0, 2010–11 Lenguaje GOTO 2.11

Page 12: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia

Ejemplo

[A] IF X 6= 0 GOTO BZ −→ Z + 1IF Z 6= 0 GOTO E

[B] X −→ X − 1Y −→ Y + 1IF X 6= 0 GOTO A

s1 = (1, {X = 3, Y = 0, Z = 0})s2 = (4, {X = 3, Y = 0, Z = 0})s3 = (5, {X = 2, Y = 0, Z = 0})s4 = (6, {X = 2, Y = 1, Z = 0})s5 = (1, {X = 2, Y = 1, Z = 0})s6 = (4, {X = 2, Y = 1, Z = 0})s7 = (5, {X = 1, Y = 1, Z = 0})s8 = (6, {X = 1, Y = 2, Z = 0})s9 = (1, {X = 1, Y = 2, Z = 0})s10 = (4, {X = 1, Y = 2, Z = 0})s11 = (5, {X = 0, Y = 2, Z = 0})s12 = (6, {X = 0, Y = 3, Z = 0})s13 = (7, {X = 0, Y = 3, Z = 0})

TC0, 2010–11 Lenguaje GOTO 2.12

Page 13: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia

Funciones GOTO–computables

Sea P un G–programa. La funcion de aridad n calculada por P es

la funcion [[P]](n) : Nn − → N definida como sigue:Dado ~a = (a1, . . . , an) ∈ Nn,

1. Sea σ el estado de P dado por:I σ(Xi ) = ai (1 ≤ i ≤ n)I σ(V ) = 0 para toda V ∈ var(P) \ {X1, . . . ,Xn}.

2. Sea ahora s1 = (1, σ). Entonces

[[P]](n)(~a) =

sk(Y ) si existe s1, . . . , sk finita de p

a partir de s1

↑ e.c.o.c.

Definicion. Diremos que una funcion f : Nn − → N esGOTO–computable (f ∈ G –COMP), si existe un programaGOTO, P tal que f = [[P]](n).

I G –COMP(n) es el conjunto de funciones computables de aridad n.

TC0, 2010–11 Lenguaje GOTO 2.13

Page 14: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia

Ejemplos

I La funcion identidad IdN : N→ N es GOTO–computable.

IF X 6= 0 GOTO BZ ←− Z + 1IF Z 6= 0 GOTO E

[B] X ←− X − 1Y ←− Y + 1IF X 6= 0 GOTO B

I La funcion vacıa f∅ es GOTO–computable:

[A] Z ←− Z + 1IF Z 6= 0 GOTO A

I La funcion nula O : N −→ N O(x) = 0 esGOTO–computable.

La funcion nula es calculada por cualquier programa que paresiempre y en el que no aparezca la variable de salida Y .

TC0, 2010–11 Lenguaje GOTO 2.14

Page 15: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia

Macros

Existen bloques de instrucciones que podemos considerar como“nuevas instrucciones” ya que podemos utilizarlos en cualquierprograma para realizar una cierta subtarea. Veamos algunosejemplos de esto:

I El bloque de instrucciones:

Z ←− Z + 1IF Z 6= 0 GOTO L

nos permite realizar un salto incondicional a la instruccionetiquetada por L (o terminar la ejecucion del programa).

I Podemos poner a cero una variable V mediante el siguientebloque de instrucciones:

[L] V ←− V − 1IF V 6= 0 GOTO L

TC0, 2010–11 Lenguaje GOTO 2.15

Page 16: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia

Macros (II)

I Es util introducir abreviaturas para poder usar comodamentelos bloques anteriores en la descripcion de un programa.

I Dichas abreviaturas se denominan macros y para poderusarlas debemos especificar con precision la forma en quedichas abreviaturas se reemplazan por verdadero codigo.

GOTO L︸ ︷︷ ︸MACRO

=⇒ Zk ←− Zk + 1IF Zk 6= 0 GOTO L

}︸ ︷︷ ︸

EXPANSION

V ←− 0︸ ︷︷ ︸MACRO

=⇒{

[K ] V ←− V − 1IF V 6= 0 GOTO K︸ ︷︷ ︸

EXPANSIONI En el primer caso Zk debe ser una variable que no aparece en el

programa en que realizamos la expansion. En el segundo caso K es

una etiqueta que no aparece en dicho programa.

TC0, 2010–11 Lenguaje GOTO 2.16

Page 17: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia

Macros. Asignacion

La macro V ←− V ′ asigna a V el valor de V ′, conservando V ′ suvalor.

V ←− 0[A] IF V ′ 6= 0 GOTO B

GOTO C[B] V ′ ←− V ′ − 1

V ←− V + 1Z ←− Z + 1GOTO A

Copia V ′ en V y en ZyPone V ′ a cero

[C ] IF Z 6= 0 GOTO DGOTO L

[D] Z ←− Z − 1V ′ ←− V ′ + 1GOTO C

Copia Z en V ′

Pone Z a cero

[L] V ←− V}

Continua

TC0, 2010–11 Lenguaje GOTO 2.17

Page 18: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia

Uso de las macros

La funcion suma: Sum : N2 −→ N Sum(x , y) = x + y

P+

Y ←− X1

Z ←− X2

[B] IF Z 6= 0 GOTO AGOTO E

[A] Z ←− Z − 1Y ←− Y + 1GOTO B

Ejercicio: Prueba de la correccion para la suma.

(∀x , y ∈ N)([[P+]](2)(x , y) = x + y)

(por induccion debil sobre la segunda variable).

TC0, 2010–11 Lenguaje GOTO 2.18

Page 19: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia

Uso de macros (II)

La funcion producto. Prod : N2 −→ N ·(x , y) = x ·y

Z2 ←− X2

[B] IF Z2 6= 0 GOTO AGOTO E

[A] Z2 ←− Z2 − 1Z1 ←− X1 + YY ←− Z1

GOTO B

Nota: Z1 ←− X1 + Y es una macro ejecuta el programa Suma yasigna el resultado a la variable Z1.

TC0, 2010–11 Lenguaje GOTO 2.19

Page 20: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia

Expansion de macros (I)

Sean f ∈ GCOMP(n) y P ∈ GOTOP tales que [[P]](n) = f .Veamos una expansion para la macro: W ←− f (V1, . . . ,Vn).

1. Renombrando las etiquetas de P si fuese necesario, podemossuponer que la unica etiqueta de salida de P es E y todas lasdemas etiquetas de P son A1, ..,Ar .

2. Renombrando variables podemos suponer que las unicasvariables de entrada que aparecen en P son X1, . . . ,Xn y lasunicas variables auxiliares Z1, . . . ,Zk .

3. Podemos expresar la situacion anterior escribiendo

P ≡ P(Y ,X1, . . . ,Xn,Z1, . . . ,Zk ; E ,A1, . . . ,Ar )

4. Dado m ∈ N podemos obtener un nuevo programa

Qm ≡ P(Zm, ,Zm+1, ..,Zm+n,Zm+n+1, ..,Zm+n+k ; Em,Am+1, ..,Am+r )

sustituyendo en P cada variable y cada etiqueta por lacorrespondiente de Qm.

TC0, 2010–11 Lenguaje GOTO 2.20

Page 21: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia

Expansion de macros (II)

Para expandir la macro en un programa P ′, tomamos m ∈ Nsuficientemente grande para que Qm y P ′ no tengan variables nietiquetas comunes. Una vez determinado m reemplazamos lamacro por:

W ←− f (V1, . . . ,Vn)

Zm ←− 0Zm+1 ←− V1...Zm+n ←− Vn...Zm+n+1 ←− 0...Zm+n+k ←− 0Qm

[Em] W ←− Zm

TC0, 2010–11 Lenguaje GOTO 2.21

Page 22: Tema 2: El lenguaje GOTO - Universidad de Sevilla › cursos › tco-2010 › grupo-2 › tco-t2-print.pdf · Tema 2: El lenguaje GOTO Dpto. Ciencias de la Computaci on e Inteligencia

Macros condicionales

Si P(V1, . . . ,Vn) es un predicado G-computable:

macroexpansion macroZ ←− P(V1, . . . ,Vn)IF Z 6= 0 GOTO L

} IF P(V1, . . . ,Vn) 6= 0 GOTO L

Ejemplo: IF V = 0 GOTO L

V = 0 ≡ P(v) =

{1 si v = 00 si v 6= 0

donde P(v) es G-computable:

{IF X 6= 0 GOTO EY ←− Y + 1

TC0, 2010–11 Lenguaje GOTO 2.22