
En informática y matemáticas , el problema de Josefo (o permutación de Josefo ) es un problema teórico relacionado con un determinado juego de conteo . Estos juegos se utilizan para seleccionar a una persona de un grupo, por ejemplo, eeny, meeny, miny, moe .

En el juego de conteo que da origen al problema de Josefo, varias personas se encuentran en círculo esperando ser ejecutadas. El conteo comienza en un punto específico del círculo y continúa alrededor del mismo en una dirección determinada. Después de que se salta un número determinado de personas, se ejecuta a la siguiente. El procedimiento se repite con las personas restantes, comenzando con la siguiente, siguiendo la misma dirección y saltándose el mismo número de personas, hasta que solo queda una, quien es liberada.
El problema —dado el número de personas, el punto de partida, la dirección y el número que se debe omitir— es elegir la posición en el círculo inicial para evitar la ejecución.
Historia
El problema recibe su nombre de Flavio Josefo , historiador y líder judío que vivió en el siglo I. Según el relato de primera mano de Josefo sobre el asedio de Yodfat , él y sus 40 soldados quedaron atrapados en una cueva por soldados romanos . Prefirieron suicidarse antes que ser capturados y optaron por un método de suicidio en serie mediante sorteo. Josefo afirma que, por suerte o posiblemente por intervención divina, él y otro hombre permanecieron hasta el final y se rindieron a los romanos en lugar de quitarse la vida. Esta es la historia que se narra en el Libro 3, Capítulo 8, parte 7 de La guerra judía de Josefo ( escrita en tercera persona ).
Sin embargo, en esta extrema angustia, no careció de su sagacidad habitual; sino que, confiando en la providencia de Dios, puso su vida en riesgo [de la siguiente manera]: «Y ahora», dijo, «puesto que está resuelto entre vosotros que vais a morir, venid, dejemos nuestras muertes mutuas a determinar por sorteo. Aquel a quien le toque la primera suerte, que sea asesinado por aquel a quien le toque la segunda, y así la fortuna seguirá su curso entre todos nosotros; y ninguno de nosotros perecerá por su propia mano derecha, pues sería injusto que, cuando los demás hayan muerto, alguien se arrepienta y se salve». Esta propuesta les pareció muy justa; y cuando los convenció de decidir este asunto por sorteo, echó una de las suertes para sí mismo también. Aquel a quien le tocó la primera suerte le ofreció su cuello a aquel a quien le tocó la siguiente, suponiendo que el general moriría entre ellos inmediatamente; pues pensaban que la muerte, si Josefo pudiera morir con ellos, era más dulce que la vida; Sin embargo, él, junto con otro, quedó hasta el final, ya sea por casualidad o por la providencia divina. Y como deseaba fervientemente no ser condenado por el azar, ni, de haber quedado hasta el final, mancharse la mano derecha con la sangre de sus compatriotas, lo persuadió para que le confiara su fidelidad y viviera tan bien como él.
— Josefo s.f. , pág. 579, Guerras de los judíos, Libro III, Cap. 8, párr. 7
Los detalles del mecanismo utilizado en esta hazaña son bastante vagos. Según James Dowdy y Michael Mays, [ 2 ] en 1612 Claude Gaspard Bachet de Méziriac sugirió el mecanismo específico de disponer a los hombres en círculo y contar de tres en tres para determinar el orden de eliminación. [ 3 ] Esta historia se ha repetido a menudo y los detalles específicos varían considerablemente de una fuente a otra. Por ejemplo, Israel Nathan Herstein e Irving Kaplansky (1974) presentan a Josefo y 39 compañeros de pie en círculo, con cada séptimo hombre eliminado. [ 4 ] Una historia del problema se puede encontrar en la Carta al editor de SL Zabell del Fibonacci Quarterly . [ 5 ]
En cuanto a la intencionalidad, Josefo preguntó: "¿Debemos atribuirlo a la providencia divina o simplemente a la suerte?" [ 6 ] Pero el manuscrito eslavo de Josefo que se conserva cuenta una historia diferente: que "contó los números astutamente y así logró engañar a todos los demás". [ 6 ] [ 7 ] Josefo tenía un cómplice; el problema era entonces encontrar los lugares de los dos últimos supervivientes (cuya conspiración aseguraría su supervivencia). Se alega que se colocó a sí mismo y al otro hombre en el puesto 31 y 16 respectivamente (para k = 3 más adelante). [ 8 ]
Variantes y generalizaciones

Una versión medieval del problema de Josefo plantea la situación de 15 turcos y 15 cristianos a bordo de un barco durante una tormenta, que se hundirá a menos que la mitad de los pasajeros sean arrojados por la borda. Los 30 se colocan en círculo y cada novena persona debe ser arrojada al mar. Los cristianos deben determinar dónde colocarse para asegurarse de que solo los turcos sean arrojados. [ 9 ] En otras versiones, los roles de turcos y cristianos se intercambian.
Graham, Knuth y Patashnik 1989 , p. 8 describen y estudian una variante "estándar": Determinar dónde se encuentra el último superviviente si hay n personas al principio y cada segunda persona ( k = 2 a continuación) es eliminada.
Una generalización de este problema es la siguiente. Se supone que cada m -ésima persona será ejecutada de un grupo de tamaño n , en el que la p -ésima persona es la superviviente. Si se añaden x personas al círculo, entonces la superviviente está en la p + mx -ésima posición si esta es menor o igual que n + x . Si x es el valor más pequeño para el cual p + mx > n + x , entonces la superviviente está en la posición ( p + mx ) − ( n + x ) . [ 10 ]
Solución

A continuación,denota el número de personas en el círculo inicial, ydenota el recuento para cada paso, es decir,Se omiten personas y el-th se ejecuta. Las personas en el círculo están numeradas desdea, siendo la posición de partiday que el recuento sea inclusivo .
k = 2
El problema se resuelve explícitamente cuando una de cada dos personas muere (cada persona mata a la persona que está a su izquierda o derecha), es decir. (Para el caso más general(A continuación se describe una solución). La solución se expresa recursivamente . Seadenotan la posición del superviviente cuando inicialmente hay n personas (y). La primera vuelta al círculo, mueren todas las personas con número par . La segunda vuelta al círculo, muere la nueva segunda persona, luego la nueva cuarta persona, etc.; es como si no hubiera habido una primera vuelta al círculo.
Si el número inicial de personas era par, entonces la persona en la posición x durante la segunda vuelta al círculo estaba originalmente en la posición(para cada elección de x ). SeaLa persona enquien ahora sobrevivirá estaba originalmente en posiciónEsto produce la recurrencia
Si el número inicial de personas era impar , entonces se puede pensar que la persona 1 muere al final de la primera vuelta al círculo. Nuevamente, durante la segunda vuelta al círculo, muere la nueva 2.ª persona, luego la nueva 4.ª persona, etc. En este caso, la persona en la posición x estaba originalmente en la posiciónEsto produce la recurrencia
Cuando se tabulan los valores deySe observa un patrón ( OEIS : A006257 , también la columna de números azules más a la izquierda en la figura anterior):
Esto sugiere quees una secuencia extraña creciente que se reinicia consiempre que el índice n sea una potencia de 2. Por lo tanto, si m y l se eligen de manera quey, entonces. Es evidente que los valores de la tabla satisfacen esta ecuación. O se puede pensar que después de que l personas mueren, solo quedan l.gente, y va a laprimera persona. Esta persona debe ser la superviviente. EntoncesA continuación se presenta una demostración por inducción .
Teorema: Siy, entonces.
Prueba: Se utiliza la inducción fuerte sobre n . El caso baseEs cierto. Los casos se consideran por separado cuando n es par y cuando n es impar.
Si n es par, entonces eligeyde tal manera quey. Tenga en cuenta que.se tiene donde la segunda igualdad se deduce de la hipótesis de inducción.
Si n es impar, entonces eligeyde tal manera quey. Tenga en cuenta que.se tiene donde la segunda igualdad se deduce de la hipótesis de inducción. Esto completa la demostración.
l se puede resolver para obtener una expresión explícita para:
La forma más elegante de la respuesta implica la representación binaria de tamaño n :se puede obtener mediante un desplazamiento cíclico a la izquierda de un bit de n mismo. Si n se representa en binario como, entonces la solución viene dada por. La prueba de esto se deduce de la representación de n comoo de la expresión anterior para.
Implementación: Si n denota el número de personas, la posición segura viene dada por la función, dónde y.
Ahora bien, si el número se representa en formato binario, el primer bit indicay los bits restantes denotarán l . Por ejemplo, cuando , su representación binaria es
n = 1 0 1 0 0 1 2 m = 1 0 0 0 0 0 l = 0 1 0 0 1
/** * @param n el número de personas que se encuentran en el círculo * @return la posición segura que sobrevivirá a la ejecución * f(N) = 2L + 1 donde N = 2^M + L y 0 <= L < 2^M */ public int getSafePosition ( int n ) { // encuentra el valor de L para la ecuación int valueOfL = n - Integer . highestOneBit ( n ); return 2 * valueOfL + 1 ; }Bitwise
La forma más sencilla de encontrar la posición segura es mediante operadores bit a bit . En este enfoque, desplazar el bit más significativo de n al bit menos significativo devolverá la posición segura. [ 11 ] La entrada debe ser un entero positivo .
n = 1 0 1 0 0 1 f(n) = 0 1 0 0 1 1
/** * @param n (41) el número de personas que se encuentran en el círculo * @return la posición segura que sobrevivirá a la ejecución */ public int getSafePosition ( int n ) { return ~ Integer . highestOneBit ( n * 2 ) & (( n << 1 ) | 1 ); // ---------------------- --- | ------------ // Obtener el primer bit activado | | Desplazar n a la izquierda y voltear el último bit // y tomar su complemento | | // | | // Multiplicar n por 2 | // AND bit a bit para copiar los bits que existen en ambos operandos. }k = 3
En 1997, Lorenz Halbeisen y Norbert Hungerbühler descubrieron una forma cerrada para el casoDemostraron que existe una cierta constante.
que se puede calcular con precisión arbitraria. Dada esta constante, elija m como el mayor entero tal que(esto será oo). Entonces, el último superviviente es
- si se redondea hacia arriba de lo contrario
a pesar de.
Como ejemplo de cálculo, Halbeisen y Hungerbühler dan(que en realidad es la formulación original del problema de Josefo). Calculan:
- y por lo tanto
- (tenga en cuenta que este valor se ha redondeado a la baja)
Esto se puede verificar observando cada pasada sucesiva sobre los números.1 a41 :
- 1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, 32, 34, 35, 37, 38, 40, 41
- 2, 4, 7, 8, 11, 13, 16, 17, 20, 22, 25, 26, 29, 31, 34, 35, 38, 40
- 2, 4, 8, 11, 16, 17, 22, 25, 29, 31, 35, 38
- 2, 4, 11, 16, 22, 25, 31, 35
- 2, 4, 16, 22, 31, 35
- 4, 16, 31, 35
- 16, 31
- 31
El caso general
La programación dinámica se utiliza para resolver este problema en el caso general realizando el primer paso y luego utilizando la solución del problema restante. Cuando el índice comienza desde uno, entonces la persona encambia desde la primera persona está en posicióndonde n es el número total de personas. Seadenotan la posición del superviviente. Después de laLa persona número -es asesinada, un círculo depermanece, y el siguiente conteo se inicia con la persona cuyo número en el problema original era. La posición del superviviente en el círculo restante seríasi el conteo se inicia en; cambiando esto para tener en cuenta el hecho de que el punto de partida esproduce la recurrencia [ 12 ] que adopta la forma más sencilla si las posiciones están numeradas desdeaen cambio.
Este enfoque tiene tiempo de ejecuciónpero para los pequeñosy grandeExiste otro enfoque. El segundo enfoque también utiliza programación dinámica, pero tiene un tiempo de ejecución.. Se basa en considerar matar al k -ésimo, 2k - ésimo, ...,-personas como un paso, luego cambiando la numeración.
Este enfoque mejorado toma la forma
Véase también
Referencias
Citas
- ↑ R.Ugalde, Laurence. "El problema de Josefo en el lenguaje de programación Fōrmulæ" . Fōrmulæ . Consultado el 26 de julio de 2021 .
- ↑ Dowdy y Mays 1989 , pág. 125.
- ↑ Bachet 1612 , pág. 174.
- ↑ Herstein y Kaplansky 1974 , págs. 121–126.
- ↑ Zabell 1976 , págs. 48, 51.
- 1 2 Cohen, Richard. Haciendo historia: Los narradores que moldearon el pasado , pág. 54 (Simon & Schuster 2022).
- ↑ Hailperin, Max; Kaiser, Barbara; Knight, Karl (1999). "3.5 Una aplicación: El problema de Josefo" (PDF) . Abstracciones concretas: Una introducción a la informática con Scheme . Brooks/Cole Publishing Company. págs. 65–67 .
- ↑ Rouse Ball 1905 , pág. 19.
- ↑ Newman 1988 , págs. 2403–2405.
- ↑ Robinson 1960 , págs. 47–52.
- ↑ "Problema de Josefo usando operaciones bit a bit (Java)" . GitHub . 7 de enero de 2018. Consultado el 7 de enero de 2018 .
- ↑ Parque & Teixeira 2018 , págs. 1–7.
Fuentes
- Bachet, CG (1612). Problemes Plaisants ed Delectables qui se font par les Nombres (en francés).
- Graham, RL ; Knuth, DE ; Patashnik, O. (1989). Matemáticas concretas: Fundamentos para la informática . Addison Wesley. ISBN 978-0-201-14236-5.
- Herstein, IN; Kaplansky, I. (1974). Asuntos matemáticos . Harper and Row. ISBN 9780060428037.
- Josefo, Flavio (s.f.). Obras de Flavio Josefo: en tres volúmenes; con ilustraciones . Traducido por William Whiston. Londres: George Routledge & Sons.
- Newman, JR (1988). El mundo de las matemáticas . Vol. 4. Tempus.
- Park, Jang-Woo; Teixeira, Ricardo (2018). "Problema de ejecución serial de Josefo". Korean J. Math . 26 (1): 1– 7. doi : 10.11568/kjm.2018.26.1.1 .
- Robinson, WJ (1960). "El problema de Josefo". Math . Gaz . 44 (347): 47– 52. doi : 10.2307/3608532 . JSTOR 3608532. S2CID 125735054 .
- Rouse Ball, WW (1905). Recreaciones y ensayos matemáticos (2.ª ed.). Londres: Macmillan.
- Zabell, SL (1976). "Carta al editor" (PDF) . Fibonacci Quarterly . 14 : 48–51 . doi : 10.1080/00150517.1976.12430596 .
Lecturas adicionales
- Cormen, Thomas H.; Leiserson , Charles E .; Rivest, Ronald L .; Stein, Clifford (2001). «Capítulo 14: Ampliación de estructuras de datos». Introducción a los algoritmos (Segunda edición). MIT Press y McGraw-Hill. pág. 318. ISBN 0-262-03293-7.
- Dowdy, James; Mays, Michael E. (1989). "Permutaciones de Josefo" . Journal of Combinatorial Mathematics and Combinatorial Computing . 6 : 125–130 .
- Halbeisen, L.; Hungerbühler, N. (1997). "El problema de Josefo" . J. Théor. Nombres Burdeos . 9 (2): 303– 318. doi : 10.5802/jtnb.204 .
- Jakóbczyk, F. (1973). "Sobre el problema generalizado de Josefo" . Glasow Math. J. 14 ( 2): 168– 173. doi : 10.1017/S0017089500001919 . S2CID 122980022 .
- Lloyd, Errol L. (1983). "Un algoritmo O(n log m) para el problema de Josefo". J. Algor . 4 (3): 262– 270. doi : 10.1016/0196-6774(83)90025-1 .
- Mount, John (11 de octubre de 2024). "Dudeney's Catching The Mice Puzzle" . Blog de Win Vector . Win Vector LLC . Recuperado el 12 de octubre de 2024 .
- Odlyzko, Andrew M.; Wilf, Herbert S. (1991). "Iteración funcional y el problema de Josefo" . Glasgow Math. J. 33 ( 2): 235– 240. doi : 10.1017/S0017089500008272 . S2CID 123160551 .
- Ruskey, Frank; Williams, Aaron (2010). "El problema felino de Josefo". Lect. Not. Comp. Sci . Lecture Notes in Computer Science. Vol. 6099. pp. 343–354 . Bibcode : 2010LNCS.6099..343R . doi : 10.1007/978-3-642-13122-6_33 . ISBN 978-3-642-13121-9.DIVERSIÓN 2010
- Ruskey, Frank; Williams, Aaron (2012). "El problema felino de Josefo". Theory Comput. Syst . 50 : 20–34 . CiteSeerX 10.1.1.157.2956 . doi : 10.1007/s00224-011-9343-6 . S2CID 2273820 .
- Sullivan, Shaun; Insko, Erik (2018). "Una variante del problema del felino Josefo". arXiv : 1803.11340 [ matemáticas.CO ].
- Theriault, Nicolas (2001). "Generilizaciones del problema de Josefo". Útil. Matemáticas. (58): 161– 173. CiteSeerX 10.1.1.164.2015 .
- Woodhouse, David (1973). "El problema extendido de Josefo". Rev. Mat. Hisp.-Amer . 33 (4): 207– 218.
Enlaces externos
- Juego de Josefo Flavio (Applet de Java) en cut-the-knot que permite la selección de cada n de 50 (máximo).
- Weisstein, Eric W. "El problema de Josefo" . MundoMatemático .
- El problema de Josefo - Numberphile en YouTube
- Problema generalizado de Josefo
- Combinatoria
- Problemas computacionales
- Josefo
- Problemas matemáticos
- Permutaciones