¿Deberíamos usar un árbol rojo-negro con más frecuencia para abordar los problemas de integridad de NP? ¿Es esto cierto?

Desde un punto de vista puramente teórico, no, no hará la diferencia. Desde un punto de vista práctico en términos de creación de heurística para atacar problemas NP-duros, puede que en algunos casos, pero no hay garantías.

Primero, analicemos la perspectiva teórica: ¿podría un árbol rojo-negro ser una parte necesaria de una solución P = NP? La respuesta aquí es claramente ‘No’ (omitiendo la pregunta por el momento de si P = NP o no).

Un árbol rojo-negro es solo un medio para mantener un árbol binario ordenado equilibrado. Por lo tanto, es útil cuando quiero ver si tengo un artículo en particular en un conjunto ordenado, y deseo hacerlo rápidamente, o si quiero encontrar información sobre un artículo en un conjunto ordenado. Sin embargo, si quisiera hacer una búsqueda lineal a través de una lista sin ordenar, aún podría resolver cualquier problema, sería más lento.

¿Cuánto más lenta sería una búsqueda lineal? Bueno, para un árbol rojo-negro, la búsqueda de información requiere O (log n) pasos donde n es el número de elementos de la lista, y para una búsqueda lineal, por supuesto, toma O (n). Tenga en cuenta que la diferencia está en el tiempo de procesamiento todavía está limitado por polinomios.

Digamos, en aras del argumento de que alguien encontró un medio de resolver un problema NP-completo en el tiempo O (n ^ p) para alguna constante constante p, y donde n se relaciona con el tamaño del problema. Y supongamos por el momento que su método requiere el uso de un árbol rojo-negro. Ahora, reemplace cada uso del árbol rojo-negro con una referencia a una lista sin clasificar. Afirmo que la solución aún tendría un límite de tiempo polinómico. De hecho, el tiempo sería peor, O ((n ^ (p + 1)) / log (n)).

Cualquier técnica de optimización que produzca una aceleración ligada al polinomio no será esencial para encontrar una solución de tiempo polinomial a los problemas de NP completo. Un árbol rojo-negro proporciona solo una aceleración O (n / logn) en comparación con una lista no ordenada, que es un enlace polinómico. Por lo tanto, un árbol rojo-negro no puede ser esencialmente mejor que una lista sin clasificar para encontrar una solución de tiempo polinomial para problemas NP-completos.

Cuando se trata de ciertas heurísticas para quizás no resolver realmente un problema de NP completo en todos los casos, entonces un árbol rojo-negro podría ser útil para algunos enfoques. Aquí, sin embargo, depende completamente de la naturaleza del enfoque. No esperaría que fuera una respuesta universal.

No. Los problemas de NP completo son computacionalmente difíciles y ninguna estructura de datos o algoritmo puede ayudarlo con eso.

Los árboles rojo-negros son útiles cuando se necesita un mapa o conjunto ordenado, pero no son la única opción.

No, las dos cosas no tienen nada que ver entre sí.

Si uno necesita resolver problemas NP-completos en la práctica, debe esperar que las instancias del problema que tiene que resolver no sean los casos más difíciles, porque los casos más difíciles son simplemente demasiado difíciles. No se pueden hacer de manera eficiente. (A menos que P = NP, pero no lo es).

Luego, diseña un algoritmo que funcione razonablemente en las instancias en las que se pone en práctica. Este algoritmo puede o no involucrar un árbol rojo-negro.