JFiZO - Zadanie 11.006

Pokazać, że jeśli L\subseteq \Sigma^* jest regularny, to Lustro(L)=\{wv^R\in \Sigma^* : wv\in L\} też jest.

Niech A=(Q_A, \Sigma, \delta_A, q^A_0, F_A) będzie DFA takim, że, L(A)=L. Skonstruujemy sobie NFA B rozpoznający Lustro(L).

Q_B=Q_A\times 2^{Q_A}\times\{0,1\} - oznacza to trójki złożone ze stanu A, ze stanu odwróconego A (podzbioru Q_A) i jednej flagi. Odwrócony A to NFA powstały przez odwrócenie strzałek (funkcja przejścia staje się relacją). Flagę będziemy czytać jako „czy przekroczyłeś już granicę w|v”.

q^B_0=\langle q^A_0, F_A, 0\rangle

Zasada działania jest taka, że czytamy literki i przesuwamy się po lewej współrzędnej do pewnego miejsca (czyli wczytujemy w), w pewnym momencie przełączamy flagę (tylko raz; odpowiedni moment dostajemy od tego… jak go JMA nazywa? adwokata? sędziego? wyroczni?) i zaczynamy jechać po drugiej współrzędnej, czytając literki w odwrotnej kolejności niż by to było w L (co odpowiada v^R). W momencie, gdy nasze współrzędne się spotkają (lewa będzie należeć do drugiej), mamy stan akceptujący.

Formalniej:

\delta_B(\langle q, R, 0 \rangle, a) = \{\langle\delta_A(q,a),R,0\rangle\}\cup \{\langle q, \{p\in Q_A : \delta_A(p,a)\in R\}, 1\rangle\},

\delta_B(\langle q, R, 1 \rangle, a) = \{\langle q, \{p\in Q_A : \delta_A(p,a)\in R\}, 1\rangle\},

F_B = \{\langle q, R, \_\rangle : q \in R\}.