stringtranslate.com

problema computacional

En informática teórica , un problema computacional es un problema que puede resolverse mediante un algoritmo . Por ejemplo, el problema del factoring.

"Dado un número entero positivo n , encuentre un factor primo no trivial de n ".

es un problema computacional. Un problema computacional puede verse como un conjunto de instancias o casos junto con un conjunto, posiblemente vacío, de soluciones para cada instancia/caso. Por ejemplo, en el problema de factorización , las instancias son los números enteros n y las soluciones son números primos p que son factores primos no triviales de n .

Los problemas computacionales son uno de los principales objetos de estudio de la informática teórica. El campo de la teoría de la complejidad computacional intenta determinar la cantidad de recursos ( complejidad computacional ) que requerirá la resolución de un problema determinado y explicar por qué algunos problemas son intratables o indecidibles . Los problemas computacionales pertenecen a clases de complejidad que definen ampliamente los recursos (por ejemplo, tiempo, espacio/memoria, energía, profundidad del circuito) que se necesitan para calcularlos (resolverlos) con varias máquinas abstractas . Por ejemplo, las clases de complejidad.

Tanto las instancias como las soluciones están representadas por cadenas binarias , es decir, elementos de {0, 1} * . [a] Por ejemplo, los números naturales generalmente se representan como cadenas binarias usando codificación binaria . Esto es importante ya que la complejidad se expresa en función de la longitud de la representación de entrada.

Tipos

Problema de decisión

Un problema de decisión es un problema computacional en el que la respuesta para cada caso es sí o no. Un ejemplo de problema de decisión son las pruebas de primalidad :

"Dado un número entero positivo n , determine si n es primo".

Un problema de decisión generalmente se representa como el conjunto de todos los casos para los cuales la respuesta es . Por ejemplo, la prueba de primalidad se puede representar como el conjunto infinito

L = {2, 3, 5, 7, 11, ...}

Problema de búsqueda

En un problema de búsqueda , las respuestas pueden ser cadenas arbitrarias. Por ejemplo, la factorización es un problema de búsqueda en el que las instancias son (representaciones en cadena de) números enteros positivos y las soluciones son (representaciones en cadena de) colecciones de números primos.

Un problema de búsqueda se representa como una relación que consta de todos los pares instancia-solución, llamada relación de búsqueda . Por ejemplo, la factorización se puede representar como la relación

R = {(4, 2), (6, 2), (6, 3), (8, 2), (9, 3), (10, 2), (10, 5)...}

que constan de todos los pares de números ( n , p ), donde p es un factor primo de n .

problema de conteo

Un problema de conteo pregunta por el número de soluciones a un problema de búsqueda determinado. Por ejemplo, un problema de conteo asociado con la factorización es

"Dado un número entero positivo n , cuente el número de factores primos no triviales de n ".

Un problema de conteo se puede representar mediante una función f desde {0, 1} * hasta los números enteros no negativos. Para una relación de búsqueda R , el problema de conteo asociado a R es la función

f R (x) = |{ y : R ( x , y ) }|.

Problema de optimizacion

Un problema de optimización requiere encontrar la "mejor solución posible" entre el conjunto de todas las soluciones posibles a un problema de búsqueda. Un ejemplo es el problema del conjunto máximo independiente :

"Dado un gráfico G , encuentre un conjunto independiente de G de tamaño máximo".

Los problemas de optimización están representados por su función objetivo y sus restricciones.

problema de función

En un problema de función se espera una única salida (de una función total ) para cada entrada, pero la salida es más compleja que la de un problema de decisión , es decir, no es solo "sí" o "no". Uno de los ejemplos más famosos es el problema del viajante :

"Dada una lista de ciudades y las distancias entre cada par de ciudades, encuentre la ruta más corta posible que visite cada ciudad exactamente una vez y regrese a la ciudad de origen".

Es un problema NP-difícil en optimización combinatoria , importante en investigación de operaciones e informática teórica .

problema de promesa

En la teoría de la complejidad computacional , generalmente se supone implícitamente que cualquier cadena en {0, 1} * representa una instancia del problema computacional en cuestión. Sin embargo, a veces no todas las cadenas {0, 1} * representan instancias válidas y una especifica un subconjunto adecuado de {0, 1} * como el conjunto de "instancias válidas". Los problemas computacionales de este tipo se denominan problemas de promesa .

El siguiente es un ejemplo de un problema de promesa (de decisión):

"Dado un gráfico G , determine si cada conjunto independiente en G tiene un tamaño como máximo de 5, o si G tiene un conjunto independiente de tamaño al menos 10".

Aquí, los casos válidos son aquellos gráficos cuyo tamaño máximo de conjunto independiente es como máximo 5 o al menos 10.

Los problemas de promesa de decisión generalmente se representan como pares de subconjuntos disjuntos ( L , L no ) de {0, 1} * . Los casos válidos son aquellos en L L no . L y L no representan las instancias cuya respuesta es y no , respectivamente.

Los problemas de promesa desempeñan un papel importante en varias áreas de complejidad computacional , incluida la dureza de aproximación , las pruebas de propiedades y los sistemas de prueba interactivos .

Ver también

Notas

  1. ^ Consulte expresiones regulares para conocer la notación utilizada.

Referencias