Hayat Denen Recursive Algoritma

Bilgisayar Programcılığında problem çözmek için bilgisayara komut dizileri verilir. Bu dizilerin çoğu akış diyagramında doğrusal bir karar ağacını izler. Ancak recursive (özyinelemeli) algoritma oldukça sibernetik bir şekilde kendini tekrar tekrar çalıştıran, aradığı şartlara ulaşana dek durmayan bir yöntemi anlatır. Bir süredir özellikle fraktalları ve kaos teorisini okuduğumdan beri hayat denen şu gaianın bir recursive algoritma olup olmadığını düşünüp duruyorum.


Fotoğraf: fayemozingo

PI filmini izlediniz mi? Karanlık karmaşık siyah beyaz ve fazlasıyla Yahudi Kabalasıyla örüntülü gibi gelir insana. Ancak dakikalar ilerledikçe kahramanımızın aslında evrenin sırrını çözmek istediğini anlarız.

Hayat birbirini izleyen olaylarla geçmektedir. Bulutlar binlerce yıldır gökten geçmekte, yapraklar ağaçların dallarında bitmekte, meyveler olgunlaşmakta, insanlar ve yeryüzünün canlıları kendilerine benzer yavrularla sürekli değişmekte fakat nasıl oluyorsa yaşam hep eşsiz olmakta.

Dünyadaki tüm fiziksel ve biyolojik oluşumlar ne olurlarsa olsunlar değişim gösterip yaşamı oluştururken gözle görülmeyen bir kanunlar dizisini izlerler.

Mesela ünlü Fibonacci serisini duymuşsunuzdur. 1,1,2,3,5,8,13… şeklinde gider. Serinin her elemanı kendisinden bir önce ve iki önce elemanın toplamı ile oluşur. F(n) = F(n − 1) + F(n − 2)

Gerçekten matematik soyut haliyle hiçbirşey ifade etmiyor. Fakat dünyadaki yaprakların arasındaki mesafenin Fibonacci serisinin birebir kopyası olduğunu öğrendiğimizde durum değişiyor. Deniz canlılarının kabuklarında bu oranları yakalayınca iş çok değişiyor.


Bilgisayarda recursive algoritma ile üretilmiş ağaç resmi.

Yine Altın Oran denen sanatsal harikayı duymuşsunuzdur. Mehmet Doğan’ın şu harika makalesine bir bakın derim 🙂  http://www.altiustutasarim.com/arsiv/2005/12/altin_oran.php

İnsanın sırtından bir ürperti geçiyor. İnsanın da böyle bir formülü var mı? Genetik DNA koddan bahsetmiyorum. Daha temel daha fonksiyonel olmasına karşın her girdi değerine karşılık müthiş bir sonuç üreten hayatın temelindeki matematiksel algoritmadan bahsediyorum.

Yani organik olsun olmasın tüm canlıların 3 boyutlu şekilde molekül kafeslerini çizen gizli bir matematik. Fakat bu nasıl oluyor? Eski Yunan Bilimadamları bildiğimiz Batı sanatını ve bilimini kurarken makro ve mikro aynılığına dem vurarak müzik notalarının güneş sistemindeki gezegenlerin arasındaki mesafe gibi perdeli aralıklara nota düzenine sahip olması gerektiğini düşündüler. Göğün uyumu yerde de sürmeliydi.

Peki recursive algoritma ile neyi kastediyorum? Şöyle düşünün bir iş imkanlar oldukça sonsuza dek sürecek. Tekrar ve tekrar yapılacak. Mesela hücre bölünmesi yapı ölene dek tekrarlanan bir eylem, atmosferdeki rüzgarın oluşumu, kimyasal bir tepkime doğada tekrar ve tekrar yenilendiğini gördüğümüz herşey.

Bilgisayarda kullanıldığında çok büyük bir olasılık zincirinden bir bölümü bulmak, karmaşık bir oluşumu kontrollü oluşturmak gibi süreçlerde kullanılıyor.

Ancak recursive / özyinelemeli algoritmalar asla aynı şekilde uygulanmıyor. Bir işlem yapılıyor ve oluşan sonuç tartılıyor böylece bir sonraki döngüde bu sonuçtan yol çıkarak farklı bir giriş değeri sisteme geri veriliyor. Kuyruğunu ısıran yılan (!) şartlar karşısında değişiyor.

Bunu yine özellikle yaşam koşulları değiştirilen bakteri kolonilerinin mutasyonlarında ortama uyma çabalarında görüyoruz. Girdi ve çıktı arasındaki bu sonsuz sibernetik düzeltme sistemlerin kusursuz uyumu aramaları anlamına geliyor.

Bugün hayatta olan pek çok yaşam formu, bu kusursuza yakın dengede olduğu için en az malzeme ile sonuç üretiyor. Tam kendisine yetecek kadar karbondioksiti suyu gün ışığını alan bitkiler fotosentez yapıyor. Sonra yeniden ve yeniden.

Peki birden dünya şartları değişmeye başlarsa ne oluyor? Şaşılacak şey ama bitkiler hemen tepki veriyor. Küresel ısınmadan dolayı giderek daha serin yerlere doğru tohumlarıyla yayılan bitki örtülerinden söz ediliyor.

Kısacası kan şekerinin düzenli tutulması, tansiyon, tuz dengesi gibi biyolojik süreçlerde recursive algoritmalar çünkü sürekli ölçüm yapılıyor. Sonuç beklenenden azsa, sinyaller verilip madde veya hormon, tamamlanıyor. Eğer fazla ise atılması için süreç başlıyor.

Özyinelemeli algoritmaların nöron ağlar üzerinde etkisi ise inanılmaz fazla, beyinde örüntüler üreten beyin / sinir hücreleri için bilginin formlaştırılması ve iletişimin saniyede trilyonlaca bytela ölçülecek şekilde akışı ve işlenmesi düzenli bir algoritmanın varlığını gösteriyor.

Üstelik son araştırmalar sandığımız gibi beyin hücrelerinin bir defa kalıba girip öylece kalmadığını aksine sürekli kendilerini yeniden formlara farklı bağlara sürükleyebileceklerini gösteriyor.

Tüm bu anlattıklarımız bir borsacı için para demek. Gülmeyin ama doğru bu 🙂 Sistemi ne kadar büyük olursa olsun kapalı bir yapı halinde görürsek, bu kaotik düzen içinde halen anlaşılması güç de olsa bir özyineleme var. Gökteki bulutlar gibi borsa dalgalanmalarının hepsi birbirine benziyor ama hiçbirisi aynı değil.

Peki gelecek bilimi kurulabilir mi? Bir yapının nereye gideceği bu recursive algoritma ile çözülebilir mi? Aslında “-bilir mi?” diye sormaya gerek yok. Her gün izlediğimiz hava durumları ve süperbilgisayarların kurduğu atmosfer modelleri akılalmaz sayıda fazla etmen olduğu halde yüzbinlerce ölçüm değeri ile kurulan benzetim modelinde çalıştırılıyor ve deniyor ki “Yarın fırtına var aman dikkat.”

Düşünün ki insanlar da, ne denli karışık düşünürlerse düşünsünler belli sistemleri ve davranış modellerini izliyorlar. Toplumların tahmin edilebilen ortak tepki süreçleri var. Herkes şu şu ve şu yapılırsa ne olacağını az çok bilebiliyor. Ancak kurulan tüm modellerde İSTİSNA göz ardı edilir.

Mesela bakteri kültürümüze dönelim. Bu bakteri kolonisi binlerce nesil sonrasında (binlerce dediğime bakmayın müthiş hızlı bölünüyorlar kısa sürede binlerce nesil zaten geliyor 🙂 ) tam ortama uymuşken recursive algoritmanın belki de başa çıkamayacağı bir başka tek hücreli kolonisi sisteme saldırdığında veya ortam sıcaklığı aniden değiştiğinde bu denli hızlı tepki veremiyor. Çünkü özyinelemeli algoritmaların tümü fonsiyona giren değerin sonucu elde etmesi üzerine kurulu. Daha önceden tanımlı bir fonksiyon  “aa ben bu giriş değerini tanıyorum verin bana hesaplayayım” demedikçe sonuç alınamıyor.

İşte buna bir örnek Roma İmparatorluğu’nun çöküşünde. Süper bir sistem kurmalarına karşın doğudan gelen saldırgan göçebe toplulukları karşılayacak bir algoritmanın yatmamasında.


Recursive Chessboard | Fotoğrafçı: fdecomite Creative Commons lisansı ile kullanılmıştır.

* Böylece ikinci basamağa geldik. KENDİSİNİ DEĞİŞTİREBİLEN FONKSİYONLAR.

Yıllar önce ilk uçak şirketleri bir ülkeden diğerine uçan yolcu uçakları için en az yakıt harcatacak algoritmayı bulmaları için bilgisayar programcılarını davet ettiler. İş en başta çok basit görünüyordu.

Kalkışla varış arasındaki tüm havalimanlarının birbirine mesafesi bulunur, sonra uçak nereden kalkarsa en hızlı ve aktarmaya uygun yol bulunur. Ne kadar basit değil mi 🙂

Ancak iş öyle değildi. Hava şartları veya bakım çalışmaları hatta ani arızalar nedeniyle seferler aksıyor, hava koridorlarında bekleyen uçaklar ve inilemeyen hava sahaları ile baştan belirlenmediği halde farklı hava limanlarında aktarmalar yapmak acil durum sinyali veren bir uçak iniş yaparken belli bir koridoru boşaltmak ve en önemlisi havacılıkta tüm gecikmeler para ve müşteri kaybı anlamına geldiğinden mükemmel zamanlama gerekiyordu.

Böylece yapay zeka yazılımları (Prolog, LISP) gibi başlayan serüvenler DNA’ya benzeyen temel bir kodu olan “yapay sinir ağları”na götürdü bizi. Kıstasları tanımlanan çok bilinmeyenli denklemleri çözmek için karar ağacında yaşatılan hücresel kodlar (günümüzün Object Oriented / nesne yönelimli kodlamasında object / nesne demek belki uygun kaçabilir.) sürekli farklı şartları ve olasılıkları deniyor ve sonuçta hayatta kalan! bireyler genlerini miras alma yoluyla bir sonraki koda aktarıyordu.

Bu bir programcılık devrimiydi. Çözüm ararken kendi kodunda düzenlemeler yapan neredeyse yaşayan algoritmalar. Aslında biyologlara göre hastalık yaptığını bildiğimiz virüsler de belki böyle biyolojik robotlar. Çünkü yaptıkları sadece kendi genetik kodlarını diğer yaşam sahibi hücrelere aktararak kendilerinin kopyalarını sonsuza dek ürettirmek. Ve aralarında AIDS (HIV) virüsünün de bulunduğu canlı formlarının kabusu olan virüslerin en büyük başarısı sürekli değişen genetik kodlarıyla tanımlanamayarak saldırdıkları hücrelerin asker üretmelerine engel olamaları. Örneğin insan vücudu rasladığı tüm düşmanları etkisiz hale getirecek bir asker üretirken sürekli değişen bir genetik kod sanki binlerce farklı virüs saldırıyormuş etkisi yapıyor. Böylece bağışıklık sistemi tüm kaynaklarını tüketirken vücudu HIV değil çoğumuz için önemsiz bir virüs mesela nezle virüsü bitiririyor.

Evet maalesef bu da recursive bir algoritma.

Değerli okuyucularım özyinelemeli algoritmaların ve buna bağlı olarak KAOS teorisinin Einstein’in tüm fiziksel kanunları toparlayacak tek kanun birleşik teoriyi aratmayacak zenginlikte olduğunu düşünüyorum. Çünkü atomların molekülleri oluşturması sonra molekülleri tekrar bölünüp atomlara ayrılması bile sınırları keskin bir recursive algoritma. Belki atomaltı parçaların yaptıkları bağlarda ve kurdukları düzenlerde ve yaşam döngülerinde bile izlenecek bu.

Üzerinde daha çok araştırma yapmak üzere sizleri kaynaklarla başbaşa bırakıyorum.

Örnek bir Recursive Kod ( C Diliyle) Fibonacci Serisi

int fib(int n)
{
   if (n == 0)
      return 0;
   else if (n == 1)
      return 1;
   else
      return fib(n-1) + fib(n-2);
}

Araştırmak isteyebileceğiniz konular 🙂 Artık herşeyi anlatmamaya karar verdim. Siz katıldığınızda konu asıl zenginliğine ulaşacaktır 🙂

  • Labirentlerden çıkış için recursive algoritmalar
  • 3 Boyutlu Modelleme Render tekniklerinde ışık hesaplaması için recursive algoritmalar (Mesela )
  • Dünya dillerinin doğuşunda recursive ses dönüşümleri (Mesela)

Kaynakça:

http://en.wikipedia.org/wiki/Fibonacci_number
http://en.wikipedia.org/wiki/Recursion_(computer_science)
http://www.altiustutasarim.com/arsiv/2005/12/altin_oran.php
The Golden Mean and the Physics of Aesthetics
http://www.gunesintamicinde.com/fractallar-25-boyutlu-evren/

PAYLAŞ: