Autòmats Finits P26055


Statement
 

pdf   zip

Un autòmat finit és un graf dirigit tal que de cadascun dels vèrtexs (anomenats estats) en surten dos arcs (anomenades transicions), amb etiquetes 𝟶\mathtt{0} i 𝟷\mathtt{1}. Hi ha un estat anomenat inicial. A més, els estats poden ser d’acceptació o de rebuig. Per exemple, a l’autòmat

l’estat inicial és el 0, i hi ha un únic estat d’acceptació, el 4.

Donada una paraula amb zeros i uns, l’autòmat accepta la paraula si, des de l’estat inicial, llegint la paraula d’esquerra a dreta i saltant d’estat a estat seguint la transició del símbol actual, al final s’acaba en un estat d’acceptació.

Per exemple, considerem la paraula 𝟶𝟷𝟶𝟶\mathtt{0100}: comencem al 𝟎\mathbf{0}, amb el 𝟶\mathtt{0} anem a 𝟏\mathbf{1}, amb el 𝟷\mathtt{1} anem a 𝟐\mathbf{2}, amb el 𝟶\mathtt{0} anem a 𝟑\mathbf{3}, i finalment amb el 𝟶\mathtt{0} acabem a 𝟒\mathbf{4}, que és d’acceptació, així que la paraula és acceptada. En canvi, tots els prefixos de 𝟶𝟷𝟶𝟶\mathtt{0100} (això és, la paraula buida, 𝟶\mathtt{0}, 𝟶𝟷\mathtt{01} i 𝟶𝟷𝟶\mathtt{010}) són rebutjats, perquè després de llegir-los l’estat al que s’acaba és de rebuig. De fet, 𝟶𝟷𝟶𝟶\mathtt{0100} és la paraula més curta de les acceptades per aquest autòmat (que són precisament totes les que contenen 𝟶𝟷𝟶𝟶\mathtt{0100}).

Donat un autòmat finit, podeu determinar la paraula més curta acceptada (si n’hi ha cap)?

Entrada

L’entrada consisteix en diversos casos. Cada cas comença amb el nombre d’estats nn, els quals es representen amb nombres entre 0 i n1n - 1. A continuació vénen nn parells s0s_0 s1s_1, un per a cada estat 0i<n0 \le i < n, indicant una transició entre ii i s0s_0 etiquetada amb un 𝟶\mathtt{0}, i una transició entre ii i s1s_1 etiquetada amb un 𝟷\mathtt{1}, respectivament. Finalment ve una paraula amb nn caràcters, que indiquen per a cada estat 0, …, n1n-1 si és d’acceptació ‘A’ o de rebuig ‘R’. Assumiu 2n1042 \le n \le 10^4, que l’estat inicial sempre és el 𝟎\mathbf{0}, que sempre serà de rebuig, i que almenys hi ha un estat d’acceptació.

Sortida

Per cada cas, escriviu la paraula més curta acceptada per l’autòmat. En cas d’empat, trieu la paraula lexicogràficament més petita. Si no n’hi ha cap, escriviu “no”.

Public test cases
  • Input

    5  1 0  1 2  3 0  4 2  4 4
    RRRRA
    2  1 1  1 1
    RA
    3  0 0  2 2  2 2
    RRA
    3  1 2  1 1  2 2
    RRA
    4  1 2  3 3  3 0  3 3
    RRRA
    4  1 2  1 3  3 2  3 3
    RAAR
    

    Output

    0100
    0
    no
    1
    00
    0
    
  • Information
    Author
    Enric Rodriguez
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++