Prueba de dureza NP: buscando algunos buenos problemas restringidos np-hard

8

Para mostrar la dureza NP de un problema, uno necesita elegir un problema NP-duro conocido y encontrar una reducción polinómica del problema conocido a su problema en cuestión. Teóricamente, cualquier problema NP-duro puede usarse para la reducción, pero en la práctica, algunos de los problemas se reducen más fácilmente que otros.

Por ejemplo, 3-SAT suele ser una mejor opción para construir una reducción que SAT porque el primero es más restringido que el último, 3-partición suele ser una opción más fácil que el embalaje de contenedores, ...

Una forma de encontrar esos problemas "buenos" para la reducción es hacer un análisis estadístico sobre las reducciones existentes. Por ejemplo, uno puede dar forma a todos los pares de from -> toreducciones del libro Computadoras e Intractabilidad: una guía para la teoría de la completitud NP (u otros recursos) y dibujar un histograma de los problemas en el fromconjunto. Entonces podemos descubrir qué problemas se usan más comúnmente para las reducciones.

Me pregunto si ese análisis estadístico tiene sentido. ¿Se ha llevado a cabo tal investigación o no? Si no, ¿cuál es su suposición sobre los problemas más utilizados para las reducciones?

La razón por la que hago esta pregunta es que ya he hecho algunas pruebas de dureza NP, pero casi todas dependen de la reducción del mismo problema (3 particiones). Estoy buscando otras opciones para usar en mis pruebas.

Helio
fuente
1
Desde mi pequeña experiencia, creo que depende del dominio del problema que enfrenta (aritmética, teoría de grafos, programación, rompecabezas, ...); en primer lugar, debe buscar problemas NPC similares o relacionados para ver si hay un buen problema para comenzar DESDE (por ejemplo, la clasificación A1-A12 de G&J); luego mira sus pruebas de NPC para obtener pistas / ideas sobre la dirección que puedes seguir; finalmente, si no sale nada, intente usar problemas simples de NPC de "bajo nivel" que no requieran estructuras complejas (3SAT, 1 en 3 SAT, SAT planar, cobertura exacta por tres conjuntos, 3 colores, 3 particiones, ciclo Ham) en gráficos planos o de cuadrícula, ..)
Marzio De Biasi
@MarzioDeBiasi: Tienes razón, pero creo que buscar entre miles de problemas para encontrar el adecuado es un trabajo agotador. La clasificación basada en el número de reducciones que sugerí nos da una pista sobre dónde comenzar nuestra búsqueda. De hecho, no solemos elegir un problema al azar. Por lo general, elegimos el problema en función de la similitud (¿es una buena palabra?) Y de la frecuencia de las reducciones que ya hemos visto de ese problema. Solo quería hacer esta selección un poco más formal o al menos obtener algunos consejos de los expertos en el área sobre sus problemas favoritos.
Helio
@MarzioDeBiasi: por cierto, la lista de problemas que mencionaste en tu comentario también es útil para mí.
Helium
1
@MarzioDeBiasi, creo que es muy agradable si compartes tus experiencias como respuesta, eres uno de los mejores de las pruebas de dureza en cstheory.SE.
Saeed
1
escuche atentamente a MDB re G&J. organizan los tipos de problemas en secciones. Hay quizás miles de variantes de problemas completos de NP pero están en temas / géneros / secciones básicos. Sería interesante construir un gráfico grande pero no es realmente estadístico. probablemente exhibe una estructura mundial pequeña donde hay "centros" clave. G&J enumeran los centros principales en diferentes capítulos / secciones.
vzn

Respuestas:

6

No sé si hay una forma de maquinaria para hacer esto, pero mi pequeña experiencia personal funciona de la siguiente manera.

Intento proporcionar un algoritmo de tiempo polinómico para un problema. En esos intentos, por lo general, puedo ver que hay algunas versiones restringidas del problema que pueden resolverse en tiempo polinómico. También entenderé qué parte de mi algoritmo se movía a mano para el problema original. Puedo comparar estos dos casos (la diferencia entre las versiones restringidas y la general también es parte de un algoritmo que fue difícil de mejorar). Al comparar estos dos casos, generalmente es posible adivinar cómo se ve el problema del cuello de botella. Entonces podemos encontrar un problema difícil relacionado. Por lo general, proporcionar un algoritmo para un problema es un trabajo difícil y necesita un buen conocimiento sobre un problema. Después de obtener este conocimiento sobre el problema, podemos tener muchas ideas diferentes para abordar el problema en diferentes escenarios (no solo resultados de dureza).

PD: Si tu prueba se basa en un problema en particular, creo que es porque ese problema está muy cerca de tu trabajo, así que no te culpes.

Saeed
fuente
2
+1: Estoy de acuerdo en que buscar un algoritmo de poli-tiempo es un buen punto de partida y revela secretos sobre el problema
Helium