✖

Düzenli Dillerin Birleştirilmesi

İki düzenli dil L1, L2 olsun. Bunların birleştirilmesiyle (art arda eklenmesiyle) elde edilen L = L1 ∘ L2 dilinin de düzenli bir dil olduğunu ispatlayacağız.

Birleştirme Nedir?

“010” ve “1111” sözcüklerini birleştirirsek “0101111” sözcüğünü elde ederiz. Dilleri birleştirdiğimizde de yeni bir dil oluşur: birinci dilin her sözcüğünü ikinci dilin her sözcüğüyle birleştiririz. İki sözcüğün ve iki dilin birleştirilmesini küçük daire simgesiyle göstereceğiz: ∘. Buna göre L1 ve L2 dillerinin birleştirilmesini şöyle tanımlayabiliriz:

L1∘L2={a∘b∣a∈L1,b∈L2}

İspatın Fikri

İki düzenli dilimiz L1, L2 ve bu dilleri kabul eden iki otomatımız var:

A1=⟨Q1,Σ1,δ1,q0,F1⟩A2=⟨Q2,Σ2,δ2,p0,F2⟩

A1 ve A2 otomatlarını “içinde barındıran” deterministik olmayan bir A = ⟨Q, Σ, δ, q, F⟩ otomatı kuracağız. Temel fikir şu: sözcüğü önce A1 otomatıyla kabul etmeye başlarız; A1 otomatı bir kabul durumuna ulaşınca sözcüğün geri kalan kısmını da A2 otomatıyla kabul etmeyi deneriz. Bu otomat da sözcüğün o kısmını kabul ederse A otomatı sözcüğü kabul eder.

Örnek

Yalnızca sıfırlardan oluşan boş olmayan sözcükleri ve bir 1’den sonra yalnızca sıfırların geldiği sözcükleri (1, 10, 100, …) kabul eden A1 otomatı şu olsun:

Bir de 01 ile biten sözcükleri kabul eden A2 otomatı olsun:

Otomatları şöyle birleştiririz: A1 otomatının tüm kabul durumlarından A2 otomatının başlangıç durumuna ε-geçişleri ekleriz, sonra A1 otomatının kabul durumlarını sıradan durumlara çeviririz. Yeni otomatın başlangıç durumu A1 otomatının başlangıç durumu olur:

Otomat nasıl çalışır? Önce A1 otomatının çalışmasının benzetimini yapmaya başlarız. Eski kabul durumlarından q1 ya da q2 durumuna geçersek A1 otomatının sözcüğün bir kısmını kabul ettiğini biliriz. Sözcüğün tamamının L1 ∘ L2 diline ait olması için geri kalan kısmını da ikinci otomat A2 kabul etmelidir; bu yüzden eski kabul durumlarının hepsinden A2 otomatının eski başlangıç durumuna ε-geçişleri çıkar.

Örnek olarak 0001 sözcüğünü alalım. Bu sözcük iki dilin birleştirilmesine aittir, çünkü 00 ∘ 01 sözcüklerinin birleştirilmesiyle oluşabilir. Ama aynı şekilde 0 ∘ 001 sözcüklerinin birleştirilmesiyle de oluşabilir. Bizim otomatımızda iki yolun da benzetimini yapabiliriz. Otomat şu yolu izleyebilir:

q0→0q1→0q1→εp0→0p1→1p2

Bu yolda otomat önce sözcüğün 00 kısmını, sonra 01 kısmını “kabul eder”. Ya da şu yolu izleyebilir:

q0→0q1→εp0→0p0→0p1→1p2

ve böylece önce sözcüğün 0 kısmını, sonra 001 kısmını “kabul eder”. Her iki durumda da elbette p2 kabul durumuna ulaşırız.

Biçimsel Yöntem

Bir kez daha: iki düzenli dilimiz L1, L2 ve bu dilleri kabul eden iki otomatımız var:

A1=⟨Q1,Σ1,δ1,q0,F1⟩A2=⟨Q2,Σ2,δ2,p0,F2⟩

Aşağıdaki koşulları sağlayan deterministik olmayan bir A = ⟨Q, Σ, δ, q, F⟩ otomatı kuruyoruz:

  • Q = Q1 ∪ Q2 (ayrıca Q1 ∩ Q2 = ∅ olduğunu varsayıyoruz)
  • Σ= Σ1 ∪ Σ2
  • q = q0
  • F = F2

Geçiş fonksiyonu δ’yı adım adım oluştururuz:

δ(q,a)={δ1(q,a)eğerq∈Q1∧q∉F1δ1(q,a)eğerq∈F1∧a≠εδ1(q,a)∪{p0}eğerq∈F1∧a=εδ2(q,a)eğerq∈Q2

Kaynaklar

Bölümler: Düzenli Dillerin Kapalılığı, Düzenli Dillerin Birleşimi, Düzenli Dillerin Kesişimi, Düzenli Dillerin Farkı, Düzenli Dilin Tümleyeni, Düzenli Dillerin Birleştirilmesi, Düzenli Dilin Kleene Kapanışı