Está en la página 1de 40

COMPLEJIDAD DE ALGORITMOS

SESIÓN XIII
- Partamos del contexto de Hilbert
- Los problemas en computación y en
lenguajes

.
De los problemas de Hilbert
Los problemas de Hilbert
Los problemas de Hilbert
Los problemas de Hilbert
Algunos de
estos problemas
han sido
resueltos, otros
solo de forma
parcial, otros sin
resolverse
Un sistema formal o sistema
lógico es un sistema abstracto
compuesto por un lenguaje
Sistema formal
formal, axiomas, reglas de
inferencia y a veces una
semántica formal

Una regla de inferencia es una


forma lógica que consiste en
Reglas de
una función que toma
inferencia
premisas, analiza su sintaxis, y
devuelve una conclusión.

Consistencia
Decidibilidad
Completitud Componentes de los sistemas
formales desde las matemáticas
Compacidad
Lo anterior desde la matemática, ahora desde
la computación
Problemas y lenguajes
Un problema se describe con un lenguaje

Cuanto más formal el lenguaje, más precisa la formulación del problema


[Requerimientos]

Los problemas se clasifican Los lenguajes formales se clasifican


en: en:
-Problemas de Decisión -Lenguajes Recursivos
-Problemas de Salida General -Lenguajes Recursivos Enumerables
1. Problema de Decisión: Es un problema formulado como una pregunta y que
tiene como únicas respuestas posibles SI – NO (o VERDADERO – FALSO)
Ejemplos:
- Dado un número natural, decidir si es par o no.

- Dada una cadena arbitraria y un lenguaje


regular, determinar si la cadena pertenece o
no al lenguaje.
2. Problema de Salida General: Las posibles respuestas son respuestas
“generales”.
Ejemplos:
- Calcular el promedio de una lista de números.
- Determinar un camino entre dos ciudades []
https://gazeta.gt/algoritmos-y-decidibilidad-i/
Lenguajes formales
Los lenguajes formales se clasifican en:
• Lenguajes Recursivos: existe un algoritmo que determina para
cualquier cadena si pertenece o no pertenece al lenguaje

Un lenguaje formal es recursivo si existe una máquina de


Turing que siempre se detiene cuando dada una secuencia
finita de símbolos del alfabeto del lenguaje como entrada,
acepta solo esas palabras que son parte del lenguaje y
rechaza todas las otras palabras
Lenguajes formales
• Lenguajes Recursivo Enumerables: existe un procedimiento que sólo
acepta las cadenas que pertenecen al lenguaje pero para las que no
pertenecen no siempre da respuesta.
Lo que ya sabemos o creemos saber
• El problema de parada: Dado un programa p y una entrada x, ¿p con entrada
x para?

•Dados dos programas, ¿calculan lo mismo?

• El anti-virus:
Dado p un programa y x una entrada ¿Ejecutar p con entrada x “infectará” a
este ordenador y/o a otros? Infectar= causar destrucción de información y/o
que algunas aplicaciones no funcionen como deben y/o colapsar el ordenador
Juguemos un ratico
• Dado un conjunto finito de baldosas, con un color en cada lado

• ¿puede embaldosarse con ellos el plano, de forma que los lados contiguos
tengan el mismo color? (Se pueden hacer tantas copias como se quiera, no
se pueden girar ni invertir) SI –> Todos los casos de prueba
- Cuál es la dimensión del plano? 5X5 | 8X8
- Cuántas baldosas por nivel?
- Si lo programamos ¿qué evaluamos? → Seudocódigo
Juguemos un ratico
• Dado un conjunto finito de baldosas, con un color en cada lado

Si se puede embaldosar el plano


8x8= No es posible
8x5 =n ¿?
Programar

- Que las piezas del mismo color estén juntas


- Posibles combinaciones.
- Solo las piezas definidas
- Tamaño del Plano: rectangular o cuadrado
- Que no se giren las piezas
- Se pueden repetir
Las matemáticas tienen una terrible falla

Las matemáticas tienen una terrible falla.

Exploremos la creatividad

https://www.youtube.com/watch?v=RRg38oNQ9vk&a
b_channel=Veritasiumenespa%C3%B1ol
Clasificación de los problemas

http://www.exa.unicen.edu.ar/catedras/ccomp1/ClaseComputabilidad.pdf
Los Problemas de Decisión se clasifican en
• DECIDIBLES: existe un ALGORITMO que para TODA INSTANCIA del
problema devuelve la RESPUESTA correcta.
• INDECIDIBLES: existe un PROCEDIMIENTO que sólo da RESPUESTA
para ALGUNAS INSTANCIAS del problema.

Los Problemas de Salida General se clasifican en:


• SOLUBLES: existe un ALGORITMO que para TODA INSTANCIA del
problema devuelve la RESPUESTA correcta.
• INSOLUBLES: existe un PROCEDIMIENTO que sólo da RESPUESTA para
ALGUNAS INSTANCIAS del problema..
DECIDIBILIDAD – Partamos de estos 3 hechos

• Tesis de Turing: Un problema es


decidible si es computable por una M
Turing. En otro caso, es indecidible.
• El hecho de que exista un algoritmo o
procedimiento efectivo que resuelva
una clase de problemas, se denomina
problema de decisión.
• Decimos que un problema de decisión
es indecidible si podemos demostrar
que no existe ningún algoritmo que
pueda responder a todas las preguntas
que el problema pueda plantear.
Ejemplos:
• El problema “Hay enteros tales que satisfagan la ecuación
3x+6y=151?”

• Hay enteros x, tales que se cumple la ecuación ax+by=c?


Algoritmo de Euclides
Recordemos que: El máximo común divisor (MCD) de dos enteros A y B
es el entero más grande que divide tanto a A como a B.

Paso 1: Llamar A al B mayor y B al menor de los números.


Paso 2: Obtener resto de dividir A y B
Paso 3: Asignar el valor más pequeño a A
Paso 4: Asignar el resto a B
Paso 5: Mientras que el resto sea diferente de 0 hacer Pasos 2, 3 y 5

Este sencillo algoritmo ha sido ampliamente utilizado en diferentes ramas


de la matemática siendo aplicado en la criptografía moderna.
El problema de la parada
Existe algún procedimiento efectivo (algoritmo o máquina de Turing)
que nos permita determinar para cualquier MT concreta representada
en la cinta de la MTuring universal, si la MTuring concreta llegará a
detenerse después de iniciar su computación
Premisas a tener en cuenta.
Una máquina universal de Turing ( UTM ) es una máquina de Turing que
puede simular una máquina de Turing arbitraria de entrada arbitraria. La
máquina universal logra esencialmente leer tanto la descripción de la
máquina para ser simulado, así como la entrada de su propia cinta.

https://webs.ucm.es/info/pslogica/automatas.pdf
El problema de la parada - Halting problem
Este problema tiene una respuesta negativa por lo que se trata de un
problema indecidible.
Esta respuesta se conoce gracias a los resultados obtenidos en la Lógica
Clásica:
- Gödel (1931) Cualquier sistema formal cuyo lenguaje sea lo
suficientemente rico para describir las operaciones y las relaciones
básicas de la aritmética elemental es incompleto.
- La aritmética de Peano, formalizada con la Lógica de primer orden con
identidad (símbolos funcionales) y con axiomas específicos es
incompleto.
- Church (1936) La lógica de Primer Orden es indecidible.
Algunas propuestas para explicar el porqué es indecible el
problema de la parada – Al parecer con una contradicción
Supóngase la función:
f(n) = 1 si T(n) para con entrada n
f(n) = 0 si T(n) no se para con entrada n

• Aplicando esta función, con algunos cambios se podría construir una máquina de Turing
T'(n) que funcionara de esta manera:

si T(n) no se para con entrada n, T'(n) se para con entrada n


si T(n) se para con entrada n, T'(n) no se para con entrada n

Si la máquina Turing numero 1, no se para con input 1, entonces T'(1) se para. Y si la


máquina Turing número 1 con input 1 se para, entonces T'(1) no se para. T'(n) debe
aplicarse a T(1), T(2), T(3)...T (n) → Esto no les parece contradictorio?
Una máquina decisoria debe ser conclusiva y
Algunas no circular. Podríamos pensar que podemos
construir, con ayuda de la máquina universal U,
propuestas una máquina D capaz de decidir para cada
para explicar máquina Mn y cada input m, el
comportamiento de la máquina para ese input;
el porqué es primero D distinguiría las máquinas conclusivas
indecible el de las circulares para cada input m, y después,
con ayuda de U, simularía la computación
problema -- conclusiva de cada Mn para cada m y nos
reproduciría el output correspondiente.
Circularidad
Pero D es una Mn; digamos Md.
Entonces si le planteamos a D qué
Algunas hace Md para el input d, la sumimos
propuestas en una circularidad, porque en cierto
para explicar sentido la obligamos a mirar lo que
ella misma hace para decidir lo que
el porqué es ella misma hace. En consecuencia, D
indecible el es circular para al menos un caso y no
problema -- tenemos una solución general para el
problema de qué hace cada Mn para
Circularidad cada input m. El problema de la
parada es una concreción de este
problema general.
•Lo anterior evidencia
demostraciones con CIRCULARIDAD
+ CONTRADICCIÓN que no nos dan
la respuesta necesaria.

•No contamos con una teoría


general de la relación entre
paradojas, aritmética transfinita y
teoremas de limitación, aunque
parece evidente que esta relación
existe.
Visto en la programación
¿Quién no ha usado esta línea de código?
Con pseudocódigo
while (true) continuar
Acá tenemos un ciclo infinito ¿Qué cuando se detiene?

Consecuencias de programación
Algunos bucles infinitos pueden ser muy útiles. Por ejemplo, bucles de
eventos son típicamente codificados como bucles infinitos. Sin embargo, la
mayoría de las subrutinas están destinados a terminar (alto). En particular, en
el duro tiempo real , los programadores intentan escribir subrutinas que no
sólo están garantizados para terminar (alto), sino que también están
garantizados para terminar antes de un plazo determinado.
Errores comunes
La dificultad en el problema de la parada
se encuentra en el requisito de que el
procedimiento de decisión debe trabajar
para todos los programas e insumos.
Un programa en particular o bien se
detiene en una entrada dada o no se
detiene.
Considere un algoritmo que siempre
responde "paradas" y otro que siempre
responde "no se detiene". Para cualquier
programa específico y de entrada, uno de
estos dos algoritmos responde
correctamente, a pesar de que nadie
puede saber cuál. Sin embargo, ni el
algoritmo resuelve el problema de la
parada general.
Bienvenida la reducibilidad

Problemas insolubles para la teoría de lenguajes.


Ya hablamos de esos problemas que pueden ser
resueltos con algoritmos y cuales no; pero ahora
nos queda analizar que problemas pueden ser
resueltos por una computadora con más o menos
eficiencia.

Partamos de las siguientes premisas:

•Los problemas que se pueden resolver en tiempo


polinómico en una computadora, son exactamente
los mismo que se pueden resolver en tiempo
polinómico en una maquina de Turing.
Bienvenida la reducibilidad

Existe una línea divisoria fundamental entre


los problemas que se pueden resolver en
tiempo polinómico y los que requieren de un
tiempo exponencial o mayor. Los problemas
prácticos que requieren de un tiempo
polinómico son casi siempre resolubles en un
tiempo tolerable, mientras que los que
requieren de un tiempo exponencial, en
general no se pueden resolver, excepto en
casos sencillos.
Intratabilidad vs reducibilidad
La teoría de la intratabilidad se refiere al conjunto de técnicas que se
pueden utilizar para mostrar que un problema no se puede resolver en
tiempo polinómico; la teoría de la reducibilidad trata de aquellos
problemas que pueden ser reducidos a casos particulares y que pueden
ser resueltos en tiempos polinómicos.
Reducción desde la complejidad
En teoría de la computación y teoría de la complejidad computacional, una reducción es una
transformación de un problema a otro problema. Dependiendo de la transformación usada, la
reducción se puede utilizar para definir clases de complejidad en un conjunto de problemas

Ejemplo de reducción de un problema de satisfacibilidad booleana a un problema de cobertura de


vértices. Los vértices azules forman una cobertura que se corresponde con los valores verdaderos.
Un ejemplo de la vida cotidiana
Imaginemos que un policía tiene que resolver un
caso y averiguar quién es el asesino. Llamaremos a
esto el problema A. No hay testigos, pero el
criminal dejó en la escena un zapato hecho a mano
por un zapatero de la ciudad, aparentemente fácil
de identificar. Naturalmente a la policía le interesa
que el zapatero indique para quién fabricó ese
zapato.
Conseguir ese testimonio será el problema B.
¿Conseguirá la policía resolver el asesinato?
¿ Podemos asegurar que B se reduce a A ?
Volvámos a los
lenguajes y los
ejercicios de
programación
BIBLIOGRAFIA
https://www.docsity.com/es/david-hilbert-1862-1943-matematico-
aleman-contemporaneo-de-einstein-minkowsk/2880676/

https://es.wikipedia.org/wiki/Problemas_de_Hilbert

También podría gustarte