Encuentros cotidianos con problemas NP-completos


Respuestas:


24

Mi ejemplo favorito para usar con amigos que no son CS es este:

Abraham, A. Blum, Sandholm. Algoritmos de compensación para los mercados de intercambio de trueque: permitiendo intercambios de riñón a nivel nacional. EC07.

Los mercados de intercambio de riñones son esencialmente una forma restringida de cobertura del ciclo. Me gusta este ejemplo porque a) es fácil de explicar lo esencial (si omite algunos de los detalles más técnicos) yb) es una de las pocas instancias que sé de dónde mejores algoritmos pueden literalmente salvar vidas.

Mi segundo ejemplo favorito es el problema de los hospitales y residentes (también conocido como el problema de admisión a la universidad). Cada hospital clasifica a todos los residentes (estudiantes de medicina graduados) y los residentes clasifican los hospitales. Cada hospital tiene un cierto número de máquinas tragamonedas. A partir de ahí, es un problema de coincidencia estable y puede resolverse en tiempo polinómico.

Pero en realidad, las parejas pueden ingresar al sistema (sí, de hecho hay un sistema ) juntas, de modo que el sistema no separará, por ejemplo, a las parejas casadas que solicitan la residencia. La incorporación de parejas hace que el problema sea NP completo. Además de ser fácil de explicar, esto demuestra muy bien cómo la introducción de conexiones de largo alcance puede inducir la completitud NP.


1
Gran ejemplo! David Manlove ha trabajado extensamente en este tipo de problemas (tanto de intercambio como de correspondencia); Los sistemas se están utilizando en el Reino Unido y Hungría. dcs.gla.ac.uk/~davidm/publications.html Hasta donde yo sé, estos enfoques superan los algoritmos NRMP, y el algoritmo de aproximación 3/2 de Eric McDermid es el más conocido. dx.doi.org/10.1007/978-3-642-02927-1_57
András Salamon

13

Algunos problemas de "todos los días" que son NP-hard, adecuadamente formulados:

  • Asignación de clases universitarias a intervalos de tiempo para minimizar los conflictos de programación.

  • Asignación de invitados a la boda a asientos para que los amigos se sienten en la misma mesa, pero los enemigos no.

  • Planificación de un viaje por carretera para visitar todos los puntos turísticos en una lista, a fin de minimizar la conducción.


12

El problema del vendedor ambulante es aparentemente accesible ... al menos donde estoy, este parece ser el problema de CS más popular entre las personas que no son CS con diferencia. También encontré la siguiente ilustración de Vertex Cover bastante atractiva, tal como la presentó mi instructor de algoritmos:

Tiene una red de carreteras y desea asegurarse de que si un automóvil se queda sin combustible, hay una estación de servicio en al menos un extremo de la carretera.

Como planificador de la ciudad, desea minimizar los costos construyendo la menor cantidad posible de estaciones de servicio. Este es esencialmente el problema de la cubierta del vértice, y he encontrado algo de éxito al señalar que, aunque no espera encontrar la cubierta del vértice óptima en el tiempo polinomial, puede encontrar algo que está a solo un factor de dos en el tiempo polinómico, simplemente recogiendo ambos puntos finales de una coincidencia máxima (bueno, ese último detalle podría omitirse dependiendo de cuán entusiasta sea su audiencia, especialmente porque el algoritmo MM no es exactamente una línea doble).

En cuanto a un ejemplo de un "salto en la complejidad" con un pequeño cambio en la naturaleza del problema, creo que la diferencia entre verificar la colorabilidad 2 y la colorabilidad 3 es un buen ejemplo. Con toda la publicidad que rodea el teorema de los cuatro colores, también se podría señalar que verificar si un mapa puede ser coloreado adecuadamente con solo tres colores en lugar de cuatro es difícil, aunque sabemos que siempre se puede colorear con cuatro colores. Un buen número de personas encuentra esto bastante sorprendente.

Otra situación bastante natural es el problema de recuperación de punto muerto en los sistemas operativos. Esto está modelado por el problema NP-completo del conjunto de vértices de retroalimentación, el número más pequeño de vértices cuya eliminación hace que el gráfico sea acíclico, y también encuentro que este es un ejemplo notable (y se explica más adelante en ese artículo de Wikipedia).


3
Una coincidencia máxima es suficiente para una aproximación de dos, que es mucho más fácil de calcular y explicar.
Warren Schudy

1
@ Warren: ¡Gracias por señalarlo, por supuesto que tienes toda la razón!
Neeldhara

8

Creo que el estacionamiento paralelo es NP-hard.

De hecho, el problema más general de encontrar el camino más corto con curvatura acotada que lleva a un objeto poligonal desde su posición inicial a su posición final en un entorno poligonal es NP-duro. La prueba se puede encontrar aquí: http://portal.acm.org/citation.cfm?id=298976


7

La mochila es bastante fácil de entender, especialmente para cualquiera que haya tenido que lidiar con una maleta pequeña ... un buen ejemplo si conocen la programación dinámica.

Otra diversión (prácticamente idéntica) es la Suma de subconjuntos, porque también tiene una buena interpretación física: imagina que los números son las distancias de masas de puntos iguales en una regla ideal (sin masa), con el punto de apoyo en el origen. Subset-sum dice: ¿existe un subconjunto no vacío tal que la regla se mantenga equilibrada? (es decir, ¿tal que el centro de gravedad es el punto de apoyo para la regla?)

En ambos casos, parece intuitivo que las estrategias ingenuas pueden obligar a recurrir a la verificación de todos los subconjuntos.

Si tienen más antecedentes, es bueno aumentar los problemas eliminando las restricciones. Por ejemplo, comenzar con un problema de flujo máximo, convertirlo en un programa lineal y convertirlo en un programa entero. (Una excelente, por supuesto, es MAX-CUT, ya que para las personas con más antecedentes también puede mostrar UGC; toco algo de esto en una respuesta MO https://mathoverflow.net/questions/33036/is-quadratic-programming -still-np-hard-if-you-have-limits-and-a-factible-point / 33048 # 33048. ) También hay cosas interesantes como problemas aparentemente similares que tienen una complejidad muy diferente (el camino de Euler (borde) es lineal tiempo, la ruta hamiltoniana (vértice) es NP-completa).


77
Me gusta la siguiente versión de Subset Sum: le dan £ 10 para comprar refrigerios en una tienda. ¿Puedes encontrar exactamente la combinación correcta de compras para que no quede dinero?
András Salamon

6

La construcción de crucigramas es NP-completa: dado un conjunto de respuestas, intente encajarlas en una cuadrícula.


5

Creé el sitio web Tagxedo, http://www.tagxedo.com , un generador de nube de palabras que ajusta las palabras (dimensionadas por sus frecuencias) en forma. Los resultados son muy bonitos, pero se demuestra fácilmente que el problema es NP-duro (problema de empaque).

Curiosamente, muchos problemas NP-hard tienen aproximaciones "fáciles". Tagxedo parece estar haciendo un trabajo casi perfecto en muchos casos. Esto lleva a una discusión interesante sobre la implicación práctica de P vs NP, y el tema de la aproximación.


4

Uno de mis amigos pasó un año sabático viendo un partido de béisbol en todos los estadios de grandes ligas de Norteamérica. Sin volar (Él no bastante éxito; tres estadios estaban en construcción de ese año.)


sí, pero ¿estaba tratando de minimizar su consumo de gas? :)
Suresh Venkat

Incluso encontrar un horario factible fue NP-difícil, porque los estadios no están abiertos todos los días (ciclo hamiltoniano con ventanas de tiempo).
Jeffε

4

Debido al éxito de compañías como Uber y Lyft, muchas personas tienen una experiencia directa muy accesible con problemas NP-completos.

Dada una colección de conductores y una lista de personas que desean ser recogidas en distintos momentos, ¿cuál es la asignación más eficiente de pasajeros a los conductores?

Este problema (cuando se reformula adecuadamente) es NPC e imagino que la gente se ha preguntado en algún momento cómo Uber decide emparejar conductores y pasajeros.


3

Usualmente uso SAT como ejemplo. Digo algo así como "todo tipo de problemas que surgen todo el tiempo pueden reescribirse para buscar una verdadera asignación a una fórmula lógica grande. La pregunta P vs NP es si existe una forma fundamentalmente más fácil de resolver esta fórmula lógica que simplemente probando todas las posibilidades. Hasta ahora nadie ha podido encontrar una manera o demostrar que no hay una salida fácil ".


2
No estoy seguro de cuántas personas se encuentran con esto todos los días.
Dave Clarke

3

Un problema Np-complete como Sudoku (en nxn sqaure) es como una herramienta universal que nos permite resolver eficientemente todos los problemas que tienen soluciones verificables de manera eficiente. El único requisito es tener un método eficiente para resolver Sudoku.


2

NP

npjmNPpjkNP-completo en esta situación. Observe que no es necesario que sean bloques, siempre y cuando supongamos que no pueden caerse. Podrían ser pilas de papeles, cajas o platos.

¡Espero que esto ayude!


2

Un ejemplo caprichosamente accesible es una breve presentación de Mark Dominus (vea la publicación de blog relacionada ) llamada "Mi problema NP-Complete favorito", donde la imagen a continuación es el punto de partida de una descripción general de la portada exacta en 3 sets .

Los títulos en la serie de videos incluyen

  • Baile, música y libros
  • Manos, orejas y pies
  • Despierta con Elmo (sobre dormir, vestirte y cepillarte los dientes)
  • Personas en su vecindario (sobre bomberos, socorristas y enfermeras)

La intención clara era que cada video contuviera tres episodios, todos sobre un tema común extraído de un grupo de temas de interés para niños pequeños.

El extraño pato de la serie fue un video sobre "flores, plátanos y ... cabello".

Flores, plátanos y ... cabello.


0

Especialmente cuando observamos el problema de la mochila más adelante, este problema de NP completo podría ser una buena opción:

Adivinación de números, donde solo puede adivinar números individuales hasta que haya acertado.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.