Konkatenering af regulære sprog
Vi har to regulære sprog L1, L2. Vi viser, at deres konkatenering L = L1 ∘ L2 også er et regulært sprog.
Hvad er konkatenering
Ved at konkatenere to ord »010« og »1111« opstår ordet »0101111«. Ved konkatenering af sprog opstår der altså et nyt sprog, som vi konstruerer ved at konkatenere hvert ord fra det ene sprog med hvert ord fra det andet sprog. Konkatenering af to ord og af to sprog betegner vi med en bolle: ∘. Så kan vi definere konkatenering af sprogene L1 og L2 således:
Idéen bag beviset
Vi har to regulære sprog L1, L2 og to automater, som accepterer disse sprog:
Vi konstruerer en ikke-deterministisk automat A = ⟨Q, Σ, δ, q, F⟩, som »indeholder« begge automater A1 og A2. Grundidéen er, at vi begynder at acceptere ordet med automaten A1, og når automaten A1 når til en accepttilstand, forsøger vi at lade automaten A2 acceptere den resterende del af ordet. Hvis også denne automat accepterer den del af ordet, accepterer automaten A ordet.
Eksempel
Vi ser på denne automat A1, som accepterer ikke-tomme ord bestående kun af nuller og ord bestående af et ettal efterfulgt af kun nuller (1, 10, 100, …):
og desuden denne automat A2, som accepterer ord, der ender på 01:
Vi forbinder automaterne ved fra alle accepttilstande i automaten A1 at tilføje epsilon-overgange til starttilstanden i automaten A2 og derefter gøre accepttilstandene i A1 til almindelige tilstande. Starttilstanden i hele den nye automat bliver starttilstanden i automaten A1:
Hvordan vil automaten fungere? Vi begynder at simulere automaten A1. Hvis vi går over til den tidligere accepttilstand q1 eller q2, ved vi, at automaten A1 accepterer en del af dette ord. For at hele ordet skal være en del af sproget L1 ∘ L2, skal den resterende del af ordet accepteres af den anden automat A2 — derfor fører der epsilon-overgange fra alle de tidligere accepttilstande til den oprindelige starttilstand i automaten A2.
Lad os som eksempel tage ordet 0001. Det hører til konkateneringen af begge sprog, for ordet kan opstå ved konkatenering af ordene 00 ∘ 01. Men det kan lige så godt opstå ved konkatenering af ordene 0 ∘ 001. I vores automat kan vi simulere begge fremgangsmåder. Automaten kan gå denne vej:
Ad denne vej ville automaten først »acceptere« delen 00 af ordet og derefter delen 01. Eller den kan gå denne vej:
og automaten ville så først »acceptere« delen 0 af ordet og derefter delen 001. I begge tilfælde ender vi naturligvis i accepttilstanden p2.
Formel fremgangsmåde
Endnu en gang: Vi har to regulære sprog L1, L2 og to automater, som accepterer disse sprog:
Vi konstruerer en ikke-deterministisk automat A = ⟨Q, Σ, δ, q, F⟩, for hvilken der gælder:
- Q = Q1 ∪ Q2 (samtidig antager vi, at Q1 ∩ Q2 = ∅)
- Σ= Σ1 ∪ Σ2
- q = q0
- F = F2
Overgangsfunktionen δ opstiller vi efterhånden:
Kilder
Kapitler: Lukkethed af regulære sprog, Forening af regulære sprog, Fællesmængde af regulære sprog, Differens af regulære sprog, Komplement af et regulært sprog, Konkatenering af regulære sprog, Kleene-stjerne af et regulært sprog