Hay una solución general agradable y fácil de calcular para problemas como este. No se necesita simulación. No se necesitan algoritmos sofisticados.
- Construya la matriz de transición de estado para el modelo de Markov para el tablero en cuestión. Cada fila corresponde a un cuadrado en el que permanecerías encendido. Coloque el primer cuadrado en la primera fila y el último cuadrado en la última fila. Por conveniencia, probablemente solo ponga el cuadrado n en la fila n. Cada fila contendrá hasta 6 valores distintos de cero, todos iguales a 1/6, en la columna correspondiente al estado en el que terminaría una tirada de dado particular (con la excepción del estado de absorción, que para el cuadrado 100, que va a ser eliminado en el siguiente paso de todos modos). Puede dejar como todos ceros los cuadrados en los que no puede aterrizar (aquellos que contienen el inicio de una rampa o escalera), o eliminar sus filas y columnas de la matriz por completo.
- Eliminar la última fila y columna. Lo que queda es tu matriz transitoria. Llámalo Q.
- Calcule [matemáticas] (IQ) ^ {- 1} [/ matemáticas] con su sistema de álgebra de computadora favorito.
- Sume las entradas en la primera fila de la matriz resultante. Este es el conteo de turnos esperado deseado desde el primer cuadrado.
Para leer más sobre la distribución discreta de tipo de fase, mira aquí: Distribución discreta de tipo de fase – Wikipedia
Y para este método de encontrar el tiempo de absorción: número esperado de pasos entre estados en una cadena de Markov
- ¿Cómo podemos dividir un conjunto dado de números (posiblemente negativos) en dos partes que tienen el mismo promedio?
- ¿Cuál es la mejor manera de ordenar una matriz de objetos en javascript?
- ¿Qué es un código de clasificación?
- ¿Qué haces si la resolución de un problema de algoritmo lleva demasiado tiempo?
- ¿Cómo funciona la búsqueda 'YouTube'? ¿Cómo te señala con precisión una canción con solo unas pocas palabras de la letra?
Pasé un cuarto de hora construyendo la matriz transitoria para la imagen de ejemplo provista y obtuve un número esperado de vueltas de 23.77. Que esto esté tan cerca del resultado de la simulación monte carlo de Ravi Reddy me da la confianza de que no cometí errores al construir la matriz. (La diferencia probablemente proviene de mi suposición de que la cabeza de serpiente que asumió tenía 89 años, dije que tenía 99). Además, este análisis solo cuenta el número de tiradas de dado necesarias. Tendría que modificar la matriz que solía dar cuenta del número esperado de vueltas necesarias. Dicha matriz sería mucho más grande y probablemente necesitaría construirla programáticamente, algo para lo que no tengo tiempo hoy.