0% encontró este documento útil (0 votos)
37 vistas16 páginas

Módulo 4 - Lectura 4

Cargado por

lucasalmi202
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
37 vistas16 páginas

Módulo 4 - Lectura 4

Cargado por

lucasalmi202
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Computabilidad

La teoría de la computabilidad, junto con la teoría de autómatas y lenguajes


formales, es el fundamento de la informática teórica. Estudia los problemas de
decisión que pueden ser resueltos con un algoritmo o equivalentemente con una
máquina de Turing.
Existen cierto tipo de problemas que, se sabe, pueden resolverse exitosamente
mediante la aplicación de un algoritmo. Puede citarse como ejemplo la
determinación del máximo común divisor entre dos números enteros mediante el
algoritmo de Euclides o la determinación de los números primos, mediante la criba
de Eratóstenes. Se dice que estos problemas son algorítmicamente solubles.
Por otro lado, existe cierto tipo de problemas para los cuales no es posible encontrar
una solución algorítmica.
La teoría de la computabilidad tiene como objetivo encontrar maneras de
representar descripciones de procesos, de modo tal que se pueda asegurar si existe
o no una representación algorítmica viable para un problema dado.

Problemas y lenguajes

Decibilidad

El problema de la parada

Revisión del módulo


Descarga en PDF

Teleclase
Lección 1 de 6

Problemas y lenguajes

Puede afirmarse que un problema se describe con un lenguaje y que cuanto


más formal es el lenguaje, más precisa será la formulación del problema.

Existen diferentes tipos de problemas, que pueden clasificarse de la


siguiente manera:

Problemas de decisión

son problemas formulados como pregunta y tienen solo dos posibles
respuestas: SI / NO o, lo que es equivalente, VERDADERO / FALSO.
Pueden citarse como ejemplos determinar si un número natural dado es par o
impar, o dada una cadena arbitraria y un lenguaje regular, determinar si la cadena
pertenece o no al lenguaje.

Problemas de salida general



tienen respuestas que no pueden codificarse en solo dos situaciones; se dice que
las posibles respuestas son generales. Como ejemplos pueden citarse el cálculo
del promedio de una lista de números, la determinación del camino óptimo entre
dos ciudades, etc.

A su vez, tanto los problemas de decisión como los de salida general, tienen
subclasificaciones.

Los problemas de decisión se clasifican de la siguiente manera:

existe un algoritmo que, para


Decidibles toda instancia del problema,
devuelve la respuesta correcta.

existe un procedimiento que


Indecidibles solo da respuesta para algunas
instancias del problema
instancias del problema.

Por otra parte, los problemas de salida general se clasifican de la siguiente


forma:

existe un algoritmo que, para


Solubles toda instancia del problema,
devuelve la respuesta correcta.

existe un procedimiento que


Insolubles solo da respuesta para algunas
instancias del problema.
Todo problema de salida general, con un cierto grado de dificultad, se puede
transformar en un problema de decisión con el mismo grado de dificultad.

Desde el punto de vista de la computabilidad, los lenguajes formales se


clasifican de la siguiente manera:

Lenguajes recursivos

existe un algoritmo que determina, para cualquier cadena, si pertenece o no
pertenece al lenguaje. Corresponden a los lenguajes generados por gramáticas
regulares (tipo 3), gramáticas independientes del contexto (tipo 2) y gramáticas
dependientes del contexto (tipo 1), según la jerarquía de Chomsky.

Lenguajes recursivos enumerables



existe un procedimiento que solo acepta las cadenas que pertenecen al lenguaje,
pero para las que no pertenecen no siempre da respuesta. Corresponden a los
lenguajes generados por las gramáticas sin restricciones (tipo 0) de la jerarquía
de Chomsky.
El análisis del tipo de problema y lenguaje que lo describe permite determinar
si, al enfrentar un problema dado, es posible o no construir un algoritmo, y, en
caso de que sea posible, determinar el tiempo que tardará en dar una
respuesta (complejidad del algoritmo).

C O NT I NU A R
Lección 2 de 6

Decibilidad

El término decidible se refiere a la existencia de un método efectivo para


determinar si un objeto es miembro de un conjunto o no. Es decir, si existe un
algoritmo capaz de decidir en un número finito de pasos y en un tiempo
estimado.

Se dice que un problema es decidible si es posible encontrar una fórmula,


método o algoritmo que permitan determinar si cierta cadena pertenece o no
a una estructura.
Los lenguajes decidibles se definen como formados por cadenas calculables
mediante funciones recursivas; por esta razón, también se les llama
lenguajes recursivos.

Ahora, supongamos que se dispone de una máquina de Turing M y se


plantea el problema de determinar si una cadena específica pertenece o no
al lenguaje reconocido por M.

Sea M un autómata de Turing: ¿w ∈ L (M)?

Las posibles respuestas serán:


M termina en un estado final ⇒ w ∈ L (M)

M termina en un estado no final ⇒ w ∉ L(M)

M no termina ⇒ w ∉ L (M)

Un lenguaje L se define como recursivo si existe una máquina de Turing M


que, independientemente de la entrada, siempre llega a la condición de
parada y cumple con las siguientes condiciones:

Si w ∈ L ⇒ M termina en un estado final

Si w ∉ L ⇒ M termina en un estado no final

Un lenguaje L se define como recursivamente numerable si existe una


máquina de Turing M, tal que:

Si w ∈ L ⇒ M termina en un estado final

Si w ∉ L ⇒ M termina en un estado no final o M no termina.

Según las definiciones anteriores, en una primera aproximación, los


problemas pueden clasificarse sencillamente en:
Computables (o decidibles)

No computables (o no decidibles)

Identificar los problemas que son computables de los que no lo son tiene un
considerable interés, pues indica el alcance y los límites de la computabilidad
y, por ende, los límites teóricos de los ordenadores. Además de las
cuestiones sobre algoritmos, se han encontrado numerosos problemas
menos "generales" que han resultado ser no computables.

Como ejemplos de problemas no computables es posible citar:

El problema de la palabra para grupos



dado un subconjunto S de elementos de un grupo G, se trata de decidir si una
expresión compuesta por elementos de S y con las operaciones del grupo es
igual al elemento neutro del grupo.

El décimo problema de Hilbert



una ecuación diofántica es la ecuación de los ceros enteros de un polinomio con
coeficientes enteros. El décimo problema de Hilbert, propuesto en 1900,
cuestiona acerca de si hay un procedimiento efectivo que determine si una
ecuación diofántica tiene o no solución.
La decibilidad de las teorías lógicas

en lógica, puede demostrarse fácilmente que el cálculo proposicional es
decidible. Church y Turing demostraron, en 1936, que el cálculo de predicados no
lo es.

Por otro lado, son muchos los problemas interesantes que se han
demostrado computables. Todas las funciones construidas por recursividad
primitiva o minimalización a partir de funciones calculables resultan ser
calculables como consecuencia de los trabajos de Church y Turing.

C O NT I NU A R
Lección 3 de 6

El problema de la parada

El problema de la parada o problema de la detención para máquinas de


Turing consiste en lo siguiente: dada una máquina de Turing M y una palabra
w, determinar si M se detendrá cuando es ejecutada usando w como dato de
entrada. Alan Turing, en su famoso artículo, demostró que el problema de la
parada de la máquina de Turing es indecidible.

En términos modernos, el problema de la parada consiste en determinar si


dado un programa p y sus datos de entrada x, p eventualmente terminará en
un número finito de pasos o si entrará a un bucle infinito.

Como demostró Turing, el problema de la parada es no decidible: no hay


manera de decir, en un tiempo finito, si la ejecución de un programa dado,
con una entrada dada, terminará o no.

C O NT I NU A R
Lección 4 de 6

Revisión del módulo

Hasta acá aprendimos

Autómatas a pila

Un autómata a pila puede definirse como un autómata finito no determinista al
cual se le ha incorporado un bloque infinito de memoria que se gestiona como
una pila. Esta memoria le permite almacenar y recordar información aumentando,
de esta manera, su poder funcional. La transición de un estado al siguiente se
define en función del estado actual, el símbolo de entrada y el símbolo en el tope
de la pila.
Un autómata a pila es capaz de reconocer cadenas que pertenecen a lenguajes
independientes del contexto o tipo 2, según la jerarquía de Chomsky.

Autómatas a pila y gramáticas independientes del contexto



Un autómata a pila puede definirse como el modelo matemático de un sistema
capaz de recibir una cadena conformada por símbolos de un alfabeto de entrada
y determinar si esta cadena pertenece o no a determinado lenguaje. Por cada
gramática independiente del contexto existe un autómata a pila que reconoce las
cadenas del lenguaje por ella generado y, por lo tanto, dada una gramática G se
puede obtener el autómata a pila correspondiente.

Máquina de Turing

Una máquina de Turing representa un modelo idealizado de computación capaz
de almacenar y procesar información teóricamente infinita. Su definición marcó
un hito en la historia de la informática y es considerada como el origen de los
actuales ordenadores. Su modelado teórico, junto al análisis de la complejidad de
los algoritmos, permitió la categorización de los problemas computacionales de
acuerdo con su comportamiento.

Computabilidad

La teoría de la computabilidad, junto con la teoría de autómatas y lenguajes
formales, es el fundamento de la informática teórica. La computabilidad estudia
los problemas de decisión que pueden ser resueltos con un algoritmo o,
equivalentemente, con una máquina de Turing; y tiene como objetivo encontrar
maneras de representar descripciones de procesos, de modo tal que se pueda
asegurar si existe o no una representación algorítmica viable para un problema
dado.

C O NT I NU A R
Lección 5 de 6

Descarga en PDF

Módulo 4 - Lectura [Link]


257 KB
Lección 6 de 6

Teleclase

CLIP-Lenguajes formales y computabilidad-Módulo 4


MÁS INFORMACIÓN GOOGLE DRIVE 

También podría gustarte