• çoğu bilgisayarcının kendileriyle karşılaşınca "hanoi sensin kuleleri de sana girsin" dediği kulelerdir.
  • bunu öğretmeye çalıştığınız çocuk* "eee niye taşıycam ki bunları o tarafa, ne gerek var?" gibi bi atalet içindeyse hemen sinirlenmeyiniz: "bak şimdi, bunlar birbirlerinin omuzlarına çıkmış olan 5 cambazmış, o tarafa geçmeleri lazımmış..., ama şişman olanları zayıfların üstüne bindirmemek lazım dimi..." gibi bi yaklaşım faydalı olabiliyor.
  • efsaneye gore kadim vietnam'in impratoru zamaninda rahiplerinden bu kuleleri yapmasını istemiştir. bu kulelerin amacı genç rahiplerin zihinsel disiplinlerini egitmektir. problem anlasılınca ortaya bir sonuc cikmistir: kurallarına gore oyunu tamamlamak (her hamle 1 saniyede tamamlanırsa. toplam hamle sayısı 18,446,744,073,709,551,615'dir) yaklasık 580 milyar yıl alacaktır. ama eger bir gun tamamlanabilirse, dunyanın sonunu gelecektir.
  • fransiz matematikci edouard lucas tarafindan 1883 yilinda icat edilmis problem. bir cubuga gecirilmis 8 adet diskin diger bir kuleye gecirilmesi esasina dayanir. soz konusu 8 disk, buyukten kucuge dogru ust uste birinci kuleye dizilmislerdir, ve bos olan iki kule kullanilarak (yani toplamda 3 kulemiz var) en sagdaki bos kuleye butun diskleri sirali olarak transfer etmemiz istenir. ayni anda sadece bir diski bir kuleden digerine gecirebiliriz, ve bu disk en ustte duran disk olmalidir. transfer edilen disk, baska bir diskin uzerine konulabilir, ancak altta kalan diskin her zaman ustteki disklerden buyuk olmasi zorunludur.
    bilgisayar muhendisligi ogrencilerinin algorithm design ya da data structures derslerinde mutlaka gordukleri bir bulmacadir.
    aslinda usenmeyip asagiya ascii olarak cizmistim ben bunu ama sozluk spaceleri sildigi icin olmadi, ben de vazgectim, herhangi bir arama motorunda aratirsaniz nasil bir sey oldugunu gorebilirsiniz.
  • budist rahipler 64 diskli versiyonunu cozdugunde dunyanin sonunun gelecegine inanilan problem.
    2^64-1 hamle gerekli o yuzden simdilik endiseye gerek yok..
  • (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.
  • ilk tasi disk sayisi tek ise hedef yere cift ise diger yere koy ile ozetlenebilecek bir strateji ile 8-9 tanelisine kadar rahatca cozulebilen bir oyun (daha fazlasi cok bayiyor). tabi bu stratejiyi sadece basta degil her adimda (recursive loop) kullanmaniz lazim. ha bir de cozum icin gereken minumum hamle sayisi 2^n - 1 (n disk sayisi).
  • 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!
  • oyun yanyana dikilmiş üç çubuk ve bu çubuklardan bir tanesine geçirilmiş sayısı size kalmış büyükten küçüğe doğru dizilmiş disklerden oluşur. bu diskleri boştaki bir çubuğa aktarmanız gerekir. hamleler sırasında dikkat etmeniz gereken nokta büyük diskleri küçük disklerin üzerine koyamamanız.

    oyun üç diskle oynandığında kolay olabilir (en az 7 hamle yapmanız gerekir) disk sayısı arttıkça hamle sayısı da katlanarak artmaktadır. dokuz disk için 511 hamle yapmak gerekebilir.
  • programlama dili hocalarının gözdesi oyun,motorola telefonların bazı modellerinde de mevcuttur.
hesabın var mı? giriş yap