Turing Makineleri
Turing makinesi, bilgisayar bilimlerinde ve teorik hesaplama teorisinde önemli bir kavramdır. Alan Turing tarafından 1936 yılında tanıtılmıştır. Turing makinesi, teorik hesaplama modelidir ve modern bilgisayarların temelini oluşturan hesaplama kavramlarının bir soyutlamasıdır.
Turing makinesi, bir teyp üzerinde sınırsız bir bellek şeridi ve bir kontrol birimiyle tanımlanır. Bellek şeridi, hücrelerden oluşur ve her hücre bir sembol alabilir. Kontrol birimi, bir dizi kurala dayalı olarak belirli işlemleri gerçekleştirir.
Turing makinesinin temel özellikleri şunlardır:
1. Bellek Şeridi (Tape): Turing makinesinin belleği, sınırsız uzunluktaki bir teyp üzerinde temsil edilir. Her bir hücre bir sembol alabilir. Bu bellek, giriş verilerini, ara sonuçları ve sonuçları saklamak için kullanılır.
2. Okuma ve Yazma Kafası (Head): Okuma ve yazma kafası, bellek şeridinin üzerinde hareket eden ve semboller okuyan veya yazan bir araçtır. Her adımda, kafanın konumu değişebilir ve kafanın altındaki sembolü okuyabilir veya yeni bir sembol yazabilir.
3. Durumlar (States): Turing makinesi, belirli durumlar arasında geçiş yapabilen bir kontrol birimine sahiptir. Her durum, belirli bir davranışı temsil eder. Turing makinesi belirli bir durumda iken, o andaki sembole ve iç duruma bağlı olarak belirli bir işlemi gerçekleştirir.
4. Kurallar (Rules): Turing makinesinin davranışı, bir durumda bulunduğunda ve okunan sembol tarafından belirlenir. Her kural, mevcut durum, okunan sembol, yazılan sembol, kafanın hareketi (sola veya sağa) ve sonraki durumu içerir.
Turing makinesi, matematiksel ve mantıksal işlemleri gerçekleştirebilecek bir soyut modeldir. Alan Turing'in "bilgisayar" kavramını tanımlamak için geliştirdiği bu model, teorik hesaplama teorisinin temelini oluşturur. Bugün, Turing makineleri bilgisayar bilimlerinde hesaplama teorisinin temel bir aracıdır ve algoritmaların analizinde ve bilgisayarların sınırlarının anlaşılmasında önemli bir rol oynar.
Bir Turing Makinesi Örneği;
Görselde bir Turing Makinesinin şeması gösterilmiştir.
Bu Turing makinesi, {aⁿ bⁿ | n ≥ 1\} dilini tanımaktadır. Şema, makinenin durumlarını ve geçişlerini içermektedir. İşte şemadaki durumlar ve geçişlerin açıklaması:
1. q0 Durumu:
- a → x, R: Şu anda a sembolünü okuyorsak, onu x ile değiştiririz ve sağa doğru ilerleriz.
- y → y, R: Şu anda y sembolünü okuyorsak, onu değiştirmeden sağa doğru ilerleriz.
2. q1 Durumu:
- a → a, R: Şu anda a sembolünü okuyorsak, onu değiştirmeden sağa doğru ilerleriz.
- b → y, L: Şu anda b sembolünü okuyorsak, onu y ile değiştiririz ve sola doğru ilerleriz.
- x → x, R: Şu anda x sembolünü okuyorsak, onu değiştirmeden sağa doğru ilerleriz.
3. q2 Durumu:
- a → a, L: Şu anda a sembolünü okuyorsak, onu değiştirmeden sola doğru ilerleriz.
- y → y, L: Şu anda y sembolünü okuyorsak, onu değiştirmeden sola doğru ilerleriz.
4. q3 Durumu:
- y → y, R: Şu anda y sembolünü okuyorsak, onu değiştirmeden sağa doğru ilerleriz.
- Boşluk (□) sembolü: Eğer boşluk sembolü okuyorsak, q0 durumuna geçeriz ve sağa doğru ilerleriz.
5. q4 Durumu:
- Bu durum kabul durumudur. Makine bu duruma geçtiğinde, girdinin dilde olduğu kabul edilir.
Genel Çalışma Prensibi:
1. q0 durumunda, en soldaki a sembolünü x ile değiştirip sağa doğru ilerleriz.
2. q1 durumunda, bir sonraki b sembolünü bulana kadar sağa gideriz ve bulduğumuz b sembolünü y ile değiştirip sola doğru ilerleriz.
3. q2 durumunda, sola doğru gidip bir önceki x sembolüne ulaşırız.
4. q3 durumunda, tekrar sağa doğru gidip y sembolünü bulana kadar ilerleriz ve q0 durumuna döneriz.
5. Tüm a ve b sembolleri değiştirilene kadar bu adımlar tekrarlanır. Eğer başa döndüğümüzde sadece y ve x sembolleri varsa ve başka sembol yoksa, kabul durumu olan q4 durumuna geçeriz.
Bu makine, her a sembolü için karşılık gelen bir b sembolü olup olmadığını kontrol eder ve bu şart sağlanıyorsa girdiyi kabul eder.
Yorumlar
Yorum Gönder