1. Organizaci´n de la materia
o
Docentes
Te´rica
o
L´gica y Computabilidad
o Santiago Figueira
Pr´ctica
a
Marcelo Scasso
Segundo cuatrimestre 2011 Hern´n Czemerinski
a
Florencia Savoretti
Manuel Gim´nez
e
Departamento de Computaci´n - FCEyN - UBA
o
Herman Schinca
Computabilidad - clase 1 Horario
mi´rcoles de 17 a 19 en aula E24 (Pab. I) y viernes de 17 a 22
e
Introducci´n, m´quinas de Turing, funciones parciales, funciones
o a en aula 8 (Pab. I)
en general, te´rica los mi´rcoles y pr´ctica los viernes
o e a
Turing computables, ejemplos
Aprobaci´n: dos parciales (cada uno con su recuperatorio)
o
es promocionable (detalles en la pr´ctica)
a
www.dc.uba.ar/lyc
lyc@dc.uba.ar y lyc-doc@dc.uba.ar
1 2
Temas y bibliograf´
ıa Or´
ıgenes
fines del siglo XIX y principios del siglo XX: inter´s por los
e
fundamentos de la matem´tica
a
dos grandes b´squedas (Hilbert)
u
Computabilidad
1. completitud de la aritm´tica
e
Computability, Complexity and Languages, fundamentals of se buscaba un sistema axiom´tico que capturara todas las
a
theoretical computer science. Martin Davis, Ron Sigal, Elaine verdades de la aritm´tica
e
Weyuker, Elsevier, 1994 G¨del (1931): cualquier sistema axiom´tico suficientemente
o a
poderoso es incompleto o inconsistente
L´gica proposicional
o 2. el problema de la decisi´n (Entscheidungsproblem)
o
Metal´gica, introducci´n a la metateor´ de la l´gica cl´sica de
o o ıa o a se buscaba un procedimiento efectivo para decidir si cualquier
f´rmula de primer orden era v´lida o no
o a
primer orden. Geoffrey Hunter, Editorial Paraninfo, 1981.
Turing (1936): no existe tal procedimiento efectivo
L´gica de primer orden
o
A mathematical introduction to logic. Herbert Enderton,
Elsevier, 2006.
3 David Hilbert Kurt G¨del
o Alan Turing 4
2. M´quinas de Turing
a Tabla de instrucciones
... 0 1 1 0 0 0 0 1 0 ∗ ∗ ... Σ es el alfabeto. L, R ∈ Σ, ∗ ∈ Σ.
/
Q es el conjunto finito de estados
q A = Σ ∪ {L, R} es el conjunto de acciones
ımbolo s ∈ Σ se interpreta como “escribir s en la posici´n
un s´ o
Se compone de : actual”
una cinta L se interpreta como “mover la cabeza una posici´n hacia la
o
dividida en celdas izquierda”
infinita en ambas direcciones R se interpreta como “mover la cabeza una posici´n hacia la
o
cada celda contiene un s´
ımbolo de un alfabeto dado Σ. derecha”
∗∈Σ Una tabla de instrucciones T es un subconjunto (finito) de
L, R ∈ Σ
/
∗ representa el blanco en una celda Q ×Σ×A×Q
L y R son s´ımbolos reservados (representar´n acciones que
a
puede realizar la cabeza) La tupla
una cabeza (q, s, a, q ) ∈ T
lee y escribe un s´
ımbolo a la vez se interpreta como
se mueve una posici´n a la izquierda o una posici´n a la
o o
derecha Si la m´quina est´ en el estado q leyendo en la cinta el
a a
una tabla finita de instrucciones s´
ımbolo s, entonces realiza la acci´n a y pasa al estado q
o
dice qu´ hacer en cada paso
e 5 6
Ejemplo de ejecuci´n de una instrucci´n
o o Definici´n de m´quina de Turing
o a
Supongamos un alfabeto Σ = {0, 1}. Una m´quina de Turing es una tupla
a
Una m´quina con esta tabla de instrucciones:
a
(Σ, Q, T , q0 , qf )
{ (q1 , 0, 1, q2 ) , (q2 , 1, R, q1 ) }
Si empieza en esta configuraci´n
o donde
... 0 1 1 0 0 0 0 1 0 ∗ ∗ ... ımbolos (L, R ∈ Σ, ∗ ∈ Σ)
Σ (finito) es el conjunto s´ /
Q (finito) es el conjunto de estados
tiene dos estados distinguidos:
q1
q0 ∈ Q es el estado inicial
pasa a qf ∈ Q es el estado final
... 0
T ⊆ Q × Σ × Σ ∪ {L, R} × Q es la tabla de instrucciones
1 1 1 0 0 0 1 0 ∗ ∗ ...
va a ser finita porque Σ y Q lo son
q2
cuando no hay restricciones sobre T decimos que M una
y luego a m´quina de Turing no determin´
a ısitca
... 0 1 1 1 0 0 0 1 0 ∗ ∗ ... cuando no hay dos instrucciones en T que empiezan con las
mismas primeras dos coordenadas, decimos que M es una
q1 m´quina de Turing determin´
a ıstica
7 8
3. Ejemplo Representaci´n de n´meros y tuplas
o u
Sea M = (Σ, Q, T , q0 , qf ) con Visto como aut´mata
o Fijamos Σ = {∗, 1}.
Σ = {∗, a, b} representaremos a los n´meros naturales en unario (con
u
a/b palotes).
Q = {q0 , q1 , qf }
q0 q1 el n´mero x ∈ N se representa como
u
tabla de instrucciones inicio
q0 a b q1 x = 1...1
b/R
q b R q0 ∗/∗ x+1
T = 1
q0 ∗ ∗ qf
∗/∗ representamos a las tuplas (x1 , . . . , xn ) como lista de
q1 ∗ ∗ qf qf (representaciones de) los xi separados por blanco
la tupla (x1 , . . . , xn ) se representa como
∗ a a a a ∗ ∗ b b b b ∗ ∗x1 ∗ x2 ∗ · · · ∗ xn ∗
si empieza en termina en
q0 qf
Por ejemplo,
∗ a a b a ∗ ∗ b b b a ∗ el n´mero 0 se representa como 1
u
si empieza en termina en
q0 q0
el n´mero 3 se representa como 1111
u
∗ a a b a ∗ ∗ a a b a ∗ la tupla (1, 2) se representa como ∗11 ∗ 111∗
si empieza en termina en
q0 qf la tupla (0, 0, 1) se representa como ∗1 ∗ 1 ∗ 11∗
9 10
Funciones parciales C´mputo de funciones parciales en m´quinas de Turing
o a
Siempre vamos a trabajar con funciones f : Nn → N. Una funci´n parcial f : Nn → N es Turing computable si existe una
o
m´quina de Turing determin´
a ıstica M = (Σ, Q, T , q0 , qf ) con Σ = {∗, 1}
Pero van a ser funciones parciales. Una funci´n parcial f es una
o tal que cuando empieza en la configuraci´n inicial
o
funci´n que puede estar indefinida para algunos (tal vez ninguno;
o ... ∗ ∗ ∗ x1 ∗ x2 ∗ ... ∗ xn ∗ ∗ ∗ ...
tal vez todos) sus argumentos.
notamos f (x1 , . . . , xn ) ↓ cuando f est´ definida para
a q0
x1 , . . . , xn . En este caso f (x1 , . . . , xn ) es un n´mero natural.
u (con los enteros xi representados en unario y nada m´s en la entrada
a
notamos f (x1 , . . . , xn ) ↑ cuando f est´ indefinida para
a salvo la representaci´n de la entrada):
o
x1 , . . . , xn si f (x1 , . . . , xn ) ↓ entonces siguiendo sus instrucciones en T llega a
una configuraci´n final de la forma
o
El conjunto de argumentos para los que f est´ definida se llama
a
... ∗ f (x1 , . . . , xn ) ∗ ...
dominio de f , notado dom(f ).
qf
dom(f ) = {(x1 , . . . , xn ) : f (x1 , . . . , xn ) ↓}
(quiz´ algo m´s en la cinta)
a a
f es total si dom(f ) = Nn . si f (x1 , . . . , xn ) ↑ entonces nunca termina en el estado qf .
11 12
4. C´mputo de la funci´n f (x) = 0
o o C´mputo de la funci´n f (x) = x + 1
o o
∗/R ∗/1 1/R ∗/1 1/R
inicio q0 q1 q2 qf inicio q0 q1 qf
13 14
C´mputo de la funci´n f (x) = 2x
o o C´mputo de la funci´n f (x) = 2x
o o
Idea: por cada 1 que borro de la entrada, pongo 11 bien a la derecha. ∗/L 1/L ∗/R 1/R
Repito esto hasta que quede solo un 1 en la entrada. Ah´ pongo un 1 m´s
ı a inicio q0 q1 q2 q11 q12
a la derecha.
Ejemplo: entrada = 2
1/1 ∗/R
1. ∗ ∗ ∗ ∗ ∗ 1 1 1 ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ q3 q13
∗/∗ 1/L 1/R
2. ∗ ∗ ∗ ∗ ∗ ∗ 1 1 ∗ 1 1 ∗ ∗ ∗ ∗ ∗ ∗
3. ∗ ∗ ∗ ∗ ∗ ∗ ∗ 1 ∗ 1 1 1 1 ∗ ∗ ∗ ∗ ∗/R ∗/1
4. ∗ ∗ ∗ ∗ ∗ ∗ ∗ 1 ∗ 1 1 1 1 1 ∗ ∗ ∗ 1/∗
Invariante: a lo largo de cada iteraci´n, la cinta est´ as´
o a ı: 1/L q10 q4 q5 q14
∗ ∗ ∗ 1 . . . 1 ∗ 1 . . . . . . 1 ∗ ∗ ∗ para alg´n n > 0, m ≥ 0, n + m − 1 = entrada
u
n 2m ∗/1 ∗/R 1/R
1. si n = 1 entonces pongo un 1 m´s a la derecha y termina en qf con
a
∗ ∗ ∗1 ∗ 1 . . . . . . 1 ∗ ∗ ∗ q9 q8 q7 q6 qf
1/R ∗/1 ∗/R
2m+1
2. si n > 1 transformo la cinta en ∗ ∗ ∗ 1 . . . 1 ∗ 1 . . . . . . 1 ∗ ∗ ∗ y vuelvo
n−1 2(m+1)
1/R 1/R
al paso 1 15 16
5. C´mputo de una funci´n parcial
o o Poder de c´mputo
o
Teorema
Sea f : Nm → N una funci´n parcial. Son equivalentes:
o
Supongamos
1. f es computable en Java
x si x es par
f (x) = 2. f es computable en C
↑ si no
3. f es computable en Haskell
1/R 4. f es Turing computable
No es importante
∗/L 1/L ∗/R ∗/∗ qu´ base usamos para representar a los n´meros
e u
inicio q0 q1 q2 q3 qf usamos representaci´n unaria (Σ = {∗, 1})
o
ıamos haber elegido la binaria (Σ = {∗, 0, 1})
pero podr´
1/L 1/L o base 10 (Σ = {∗, 0, 1, 2, . . . , 9})
si permitimos que al terminar la cinta tenga otras cosas
q4 escritas adem´s de la salida o solo contenga la salida
a
si usamos esta variante de arquitectura:
una cinta de entrada (solo de lectura)
una cinta de salida (solo de escritura)
una o varias cintas de trabajo, de lectura/escritura
17 ¡Siempre computamos la misma clase de funciones! 18