Enigma, Turing Test ve Turing Machine

Alan Turing

Alan Turing ünlü bir ingiliz matematikçi. Turing bilgisayar ve bilgisayar bilimlerinin babası olarak kabul edilmesine rağmen çoğumuzun aklına Turing deyince Enigma ve Turing test gelir. Bu yazımdan kısaca bunun sebeplerinden ve Turing Machine’lerden bahsedeceğim.

Enigma, elektromekanik bir şifreleme cihazıdır ve 2.Dünya savaşı esnasında Almanlar tarafından askeri mesajlaşmaları şifrelemek için kullanılmıştır. Yukarıdaki resimde askeri bir Enigma cihazını görmektesiniz. Bu cihazın kullanımı çok basit: Bir operator cihazın klavseyini kullanarak şifrelemek istediği mesajı harf harf girer. Operatör harfleri tuşladıkça klavyenin üst tarafındaki lambalar yanar ve yanan lambanın karşılık geldiği harf şifrelenmiş mesajın harflerini oluşturur (burada cihazı kullanmadan önce yapılması gereken kurulumdan bahsetmedim).

Almanlar bu cihaza çok güvendikleri için savaş esnasında en gizli mesaşlamaları bu cihazı kullanarak şifrelemişler. Hepimiz Almanların bu cihaza olan güvenlerinin boşa çıktığını Hollywood filmleri sayesinde biliyoruz. Aslında aklımıza Turing deyince Enigma’nın gelmesinin birinci sebebi bu popüler filmler diye düşünüyorum. Bu filmlerden bir tanesi 2014 yapımı olan The Imitation Game filmi. Bu filmde, Alan Turing diğer ingiliz matematikçilerin yardımıyla Enigma ile şifrelenmiş Alman ordusuna ait gizli mesajlaşmaları kırmaya çalışıyor. Diğer bir film ise 2001 yapımı Enigma filmi. Her iki filmin konusu birbirine çok benziyor.

File:Turing test diagram.png
Turing test görseli. C kişisi A ve B ye yazılı olarak soru soruyor ve soruların cevaplarına bakarak kimin bilgisayar kimin gerçek insan olduğunu anlamaya çalışıyor.

Çocukken Bilim Teknik dergisinde Turing Test ile alakalı populer bilim yazıları okuduğumu hatırlıyorum. Bu testin amacı bir makinanın insan bilişsel yeteneklerine sahip olup olmadığını test etmek. Yukarıdaki figürde gördüğünüz gibi, A, B ve C aynı ortamdalar ve birbirlerini görmüyorlar. C gerçek bir kişi ve A ve B ye yazılı sorular sorarak hangisinin makina olduğunu anlamaya çalışıyor. Eğer C kimin makina olduğunu anlayamazsa makina Turing Testi geçmiş oluyor. Bu teste Turing tarafından imitation game olarak adlandırılmış ama sonradan yaygın olarak Turing test ismi kullanılmış.

Bir resim karesinde bilgisayar tarafından bulunmuş objeler.

Son zamanlarda yapay sinir ağı (Neural Network) teknolojisinin gelişmesiyle birlike belirli alanlarda makinalar insanlara yakın belkide insanlardan daha üstün yetenekler sergilemekteler. Bu alanlardan bir tanesi resim işleme (image processing). Image processing ve neural network yardımıyla makinalar resim karelerinin içeriğini çok az hata yaparak tanımlaya biliyorlar. Aynı şekilde, neural networkler sayesinde geliştirilen “botlar” artık hayatımızın ayrılmaz bir parçası. Bir bankaya telefon veya mesajla ulaşmaya çalıştığımız zaman bizi bir “bot” karşılıyor ve isteklerimize göre bizi ilgili operatöre yönlendiriyor.

Yapay zeka teknolojilerinin gelişmesiyle birlikte Turing Test ile ilgili çok şey duyduk ve duyacağız diye düşünüyorum.

Enigma ve Turing test’in popüler kültürün ayrılmaz bir parçası olduğu için aklımıza Turing deyince ilk bu kavramlar gelmekte. Popüler ürünler geniş kitlelere hitap etmek için tasarlandığından geniş kitlelerin anlayabileceği kavramlar tema olarak seçilmekte. Bu sebepten ötürü Turing deyince çoğu kişinin aklına Turing machine gelmiyor ve Turing’in neden bilgisayar bilimlerinin babası olarak kabul edildiğini çoğu kişi bilmiyor diye düşünüyorum.

Turing Machines

Gelelim yazımızın esas konusu olan Turing Machine’e. Turing Machine soyut bir makinadır ve Alan Turing tarafından icat edilmiştir. Soyut makina demek bu makinanın fiziksel bir makine olmadığı anlamına geliyor (en azından başlangıçta fiziksel bir makina değildi). Turing bu makinayı neyin hesaplanabilir neyin hesaplanamaz olduğunu tanımlamak için geliştirdi.

Alan Turing On computable numbers with an application to the entscheidungsproblem makalesine hesaplanabilir sayıların bir tanımını vererek başlıyor ve şöyle diyor: hesaplanabilir sayılar rakamları sonlu kaynak kullanılarak(finite means) hesaplanabilen gerçel sayılardır (real numbers). Gene aynı paragrafın sonunda hesaplanabilir sayıyı kendisi şu şekilde tanımlıyor: “bir sayının rakamları bir makina tarafından yazılabilirse o sayı hesaplanabilirdir”.

Alan Turing, makalenin ilk paragrafından anlaşılacağı üzere neyin hesaplanabilir neyin hesaplanamaz olduğunu tanımlamak için kıstas olarak onun bir makina tarafından hesaplanabilir olmasını koyuyor.

Peki sizce nasıl bir makina hesaplanabilir bütün sayıları hesaplayabilir? Hesaplanabilir bütün sayıları hesaplayacak bir makina var mıdır?

Turing Machine diyince aklımıza sadece bir makina gelebilir ama bu doğru değil. Farklı hesaplamaları yapabilen farklı Turing Machine’ler geliştirmek mümkündür yani sonsuz sayıda Turing Machine vardır diyebiliriz.

Turing Machine nasıl bir makinadır?

Turing machine bir başlığa (okuyucu ve yazıcı), teybe (bir kayıt cihazı) ve sonlu sayıda duruma sahiptir. Turing machine’in başlığı ve teybini kasetçalarlara benzetebiliriz. Tıpkı bir kasetçalar gibi Turing Machine teybin üstünde istediğini bir noktaya yazabilir ya da teypten istediği bir noktayı okuyabilir. Burada önemli nokta Turing Machine teyp üzerinde her defasında bir işlem yapar: yazar, okur ve ya hareket eder (okumak istediği noktayı bulmak için).

Teypten okuduğu karaktere göre Turing machine içinde bulunduğu durumu var olan durumlardan birisiyle değiştirir ve yeni durumun gerektirdiği hareketi yerine getirir: yazma, okuma, teyp üzerinde başka bir posizyona gitme ya da durum değiştirme gibi.

Sonuç olarak bir Turing machine çok basit bir makinadır ve onu tanımlayan sınırlı sayıda özelliği vardır.

Esas önemli olan nokta hesaplanabilir herhangi bir sayıyı hesaplayacak bir Turing Machine tasarlamak mümkündür. Eğer bir sayı bir Turing Machine tarafından hesaplabilirse o sayı hesaplanabilirdir.

Not: Bir matematik problemini nasıl birden fazla yöntem kullanarak çözmek mümkünke bir sayıyı hesaplamak için bir den fazla Turing Machine tasarlamak mümkün.

İnsan ve Turing Machine Arasındaki Benzerlikler

Turing Machin’in teybini bir not defterine başlığını ise bir kaleme benzetebiliriz. Turing machine’de tıpkı bir insan gibi hesap yapar: Üzerinde hesap yapacağı girdiyi teypten(defterden) okur. Gerekli ara işlemleri girdi üzerine uygular ara işlemlerin sonuçlarını teybe(deftere) unutmamak için kaydeder. Zamanı geldiğinde ara işlemlerin sonuçlarını ileriki aşamalarda işleme dahil eder ve işlemin sonucunu teybe(deftere) yazar. Burada insanın hangi aşamada hangi işlemi uygulayacağını bilmesini Turing Machine’in durumularına benzetebiliriz. Insan da hesap yaparken aklında bir durumdan diğerine gider: örneğin şimdi şu 2 sayıyı toplayacağız (durum 1) çıkan sonucu 3. sayı ile böleceğiz (durum 2) sonrasında sonucu bir yere yazacağız (durum 3) gibi.

Universal Turing Machine (Universal Computing Machine)

Daha önce adı geçen makalede Turing, Universal Turing Machine’in tanımını yapıyor: Universal Turing Machine’de bir Turing Machine ve girdi olarak bir Turing Machine’in tanımını ve o Turing machine kullanarak hesap yapmak istediğimiz sembol dizisini alıyor. Universal Turing Machine sağlanan Turing Machine tanımını kullanarak ilgili Turing Machine’i emule (taklit etmek diyebiliriz) ediyor ve girdiyi işliyor ve sonucu üretiyor.

Hesaplanabilir bütün sayıları hesaplayacak bir makina var mıdır? sorusunun cevabı olumludur. Universal Turing machine hesaplanabilecek bütün sayıları hesaplayabilir.

Bugün kullandığımız bilgisayarlar ve akıllı telefonlar bir Universal Turing machinedir ve hesaplanabilir herhangi bir sayıyı akıllı telefonumuzu ya da bilgisayarımızı kullanarak hesaplayabiliriz (ama yavaş ama hızlı). Bir bilgisayar ya da akıllı telefon hesaplamanın tanımını program olarak alır ve hesaplamanın tanımını kullanarak kullanıcının sağladığı girdiler üzerinde işlemler yapar ve kullanıcıya sonuçlar döner.

Turing Machine bu gün en yaygın kullanılan hesaplama modellerinden birisidir. Bu model sayesinde farklı hesaplama yöntemlerini birbiriyle kıyaslayabiliyoruz ve hangisinin daha verimli olduğuna karar verebiliyoruz.

Alan Turing bilgisayar ve bilgisayar bilimlerinin babası sayılmaktadır çünkü bu alanda bir çok çalışma yapmıştır. Hiç şüphesiz ki bu çalışmaların en önemlilerinden birisi Turing Machinelerle çalışmasıdır.

Yazımı bir soruyla bitirmek istiyorum ve sorunun cevabını yorum olarak yazabilirsiniz. Aşağıdaki fonksiyonun değerini büyük bir x (x is an integer) değeri için hesaplamak istesek ne olur dersiniz? Bu fonksiyon sonucu hesaplanabilir mi?

Bir sonraki yazımda görüşmek üzere.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s