• No se han encontrado resultados

La Tesis de Church

In document apunte muy bueno.pdf (página 100-103)

Al principio de este cap´ıtulo se explicaron las razones para preferir las MTs como mecanismo para estudiar computabilidad. Es hora de dar soporte a la correctitud de esta decisi´on.

¿Qu´e deber´ıa significar que algo es o no “computable”, para que lo que podamos demostrar sobre computabilidad sea relevante para nosotros? Quisi´eramos que la definici´on capture los procedimientos que pueden ser realizados en forma mec´anica y sistem´atica, con una cantidad finita (pero ilimitada) de recursos (tiempo, memoria).

¿Qu´e tipo de objetos quisi´eramos manejar? Est´a claro que cadenas sobre alfabetos finitos o numerables, o n´umeros enteros o racionales son realistas, porque existe unarepresentaci´on finita para ellos. No estar´ıa tan bien el permitirnos representar cualquier n´umero real, pues no tienen una representaci´on finita (no alcanzan las secuencias finitas de s´ımbolos en ning´un alfabeto para representarlos, recordar el Teo. 1.2). Si los conjuntos de cardinal

ℵ1 se permitieran, podr´ıamos tambi´en permitir programas infinitos, que podr´ıan reconocer

cualquier lenguaje o resolver cualquier problema mediante un c´odigo que considerara las infinitas entradas posibles una a una:

if w=abbab then return S

if w=bbabbabbbabbabbbb then return S if w=bb then return N

if w=bbabbbaba then return S ...

lo cual no es ni interesante ni realista, al menos con la tecnolog´ıa conocida.

¿Qu´e tipo de acciones quisi´eramos permitir sobre los datos? Est´a claro que los aut´omatas finitos o de pila son mecanismos insatisfactorios, pues no pueden reconocer lenguajes que se pueden reconocer f´acilmente en nuestro PC. Las MTs nos han permitido resolver todo lo que se nos ha ocurrido hasta ahora, pero pronto veremos cosas que no se pueden hacer. Por lo tanto, es v´alido preguntarse si un l´ımite de las MTs debe tomarse en serio, o m´as generalmente, cu´al es un modelo v´alido de computaci´on en el mundo real. Esta es una pregunta dif´ıcil de responder sin sesgarnos a lo que conocemos. ¿Ser´an aceptables la computaci´on cu´antica (¿se podr´a finalmente implementar de verdad?), la computaci´on biol´ogica (al menos ocurre en la realidad), la computaci´on con cristales (se ha dicho que la forma de cristalizarse de algunas estructuras al pasar al estado s´olido resuelve problemas considerados no computables)? ¿No se descubrir´a ma˜nana un mecanismo hoy impensable de computaci´on?

La discusi´on deber´ıa convencer al lector de que el tema es debatible y adem´as que no se puede demostrar algo, pues estamos hablando del mundo real y no de objetos abstractos. Nos deberemos contentar con un modelo que nos parezca razonable y convincentede qu´e es lo computable. En este sentido, es muy afortunado que los distintos modelos de computaci´on

4.7. LA TESIS DE CHURCH 101

que se han usado para expresar lo que todos entienden por computable, se han demostrado equivalentes entre s´ı. Algunos son:

1. M´aquinas de Turing.

2. M´aquinas de Acceso Aleatorio (RAM). 3. Funciones recursivas.

4. Lenguajes de programaci´on (te´oricos y reales). 5. C´alculo λ.

6. Gram´aticas y sistemas de reescritura.

Esta saludable coincidencia es la que le da fuerza a la llamada Tesis de Church.

Definici´on 4.24 La Tesis de Church establece que las funciones y problemas computables son precisamente los que pueden resolverse con una M´aquina de Turing.

Una buena forma de convencer a alguien con formaci´on en computaci´on es mostrar que las MTs son equivalentes a las m´aquinas RAM, pues estas ´ultimas son una abstracci´on de los computadores que usamos todos los d´ıas. Existen muchos modelos de m´aquinas RAM. Describimos uno simple a continuaci´on.

Definici´on 4.25 Un modelo de m´aqina RAM es como sigue: existe una memoria formada por celdas, cada una almacenando un n´umero natural mi e indexada por un n´umero natural

i 0. Un programa es una secuencia de instrucciones Ll, numeradas en l´ıneas l 1. La instrucci´on en cada l´ınea puede ser:

1. Set i, a, que asigna mi ←a, donde a es constante. 2. Mov i, j, que asigna mi mj.

3. Sum i, j, que asigna mi mi+mj.

4. Sub i, j, que asigna mi max(0, mimj).

5. IfZ i, l, que si mi = 0 transfiere el control a la l´ınea Ll, donde l es una constante. En todas las instrucciones, i (lo mismo j) puede ser un simple n´umero (representando una celda fija mi), o tambi´en de la forma i, para una constante i, donde i es ahora la

direcci´on de la celda que nos interesa (mmi).

El control comienza en la l´ınea L1, y luego de ejecutar la Ll pasa a la l´ınea Ll+1, salvo

posiblemente en el caso de IfZ. La entrada y la salida quedan en la memoria en posiciones convenidas. Una celda no accesada contiene el valor cero. La ejecuci´on termina luego de ejecutar la ´ultima l´ınea.

No es dif´ıcil convencerse de que el modelo de m´aquina RAM que hemos definido es tan potente como cualquier lenguaje Ensamblador (Assembler) de una arquitectura (al cual a su vez se traducen los programas escritos en cualquier lenguaje de programaci´on). De hecho podr´ıamos haber usado un lenguaje a´un m´as primitivo, sinSet,SumySubsino s´oloIncmi, que incrementa mi. Tampoco es dif´ıcil ver que una m´aquina RAM puede simular una MT (¡el JTV es un buen ejemplo!). Veamos que tambi´en puede hacerse al rev´es.

Una MT de 2 cintas que simula nuestra m´aquina RAM almacenar´a las celdas que han sido inicializadas en la cinta 1 de la siguiente forma: si mi =a almacenar´a en la cinta 1 una cadena de la formacIi+1cIa+1c. La cinta estar´a compuesta de todas las celdas asignadas, con

esta representaci´on concatenada, y todo precedido por una c(para que toda celda comience con cc). Cada l´ıneaLl tendr´a una peque˜na MTMl que la simula. Luego de todas las l´ıneas, hay una Ml extra que simplemente se detiene.

1. Si Ll dice Set i, a, la Ml buscar´a ccIi+1c en la cinta 1. Si no la encuentra agregar´a

ccIi+1cIcal final de la cinta (inicializando as´ımi 0). Ahora, modificar´a lo que sigue

accIi+1cpara que seaIa+1c(haciendo espacio de ser necesario) y pasar´a aMl

+1. Si la

instrucci´on dijeraSeti,a, entonces se averigua (e inicializa de ser necesario) el valor de mi s´olo para copiar Imi a una cinta 2. Luego debe buscarse la celda que empieza con ccImic en la cinta 1, y reci´en reemplazar lo que sigue por Ia+1c. En los siguientes ´ıtems las inicializaciones ser´an impl´ıcitas para toda celda que no se encuentre, y no se

volver´an a mencionar.

2. Si Ll dice Mov i,j, laMl buscar´a ccIj+1cen la cinta 1 y copiar´a los I’s que le siguen

en la cinta 2. Luego, buscar´accIi+1cen la cinta 1 y modificar´a losI’s que siguen para

que sean iguales al contenido de la cinta 2. Luego pasar´a a Ml+1. Las adaptaciones

para los casos i y/o j son similares a los de Set y no se volver´an a mencionar (se puede llegar a usar la tercera cinta en este caso, por comodidad).

3. Si Ll dice Sum i, j, la Ml buscar´a ccIj+1cen la cinta 1 y copiar´a los I’s que le siguen

en la cinta 2. Luego, buscar´accIi+1cen la cinta 1 y, a losI’s que le siguen, les agregar´a

los de la cinta 2 menos uno.

4. SiLl diceSubi,j, laMl buscar´accIj+1cen la cinta 1 y copiar´a losI’s que le siguen en

la cinta 2. Luego, buscar´a ccIi+1c en la cinta 1 y, a los I’s que le siguen, les quitar´a la

cantidad que haya en la cinta 2 (dejando s´olo unI si son la misma cantidad o menos). 5. Si Ll diceIfZi, l′, laMl buscar´a ccIi+1cen la cinta 1. Luego ver´a qu´e sigue accIi+1c.

Si es Ic, pasar´a a laMl′, sino a la Ml+1.

No es dif´ıcil ver que la simulaci´on es correcta y que no hay nada del modelo RAM que una MT no pueda hacer. Asimismo es f´acil ver que se puede calcular lo que uno quiera calcular en un PC usando este modelo RAM (restringido a los naturales, pero ´estos bastan para representar otras cosas como enteros, racionales, e incluso strings si se numeran

In document apunte muy bueno.pdf (página 100-103)