Autòmats finits deterministes X52431


Statement
 

pdf   zip

Donat un autòmat finit determinista sobre l’alfabet binari i un nombre natural mm, volem calcular el nombre de paraules de longitud 00, 11, 22, ..., mm acceptades per l’autòmat.

Per exemple, considerem l’autòmat següent:

Hi ha tres estats 00, 11 i 22, dels quals només l’estat 00 és d’acceptació. L’estat 00 és també l’estat inicial.

Aleshores:

  • De longitud 00 hi ha una única paraula acceptada, la paraula buida.

  • De longitud 11 només s’accepta la paraula 00.

  • De longitud 22 només s’accepten les paraules 0000 i 1111.

  • De longitud 33 només s’accepten les paraules 000000, 011011 i 110110.

  • De longitud 44 només s’accepten les paraules 00000000, 00110011, 01100110, 10011001, 11001100 i 11111111.

(de fet, es pot veure que el llenguatge d’aquest autòmat són els múltiples de 33, representats en binari)

De manera que si m=4m=4 aleshores la sortida hauria de consistir en els nombres 11, 11, 22, 33, 66.

Entrada

L’entrada comença amb nn, el nombre d’estats de l’autòmat finit, que es representen amb nombres naturals entre 00 i n1n-1. A continuació es descriu la funció de transició δ\delta de l’autòmat: en primer lloc vénen nn nombres, corresponents a les imatges dels estats amb el símbol 00: δ(0,0)\delta(0, 0), δ(1,0)\delta(1, 0), …, δ(n1,0)\delta(n-1, 0). Després vénen un altres nn nombres, corresponents a les imatges dels estats amb el símbol 11: δ(0,1)\delta(0, 1), δ(1,1)\delta(1, 1), …, δ(n1,1)\delta(n-1, 1). A continuació vénen nn zeros i uns, que indiquen per cada estat 00, …, n1n-1 si és d’acceptació (1) o no (0). L’estat inicial sempre és l’estat 0. Finalment l’entrada acaba amb el nombre mm, la màxima longitud que es vol considerar.

Sortida

Per cada valor ll entre 00 i mm, escriviu el nombre de paraules acceptades per l’autòmat de longitud ll. Es garanteix que tots els nombres són més petits que 10910^{9}.

Observació

Resoleu aquest problema amb programació dinàmica.

Public test cases
  • Input

    3
    0 2 1
    1 0 2
    1 0 0
    6
    

    Output

    1
    1
    2
    3
    6
    11
    22
    
  • Input

    1
    0
    0
    1
    6
    

    Output

    1
    2
    4
    8
    16
    32
    64
    
  • Information
    Author
    Enric Rodríguez
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++ Python