“Conocimiento software>Software de Productividad

¿Cuál es el impacto de la complejidad de NP en la eficiencia del algoritmo y los recursos computacionales?

2013/2/2
El impacto de la complejidad de NP en la eficiencia del algoritmo y los recursos computacionales es profundo y significativo. Se reduce a la pregunta fundamental de si un problema se puede solucionar en el tiempo polinomial y, si no, cómo lo tratamos. Aquí hay un desglose:

Comprender la complejidad de NP

* P (tiempo polinomial): Los problemas en P pueden resolverse mediante un algoritmo cuyo tiempo de ejecución está limitado por una función polinomial del tamaño de entrada (por ejemplo, o (n), o (n^2), o (n^3)). Estos generalmente se consideran "manejables" porque el tiempo de ejecución crece razonablemente a medida que crece la entrada. Piense en ordenar una lista de números que usan algoritmos eficientes como Merge Sort o QuickSort.

* np (tiempo polinomial no determinista): Los problemas en NP tienen la propiedad de que una * solución * puede * verificarse * en tiempo polinomial. Esto * no * significa que el problema puede * resolverse * en el tiempo polinomial. Simplemente significa que si alguien * le da * una solución, puede verificar rápidamente si es correcto. Los ejemplos incluyen:

* Sudoku: Te dan una cuadrícula llena. Puede verificar rápidamente si es una solución válida de Sudoku.

* Problema de vendedor ambulante (TSP): Dado un recorrido, puede calcular fácilmente su distancia total y confirmar que visita todas las ciudades exactamente una vez.

* Satisfiabilidad booleana (sat): Dada una asignación de valores de verdad a las variables en una fórmula booleana, puede evaluar fácilmente la fórmula y ver si es cierto.

* np-hard: Un problema es NP-Hard si cada problema en NP puede reducirse a él en tiempo polinomial. Esto significa que si pudiera resolver un problema np-cuanto en el tiempo polinomial, podría resolver * cada * problema en NP en el tiempo polinomial. Los problemas difíciles son al menos tan difíciles como los problemas más difíciles en NP.

* np-complete: Un problema es NP-complete si está en NP y NP-HARD. Los problemas completos de NP son los problemas "más difíciles" en NP. Si pudiera encontrar un algoritmo de tiempo polinómico para cualquier problema de NP-Complete, demostraría que P =NP.

Impacto en la eficiencia del algoritmo y los recursos computacionales:

1. Intractabilidad:

* El problema P vs. NP: Uno de los mayores problemas sin resolver en la informática es si P =NP. La mayoría de los informáticos creen que P ≠ NP. Si esto es cierto (y casi todos creen que lo es), entonces los problemas de NP-completos y NP-Hard * no pueden * resolverse mediante algoritmos de tiempo polinomial. Esto significa que a medida que crece el tamaño de entrada, el tiempo de ejecución de cualquier algoritmo que resuelva estos problemas crecerá exponencialmente o más rápido.

* Crecimiento exponencial: Dado que muchos problemas del mundo real son NP-HARD o NP-completos (por ejemplo, optimización de rutas, programación, asignación de recursos, criptografía), a menudo enfrentamos algoritmos con complejidad de tiempo exponencial (por ejemplo, o (2^n), o (n!)).

* Implicaciones prácticas: Esto tiene graves implicaciones prácticas. Incluso para entradas de tamaño moderado, las soluciones exactas se vuelven imposibles de calcular dentro de un plazo razonable. Imagine tratar de encontrar la ruta óptima para un vendedor viajero que visite solo 20 ciudades. Un enfoque de fuerza bruta tomaría un tiempo astronómicamente mucho tiempo.

2. Consumo de recursos:

* Tiempo: Como se mencionó, el impacto principal está en el tiempo de ejecución. Los algoritmos para problemas np-duros pueden llevar horas, días, años o incluso más para completar los tamaños de entrada realistas.

* memoria: Los algoritmos de tiempo exponenciales a menudo también requieren cantidades exponenciales de memoria. Por ejemplo, algunos algoritmos de búsqueda deben almacenar todo el espacio de búsqueda en la memoria.

* Potencia computacional: Resolver problemas Hard NP a menudo requiere una potencia computacional significativa, que requiere computadoras de alto rendimiento, grupos o incluso supercomputadoras.

3. Afrontando con NP-Completitud y NP-Hardness:

Como no podemos (probablemente) encontrar algoritmos de tiempo polinomial para estos problemas, recurrimos a varias estrategias:

* Algoritmos de aproximación: Estos algoritmos apuntan a encontrar soluciones que sean "lo suficientemente buenas" en el tiempo polinomial. Garantizan una solución dentro de un cierto factor de la solución óptima. Por ejemplo, puede encontrar un recorrido de cucharaditas que es como máximo un 50% más largo que el recorrido óptimo.

* heurística: Las heurísticas son técnicas de resolución de problemas que utilizan reglas generales y experiencia para encontrar soluciones "buenas" rápidamente, pero sin ninguna garantía de optimización o incluso un rendimiento garantizado. Los ejemplos incluyen:

* Algoritmos codiciosos: Haga la decisión localmente óptima en cada paso, con la esperanza de encontrar una buena solución a nivel mundial.

* Búsqueda local: Comience con una solución aleatoria y mejore iterativamente haciendo pequeños cambios hasta alcanzar un óptimo local.

* Recocido simulado: Un tipo de búsqueda local que permite movimientos ocasionales "malos" para escapar de Optima Local.

* Algoritmos genéticos: Inspirados en la selección natural, estos algoritmos evolucionan una población de soluciones candidatas con el tiempo.

* Complejidad parametrizada: Identifique un parámetro del problema (por ejemplo, el tamaño de una cubierta de vértice, el ancho de árbol de un gráfico) y los algoritmos de diseño cuyo tiempo de ejecución es polinomial en el tamaño de entrada, pero exponencial en el parámetro. Esto puede ser útil si el parámetro es pequeño en la práctica.

* Casos especiales: A veces, podemos encontrar algoritmos de tiempo polinomial para instancias específicas de problemas np-Hard. Por ejemplo, el TSP se puede resolver de manera eficiente si las ciudades se encuentran en un plano y la métrica de distancia es euclidiana.

* Computación cuántica (impacto futuro potencial): Si bien aún son en gran medida teóricos, las computadoras cuánticas tienen el potencial de resolver algunos problemas de NP de manera más eficiente que las computadoras clásicas. Sin embargo, este sigue siendo un área activa de investigación y no una solución garantizada. El algoritmo de Grover proporciona una aceleración cuadrática para los problemas de búsqueda, y el algoritmo de Shor puede tener en cuenta los números grandes de manera eficiente (rompiendo muchos algoritmos criptográficos modernos).

En resumen: La complejidad de NP tiene un gran impacto en el diseño de algoritmos y la utilización de recursos. La probabilidad de p ≠ np significa que muchos problemas importantes son inherentemente difíciles de resolver exactamente en un tiempo razonable. Esto nos obliga a usar algoritmos de aproximación, heurística u otras técnicas para encontrar soluciones que sean "lo suficientemente buenas" en la práctica. También impulsa la investigación sobre nuevos paradigmas computacionales como la computación cuántica. Comprender la complejidad de NP es crucial para cualquier persona que diseñe algoritmos para tareas computacionalmente intensivas.

Software de Productividad
Atajos de OpenOffice para corregir Caps
Cómo Conectar tu teléfono AT & T con una aplicación de terceros
Cómo eliminar una versión de prueba de Publisher 2007
Cómo establecer el idioma en Word 2007
Compatibilidad de Lotus SmartSuite
Cómo combinar celdas en un libro compartido
Cómo obtener Virtual PC para Mac
¿Qué es Microsoft Salomón
Conocimiento de la computadora © http://www.ordenador.online