3 Belirlenimli Sonlu Otomat
Belirlenimli Sonlu Otomat (BSO) ingilizcesi Deterministic finite automaton (DFA) işleyeceğimiz en basit makinedir.
Önce örnekler ile başlayacağız arkasından teorik bilgileri vereceğiz.
3.1 Senaryo: 10 TL’lik Soda Otomatı
Soda fiyatının 10 TL olduğu bir otomat düşünelim.
Kurallar
- Otomat sadece 5 TL madeni para kabul eder.
- Para üstü verme veya para iadesi özelliği yoktur.
- Toplamda 10 TL’ye ulaşıldığında, otomat Soda Ver (kabul) durumuna geçilir.
Geçiş Tablosu
| Mevcut Durum (Bakiye) | Girdi: 5 TL Atıldığında | Yeni Durum |
|---|---|---|
| \(\rightarrow q_0\) (0 TL) | \(q_5\) | Bakiye 5 TL olur |
| \(q_5\) (5 TL) | \(q_{soda}\) | Bakiye 10 TL olur (Soda verilir) |
| \(*q_{soda}\) (10 TL - Soda) | \(q_{soda}\) | Soda verildikten sonra makine kabul durumunda kalır |
Durum Diyagramı

Adım Adım İşleyiş Örnekleri
Örnek 1: İki Tane 5 TL Atılması (Toplam 10 TL)
- Otomat \(q_0\) durumunda başlar (Bakiye: 0 TL).
- Birinci 5 TL atılır \(\rightarrow\) \(q_5\) durumuna geçilir (Bakiye: 5 TL).
- İkinci 5 TL atılır \(\rightarrow\) \(q_{soda}\) durumuna geçilir (Bakiye: 10 TL).
- Sonuç: \(q_{soda}\) kabul durumuna ulaşıldı \(\rightarrow\) KABUL (Soda düşer!).
Örnek 2: Sadece Bir Tane 5 TL Atılması (Toplam 5 TL)
- Otomat \(q_0\) durumunda başlar (Bakiye: 0 TL).
- Birinci 5 TL atılır \(\rightarrow\) \(q_5\) durumuna geçilir (Bakiye: 5 TL).
- Başka para atılmadan beklenir.
- Sonuç: Otomat \(q_5\) durumunda kalır. \(q_5\) kabul durumu olmadığı için işlem REDDEDİLİR (Soda verilmez).
Önemli Noktalar
Belirlilik (Deterministic): Hangi durumda olursanız olun, 5 TL attığınızda bir sonraki durumun ne olacağı %100 bellidir.
Sonlu Hafıza (Finite Memory): Otomat sonsuz veri saklamaz; sadece 3 farklı durumu (state) (\(0\text{ TL}\), \(5\text{ TL}\) ve \(10\text{ TL}\)) vardır.
Resmi tanım
Otomatları tanımlarken aşağıdaki bilgileri vererek resmi tanımlarını yaparız.
\(Q\): Sonlu durumlar kümesi.
\(\Sigma\): Alfabe:
\(\delta\): Geçiş fonksiyonu (\(Q \times \Sigma \rightarrow Q\))
\(q_0\) Başlangıç durumu: (\(Start\ State\))
\(F\): Kabul durumları kümesi (\(Accept\ States\)).
Resmi tanım özellikleri
- \(Q\) (Sonlu Durumlar Kümesi)
Makinenin sahip olabileceği tüm durumlar:
\[Q = \{q_0, q_5, q_{soda}\}\]
- \(q_0\): Bakiye 0 TL
- \(q_5\): Bakiye 5 TL
- \(q_{soda}\): Bakiye 10 TL (Soda Verildi)
- \(\Sigma\) (Girdi Alfabesi)
Otomata atılabilecek kabul edilen semboller/girdiler:
\[\Sigma = \{5\}\]
- \(\delta\) (Geçiş Fonksiyonu: \(Q \times \Sigma \rightarrow Q\))
Geçişler formal küme eşleşmesi veya liste olarak şu şekilde tanımlanır:
\[\begin{aligned} \delta(q_0, 5) &= q_5 \\ \delta(q_5, 5) &= q_{soda} \\ \delta(q_{soda}, 5) &= q_{soda} \end{aligned}\]
- \(q_0\) (Başlangıç Durumu)
Makinenin sıfır bakiye ile başladığı durum:
\[q_0 = q_0\]
- \(F\) (Kabul Durumları Kümesi)
Sodanın verilmesini (başarılı tamamlanmayı) temsil eden durumlar kümesi:
\[F = \{q_{soda}\}\]
Ek sorular
- Bu makine bu hali ile kullanışlı değildir. Bu makineye iptal ve soda_ver girdilerini ekleyin. Bu girdiler için gerekirse yeni durumlar ekleyin.
3.2 Senaryo: Çift sayıda ‘0’ içeren girdileri kabul eden otomat
Bir bilgisayar, bir lamba anahtarına \(N\) kez basıldıktan sonra lambanın AÇIK mı yoksa KAPALI mı olduğunu nasıl anlar?”
- Hafızasız durum makineleri (memoryless state machines), sadece var olan durum hakkında bilgi sahibidirler.
Kurallar
- İçinde çift sayıda
0bulunan dizgileri (hiç0bulunmaması da dahil) kabul edilir. - Tek sayıda
0içeren dizgileri red edilir.
- Alfabe (\(\Sigma\)): \(\{0, 1\}\)
- Görev:
- Durumlar (\(Q\)): \(\{q_{çift}, q_{tek}\}\)
- \(q_{çift}\): Şu ana kadar görülen
0sayısı çift. (Başlangıç ve Kabul Durumu) - \(q_{tek}\): Şu ana kadar görülen
0sayısı tek.
Resmi Tanım
BSO’lar 5’li demet \((Q, \Sigma, \delta, q_0, F)\) olarak tanımlanır:
\(Q = \{q_{çift}, q_{tek}\}\) — Durumlar kümesi.
\(\Sigma = \{0, 1\}\) — Girdi alfabesi.
\(\delta\): Geçiş fonksiyonu (\(Q \times \Sigma \rightarrow Q\))
\(q_0 = q_{çift}\) — Başlangıç durumu.
\(F = \{q_{çift}\}\) — Kabul (final) durumları kümesi.
Geçiş Tablosu
| Durum | Girdi: 0 |
Girdi: 1 |
|---|---|---|
| \(\rightarrow *q_{çift}\) | \(q_{tek}\) | \(q_{çift}\) |
| \(q_{tek}\) | \(q_{çift}\) | \(q_{tek}\) |
Not: \(\rightarrow\) başlangıç durumunu, \(*\) ise kabul (bitiş) durumunu gösterir.
Durum Diyagramı

1girdisi0sayısını etkilemediği için makine kendi bulunduğu durumda kalır (kendi üzerine döngü/self-loop).0girdisi geldiğinde ise tek/çift durumu değişir.Örnek 1:
1010dizgisi (Kabul Edilir)
\[q_{çift} \xrightarrow{\mathbf{1}} q_{çift} \xrightarrow{\mathbf{0}} q_{tek} \xrightarrow{\mathbf{1}} q_{tek} \xrightarrow{\mathbf{0}} q_{çift} \quad (q_{çift} \in F \rightarrow \textbf{Kabul})\]
- Örnek 2:
101dizgisi (Reddedilir)
\[q_{çift} \xrightarrow{\mathbf{1}} q_{çift} \xrightarrow{\mathbf{0}} q_{tek} \xrightarrow{\mathbf{1}} q_{tek} \quad (q_{tek} \notin F \rightarrow \textbf{Red})\]
- Boş Dizgi (\(\epsilon\)): Okuma yapılmadan \(q_{çift}\) durumunda kalınır. İçinde 0 adet ‘0’ vardır (0 çift bir sayıdır), dolayısıyla \(\epsilon\) da kabul edilir.
Ekstra Soru
- “Bu BSO’yu, ‘01’ ile biten dizgileri kabul edecek şekilde nasıl değiştirirsiniz?”
Belirli (Deterministik) olma kuralı: Her durumdan, alfabedeki her sembol için tam olarak bir çıkış oku olmalıdır.
Düzenli diller (regular languages), sonlu otomatlar tarafından tanınabilen dillerdir.
3.3 BSO Sorular Alfabe 0,1
Aşağıdaki dilleri tanıyan DFA’ların durum diyagramlarını çizin. Alfabe \(\{0, 1\}\)’dir.
- \(\{w \mid w \text{ '1' ile başlar ve '0' ile biter}\}\)
http://localhost:4200/content/dfa-soru-cozumleri.html#sec-sorular-dfa-1-basla-0-bit
\(\{w \mid w \text{ en az üç adet '1' içerir}\}\) ÇÖZÜLDÜ
\(\{w \mid w \text{ 0101 alt dizesini içerir. } \text{ Yani bir } x \text{ ve } y \text{ kelimesi için } w = x0101y\}\)
\(\{w \mid w \text{ uzunluğu en az 3'tür ve 3. sembolü '0'dır}\}\)
ÇÖZÜLDÜ\(\{w \mid w \text{ '0' ile başlar ve tek uzunluktadır}\}\)
\(\{w \mid w \text{ '0' ile başlar ve tek uzunluktadır, VEYA '1' ile başlar ve çift uzunluktadır}\}\)
\(\{w \mid w \text{, 110 alt dizesini içermez: } \}\)
\(\{w \mid w \text{ uzunluğu en fazla 5'tir}\}\)
\(\{w \mid w \text{ '11' ve '111' hariç herhangi bir dizedir}\}\)
\(\{w \mid w \text{ dizisinin her tek pozisyonu '1'dir}\}\) ÇÖZÜLDÜ.
\(\{w \mid w \text{ en az iki adet '0' ve en fazla bir adet '1' içerir}\}\)
\(\{\epsilon, 0\}\)
\(\{w \mid w \text{ çift sayıda '0' içerir VEYA tam olarak iki adet '1' içerir}\}\)
Boş küme (\(\emptyset\))
Boş dize (\(\epsilon\)) hariç tüm dizeler
\(\{w \mid w \text{, '01' ile biter}\}\) ÇÖZÜLDÜ.
\(\{w \mid w \text{, '111' ile biter}\}\) ÇÖZÜLDÜ.
Uzunluğu çift olan dizeler
Uzunluğu tek olan dizeler
0 ile başlayan dizeler
\(\{w \mid w \text{, '0' ile başladığında 0 biter ve 1 ile başladığında 1 ile biter.}\}\)
3.4 BSO terimler ve tekrar
\(Q\): Sonlu durumlar kümesi. BSO’nun bulunabileceği durumların listesi
\(\Sigma\) Alfabe, sembol kümesi örnekler:
- \(\Sigma = {0,1}\)
- \(\Sigma = {a,b,c,d}\)
- Dizgi (string), alfabe üzerindeki sembol listesi, örnekler:
- 010001
- abdddc
\(\epsilon\) (epsilon): 0 uzunluktaki dizgi
Dil (language), dizgi kümesidir, örnekler:
- \(A=\emptyset\) (boş küme)
- \(B={0,1,11,000111}\)
- \(C={a,b,c,aabbccdaaa}\)
Geçiş tablosu: geçiş fonksiyonu bilgilerinin tablo olarak verilmesi
Geçiş diyagramı: geçiş fonksiyonunun şekil olarak verilmesi. Daha anlaşılır olduğu için tercih edilir.
\(\delta\): Geçiş fonksiyonu (\(Q \times \Sigma \rightarrow Q\))
Matematiksel resmi tanım. Tablo veya diyagram olarak verilebileceği gibi doğal dil olarak ta tanımlanabilir.
\[q_0 \in Q \] Başlangıç durumu(Start State)
\(F \subseteq Q\): Kabul durumları kümesi (Accept States). Son durumlar (final state)’te kullanılmaktadır.
\[ L(M) = A \] makine M, A dilini tanır (recognizes) anlamına gelmektedir. M dil içindeki dizgiyi kabul eder.
Tuzak durumu (trap state), diğer kullanıbilen isimler:
- dead state (ölü durum)
- sink state (çukur durumu)
Boş küme DFA

- DFA epsilon (0 uzunlukta dizgi)
