✖

Minimering af automat

Ved minimering af en automat forstår vi at finde en ækvivalent automat, som indeholder det mindst mulige antal tilstande. Selv en automat, der ikke indeholder nogen overflødig tilstand, kan forenkles yderligere.

Eksempel

Lad os tage denne automat:

Automaten accepterer kun ordene 01 og 11. Det er samtidig tydeligt, at der findes en enklere automat med tre tilstande, som accepterer det samme sprog. Tilstandene q1 og q2 kan slås sammen til én ny tilstand {q1, q2}, og de overgange, der førte til tilstandene q1 eller q2, vil føre til den nye tilstand, og det samme gælder for overgange, der udgår fra q1 og q2. Vi får denne automat:

Denne automat accepterer åbenlyst det samme sprog som den foregående og har samtidig færre tilstande.

Ækvivalens af tilstande

Vi har en automat A = ⟨Q, Σ, δ, q0, F⟩. Vi definerer sproget for tilstanden q ∈ Q, som vi betegner L(q), således

L(q)=L(⟨Q,Σ,δ,q,F⟩)

Det vil sige, at vi ændrer automatens A starttilstand fra q0 til q og bestemmer det sprog, som denne automat accepterer. Med andre ord er alle ord w i sproget L(q) sådan, at vi i automaten A kommer fra tilstanden q til en accepttilstand i automaten for ordet w. Hvis vi vender tilbage til den foregående automat, så er L(q1) = {1}.

Vi siger, at to forskellige tilstande q1 og q2 er ækvivalente, hvis

L(q1)=L(q2)

Hvad betyder det? Hvis tilstandene q1, q2 er ækvivalente, så vil de, hvis vi gør dem til automatens starttilstande, generere det samme sprog. Med andre ord: hvis automaten kommer i konfigurationen ⟨q1, w⟩ og ⟨q2, w⟩, så skal den enten acceptere i begge tilfælde eller afvise i begge tilfælde.

Hvis vi vender tilbage til den foregående automat: tilstandene q1 og q2 er ækvivalente, for hvis vi er i tilstanden q1, kan vi kun acceptere inputordet, hvis den endnu ikke læste del af ordet er lig med 1. Det samme gælder, hvis vi er i tilstanden q2.

Ved minimering af en automat handler det altså om at finde ækvivalente tilstande og fjerne dem ved at slå dem sammen til én ny tilstand, ligesom vi gjorde i eksemplet ovenfor.

Sådan finder du ækvivalente tilstande

Hvilke tilstande er helt sikkert ikke ækvivalente? Hvis vi tager en accepttilstand og en ikke-accepterende tilstand, er de helt sikkert ikke ækvivalente, fordi sproget for accepttilstanden er forskelligt fra sproget for den ikke-accepterende tilstand — en accepttilstand accepterer helt sikkert ordet ε, en ikke-accepterende tilstand gør ikke. Vi viser fremgangsmåden direkte på et eksempel. Vi ser på denne automat:

Vi begynder med at danne to mængder af tilstande

S1=F={q3,q6},S2=Q∖F={q0,q1,q2,q4,q5}.

Nu danner vi en overgangstabel og bevarer oplysningen om grupperne S1 og S2:

gruppetilstand01S1q3q5q4q6——S2q0q1q2q1—q3q2—q3q4q6—q5q6—

Nu ændrer vi tabellen, så vi i stedet for direkte at skrive, hvilke tilstande man kommer til for det pågældende symbol, kun noterer den gruppe, vi går over til. Fra tilstanden q3 kommer vi for 0 for eksempel til tilstanden q5, som er i gruppen S2. I stedet for q5 skriver vi derfor S2 i tabellen:

gruppetilstand01S1q3S2S2q6——S2q0S2S2q1—S1q2—S1q4S1—q5S1—

Nu deler vi begge grupper yderligere. I samme grupper placerer vi altid tilstande, der for alle symboler går over til de samme grupper. Tilstandene q3 og q6 vil for eksempel ikke være i samme gruppe, fordi de hverken for 0 eller for 1 går til den samme gruppe. Tilstandene q1 og q2 derimod vil være i samme gruppe, fordi begge tilstande mangler en overgang for 0, og begge tilstande går for 1 til gruppen S1. Vi danner dermed nye grupper:

gruppetilstand01q3S2S2q6——q0S2S2q1—S1q2—S1q4S1—q5S1—

I hver gruppe har vi de samme overgange. De nydannede grupper betegner vi og finder igen ud af, til hvilke af disse nye grupper tilstandene går:

gruppetilstand01S1q3S5S5S2q6——S3q0S4S4S4q1—S1q2—S1S5q4S2—q5S2—

På dette tidspunkt foretager vi endnu en deling af grupperne. Men vi ser, at vi ikke kan foretage flere delinger, vi ville få de samme grupper — for tilstandene q1 og q2 har ganske vist de samme overgange inden for grupperne, men de er allerede i samme gruppe, og ingen anden tilstand i gruppen S4 findes. Algoritmen til at finde ækvivalente tilstande er færdig. Fra hver gruppe er det nok at vælge én tilstand, de øvrige sletter vi, og alle overgange, der førte til slettede tilstande, vil føre til den ene tilstand, vi valgte.

Vi kan altså vælge, at vores nye automat skal have tilstandene q3, q6, q0, q1, q4, og tilstandene q2 og q5 fjerner vi. Alle overgange, der førte til q2, vil nu føre til q1, og alle overgange, der førte til q5, vil føre til q4:

Fremgangsmåde ved minimering af en automat

  1. Vi fjerner uopnåelige tilstande,
  2. vi fjerner overflødige tilstande,
  3. vi fjerner ækvivalente tilstande.

Kilder

Kapitler: Uopnåelige tilstande, Overflødige tilstande, Minimering af automat