Análisis de Algoritmos Reducciones Dra. Elisa Schaeffer elisa.schaeffer@gmail.com PISIS / FIME / UANL Reducciones– p. 1 Diferencias entre clases clase de complejidad ⊂ lenguajes Reducciones– p. 2 Diferencias entre clases clase de complejidad ⊂ lenguajes {S AT, H ORNSAT, R EACHABILITY, C LIQUE } ⊂ NP Reducciones– p. 2 Diferencias entre clases clase de complejidad ⊂ lenguajes {S AT, H ORNSAT, R EACHABILITY, C LIQUE } ⊂ NP no todas las problemas en la misma clase parecen igualmente difíciles Reducciones– p. 2 Diferencias entre clases clase de complejidad ⊂ lenguajes {S AT, H ORNSAT, R EACHABILITY, C LIQUE } ⊂ NP no todas las problemas en la misma clase parecen igualmente difíciles un método para establecer un ordenamiento de problemas por dificultad: la construcción de reducciones Reducciones– p. 2 Diferencias entre clases clase de complejidad ⊂ lenguajes {S AT, H ORNSAT, R EACHABILITY, C LIQUE } ⊂ NP no todas las problemas en la misma clase parecen igualmente difíciles un método para establecer un ordenamiento de problemas por dificultad: la construcción de reducciones un problema A es por lo menos tan difı́cil como otro problema B si existe una reducción del problema B al problema A Reducciones– p. 2 Reducciones Un problema B reduce al problema A si ∃ una transformación R que ∀ entrada x del problema B produce una entrada equivalente y de A así que y = R(x). Reducciones– p. 3 Reducciones Un problema B reduce al problema A si ∃ una transformación R que ∀ entrada x del problema B produce una entrada equivalente y de A así que y = R(x). La entrada y de A es equivalente a la entrada x de B si la respuesta (“sí” o “no”) al problema A con la entrada y es la misma que la del problema B con la entrada x, x ∈ B si y sólo si R(x) ∈ A. Reducciones– p. 3 Aplicación de la reducción Para resolver el problema B con la entrada x, habrá que construir R(x). Reducciones– p. 4 Aplicación de la reducción Para resolver el problema B con la entrada x, habrá que construir R(x). Después se resuelve el problema A para descubrir la respuesta que aplica para los dos problemas con sus entradas respectivas. Reducciones– p. 4 Aplicación de la reducción Para resolver el problema B con la entrada x, habrá que construir R(x). Después se resuelve el problema A para descubrir la respuesta que aplica para los dos problemas con sus entradas respectivas. Si contamos con un algoritmo para el problema A y un algoritmo para construir R(x), la combinación nos da un algoritmo para el problema B. Reducciones– p. 4 Caracterización de dificultad Si R(x) es fácilmente construida, parece razonable que A es por lo menos tan difícil como B. Reducciones– p. 5 Caracterización de dificultad Si R(x) es fácilmente construida, parece razonable que A es por lo menos tan difícil como B. Para poder establecer resultados formales, hay que clasificar las reducciones según los recursos computacionales utilizados por sus transformaciones. Reducciones– p. 5 Tipos de reducciones Cook: permite que R(x) sea computada por una TM polinomial Reducciones– p. 6 Tipos de reducciones Cook: permite que R(x) sea computada por una TM polinomial Karp: una reducción con una función de transformación de tiempo polinomial Reducciones– p. 6 Tipos de reducciones Cook: permite que R(x) sea computada por una TM polinomial Karp: una reducción con una función de transformación de tiempo polinomial Espacio logarı́tmico: L es reducible a L′ , denotado por L ≤L L′ , si y sólo si ∃ una función R que estácomputada por una TM determinista en espacio O (log n) así que ∀x x ∈ L si y sólo si R(x) ∈ L′ , donde la función R es la reducción de L a L′ . Reducciones– p. 6 Teorema Si R es una reducción computada por una TM determinista M , M para ∀x después de un número polinomial de pasos. Reducciones– p. 7 Demostración (en nivel de ideas) M utiliza O (log n) espacio Reducciones– p. 8 Demostración (en nivel de ideas) M utiliza O (log n) espacio log n ⇒ hay O nc configuraciones posibles Reducciones– p. 8 Demostración (en nivel de ideas) M utiliza O (log n) espacio log n ⇒ hay O nc configuraciones posibles M es determinista y para ∀x Reducciones– p. 8 Demostración (en nivel de ideas) M utiliza O (log n) espacio log n ⇒ hay O nc configuraciones posibles M es determinista y para ∀x ⇒ no es posible que se repita ninguna configuración Reducciones– p. 8 Demostración (en nivel de ideas) M utiliza O (log n) espacio log n ⇒ hay O nc configuraciones posibles M es determinista y para ∀x ⇒ no es posible que se repita ninguna configuración ∃k así que M para en tiempo ′ c nc log n ′ = c nn log c =O n k Reducciones– p. 8 Demostración (en nivel de ideas) M utiliza O (log n) espacio log n ⇒ hay O nc configuraciones posibles M es determinista y para ∀x ⇒ no es posible que se repita ninguna configuración ∃k así que M para en tiempo ′ c nc log n ′ = c nn log c =O n k la cinta de salida de M , que al final contiene R(x), está computada en tiempo polinomial Reducciones– p. 8 Demostración (en nivel de ideas) M utiliza O (log n) espacio log n ⇒ hay O nc configuraciones posibles M es determinista y para ∀x ⇒ no es posible que se repita ninguna configuración ∃k así que M para en tiempo ′ c nc log n ′ = c nn log c =O n k la cinta de salida de M , que al final contiene R(x), está computada en tiempo polinomial ⇒ |R(x)| es polinomial en n = |x| Reducciones– p. 8 Problemas sin solución Para mostrar que un problema A sea sin solución, hay que mostrar que si existe un algoritmo para A, necesariamente tiene que existir un algoritmo para para decidir H ALTING. Reducciones– p. 9 Problemas sin solución Para mostrar que un problema A sea sin solución, hay que mostrar que si existe un algoritmo para A, necesariamente tiene que existir un algoritmo para para decidir H ALTING. La técnica para mostrarlo es por construir una reducción del problema H ALTING al problema A. Reducciones– p. 9 Problema sin solución Una reducción de B a A es una transformación de la entrada IB del problema B a una entrada IA = t(IB ) para A así que IB ∈ B ⇔ IA ∈ A y ∃ una TM T así que t(IB ) = T (IB ). Reducciones– p. 10 Problema sin solución Una reducción de B a A es una transformación de la entrada IB del problema B a una entrada IA = t(IB ) para A así que IB ∈ B ⇔ IA ∈ A y ∃ una TM T así que t(IB ) = T (IB ). Para mostrar que A no tenga solución, se transforma la entrada Mb ; x de H ALTING a una entrada t(Mb ; x) de A así que Mb ; x ∈ H ⇔ t(Mb ; x) ∈ A. Reducciones– p. 10 Ejemplos de lenguajes no recursivos (I) {Mb | M para con cada entrada} (II) {Mb ; x | ∃y : M (x) = y} para computar M (x) (III) Mb ; x | se usa todos los estados de M (IV) {Mb ; x; y | M (x) = y} Reducciones– p. 11 Reducción para el primero Dada la entrada Mb ; x, se construye una TM M ′ así que M (x), si x = y, ′ M (y) = “alto” en otro caso. para la cual aplica que Mb ; x ∈ H ⇐⇒ M para con x ⇐⇒ M ′ para con toda entrada ⇐⇒ M ′ ∈ A. Reducciones– p. 12 Reducciones entre problemas Una reducción R del lenguaje LB del problema B al lenguaje LA del problema A tal que para ∀x del alfabeto de B (I) x ∈ LB si y sólo si R(x) ∈ LA y (II) se puede computar R(x) en espacio O (log n). Reducciones– p. 13 Reducción de H AMILTON PATH a S AT S AT es por lo menos tan difícil que H AMILTON PATH: Para G = (V, E), R(G) es una expresión en C NF así que G es un camino de Hamilton si y sólo si R(G) es satisfactible. La construcción no es nada obvia sin conocer los trucos típicos del diseño de reducciones. Veremos... Reducciones– p. 14 Construcción de R(G) Etiquetamos los n vértices de G = (V, E) con los enteros: V = {1, 2, . . . , n}. Reducciones– p. 15 Construcción de R(G) Etiquetamos los n vértices de G = (V, E) con los enteros: V = {1, 2, . . . , n}. Representamos cada par de vértices con una variable booleana xij donde i ∈ V y j ∈ [1, n]. Reducciones– p. 15 Construcción de R(G) Etiquetamos los n vértices de G = (V, E) con los enteros: V = {1, 2, . . . , n}. Representamos cada par de vértices con una variable booleana xij donde i ∈ V y j ∈ [1, n]. Asignamos a la variable xij el valor ⊤ si y sólo si el vértice número i en el camino C construido en H AMILTON PATH es el vértice j. Reducciones– p. 15 Construcción de R(G) Etiquetamos los n vértices de G = (V, E) con los enteros: V = {1, 2, . . . , n}. Representamos cada par de vértices con una variable booleana xij donde i ∈ V y j ∈ [1, n]. Asignamos a la variable xij el valor ⊤ si y sólo si el vértice número i en el camino C construido en H AMILTON PATH es el vértice j. Son en total n2 variables, como el largo del camino es necesariamente n. Reducciones– p. 15 Cláusulas de R(G) (I) Cada vértice está incluido: ∀j ∈ V : x1j ∨ · · · ∨ xnj . (II) Cada vértice está incluida una sola vez en C: ∀i, k ∈ V, ∀j ∈ [1, n], i 6= k : ¬xij ∨ ¬xkj . (III) En cada posición hay un vértice: ∀i ∈ V : xi1 ∨ · · · ∨ xin . (IV) Dos vértices no pueden ocupar la misma posición: ∀i ∈ V, ∀j, k ∈ [1, n], j 6= k : ¬xij ∨ ¬xik . (V) Un vértice puede seguir a su vecino: ∀(i, j) ∈ / E, ∀k ∈ [1, n − 1] : ¬xki ∨ ¬x(k+1)j . Reducciones– p. 16 Asignación T Hay que mostrar que si R(G) tiene una asignación T que satisface a R(G), este corresponde a C del problema H AMILTON PATH: Por I y II existe un sólo vértice i tal que T (xij ) = ⊤. Reducciones– p. 17 Asignación T Hay que mostrar que si R(G) tiene una asignación T que satisface a R(G), este corresponde a C del problema H AMILTON PATH: Por I y II Por III y existe un sólo vértice i tal que T (xij ) = ⊤. IV existe una sola posición j tal que T (xij ) = ⊤. Reducciones– p. 17 Asignación T Hay que mostrar que si R(G) tiene una asignación T que satisface a R(G), este corresponde a C del problema H AMILTON PATH: Por I y II Por III y existe un sólo vértice i tal que T (xij ) = ⊤. IV existe una sola posición j tal que T (xij ) = ⊤. ⇒ T da una a permutación π(1), . . . , π(n) de los vértices: π(i) = j ⇔ T (xij ) = ⊤. Reducciones– p. 17 Llegando al camino Por V, {π(k), π(k + 1)} ∈ E para todo k ∈ [1, n − 1]. Reducciones– p. 18 Llegando al camino Por V, {π(k), π(k + 1)} ∈ E para todo k ∈ [1, n − 1]. ⇒ Las aristas que corresponden a las visitas en orden (π(1), . . . , π(n)) es un camino de Hamilton. Reducciones– p. 18 Llegando al camino Por V, {π(k), π(k + 1)} ∈ E para todo k ∈ [1, n − 1]. ⇒ Las aristas que corresponden a las visitas en orden (π(1), . . . , π(n)) es un camino de Hamilton. Estamos bien en una dirección de la demostración... Reducciones– p. 18 Desde los caminos... Hay que establecer que si (π(1), . . . , π(n)) es una secuencia de visitas a los vértices del grafo G = (V, E) que corresponde a un camino de Hamilton, necesariamente está satisfecha R(G) por una asignación T tal que ⊤ si π(i) = j, T (xij ) = ⊥ en otro caso. Reducciones– p. 19 Espacio ocupado Queda mostrar que la computación de R(G) ocupa O (log n) espacio. Dada G como la entrada de una TM M , M construye a R(G). Veremos cómo... Reducciones– p. 20 M que construye a R(G) M imprime las cláusulas de las primeras cuatro clases uno por uno a través de tres contadores i, j y k. Reducciones– p. 21 M que construye a R(G) M imprime las cláusulas de las primeras cuatro clases uno por uno a través de tres contadores i, j y k. La representación binaria de cada contador con el rango [1, n] es posible en log n espacio. Reducciones– p. 21 M que construye a R(G) M imprime las cláusulas de las primeras cuatro clases uno por uno a través de tres contadores i, j y k. La representación binaria de cada contador con el rango [1, n] es posible en log n espacio. Esto depende solamente de |V |. Reducciones– p. 21 M que construye a R(G) M imprime las cláusulas de las primeras cuatro clases uno por uno a través de tres contadores i, j y k. La representación binaria de cada contador con el rango [1, n] es posible en log n espacio. Esto depende solamente de |V |. M genera las cláusulas V por considerar cada (i, j): M verifica si (i, j) ∈ E, y si no lo es, se añade para todo k ∈ [1, n − 1] la cláusula ¬xki ∨ ¬x(k+1)j . Reducciones– p. 21 Uso de espacio Espacio adicional aparte de la entrada misma es solamente necesario para los contadores i, j y k. El espacio ocupado simultaneamente es al máximo 3 log n. ⇒ La computación de R(G) es en espacio O (log n). ¡Listo! Reducciones– p. 22 De R EACHABILITY a C IRCUITVALUE Para un grafo G, el resultado R(G) es un circuito tal que la salida del circuito R(G) es ⊤ si y sólo si existe un camino del vértice 1 al vértice n en G = (V, E). Reducciones– p. 23 Puertas de R(G) (I) gijk donde 1 ≤ i, j ≤ n y 0 ≤ k ≤ n — es ⊤ si y sólo si existe un camino en G de i a j sin pasar por ningún vértice con etiqueta > k. (II) hijk donde 1 ≤ i, j, k ≤ n — es ⊤ si y sólo si existe un camino en G de i a j sin usar ningún vértice intermedio > k pero sí utilizando k. Reducciones– p. 24 La estructura del circuito R(G) Para k = 0, la puerta gijk es una entrada en R(G). La puerta gij0 es una puerta tipo ⊤ si i = j o {i, j} ∈ E y en otro caso una puerta tipo ⊥. Para k = 1, 2, . . . , n, las conexiones entre las puertas en R(G) son las siguientes: Cada hijk es una puerta tipo ∧ con entradas de gik(k−1) y de gkj(k−1) . Cada gijk es una puerta tipo ∨ con entradas de gij(k−1) y de hijk . La puerta g1nn es la salida del circuito R(G). Reducciones– p. 25 Asignación correcta R(G) es no cíclico y libre de variables Reducciones– p. 26 Asignación correcta R(G) es no cíclico y libre de variables Llegaremos a una T para hijk y gijk por inducción en k = 0, 1, . . . , n Reducciones– p. 26 Asignación correcta R(G) es no cíclico y libre de variables Llegaremos a una T para hijk y gijk por inducción en k = 0, 1, . . . , n El caso básico k = 0 aplica por definición Reducciones– p. 26 Asignación correcta R(G) es no cíclico y libre de variables Llegaremos a una T para hijk y gijk por inducción en k = 0, 1, . . . , n El caso básico k = 0 aplica por definición Para k > 0, el circuito asigna hijk = gik(k−1) ∧ gkj(k−1) . Reducciones– p. 26 Hipótesis de inducción hijk es ⊤ si y sólo si haya un camino de i a k y además un camino de k a j sin usar vértices intermedios con etiquetas > k − 1. Reducciones– p. 27 Hipótesis de inducción hijk es ⊤ si y sólo si haya un camino de i a k y además un camino de k a j sin usar vértices intermedios con etiquetas > k − 1. Esto aplica si y sólo si haya un camino de i a j que no utiliza ningún vértice intermedio > k pero sí pasa por k. Reducciones– p. 27 Inducción Para k > 0, el circuito asigna por definición gijk = gij(k−1) ∨ hijk . Reducciones– p. 28 Inducción Para k > 0, el circuito asigna por definición gijk = gij(k−1) ∨ hijk . Por el hipótesis, gijk es ⊤ si y sólo si existe un camino de i a j sin usar ningún vértice > k − 1 o si existe un camino entre los vértices que no utilice ningún vértice > k pero pasando por k mismo. Reducciones– p. 28 Inducción Para k > 0, el circuito asigna por definición gijk = gij(k−1) ∨ hijk . Por el hipótesis, gijk es ⊤ si y sólo si existe un camino de i a j sin usar ningún vértice > k − 1 o si existe un camino entre los vértices que no utilice ningún vértice > k pero pasando por k mismo. Entonces, tiene el valor ⊤ solamente en el caso que existe una camino del vértice i al vértice j sin pasar por ningún vértice con etiqueta mayor a k. Reducciones– p. 28 Análisis del circuito Resulta que el circuito R(G) de hecho implementa el algoritmo Floyd-Warshall para el problema de alcance. Reducciones– p. 29 Análisis del circuito Resulta que el circuito R(G) de hecho implementa el algoritmo Floyd-Warshall para el problema de alcance. La salida del circuito R(G) es ⊤ si y sólo si g1nn es ⊤. Esto aplica si y sólo si existe un camino de 1 a n en G sin vértices intermedios con etiquetas mayores a n (que ni siquiera existen). Esto que implica que existe un camino de 1 a n en G. Reducciones– p. 29 Uso de la reducción Dado v, u ∈ V para R EACHABILITY, etiquetar v = 1 y u = n y la reducción está completa. Reducciones– p. 30 Uso de la reducción Dado v, u ∈ V para R EACHABILITY, etiquetar v = 1 y u = n y la reducción está completa. Entonces, lo único que necesitamos son tres contadores para computar el circuito R(G): se puede hacer esto en O (log n) espacio. Reducciones– p. 30 Circuito monótono R(G) es un circuito monótono: no contiene ninguna ¬. Reducciones– p. 31 Circuito monótono R(G) es un circuito monótono: no contiene ninguna ¬. Cada circuito C sin variables de puede convertir monótono con las leyes De Morgan ¬(a ∧ b) ⇔ (¬a) ∨ (¬b) ¬(a ∨ b) ⇔ (¬a) ∧ (¬b) Reducciones– p. 31 Circuito monótono R(G) es un circuito monótono: no contiene ninguna ¬. Cada circuito C sin variables de puede convertir monótono con las leyes De Morgan ¬(a ∧ b) ⇔ (¬a) ∨ (¬b) ¬(a ∨ b) ⇔ (¬a) ∧ (¬b) Como cada puerta de entrada es de tipo ⊤ o de tipo ⊥ en la ausencia de variables, aplicamos ¬⊤ = ⊥ y ¬⊥ = ⊤ y ya no hay puertas de negación. Reducciones– p. 31 Función booleana monótona Un circuito monótono solamente puede computar funciones booleanas monótonas: si el valor de una se sus entradas cambia de ⊥ a ⊤, el valor de la función no puede cambiar de ⊤ a ⊥. Reducciones– p. 32 Reducción de C IRCUITSAT a S AT Dado un circuito booleano C, habrá que construir una expresión booleana R(C) en C NF tal que C es satisfactible si y soló si R(C) lo es. Reducciones– p. 33 Reducción de C IRCUITSAT a S AT Dado un circuito booleano C, habrá que construir una expresión booleana R(C) en C NF tal que C es satisfactible si y soló si R(C) lo es. La expresión R(C) usará todas las variables xi de C y incorpora una variable adicional yj para cada puerta de C. Reducciones– p. 33 Cláusulas de R(C) Si la puerta número j es de tipo variable con xi , yj y xi en R(C) tienen que tener el mismo valor, yi ↔ x: (yj ∨ ¬xi ) y (¬yj ∨ xi ). Reducciones– p. 34 Cláusulas de R(C) Si la puerta número j es de tipo variable con xi , yj y xi en R(C) tienen que tener el mismo valor, yi ↔ x: (yj ∨ ¬xi ) y (¬yj ∨ xi ). Si la puerta j es de tipo ⊤: (yj ). Reducciones– p. 34 Cláusulas de R(C) Si la puerta número j es de tipo variable con xi , yj y xi en R(C) tienen que tener el mismo valor, yi ↔ x: (yj ∨ ¬xi ) y (¬yj ∨ xi ). Si la puerta j es de tipo ⊤: (yj ). Si la puerta j es de tipo ⊥: incluir (¬yj ). Reducciones– p. 34 Cláusulas de R(C) Si la puerta número j es de tipo variable con xi , yj y xi en R(C) tienen que tener el mismo valor, yi ↔ x: (yj ∨ ¬xi ) y (¬yj ∨ xi ). Si la puerta j es de tipo ⊤: (yj ). Si la puerta j es de tipo ⊥: incluir (¬yj ). Si la puerta j es de tipo ¬ y su entrada es la puerta h, habrá que asegurar que yj es ⊤ si y sólo si yh es ⊥, yj ↔ ¬yh : (¬yj ∨ ¬yh ) y (yj ∨ yh ). Reducciones– p. 34 Más cláusulas Si la puerta j es de tipo ∧ con las entradas h y k, habrá que asegurar que yj ↔ (yh ∧ yk ): (¬yj ∨ yh ), (¬yj ∨ yk ) y (yj ∨ ¬yh ∨ ¬yk ). Reducciones– p. 35 Más cláusulas Si la puerta j es de tipo ∧ con las entradas h y k, habrá que asegurar que yj ↔ (yh ∧ yk ): (¬yj ∨ yh ), (¬yj ∨ yk ) y (yj ∨ ¬yh ∨ ¬yk ). Si la puerta j es una puerta tipo ∨ con las puertas de entrada h y k, habrá que asegurar que yj ↔ (yh ∨ yk ): (¬yj ∨ yh ∨ yk ), (yj ∨ ¬yk ) y (yj ∨ ¬yh ). Reducciones– p. 35 Más cláusulas Si la puerta j es de tipo ∧ con las entradas h y k, habrá que asegurar que yj ↔ (yh ∧ yk ): (¬yj ∨ yh ), (¬yj ∨ yk ) y (yj ∨ ¬yh ∨ ¬yk ). Si la puerta j es una puerta tipo ∨ con las puertas de entrada h y k, habrá que asegurar que yj ↔ (yh ∨ yk ): (¬yj ∨ yh ∨ yk ), (yj ∨ ¬yk ) y (yj ∨ ¬yh ). Si la puerta j es una salida: (yj ). Reducciones– p. 35 De C IRCUITVALUE a C IRCUITSAT C IRCUITVALUE es un caso especial de C IRCUITSAT Reducciones– p. 36 De C IRCUITVALUE a C IRCUITSAT C IRCUITVALUE es un caso especial de C IRCUITSAT Cada entrada de C IRCUITVALUE es también una entrada valida de C IRCUITSAT. Reducciones– p. 36 De C IRCUITVALUE a C IRCUITSAT C IRCUITVALUE es un caso especial de C IRCUITSAT Cada entrada de C IRCUITVALUE es también una entrada valida de C IRCUITSAT. Para las instancias de C IRCUITVALUE, las soluciones de C IRCUITVALUE y C IRCUITSAT coinciden. Reducciones– p. 36 De C IRCUITVALUE a C IRCUITSAT C IRCUITVALUE es un caso especial de C IRCUITSAT Cada entrada de C IRCUITVALUE es también una entrada valida de C IRCUITSAT. Para las instancias de C IRCUITVALUE, las soluciones de C IRCUITVALUE y C IRCUITSAT coinciden. Entonces, C IRCUITSAT es una generalización de C IRCUITVALUE. Reducciones– p. 36 De C IRCUITVALUE a C IRCUITSAT C IRCUITVALUE es un caso especial de C IRCUITSAT Cada entrada de C IRCUITVALUE es también una entrada valida de C IRCUITSAT. Para las instancias de C IRCUITVALUE, las soluciones de C IRCUITVALUE y C IRCUITSAT coinciden. Entonces, C IRCUITSAT es una generalización de C IRCUITVALUE. La reducción es trivial: la función de identidad I(x) = x de C IRCUITVALUE a C IRCUITSAT. Reducciones– p. 36 Cadenas de reducciones R EACHABILITY ≤L C IRCUITVALUE ≤L C IRCUITSAT ≤L S AT. ¿Es la relación ≤L transitiva? Reducciones– p. 37 Teorema de transitividad Si R es una reducción del lenguaje L a lenguaje L′ y R′ es una reducción del lenguaje L′ al lenguaje L′′ , la composición R · R′ es una reducción de L a L′′ . Reducciones– p. 38 Demostración x ∈ L ⇔ R(x) ∈ L′ ⇔ R′ (R(x)) ∈ L′′ Hay mostrar es que es posible computar R′ (R(x)) en espacio O (log n), |x| = n. Reducciones– p. 39 Las TM involucradas Dos TM MR y MR′ Reducciones– p. 40 Las TM involucradas Dos TM MR y MR′ Construyamos una TM M para R · R′ Reducciones– p. 40 Las TM involucradas Dos TM MR y MR′ Construyamos una TM M para R · R′ El resultado de MR puede ser más largo que log n Reducciones– p. 40 Las TM involucradas Dos TM MR y MR′ Construyamos una TM M para R · R′ El resultado de MR puede ser más largo que log n ⇒ No se puede guardar sin romper el requisito de espacio logarítmico Reducciones– p. 40 La simulación M necesita simular a MR′ con la entrada R(x) por recordar la posición del cursor i en la cinta de entrada de MR′ Reducciones– p. 41 La simulación M necesita simular a MR′ con la entrada R(x) por recordar la posición del cursor i en la cinta de entrada de MR′ La cinta de entrada de MR′ es la cinta de salida de MR Reducciones– p. 41 La simulación M necesita simular a MR′ con la entrada R(x) por recordar la posición del cursor i en la cinta de entrada de MR′ La cinta de entrada de MR′ es la cinta de salida de MR Guardamos solamente el índice i en binaria y el símbolo actualmente leído Reducciones– p. 41 La simulación M necesita simular a MR′ con la entrada R(x) por recordar la posición del cursor i en la cinta de entrada de MR′ La cinta de entrada de MR′ es la cinta de salida de MR Guardamos solamente el índice i en binaria y el símbolo actualmente leído ⇒ Podemos asegurar usar no más que O (log n) espacio. Reducciones– p. 41 Función de M Inicialmente i = 1 y el primer símbolo escaneado es ⊲ Reducciones– p. 42 Función de M Inicialmente i = 1 y el primer símbolo escaneado es ⊲ Cuando MR′ mueve a la derecha, M corre a MR para generar el símbolo de salida de esa posición y incrementa i := i + 1 Reducciones– p. 42 Función de M Inicialmente i = 1 y el primer símbolo escaneado es ⊲ Cuando MR′ mueve a la derecha, M corre a MR para generar el símbolo de salida de esa posición y incrementa i := i + 1 Si MR′ mueve a la izquierda, M asigna i := i − 1 y vuelve a correr a MR con x desde el comienzo, contando los símbolos de salida y parando al generar la posición i de la salida. Reducciones– p. 42 Estamos listos La entrada de MR es x y |x| = n Reducciones– p. 43 Estamos listos La entrada de MR es x y |x| = n La entrada de MR′ es R(x) Reducciones– p. 43 Estamos listos La entrada de MR es x y |x| = n La entrada de MR′ es R(x) Estamos guardando un índice binario de una cadena del largo |R(x)| = O nk Reducciones– p. 43 Estamos listos La entrada de MR es x y |x| = n La entrada de MR′ es R(x) Estamos guardando un índice binario de una cadena del largo |R(x)| = O nk ⇒ El espacio necesario para tal seguimiento de la salida de MR con la entrada x es O (log n) Reducciones– p. 43 Estamos listos La entrada de MR es x y |x| = n La entrada de MR′ es R(x) Estamos guardando un índice binario de una cadena del largo |R(x)| = O nk ⇒ El espacio necesario para tal seguimiento de la salida de MR con la entrada x es O (log n) Como las ambas TMs MR y MR′ operan en espacio O (log n), también M usa O (log n) espacio Reducciones– p. 43 Tareas para entregar el martes 1. Define una reducción de H AMILTON PATH al problema siguiente: dada un grafo no dirigido G = (V, E) y un entero k ≤ n, ¿existe en G un camino simple (que no repita vértices) con k aristas o más? 2. Define una reducción de C LIQUE al problema de isomorfismo de subgrafo. ¿Qué nos dice sobre la complejidad de estos problemas la existencia de tales reducciones? Reducciones– p. 44