Você está na página 1de 5

TALF II - TEMA 3 Qu es tratable computacionalmente?

Xavier Alamn Roldn Universidad Autnoma de Madrid Mquinas de Turing no deterministas (1) Autmatas finitos no deterministas Un autmata finito no determinista es aquel en el que para cada estado inicial y entrada, en vez de un estado final se especifican varios estados finales posibles. En cada paso, se comienza con un conjunto de estados iniciales y una entrada y se genera un conjunto de estados finales: la unin de todos los estados a los que se puede acceder desde cualquiera de los estados iniciales dada la entrada. El autmata reconoce la cadena de entrada si tras procesarla completamente , el estado de reconocimiento est en el conjunto de estados finales. Mquinas de Turing no deterministas (2) Autmatas finitos no deterministas Se puede visualizar que cada paso en un autmata no determinista produce una multiplicidad de universos, en cada uno de los cuales el autmata pasa a uno de los estados posibles. La cadena de entrada se acepta si uno cualquiera de los universos la acepta. Alternativamente, se puede visualizar un autmata no determinista como aquel que en cada paso escoge como estado siguiente uno que lleve a aceptar la cadena, si ello es posible. Tiene, por tanto, ciertas dotes de adivinacin, para escoger adecuadamente dicho estado. Mquinas de Turing no deterministas (3) Autmatas finitos no deterministas Uno esperara que un autmata con esas capacidades de adivinacin fuera capaz de reconocer ms lenguajes que los autmatas finitos normales (es decir, que los lenguajes regulares). Curiosamente, no es as: para cada autmata finito no determinista existe un autmata finito determinista que reconoce el mismo lenguaje. El autmata determinista asociado tiene como posibles estados el conjunto potencia de los estados del no determinista. Las transiciones van de cada conjunto de estados iniciales y entrada al conjunto de estados finales posibles, segn el no determinista. Mquinas de Turing no deterministas (4) Una mquina de Turing no determinista es una mquina de Turing que resuelve un problema de decisin (acepta o no la cadena de entrada) en la que el autmata asociado es no determinista, es decir, para cada estado y carcter ledo hay varios estados siguientes posibles. La mquina de Turing acepta la cadena si hay al menos una sucesin posible de estados que acaben en la aceptacin. Como en el caso de los autmatas, las mquinas de Turing no deterministas reconocen los mismos lenguajes que las deterministas (los lenguajes recursivos numerables). El proceso

para demostrarlo incurre en un empeoramiento exponencial de la ejecucin. El coste de computar Cualquier algoritmo tiene un coste en recursos de computacin. Los recursos que tpicamente limitan una computacin son el tiempo y la memoria. El tiempo se mide como el nmero de operaciones realizadas (comparaciones, operaciones y asignaciones, tpicamente). La memoria se mide como el nmero de variables elementales empleadas (una tabla o una cadena de caracteres constan de muchas variables elementales). Anlisis de algoritmos El anlisis de un algoritmo consiste en calcular los recursos de tiempo y de memoria que el algoritmo va a necesitar, en funcin del tamao de los datos de entrada. Un algoritmo no siempre consume los mismos recursos: depende de cmo sean los datos de entrada. Por eso se pueden considerar los siguientes casos: el caso peor, el caso mejor, el caso tpico (ms frecuente, o medio). Ejemplo: algoritmo de la burbuja para (i=0;i<=MAX;i++){ ya_esta= true; para(j=MAX;j<i;j--){ si tabla(j)>tabla(j-1){ cambiar ambos; ya_esta= false; } } si flag {break;} } Ejemplo: multiplicacin de nmeros largos (1) El algoritmo que ensean en el colegio es O(n2) Sin embargo puede mejorarse: x=a2n/2+b y= c2n/2+d x*y=(a*c)2n+(b*c)2n/2+(a*d)2n/2+(b*d) (b*c)+(a*d)=(a+b)*(c+d)-(a*c)-(b*d) y se aplica recursivamente... El algoritmo es O(n1.59) Hay un algoritmo basado en la FFT que es O(n*log(n)*log(log(n))). Ejemplo: el problema del viajante (TSP) Tengamos n ciudades y un coste asociado al camino entre dos cualesquiera. Encontrar la ruta de coste mnimo que las recorre todas: Para cada permutacin de las ciudades Calcular el coste. Si el coste es menor que el mejor encontrado, guardar coste y permutacin. O Una funcin f se dice que es del orden de otra funcin g , y se escribe f(n) = O(g(n)), si: c, n0 tales que n>n0 f(n) < c * g(n)

Si f(n) = O(g(n)) y g(n)=O(f(n)), entonces se dice que f y g tienen el mismo ritmo de crecimiento. Si f(n) = O(g(n)), pero no al contrario, se dice que g crece ms deprisa que f. Ejemplos de O 3n3+100n = O(n4+n2+3) 3n3+100n = O(4n3) 3n3+100n = O(n3) 3n3+100n O(n2) n2 = O(3n3+100n) Logaritmos, polinomios y exponenciales Para cualquier c>1 y cualquier k: nk = O(cn) y cn O(nk) logk n= O(n) y n O(logk n) Algoritmos intratables Se considera un algoritmo es intratable si su costo computacional (en tiempo o en memoria) es peor que polinmico (en funcin del tamao de los datos de entrada). Por el contrario, los algoritmos con coste polinmico se consideran bastante aceptables. Los algoritmos con coste logartmico se consideran como aceptables sin ninguna duda. Clases de complejidad Se pueden agrupar los problemas segn los recursos que necesitan para ser resueltos: son las clases de complejidad. Una manera de definir una clase de complejidad es mediante una funcin f(n) que limite los recursos que se pueden usar (en tiempo o en memoria). Los problemas pertenecientes a la clase definida por f(n) son aquellos para los que existe un algoritmo (una mquina de Turing) tal que siempre emplea del orden de f(n) recursos para una entrada de tamao n. La clase P Un problema pertenece a la clase P si y solo si existe una mquina de Turing determinista que emplea O(nk) unidades de tiempo en resolverlo, donde n es el tamao de los datos de entrada y k un nmero entero. Ejemplos de problemas de la clase P son: la ordenacin de una tabla, la bsqueda de un elemento en una tabla, la multiplicacin de dos nmeros arbitrariamente largos, la decisin de si un nodo es accesible desde otro nodo en un grafo, el clculo del flujo mximo que puede transportar una red, etc. La clase NP Un problema pertenece a la clase NP si y

solo si existe una mquina de Turing no determinista que emplea O(nk) unidades de tiempo en resolverlo, donde n es el tamao de los datos de entrada y k un nmero entero. La clase P est incluida en la clase NP. No se sabe si la clase NP est incluida en la clase P (en cuyo caso seran una nica clase). El problema TSP es NP? Estudiemos primero el problema de decisin del viajante TSP(D). Se trata de decidir si, dado un coste B, existe alguna ruta que recorra todas las ciudades con coste menor que B. Este problema es NP. Para demostrarlo, basta con proporcionar una Maquina de Turing no determinista que lo resuelva en tiempo polinmico. El problema TSP(D) es NP Algoritmo no determinista de orden n2 Se genera una permutacin arbitraria de los nodos del grafo (orden n). Se comprueba que la permutacin es un recorrido vlido y cual es su coste (orden n2). Si el coste es menor que B, se acepta. Si todas las ramas acaban sin aceptar, se rechaza. El problema TSP es NP Se calcula el coste ptimo C: por bsqueda binaria entre B=0 y B=suma de costes de todos los caminos, se emplea TSP(D) para encontrar el coste mnimo C. El proceso sigue siendo orden n2. Para cada camino se prueba (orden n2): se incrementa su coste al valor C+1. si sigue habiendo camino de coste C, se deja as. si ya no hay camino de coste C, se vuelve a su valor anterior. El camino de coste C queda definido por los caminos cuyo coste es menor que C+1. Ejemplos de problemas NP El problema del viajante (TSP). 3SAT 3-coloreado de un grfico. Problema de la particin. Vertex covering: un conjunto de vrtices cubre un grafo si cada arista tiene al menos uno de sus vrtices en dicho conjunto. Hallar el menor de tales conjuntos. Reduccin entre problemas Dados dos problemas A y B, se dice que B reduce a A si y solo si: Existe un algoritmo que a partir de un problema A genera un problema B en tiempo polinomial

respecto al tamao de A. Si se encuentra una solucin de B, se deduce en tiempo polinomial una solucin de A. El problema de la satisfacibilidad: 3SAT Un problema 3-SAT consiste en una frmula lgica en forma normal conjuntiva, donde cada clusula involucra, a lo sumo, tres variables. Se trata de encontrar una asignacin de valores de verdad a todas las variables, tal que la frmula evale al valor cierto. Ejemplo: (x+y) * (x+-y+z)*(-z+w)*(-w)*(-x+-w+-q) NP-Completo y NP-Duro Un problema NP se denomina NP-Completo si puede reducir a cualquier otro problema NP. Si se encontrara una solucin polinomial para un problema NP-Completo, se podran solucionar todos los problemas NP en tiempo polinomial. Un problema se denomina NP-Duro (sea o no NP) si puede reducir a un problema NPCompleto. Un problema NP-Duro tiene una complejidad igual o peor que NP-Completo. Teorema de Cook presentacin.

Você também pode gostar