Langton'ın Karıncası Algoritması
Langton'ın Karıncası (Langton's Ant), Chris Langton tarafından 1986 yılında ortaya atılan basit yapıda, ancak karmaşık yapılar sergileyebilen bir hücresel otomat (Cellular Automata) sistemidir.
Peki nedir bu hücresel otomat?
Hücresel Otomat , belirli kurallar dahilinde çalışan ayrık dinamik sistemlere verilen addır. Üzerinde yaşadığımız evren olarak nitelendirilebilecek bir grid üzerine yerleştirilmiş hücresel kümeler, o anki durumlarını temsil eden 1 veya daha çok renk halini alarak kendi durumlarını bildirirler ve "t" zamanından "t+1" zamanına kadar olan sürede birbirlerinden etkilenerek kendi davranışlarını sergilerler.
Langton'ın Karıncası da 3 temel kural ile çalışmakta. Bu kurallar aşağıda belirtilmiştir;
- Eğer karınca turuncu renkli bir kareye gelirse 90° sola dön ve ilerle,
- Eğer karınca mor renkli bir kareye gelirse 90° sağa dön ve ilerle,
- Karınca terkettiği kareyi mor renge boyar, eğer tekrar aynı kareye gelirse turuncu renge çevirir. (Aynı kareye her geldiğinde rengi tersine çevirerek ilerler)
Bu kurallara bağlı olarak çalışan algoritma. kurallar çok basit olsa da oldukça kaotik sonuçlar üretmekte. Ancak ilginç bir şekilde algoritma, yaklaşık olarak 11.000 inci hareketini gerçekleştirdikten sonra 104 hareketlik sabit bir döngüye girerek dikey bir otoyol çizmeye başlıyor. İşin felsefesine yönelen bazılarına göre bu olay kaostan (düzensizlikten) ortaya çıkan düzen olarak nitelendiriliyor (bkz. The Game of Life).
- Langton'ın Karıncası Görsel -
Evrenselliği 2000 yılında kanıtlanan Langton'ın Karıncası, birden fazla durum ve renk eklenerek bir çok farklı şekilde test ediliyor ve karınca her seferinde kendisini, bir şekilde sabit bir döngüye sokarak düzgün bir pattern oluşturmayı başarıyor ve bu sabit patterni bozmadan ilerlemeye devam ediyor.
Ben de daha önce "Yapay Zeka ile Flappy Bird Eğitmek" adlı makalemde de kullanmış olduğum p5.js kütüphanesini angular ile birleştirerek algoritmaları görselleştirme üzerinde çalışıyordum ki bu ilginç algoritmaya rastladım. Tabi burada işin felsefesinden çok algoritmayı görselleştirmenin, bunun için de p5.js kullanmanın uygun olacağını düşündüm. Oldukça keyifli bir çalışma olduğunu düşünerek yukarıda belirttiğim kurallar çerçevesinde Angular Js ve p5.js kullanarak geliştirdiğim uygulamayı "http://langtonsant.fatihbostanci.com/" linki üzerinden sizlerle paylaşmak istedim. Link üzerinden, geliştirdiğim angular uygulamasını inceleyebilir, yorumlarınızı benimle paylaşabilirsiniz.
Makalemi okuduğunuz için teşekkürler, bir sonraki yazılarımda görüşmek üzere kendinize iyi bakın !