Problemas, problemas, problemas
I've got 99 problems and 3-SAT reduces to all of them..— Reddit
Ivan Meza
Reducción
Un problema $A$ se reduce a $B$, $A \le B$
Función de reducción
- Una función $f(w)$
- $A$ se reduce a $B$ si $w\in A$ si y sólo si $f(w) \in B$
- Sí $w\in A$ entonces $f(w)\in B$
- Sí $w\not\in A$ entonces $f(w)\not\in B$
Pequeño problema
Considerar $L_D$ y reducir a $0^*1^*$
- Sí $w\in L_D$ entonces $f(w)= 01$
- Sí $w\not\in L_D$ entonces $f(w)= 10$
¿Entonces reducimos $L_D$ a regular?
$f$ tiene que ser computable
Reducción
Máquina R
Con la entrada $w$
- Calcular $f(w)$
- Correr $M_B$ en $f(w)$
- Si $M_B$ acepta $f(w)$, entonces aceptar $w$
- Si $M_B$ rechaza $f(w)$, entonces rechazar $w$
Notación $A\le_M B$, $A$ es reducible a $B$
Propiedades
- Si A, entonces $A \le B$
- Si A,B y C entonces $A \le B$ y $B \le C$ entonces $A \le C$
Informalemente, A no es más difícil que B
Reducciones famosas
- $HALT \le L_u$
- $L_u \le HALT$
- $HALT \le DECIDER$ donde $\{ m | \text{is a decider} \}$
- $L_u \le ONES$ donde $\{m | m\text{ acepta w con forma } 1^n\}$
- $L_d \le ONLYONES$ donde $\{m | L(m) \subseteq 1^*\}$
- $L_d \le \overline{ONLYONES}$ donde $\{m | L(m) \not \subseteq 1^*\}$
Opciones
Si $A\le_MB$
- Si $B$ es decidible, entonces $A$ lo es
- Si $B$ es computable, entonces $A$ lo es
- Si $A$ es indecidible, entonces $B$ lo es
- Si $A$ es no es computable (no RE), entonces $B$ lo es
Dónde quedan en la jerarquía extendida
- $HALT \le L_u$
- $L_u \le HALT$
- $HALT \le DECIDER$ donde $\{ m | \text{is a decider} \}$
- $L_u \le ONES$ donde $\{m | m\text{ acepta w con forma } 1^n\}$
- $L_d \le ONLYONES$ donde $\{m | L(m) \subseteq 1^*\}$
- $L_u \le \overline{ONLYONES}$ donde $\{m | L(m) \not \subseteq 1^*\}$
El poder de tener la respuesta
- $ONES$ si me dan una respuesta válida $m,1^n$, es fácil de checar
- $ONES$ si me dan una inválida $m,1^n$, no es tan fácil de checar (loop)
- $\overline{ONLYONES}$ si me dan una respuesta inválida $m,\not = 1^n$, es fácil de checar
- $\overline{ONLYONES}$ si me dan una respuesta válida $m,1^n$, no es fácil de checar (loop)
RE y co-RE
RE es el conjunto de lenguajes reconocidos por una máquina de Turing
Problemas para los cuales verificamos una respuesta correcta
co-RE es el conjunto de lenguajes cuyos complementso son reconocidos por una máquina de Turing
Problemas para los cuales verificamos una respuesta incorrecta
RE y co-RE
- Si $L\in RE$ y $\overline{L} \in RE$, entonces $L\in Rec$
- Si $L\in RE$ y $\overline{L} \in coRE$, entonces $L\in Rec$
- Si $L\not\in R$ y ${L}\in RE$, entonces $L\not\in co-RE$
- Si $L\not\in R$ y ${L}\in co-RE$, entonces $L\not\in RE$
¿Qué sabemos de este lenguaje?
$REGULAR=\{[M] | L(M)\text{ es regular}\}$
$L_D\le_M REGULAR$
REGULAR es no RE, pero
$\overline{L_D}\le_M REGULAR$
$REGULAR$ y $\overline{REGULAR}$ afuera de los límites de lo computable
¿Otro afuera?
$EQ_{TM}=\{[M_1,M_2] | L(M_1) = L(M_2)\}$
Lenguaje |
Gramática |
Máquina |
Ejemplo |
Más alla/No RE |
-- |
-- |
$REGULAR, \overline{REGULAR}, L_{EQ}$ |
co-RE/No RE |
-- |
-- |
$\overline{L_u},L_D, \overline{ONES}, ONLYONES$ |
$L_{RE}/L_{Rec}$ |
Tipo 0 ($\alpha \rightarrow \beta$) |
Máquina de Turing, APDo, AC |
$L_u,\overline{L_D}, ONES, \overline{ONLYONES}$/$L_n$,$L_\bar{f}$ |
$L_{DC}$ |
Tipo 1 ($\alpha V \beta \rightarrow \alpha \gamma \beta$) |
Autómata lineal con fronteras |
$ww, a^nb^nc^n$ |
$L_{LC}$ |
Tipo 2 ($V\rightarrow \alpha$) |
Autómata de pila |
$ww^r, a^nb^n$ |
$L_{reg}$ |
Tipo 3 ($V \rightarrow aA|\epsilon$) |
Autómata finito |
$w, a^*$ |
Resumen: Church-Turing tesis
- Rec: problemas que pueden ser calculados por una computadora
- RE: problemas donde respuestas pueden ser verificados por una computadora
- co-RE: problemas donde respuestas pueden ser refutadas por una computadora
Fijandonos en los decidables
- ¿Es posible resolver un problema eficientemente?
Eficiencia se mide en número de pasos/tiempo
Tipos de complejidades
- Contante $O(1)$
- Log log $O(log(n)log(n))$
- Logarítmica $O(log(n))$
- Raiz cuadrática $O(\sqrt{n})$
- Polinómica $O(n)$
- Polinómica Log $O(nlog(n))$
- Polinómica cuadrada $O(n^2)$
- Exponencial log $O(2^{log(n)})$
- Exponencial $O(2^n)$
- Factorial $O(n!)$
Tesis de Cobham-Edmonds
Un lenguaje $L$ puede ser resuelto eficientemente si se decide en tiempo polinómico
Clase de P
Todos los problemas que se pueden resolver en en tiempo polinomial
Ejemplos
- Reconocer $w$ de un AF, AFND y AFND-$\epsilon$
- Reconocer $w$ de un APD
- Reconocer $w$ de un AP (!Compiladores!)
- ¿Dado un grafo y dos nodos, estos se conectan?
- ¿Dado un número $n$ es primo?
- Etc, ...
Clase de NP
Todos los problemas que se pueden resolver en en tiempo polinomial por una MTND
NP es No determinístico en tiempo polinomial
Máquinas de Turing
Es una tupla $(Q,\Sigma,\Gamma,q_0,B,A,\delta)$
- $Q$ conjunto finito de estados
- $\Sigma$ alfabeto de cadenas reconocidas
- $\Gamma $ alfabeto de cinta, $\Sigma \subset \Gamma$
- $q_0$ estado inicial
- $B$ Símbolo de espacio en blanco $B \in \Gamma$ pero $B \not\in \Sigma$
- $A$ estados finales
- $\delta$ función de transición $Q \times \Gamma \rightarrow Q\times\Gamma\times\{der,izq\}$
Máquinas de Turing no determinística
Es una tupla $(Q,\Sigma,\Gamma,q_0,B,A,\delta)$
- $Q$ conjunto finito de estados
- $\Sigma$ alfabeto de cadenas reconocidas
- $\Gamma $ alfabeto de cinta, $\Sigma \subset \Gamma$
- $q_0$ estado inicial
- $B$ Símbolo de espacio en blanco $B \in \Gamma$ pero $B \not\in \Sigma$
- $A$ estados finales
- $\delta$ función de transición $Q \times \Gamma \rightarrow \{Q\times\Gamma\times\{der,izq\}\}$
Uso el no determinismo para adivinar respuestas
Uso el determinismo para verificar la respuesta
Problemas fáciles de verificar
Ejemplos de NP
- Soduko
- El problema del agente de viaje
- Un grafo puede ser coloreado por $k$ colores
- Determinar la mejor forma de asignar trabajos a trabajadores
La pregunta más importante en computación
¿$P=NP$? o ¿$P\not =NP$?
El cuarto problema de los problemas de Millenium
Solucción vale un millón de dolares
Descrito en 1971
NP-hard
Informalmente, son los problemas que son tan difíciles como el más difícil en NP
Formalmente, son los problemas que son tan difíciles como el más difícil en NP
NP-complete
Intercección NP y NP-hard
Ejemplos $NP-complete$
- Satisfacción Lógica Proposicional
- De un conjunto de números podemos encontrar un conjunto que sume zero
Ejemplos $NP-hard$
- NP-complete
- Halting problem
Si $L\in \text{NP-complete}$ y $L\in P$, entonces $P=NP$
¿Como resolvemos estos problemas?
- Aproximación
- Aleatoriidad
- Uso de restricciones
- Parametrización
- Heurísticas
Para mayor información visitar el zoológico aquí