Decibilidad y Complejidad
8.1 Conceptos Básicos: ¿Qué puede hacer una máquina?
Sección titulada «8.1 Conceptos Básicos: ¿Qué puede hacer una máquina?»Antes de medir el tiempo, medimos si es posible hacerlo.
- Función Computable: Una función es computable en un dominio si existe una MT que computa el valor de para todos los argumentos del dominio
- Problema Decidible: Es un problema cuya respuesta es binaria (SÍ/NO).
- Es decidible si existe una MT da la respuesta correcta (SÍ o NO) para cualquier entrada.
- Si la máquina se queda en bucle infinito para alguna entrada, el problema NO es decidible.
8.2 El Problema de la Parada (Halting Problem)
Sección titulada «8.2 El Problema de la Parada (Halting Problem)»El ejemplo clásico de problema Indecidible.
Planteamiento: Queremos diseñar una “Super-Máquina” que analice a cualquier otra máquina con una entrada y nos diga si se va a colgar (bucle) o si terminará.
Definición formal de la Máquina H (si existiera): Entrada: (código de la máquina) y (datos).
- Si se para con . (Salida: SÍ)
- Si no se para con . (Salida: NO)
Conclusión Teórica:
- No existe ninguna MT que pueda hacer esto para todos los casos.
- Por tanto, el Problema de la Parada es Indecidible.
Nota importante para test: Si el problema de la parada fuera decidible, todos los Lenguajes Recursivamente Enumerables (LRE) se convertirían automáticamente en Lenguajes Recursivos (LRC). Como no lo es, LRE LRC.
8.3 Complejidad Computacional (Medir el coste)
Sección titulada «8.3 Complejidad Computacional (Medir el coste)»Una vez sabemos que un problema se puede resolver, preguntamos: ¿Cuánto cuesta?
- Medida: Usamos el tamaño del problema () y medimos cuánto aumenta el tiempo al crecer .
- Notación: Usamos el orden de magnitud O(…) (O grande), no el tiempo exacto en segundos.
- Tiempo T(n): Una MT resuelve un problema en tiempo si no hace más de movimientos.
Diferencia clave: El Hardware importa
Sección titulada «Diferencia clave: El Hardware importa»En decidibilidad (teoría pura), todas las MT son iguales. En complejidad (eficiencia), NO. El número de cintas cambia la velocidad.
Ejemplo:
- MT Estándar (1 cinta): Tarda . (Tiene que ir y volver muchas veces).
- MT con 2 cintas: Tarda . (Puede copiar y comparar en una sola pasada).
8.4 Clases de Complejidad: Determinismo vs No Determinismo
Sección titulada «8.4 Clases de Complejidad: Determinismo vs No Determinismo»Aquí definimos qué tan difícil es un problema según el tipo de máquina.
Definiciones de Tiempo
Sección titulada «Definiciones de Tiempo»- TD(T(n)): Tiempo Determinista. Lo que tarda una MT normal (sin “magia”). Es aceptado por una MT multicinta determinista en tiempo polinómico.
- TND(T(n)): Tiempo No Determinista. Lo que tarda una MT No Determinista (que puede “adivinar” el camino correcto). Es aceptado por una MT multicinta no determinista en tiempo polinómico.
- Regla: . (El determinismo es un caso particular del no determinismo).
Ejemplo: SAT (Satisfacibilidad)
Sección titulada «Ejemplo: SAT (Satisfacibilidad)»Dada una fórmula lógica (ej: ), ¿existe una combinación de True/False que la haga verdadera?
- MT Determinista: Tiene que probar todas las combinaciones. Coste exponencial: .
- MT No Determinista: “Adivina” la combinación correcta al instante y solo verifica. Coste lineal: .
8.5 P vs NP (La jerarquía del mundo real)
Sección titulada «8.5 P vs NP (La jerarquía del mundo real)»Las siglas que definen la informática teórica moderna:
Clase P (Polinomial)
Sección titulada «Clase P (Polinomial)»- Lenguajes aceptados por MT Determinista en tiempo polinómico ().
- Son los problemas TRATABLES (viables de resolver).
- Fórmula:
Clase NP (No-Determinista Polinomial)
Sección titulada «Clase NP (No-Determinista Polinomial)»- Lenguajes aceptados por MT No Determinista en tiempo polinómico.
- Son problemas que quizás son difíciles de resolver (como SAT), pero muy rápidos de verificar si te dan la solución.
- Fórmula:
Relación y Tesis
Sección titulada «Relación y Tesis»- (Todo problema fácil de resolver es fácil de verificar).
- ¿P = NP? La gran pregunta del millón. No se sabe.
- Tesis de Cook-Karp:
- Clase P = Problemas Tratables.
- Fuera de P = Problemas Intratables (requieren tanta memoria/tiempo que son inviables para grande).
8.6 Reducción Polinomial y NP-Completos
Sección titulada «8.6 Reducción Polinomial y NP-Completos»¿Cómo clasificamos los problemas más difíciles? Usamos la Reducción.
Reducción en tiempo polinomial ( se reduce a )
Sección titulada «Reducción en tiempo polinomial (L1L_1L1 se reduce a L2L_2L2)»Significa que podemos transformar cualquier input de en un input de rápidamente (tiempo polinómico).
- Lógica: Si se puede transformar en fácilmente, entonces es “igual o más difícil” que .
- Propiedad Clave:
- Si se reduce a y entonces . (Si el difícil resulta ser fácil, el fácil también lo es).
NP-Completo (Los “Jefes Finales”)
Sección titulada «NP-Completo (Los “Jefes Finales”)»Un lenguaje es NP-Completo si cumple dos condiciones:
- Pertenece a NP ().
- Cualquier otro problema de NP se puede reducir a .
Es decir, son los problemas más difíciles de toda la clase NP. Si resuelves uno de estos en tiempo polinómico (P), has resuelto todos los problemas de NP (demostrando ).