• python kastığım şu günlerde an itibariyle n sayılı versiyonunun çözüm hamlelerini çıktılayan programı yazmayı başardığım oyuncuk. öyle bir kasıyorsunuz ki program için, açtım 6'lı flash versiyonunu 63/63 perfect çaktım. böyle de güzel bir dalga esasen.

    fakat program tıkır tıkır oh enfes, nefis. (taze programcı heyecanı)
  • (bkz: ayrık matematik)*

    (bkz: recursion) (bkz: recurrence) (bkz: recursive function)

    diyelim ki n tane diskin hepsini bir başka çubuğa dizmek için gerekli hamle sayısını veren fonksiyon h(n) olsun. büyük diskin üzerine küçük disk gelemeyeceği için öncelikle büyük diskin üzerindeki tüm diskleri başka bir çubuğa taşımalı, en büyük diski yalnız bırakmalı ve bir de boş çubuk bırakmalıyız ki bir sonraki hamlede en büyük diski taşıyalım. fakat bu aslında, bu oyunu n-1 tane diskle (baştan sona) oynamakla tam olarak aynı şeydir. elbette ki n-1 tane diski taşımak için gerekli hamle sayısı h(n-1) olacaktır. şimdi en büyük diskimizi boş çubuğa taşıyalım. bir hamle daha yaptık. şimdi üst üste duran n-1 diski büyük diskin üzerine taşımalıyız. fakat bu da tam olarark bu oyunu (baştan sona) n-1 disk ile oynamakla aynı şeydir. yani tekrar h(n-1) hamle yaptık. o halde h(n) = h(n-1) + 1 + h(n-1) = 2 h(n-1) +1 eşitliğini elde ederiz. ama benzer şekilde h(n-1)=2 h(n-2)+1 olmaz mı?

    h(n) = 2 h(n-1)+1
    = 2(2 h(n-2)+1)+1 = 4 h(n-2)+2+1
    = 4(2 h(n-3)+1)+2+1 = 8 h(n-3)+4+2+1
    .
    .
    .
    böyle böyle h(n-(n-1))=h(1)'e kadar gider bu iş.

    =2^{n-1}h(1)+2^{n-2}+2^{n-3}+...+4+2+1

    h(1)=1 olduğu gayet açık ve sarih. e, o halde

    h(n) = 2^{n-1}+2^{n-2}+2^{n-3}+...+4+2+1=(2^n)-1 eşitliğini bulur ve muradımıza ereriz. sonda üstsel bir fonksiyon bulunduğu için yazılım ve donanımı kıyaslamada güzel bir örnektir.
  • yapay zekayı simüle eden bir recursive algoritma silsilesi.
  • üniversitede 4 sene boyunca oldukça sık gördüğüm oyun.
  • insanoglunun recursionu kafasinda canlandirmakta ne kadar basarisiz oldugu, bilgisayarlarin ise bir o kadar zorlanmadan yapabildigi guzel bir ornek.

    pseudocode'u su sekildedir:

    func move_tower(n, src, dst, tmp){
    if n<=0: return
    move_tower(n-1, src, tmp, dst) ----> ustten n-1 cubugu tmp'e koy
    move_single(src,dst) -----> src'de kalan tek elemani dst'e yerlestir
    move_tower(n-1, tmp, dst, src) -----> n-1 cubugu tmp'ten dst'e tasi
    }
  • hayat bir oyun;
    oyun ise matematiktir.

    matematiğin her zaman hayatın ta kendisi olduğunu söylüyorlar. bu sözleri hangi abi yada abla söylemiş onu sorarsanız size cevap veremem ama şunu söyleyebilirim; hayatımın gençlik yıllarını bu işlere adamış biri olarak gerçek olmadığını size iletirsem, yalan söylerim!

    bunu nerden çıkardım?
    şuradan çıkardım efendim!

    hayatı genel olarak bir çok değişken içeren ve optimizasyona ihtiyacı olan bir fonksiyon olarak görürüm. değişkenleri birbirine benzetmeye çalışarak, elinizde birbirine benzeyen ifadeler yakalamaya çalışırsınız. böylece çözüme ulaşmak kolaylaşır. ulaştığınız çözüm ise her zaman bir lokal maksimum veya minimum noktasıdır. fakat fonksiyonu tüm olarak ele alıp, bütün değişkenlere göre optimize ederseniz “global” maksimum veya minimumları yakalarsınız.

    yani lokalde gün sonu z raporunda elinizde maksimumlar veya minimumlar en yüksek değerler değildir. global tercih ise riskli olmasına rağmen sizi en yüksek veya en düşük değerlere yakınsatır.

    hayatta işte böyle. hayatınızda var olan bütün parametrelerden sadece birini odağa alırsanız sadece o etmen üzerinde sonuç alırsınız. sadece “eğitimi” odağınıza alırsanız elinizde günlük sevinçler veya günlük mutsuzluklar vardır. etkenlerin tümünü odağa alırsanız elde edeceğiniz ise “gerçek mutluluk” veya “tam bir çöküş” olacaktır.

    hayatta insanlar farkında olmadan her iki durumu da yaşayabilmektedir. başarılı insan olarak ortalıkta adlandırdığımız insanları geçiyorum çünkü onların başarıları görece değişken. fakat “gerçekten” başarılı insanları ele aldığımızda ortaya çıkan sonuç şu; yeri geldiği zaman tek değişken çözümünü, yeri geldiğinde ise bütün değişkenler ile birlikte çözümü başarabilen insanlar “başarılı insan” dır.
    hadi gelin bahsettiğimiz oyunu gerçek hayat ile biraz ilişkilendirelim.

    hanoi kuleleri, bir matematik oyunu veya bulmacadır. üç direk ve farklı boyutlarda disklerden oluşur. bu diskleri dilediğiniz direğe aktarabilirsiniz. bulmaca bir direkte en küçük disk yukarıda olacak şekilde, küçükten büyüğe direk üstünde dizilmiş olarak başlar. böylece konik bir şekil oluşmuş olur.

    oyunun kuralları:
    ? her hamlede sadece bir disk taşınabilir.
    ? her hamle en üstteki diski direkten alıp diğer bir direğe taşımaktan oluşur. diğer direkte daha önceden diskler olabilir.
    ? hiçbir disk kendisinden küçük bir diskin üzerine koyulamaz.
    ? zeka oyunudur.
    ? mantığı en alttaki taşı diğer tarafa aynı şekilde dizmektir.

    bu bahsettiğimiz olay aslında bir oyundan çok daha fazlası. işin bir tarafında hintli, yani bu oyunun asıl mucidi rahiplerin, 64 diskli bir hanoi kulesi probleminin çözümü ile kıyametin kopacağını yani hayatın son bulacağını düşünmeleri var iken, bir diğer tarafta işin içinde problem çözme stratejisi, bağlantı kurma stratejisi ve karar almayı geliştirme gibi süreçler var.
    tabi şunu da belirtmek lazım, rahipler saniyede bir hamle yapsınlar ve hiç yanılmasınlar. yine de bilinen evren yaşının 5 katına yakın bir sonuca yakınsamaya başlıyoruz. 64 yerine 62 disk olsaydı ise aşağı yukarı yakın tarihlerde kıyamet tarihine yakınsıyor olacaktık. tabi bu işin matematik ve biraz daha ilginizi çekebilmek için yazıya konan tarafı.

    dedik ya; hayat bir oyun diye.. aslında hanoi kuleleri hayat tadında bir oyun. bir diski bir yerden taşımıyorsunuz aslında. belirli koşullar altında belirli kararlar alarak, bazen ileriye taşıdığınız diski geriye çekiyorsunuz, bazen de geride duran diski ileriye taşıyorsunuz.

    aldığınız kararlar da bunun kısa bir özeti. ama hedefiniz belli olduktan yani o diskleri en son direğe taşımaya karar verdikten sonra hedefe ulaşmak için yapmanız gereken tek şey stratejinizi belirlemek ve en kısa çözümü bulmak.

    hanoi kulelerinin çözüm mantığı saymaya dayanır. en kısa çözümler (2^n)- 1 şeklinde bulunur. yani 5 disk varsa en kısa 31 hamlede oyunu çözebilirsiniz. fakat ben ilk denememde 33 hamlede çözmeyi başarmıştım.

    işte bu yüzden, stratejiniz ve attığınız adımları hesaplamak çok önemli. oyunu 31 hamlede bitirebilecek ve hedefinize en kısa yoldan ulaşabilecek iken, neden 33 hamlede yapasınız ki?

    hem vakitten, hem zamandan hem hamleden israf.
    israf içinde olmayanlardan “olabilme” dileğiyle!
  • piaget 1976'da 5 yasinda cocuklarla 3 diskli halini calismis bunla, oz-duzenleme kuramini incelemek icin. ancak 3 diskli hali bile 5 yasindaki cocuk icin zor gelmis. bu da 5 yasina kadar cocuklarin plan yapma becerilerinin tam olarak gelismediginin gostergesi olarak kabul edilmis. sonra 11 yasindaki cocukla calismis, basarmis, bir disk daha eklemis. burada da; 11 yasinda karsilasilan problemlere, dusunulen cozumlerin transferinin zor oldugu teoremini ortaya atmis. yani sonuc olarak piaget'nin kuramsal anlamda oz-duzenlemesi; planlama asamasindan sonra kendini yineleyen ve karsilasilan probleme karsi kafadaki cozumu uygulamaktan geciyor demek mumkun.

    anzai ve simon ise piaget'nin calismalarina ek olarak, 1979'da 5 diskli halini bir yetiskin uzerinde calismis. yetiskin tabii ki de beklenildigi gibi daha planli, daha hedef bazli calismis, kendince cozumleme teorileri bulmus, olayin prensiplerini anlamaya yonelik aksion almis ve 5 diskli kuleyi tekrar kurmayi basarmis. bu da yine gosteriyor ki oz-duzenleme mekanizmasi kendini yinelemesinin yani sira, surecte kaynagin mantigini anlama ya da soruna yonelik kuramlar ortaya koyma gibi bireysel teknikler gelistirebilmeyle de alakali bir donanim.
  • şu sıralar fena sardığım oyundur.
    telefonda 10'lusunu yapabiliyorum da tahtada 7 diskli bulabildim.
    acayip eğlencelidir.
  • oyun 3 bloktan(çivi,çubuk, vs.) oluşuyor. oyundaki amaç, birinci blokta en az 3 disk olması koşuluyla, diskleri üçüncü bloğa taşımaktır. ancak küçük diskin üzerine büyük disk gelemez ve aynı anda birden fazla diski hareket ettirmek yasak yani her defasında yalnızca 1 disk oynatılabilir.
  • bir zamanlar ne zaman canım sıkılsa açıp süre rekorumu geliştirdiğim oyun.
    (bkz: zevk alınan ufak sapıklıklar)
hesabın var mı? giriş yap