Relación de recurrencia en un problema de asistencia estudiantil

Tengo problemas para entender la solución a un problema de concurso de codificación.

Problema de asistencia del estudiante

Supongamos que la asistencia de un estudiante se registra como una cadena, por ejemplo

PPAPPPPLPPPLPPLLAPPPP

donde las letras representan Presente, Tarde y Ausente. Se otorga una recompensa al estudiante que cumple con los siguientes criterios,

  1. No más de una ausencia.
  2. Sin tres retrasos consecutivos, por ejemplo LLL .

Dado un registro de asistencia de longitud norte , entonces, ¿cuántos récords premiables existen?

por ejemplo, para norte = 2 , solo AAdeja de ser recompensado, de 3 2 posibles cadenas, por lo que la respuesta es 8 .

Solución oficial

La solución oficial intenta construir una relación de recurrencia, comenzando con este diagrama:

ingrese la descripción de la imagen aquí

Explica: Deja F [ norte ] representan el número de casos recompensables para una cadena de longitud norte . Vamos a dividir en dos casos,

  1. Cadenas que terminan en L.
  2. Cadenas que terminan en P. (No sé por qué dice Nen el diagrama; error tipográfico, creo).

Es fácil ver que el segundo caso es recompensable siempre que la pieza que precede a la P, F [ norte 1 ] , es gratificante.

Sin embargo, el Lcaso se debe dividir en cuatro partes, como se muestra. Allí, el autor afirma que la única pieza problemática es la última, que termina la cadena en LLL. Sus palabras exactas son,

De las cuatro combinaciones posibles al final, la cuarta combinación, que termina con un L L al final conduce a una cadena sin recompensa. Pero, dado que hemos considerado solo cadenas recompensables de longitud norte 3 , para que la última cadena sea recompensable en longitud norte 3 e inasignable al fin norte 1 , debe ir precedida de PAG PAG antes de L L .

Por lo tanto, teniendo en cuenta la primera cadena [rama izquierda] nuevamente, todas las cadenas recompensables de longitud norte 1 , excepto las cadenas de longitud norte 4 seguido por PAG L L , puede contribuir a una cadena gratificante de longitud norte . Por lo tanto, esta cadena representa un factor de F [ norte 1 ] F [ norte 4 ] a F [ norte ] .

Así, la relación recurrente se convierte en:

F [ norte ] = 2 F [ norte 1 ] F [ norte 4 ]

Esperaba que alguien pudiera poner esta explicación en sus propias palabras, porque no entiendo las de este autor. Y ya ha cometido varios errores tipográficos en su explicación, así que no estoy seguro de confiar en esta explicación.

Otra cosa que no entiendo es por qué el primero de los cuatro casos no es también problemático, ya que si el norte 5 y norte 4 los caracteres eran L, entonces también tendríamos una cadena no recompensable.

Cualquier sugerencia para desenredar la explicación del autor sería apreciada. Gracias.

PS El autor está ignorando intencionalmente Aen esta etapa, para ser considerado por separado.

Creo que podrías querer decir 8 para norte = 2 puesto que hay 3 norte registros posibles de norte días, y así 9 registros para norte = 1 , y con 1 récord inaceptable, habría 8 aceptables.
Sí, eso es correcto, ¡gracias!
A la fría luz del día todavía soy incapaz de entender el método de este autor. Puede ser que tenga sentido, pero debido a la falta de claridad, parece posible que se haya empleado alguna "falsedad" para que coincida con la respuesta deseada. Sé que soy parcial, pero he hecho algunos de estos tipos de recurrencias y siento que mi método es, con mucho, el más fácil de entender, así que me quedaría con eso por ahora si fuera tú. Con algunos ejemplos más diferentes, es posible que pueda entender a nuestro autor aquí, pero me parece un poco complicado.
Muchas gracias, me pondré en contacto con el autor desde aquí para intentar averiguar qué pretendía transmitir.
FYI esto es equivalente al problema 191 en el proyecto Euler. (Allí se intercambian los roles de L y A) . projecteuler.net/problem=191 Si se molesta en escribir el código para resolver ese problema numéricamente, entonces puede acceder a su foro para ver muchas más recurrencias DIFERENTES que la gente usó para resolver esto. sin embargo, en mi humilde opinión, la respuesta aceptada tiene una de las explicaciones más limpias.

Respuestas (1)

Realmente es mucho más fácil de lo que el autor hace.

Tienes 3 posibles terminaciones mutuamente excluyentes y exhaustivas para secuencias válidas de longitud norte

( longitud de secuencia válida  norte 1 ) PAG
( longitud de secuencia válida  norte 2 ) ES
( longitud de secuencia válida  norte 3 ) PLL

o, en otras palabras

(Respuesta 1) F [ norte ] = F [ norte 1 ] + F [ norte 2 ] + F [ norte 3 ]

con F [ 0 ] = 1 , F [ 1 ] = 2 , F [ 2 ] = 2 2 = 4 .

Pero desde

F [ norte 1 ] = F [ norte 2 ] + F [ norte 3 ] + F [ norte 4 ]

tenemos

(Respuesta 2) F [ norte ] = 2 F [ norte 1 ] F [ norte 4 ]

con el valor inicial adicional F [ 3 ] = 2 2 + 2 + 1 = 7 .


La respuesta general (incluyendo la posibilidad de una ausencia) será

F [ norte ] + k = 1 norte F [ k 1 ] F [ norte k ]

porque hay F [ norte ] secuencias válidas sin ausencia y k = 1 norte F [ k 1 ] F [ norte k ] secuencias con 1 ausencia (la ausencia A puede estar en posiciones k = 1 norte con una secuencia válida de Ps y Ls a ambos lados de la A).

Genial, gracias Esta explicación fue perfectamente clara y la respuesta final coincide con la solución de trabajo. Aún así, ¿pudiste ver si la explicación del autor también era correcta? Pregunto porque comencé a sospechar que estaba mal, y el autor simplemente estaba tratando de encajar su propia explicación para la fórmula de la Respuesta 2 que en realidad copió de otro lugar. No veo cómo su enfoque es correcto.
@AndrewCheong, debo admitir que solo escaneé el método del autor, pero me pareció un poco complicado. Aún así, la respuesta dada está de acuerdo con la mía, por lo que debe ser correcta;) En una inspección más cercana, aunque todavía no estoy seguro, parece que me hizo algo similar, pero ... hmmm ... no, no puedo verlo. Quizá le eche otro vistazo mañana...
Gracias de nuevo por echar un vistazo extra. ¿Dónde puedo encontrar más información sobre por qué es adecuado establecer f[0] = 1? ¿Es esto típico (o una regla) en las relaciones de recurrencia? ¿Quizás relacionado con exponentes que nunca dan como resultado 0?
@AndrewCheong. Es una convención tener una secuencia vacía (a menos que sus condiciones indiquen explícitamente que, por ejemplo, las secuencias deben tener una cierta longitud > 0 ). Configurando F [ 0 ] = 1 podemos calcular F [ 3 ] de la recurrencia F [ 3 ] = F [ 2 ] + F [ 1 ] + F [ 0 ] . El F [ 0 ] cuentas a plazo para la sucesión ( secuencia válida de longitud  0 ) PLL o solo PLL . si empezamos con F [ 1 ] entonces tenemos que declarar F [ 1 ] , F [ 2 ] y F [ 3 ] como condiciones iniciales. pero calculando F [ 3 ] requiere que usemos la recurrencia de todos modos agregando el caso único de PLL a F [ 1 ] + F [ 2 ] .
respuesta muy clara +1 mucho mejor que la respuesta oficial :) o la mayoría de las alternativas en projecteuler.net/problem=191 (un problema equivalente)
@antkam. ¡Muchas gracias por esas amables palabras! Aunque esto tiene más de un año, es gratificante saber que mi respuesta todavía se usa y se aprecia.