Algunos acertijos famosos en la lista de los acertijos informáticos clásicos son:
- Filósofos gastronómicos ( concurrencia y puntos muertos)
- Cinco filósofos se sientan alrededor de una mesa circular. Delante de cada filósofo hay un gran plato de arroz. Los filósofos alternan su tiempo entre comer y pensar. Hay un palillo entre cada filósofo, a su derecha e izquierda inmediatas. Para comer, un filósofo dado necesita usar ambos palillos. ¿Cómo puedes asegurar que todos los filósofos puedan comer de manera confiable sin morir de hambre?
- ¿Cómo resolver? Hay varias soluciones que van desde el mismo emisor de problemas, Edsger W. Dijkstra, hasta otras respuestas arbitrarias.
- Vendedor ambulante ( P = NP)
- Un vendedor tiene una ruta de ciudades que componen su ritmo. ¿Cuál es la ruta de ventas más eficiente que visita cada ciudad exactamente una vez y luego regresa a la ciudad de origen?
- Tenemos heurísticas, pero aún se desconoce si se puede resolver con un algoritmo de tiempo polinómico.
- Ocho reinas ( diseño de algoritmo)
- Dadas ocho reinas en un tablero de ajedrez estándar de 8 x 8, ¿cuántas posiciones únicas, excluidas las rotaciones y las imágenes especulares, pueden ocupar esas ocho reinas sin atacarse entre sí?
- Solución: El retroceso es uno, se ramifica y se une a otro.
- Dos generales ( protocolos de comunicación)
- Dos ejércitos, cada uno dirigido por un general, se están preparando para atacar una ciudad. Los ejércitos están acampados fuera de la ciudad en dos montañas separadas por un gran valle. Para capturar la ciudad, los generales deben atacar exactamente al mismo tiempo. La única forma para que los generales se comuniquen es enviando mensajeros a través del valle. Desafortunadamente, el valle está ocupado por los defensores de la ciudad, por lo que existe la posibilidad de que cualquier mensajero sea capturado. Cada general no tiene forma de saber si llegó su mensajero. ¿Cómo coordinan los generales su ataque?
- Torres de Hanoi ( recursión)
- Tiene una pila de discos, de mayor a menor, que se deslizan hasta la primera clavija de un tablero de tres clavijas. Su objetivo es mover toda la pila de discos de la primera clavija a la tercera clavija. Sin embargo, solo puede mover el disco superior de cualquier clavija, y los discos más pequeños siempre deben colocarse en discos más grandes. ¿Cuántos movimientos tomará?
- Respuesta: Para los discos [matemática] n [/ matemática], tenemos [matemática] 2 ^ n-1 [/ matemática] pasos / movimientos para resolver, lo que se puede hacer utilizando la recursividad.
Fuente: Puzzles clásicos de informática
Un libro realmente bueno es The Science of Programming de David Gries en el que discute varias ideas detrás de los rompecabezas de Dijkstra y otras ideas clásicas de rompecabezas. Por ejemplo esto: Un clásico rompecabezas combinatorio:
Una bolsa contiene algunas bolas blancas y negras. El siguiente proceso se repetirá el mayor tiempo posible (suponiendo que tengamos un suministro infinito de bolas blancas y negras).
- Cómo resolver un problema de rompecabezas de alto nivel
- ¿Cómo debo lubricar mi cubo Guanlong Rubiks?
- ¿Hay algún beneficio de resolver el cubo de Rubik usando un algoritmo?
- ¿Cuáles son los ejemplos de algunos rompecabezas cortos épicos y preguntas con trucos?
- ¿Hay algún algoritmo que pueda resolver un cubo de Rubik desde cualquier estado codificado? ¿Y si si, que?
- Seleccione al azar dos bolas de la bolsa. Si son del mismo color, tíralos, pero coloca una bola negra extra.
- Si son de diferentes colores, vuelva a colocar el blanco en la bolsa y deseche el negro.
Intenta resolverlo, es mucho más simple cuando lo haces en papel.