Nunca aprendí lo que es la cadena de markov, pero buscando en google parece que si hay estados finitos y cada estado tiene probabilidades de saltar a otros estados, puedo usar la cadena de markov.
Lo que estoy haciendo es http://projecteuler.net/problem=227 la persecución.
"The Chase" es un juego que se juega con dos dados y un número par de jugadores.
Los jugadores se sientan alrededor de una mesa; el juego comienza con dos jugadores jugadores opuestos con un dado cada uno. En cada turno, los dos jugadores con un dado tiran el dado. Si un jugador saca un 1, pasa el dado a su vecino de la izquierda. Si un jugador saca un 1, pasa el dado a su vecino de la izquierda; si saca un 6, pasa el dado a su vecino de la derecha; en caso contrario, se queda con el dado. derecha; en caso contrario, se queda con el dado para el siguiente turno. El juego termina cuando un jugador tiene los dos dados después de haberlos lanzado y pasado; Ese jugador ha perdido entonces.
En una partida con 100 jugadores, ¿cuál es el número esperado de turnos que el juego dura?
Indique su respuesta redondeada a diez dígitos significativos.
N personas se sientan alrededor de una mesa, así que las nombro 1, 2 ... 100 en el sentido de las agujas del reloj (o en sentido contrario, lo que no importa) la persona 1 y 51 tienen los dados al principio.
A partir de la descripción, dadas N personas, el estado (A, B) es que la persona A y la persona B tienen dados. Pueden pasar al estado(A+1, B), estado(A, B+1), estado(A+1, B+1) ... estado(A-1, B-1). Hay 8 estados distintos en los que al menos un dado cambia de propietario. Puedo calcular todos los estados siguientes y las probabilidades de los mismos para cada estado.
digamos que la probabilidad (a, b) es la probabilidad de terminar un juego si la persona a y b tiene los dados. si a=b, que es condición del juego para terminar, la probabilidad (a, b) = 1. si no a=b, hice una función para encontrar la probabilidad :
si a=b entonces devuelve 1.
si no a=b,
for each next-state from (a, b): add up (probability of moving to a next-state)*(probability of ending game in that state)
por lo que esta función buscará recursivamente si el juego puede terminar en ese estado.
Mi preocupación es que la función anterior podría entrar en una recursión interminable. por ejemplo -
empiezo con (1, 10) -> a partir de este estado el juego no se puede hacer en un turno, así que busco -- (0, 10), (2, 11) ... Sigo buscando hasta dar con (a, b) que a=b. digamos que estoy en medio de la búsqueda, terminé en (4, 5) y el juego puede terminarse en (5, 5). pasar de (4, 5) a (5, 5) tiene una probabilidad P. pero para una probabilidad (1-P), tengo que seguir buscando.
Creo que hay algo que me falta sobre las probabilidades o realmente no sé sobre la cadena de markov. Cualquier ayuda será apreciada.