Está en la página 1de 3

PREGUNTAS INTEGRADORAS

1. ¿Por qué se estudia la decidibilidad de los problemas?


Se estudia la decidibilidad de los problemas para determinar si existe una solución para un problema dado, si
existe un algoritmo para solucionar el problema. La teoría de la no decidibilidad tiene que ver con la existencia
o no existencia de algoritmos para resolver problemas que tengan una infinidad de instancias.
Un problema de describe como un lenguaje -> cuanto más formal el lenguaje, más precisa la formulación del
problema.
Los problemas se clasifican en:
 Problemas de decisión: es un problema formulado como una pregunta y que tiene como únicas
respuestas posibles SI – NO.

Por ejemplo: dado un numero natural, decidir si es par o no, dada una cadena arbitraria y un lenguaje
regular, determinar si la cadena pertenece o no al lenguaje.
o Decidibles: existe un algoritmo que para toda instancia del problema devuelve la respuesta
correcta.
o Indecidibles: existe un procedimiento que solo da respuesta para algunas instancias del problema.
 Problemas de salida general: las posibles respuestas son respuestas “generales”.

Por ejemplo: calcular el promedio de una lista de números, determinar un camino entre dos ciudades.
o Solubles: existe un algoritmo que para toda instancia del problema devuelve la respuesta correcta.
o Insolubles: existe un procedimiento que solo da respuesta para algunas instancias del problema.
Los lenguajes formales se clasifican en:
 Lenguajes recursivos: existe un algoritmo que determina para cualquier cadena si pertenece o no al
lenguaje. Todo lenguaje recursivo es también recursivo enumerable.

 Lenguajes recursivos enumerables: existe un procedimiento que solo acepta las cadenas que pertenecen
al lenguaje pero para las que no pertenecen no siempre da respuesta.
La teoría de clasificación de problemas se basa en el estudio de los problemas de decisión. Todo problema de
salida general con un cierto grado de dificultad se puede transformar en un problema de decisión del mismo
grado de dificultad (reducción de problemas). Por ejemplo: determinar un camino entre dos ciudades ->
problema salida general. ¿Hay un camino entre dos ciudades? -> problema de decisión
2. Defina problemas tratables y problemas intratables.
 Problemas tratables: son problemas decidibles que necesitan tantísimo tiempo para resolverse que no
son factibles ni prácticos (según qué casos). Ejemplo de utilidad: claves de seguridad. No existe un
algoritmo de tiempo polinómico que resuelve el problema.
 Problemas intratables: son problemas decidibles que usan un tiempo razonable para resolverse. Sí existe
un algoritmo de tiempo polinómico que resuelve el problema.
3. Explique qué es el determinismo y el no determinismo. ¿Qué significa el determinismo y no
determinismo aplicado a los algoritmos? dé ejemplos de cada caso.
Un algoritmo no determinista puede proporcionar diferentes salidas para la misma entrada en diferentes
ejecuciones. A diferencia de un algoritmo determinista que produce una sola salida para la misma entrada,
incluso en diferentes ejecuciones, un algoritmo no determinista viaja en varias rutas para llegar a los diferentes
resultados.

Ejemplo determinismo: calcular el área de un triángulo, el total de una compra.


Ejemplo no determinismo: procesos de decisión con probabilidades, el cubo de Rubik, las llegadas en una cola
de un banco.
4. ¿Qué son las clases de complejidad y para qué nos ayudan?
El estudio de la complejidad clasificará los lenguajes decidibles de acuerdo con la cantidad de recursos
necesarios para su computación.
Sirve para clasificar los problemas e identificar a cada problema con un lenguaje formal.
5. Defina y explique problemas P, NP. Cite tres dos ejemplos de cada uno.
- P: es el conjunto de lenguajes (problemas) resolubles en tiempo polinómico.
Ejemplo: la ordenación de números, factorial, búsqueda secuencial.
- NP: es el conjunto de lenguajes resolubles en tiempo polinómico no determinista.
Ejemplo: TSP, determinar un conjunto independiente de cardinal máximo, problema de cliqué máxima.
6. ¿Por qué se utiliza la reducción de problemas?
La reducibilidad juega un rol muy importante para clasificar los problemas de decidibilidad y también en la
teoría de complejidad. Una reducción es una manera de convertir un problema en otro problema de manera tal
que una solución del segundo problema puede ser utilizado para resolver el primer problema.
La reducibilidad siempre implica la existencia de dos problemas, que se llaman A y B. Si A se reduce a B,
entonces se puede utilizar una solución a B para resolver A.
Por ejemplo, el problema de viajar de Bs. As a Paris reduce al problema de la compra de un ticket de avión
entre las dos ciudades. Ese problema a su vez reduce al problema de ganar el dinero para la compra de
entradas, y ese problema se reduce al problema de encontrar un empleo.
La reducibilidad también se aplica en los problemas matemáticos. Por ejemplo, el problema de medir el área de
un rectángulo se reduce al problema de medir su altura y anchura. El problema de resolver un sistema de
ecuaciones lineales, con n-ecuaciones y n incógnitas, se reduce al problema de la inversión matricial.
7. ¿Qué es la completitud?
La palabra completitud significa que la solución de un problema de decisión NP, contiene, de alguna forma, la
solución a todos los problemas de decisión de la clase NP.
La teoría de la NP-Completitud no proporciona un método para obtener algoritmos de tiempo polinómico, ni
dice que estos algoritmos no existan. Lo que muestra es que muchos de los problemas para los cuales no
conocemos algoritmos polinómicos están computacionalmente relacionados.
8. ¿Cuáles son los requisitos para que un problema sea NP-completo? Explique cada uno de los requisitos.
Cite tres ejemplos de problemas NP-completos.

9. Defina problemas NP difíciles

10. Explique detalladamente el Teorema de Cook-Levin, respondiendo: qué presenta, porqué es importante
este teorema, para qué se utiliza.

11. Explique detalladamente porqué 3-SAT es NP-completo.

12. Sea F = (x1) (x2x4)(x1 x3 x4 )(x1 x2 x3x5) satisfacible, se pide transformar F en F` de modo que en F` sus
cláusulas sean de tres literales (es una variable o una variable negable).

También podría gustarte