Collatz Problemi matematikte çözülmeyi bekleyen gizemli problemlerden biri. Açıklaması oldukça basit. Herhangi bir sayı alalım. Bu sayı çift sayıysa 2’ye bölelim, tek sayı ise 3’le çarpıp 1 ekleyelim. Bulduğumuz yeni sayıya da aynı işlemi uygulayalım. Bu adımları belirsiz bir sayıda tekrarlarsak mutlaka ama mutlaka 1’e ulaşırız. Sorun, bu önermenin doğru olup olmadığı. Bilindiği kadarıyla henüz bu soruya kesin bir yanıt verilememiş. Biraz daha detaylı anlatımı şurada bulabilirsiniz.

Soru matematikçi olmayan herkesin kafa yorabileceği basitlikte ve amelelik kısmı bilgisayarlara kolayca yıkılabilecek yapıda olduğu için hemen kurcalama dürtüleri harekete geçti. Önce excel’de istenilen aralıklarda hangi sayının kaç adımda çözüldüğünü hesaplayan ufak bir makro yazdım (Buraya tıklayarak dosyayı indirebilirsiniz. Makro kısayolu Ctrl+Shift+A. Makro güvenlik ayarınız yüksekse sorun çıkarabilir. Çözümü için Excel versiyonunuzla birlikte google’da aratabilirsiniz. “Excel 2007 makro güvenlik” gibi. Ya da boşverin kim uğraşır.) Bu makroyla ilk 32.000 adımı hesaplatıp bir dağılım grafiği haline getirdim. (Excel 2007 en fazla 32.000 nokta için dağılım grafiği yapabiliyor) Sonuç şöyle bir şey çıktı:



Hemen olayı mistik bir tarafa çekmek çok doğru değil ama özellikle grafiğin sol tarafının şuna benzemesi ilginç bir tesadüf oldu:



(Gelmişken biraz da altın oran’a takılayım derseniz ve fotonun üzerine tıklayıp ayçiçeğinin tohumlarının mükemmel dizilişini tutturabilmek için tohumların dönüş oranını bulmaya çalışabilecek kadar sapıkça dürtüler içindeyseniz web sitesinde biraz oyalanabilirsiniz.)

İşin mistik boyutu bir tarafa, grafikte görülen pik değerler (27 sayısının 112 çözümü olması gibi komşularından aşırı yüksek değerler) belki de bu işin bir çözümü olabileceği hissini doğurdu. Eğer pik noktalar aşağıda mavi ile gösterildiği şekilde bir eğri oluşturuyorsa ve bu eğrinin belli bir eğimle devam ettiği gösterilebilirse belki de cevap bulunabilirdi. Eğer eğrinin eğimi yatay eksene paralele doğru gidiyorsa, bir noktadan sonra çözüm adedinin bir üst limiti olacağına ve o limitten fazla sayıda çözüm olamayacağına hükmedilebilirdi ya da eğri hiçbir zaman yataya paralel bir duruma ulaşmıyorsa çözümlerin sonsuza doğru gideceğine. Böylece her iki durumda da soruya bir cevap verilmiş olurdu.


Bunu doğrulamak içinse daha fazla veriye ve bu verilerle grafik oluşturabilmeye ihtiyacım vardı. Excel çok zorlanmadan 1 milyon hesaplamayı yapabiliyordu ama iş grafiğe gelince 32.000’den sonra kan kusturuyordu. Bu nedenle şuradaki yorumlarda aldığım gazla Python öğrenmeye çabaladım ve şu basit programı yazıp şu 100.000 lik grafiği çizdirdim (Program mathplotlib gerektirir, yani sanırım):



Gazı çok fena almış olmalıyım ki 100 milyonların grafiğini çizmeyi beklerken bilgisayarın 1 milyonu bile kaldıramaması, Python’un kösülüp kalması biraz hayal kırıklığı oldu. Muhtemelen el yordamıyla karanlıkta yol bulmaya çalışırmış gibi yazdığım programın acemiliği yüzünden olmuştu ama olsundu, 2-3 günde böyle bir şey yazabilecek kadar Python öğrenmek de bir şeydi (Yoksa değil miydi?)
En sonunda kafayı iyice kırıp, pik değerleri Excel’in ulaşabileceği en yüksek sayılarda 1000’lik aralıklarla el yordamıyla aramaya karar verdim. Meğersem excel’in ulaşabileceği en büyük sayı boru değilmiş. Söz konusu sayı 10^300 ler civarında olduğundan, 1000 rakam uzunluğunda bir değnekle pik sayıda çözümü olan sayıları aramak, samalıkta iğne aramak demekmiş. En nihayetinde uzun uğraşlar sonucunda çözüm adedi 2000’in üzerine çıkan rakamlara ancak ulaşabildim. Ancak sanırım işlemcim yanmak üzere olduğundan (Bilgisayarınki değil) dosyayı kaydetmeyi unutmuş olmam anlayışla karşılanabilir diye düşünüyorum. Yine de denemek isteyen fetişistler olursa devasa boyuttaki Excel dosyası şurada. (İndirmeye niyetlendiyseniz önce dosya uzantısını rar yapıp unziplemek gibi bir garipliğe katlanmanız gerekiyor. Zira 30 mb falan kendileri. Baş edemedim mahlukatla.)
Evet ve sonunda pes ettim. Bu benim istediğim değildi, buradan da pek ileriye gidecek gibi durmuyordu ama benim yine de inancım vardı. Belki azimli Türk gençliği bu çalışmayı alacak ve elinden tutarak matematikteki bir gizemi daha aydınlatırken başlangıç noktası bu nafile çabalarım olacaktı. Ya da olmayacaktı, bu vesileyle sadece ben Visual Basic’le makro yazmaya ve python’la program yazıp onunla grafik çizdirebilmeye bir giriş yapmış olacaktım. Olsundu, varsındı, bu da bana yeterdi.
Bonus: Asal sayı hesaplatma makrosu. Hazır VB makroya girişmişken o da aradan çıksın. Bu işle bir ilgileri var gibi bu sayıların ama hayırlısı. O da başka bir kurcalamaya vesile olur belki ileride. Aynı uzantı değiştirip unzipleme uygulamasının yapılması gerekiyor. 1.250.000 e kadarki asal sayılar hazır hesaplanmış durumda içinde.
Not: Collatz probleminin benim için en büyük gizemi kuralın tersten uygulandığında işlememesi. Yani 1 den başlayıp süreci tersine çevirdiğinizde tek bir rotada gidiyorsunuz, ama 1 e ulaşırken herhangi bir sayıdan başlayabiliyorsunuz. (1'den başlayamıyorsunuz aslında. 2-3 basamak geriden diyelim.) Bu da bir kenara yazılmış olsun.

1 Comment:

  1. Anonymous said...
    Selam;

    Bu olayı ilk defa görüyorum fakat benim ilk izlenimim bunun bir paradoks olduğu yönünde. Yani hiç bir zaman aradığın gibi bir sayı bulamayacak olabilirsin çünkü geriye doğru gidebilmenin daha doğrusu işlem sonucunu küçültmenin tek yolu 2 ye bölmek ve ikiye bölerken ulaşacağınız en son rakam da doğal olarak 1'dir.

    Diğer işlemdeki +1'in işlevi ise çift çıkan sonucu tek, tek çıkan sonucu çift yapmaktır. Tabi matematikçi değilim, öylesine konuya takıldım.

Post a Comment



Blogger Template by Blogcrowds