Page 35 - Bilgisayar Bilimi | Kur 1
P. 35

Ögelerden birini yakın kıyıya geri götürme imkânı açıkça belirtilseydi bulmacanın ne kadar kolay
            çözüleceğini düşünün. O zaman problemin çözümüne ulaşmak için düşünmemize gerek bile kalma-
            yacaktır. Bu yüzden farklı biçimde düşünebilen ve farklı çözüm yolları üretebilen kişiler bu problemi
            çözecektir. Bu, problem çözmede önemli bir ilkeyi göstermektedir: Yapabileceğiniz olası tüm hare-
            ketleri öngöremezseniz sorunu çözemezsiniz. Diğer yandan olası tüm işlemleri numaralandırarak,
            çalışan birleşimini bulana kadar farklı işlemleri deneyerek birçok problemi çözebilirsiniz. Genel olarak
            bir sorunu daha biçimsel adımlarla yeniden düzenleyerek elinizden kaçırdığınız çözümleri ortaya çıka-
            rabilirsiniz.

               Artık çözümü bildiğimize göre problemi daha biçimsel ifade etmeyi deneyebiliriz. Öncelikle kısıtla-
            maları listeleyeceğiz. Buradaki anahtar kısıtlamalar şunlardır:

                 1. Çiftçi tekne içerisine tek seferde kendisi dışında yalnızca bir nesne daha alabilir.
                 2. Tilki ve kaz aynı kıyıda yalnız bırakılamaz.
                 3. Kaz ve mısır aynı kıyıda yalnız bırakılamaz.

               Bu problem, kısıtlamaların önemini ortaya koyan iyi bir örnektir. Bu kısıtlamalardan herhangi birini
            kaldırırsak bulmaca kolay hâle gelir. İlk kısıtlamayı kaldırırsak üç ögeyi tek bir turda alabiliriz. Tekneye
            sadece iki öge alsak bile tilki ve mısır çuvalını alıp kaz için geri dönebiliriz. İkinci kısıtlamayı kaldırırsak
            (ancak diğer kısıtlamaları yerinde bırakırsak) önce kaz, sonra tilki ve sonunda mısırı alabiliriz. Kaz ve
            mısırda dikkatli olmamız gerekir. Bu nedenle kısıtlamaların herhangi birini unutursak veya yok sayar-
            sak problemi doğru bir şekilde çözemeyiz.
               Sonra, işlemleri listeleyelim. Bu bulmacanın işlemlerini belirlemenin çeşitli yolları vardır. Yapabile-
            ceğimizi düşündüğümüz eylemlerin belirli bir listesini hazırlayabiliriz:
                 1. İşlem: Tilkiyi nehrin karşı tarafına taşıyın.
                 2. İşlem: Kazı nehrin karşı tarafına taşıyın.

                 3. İşlem: Mısır çuvalını nehrin karşı tarafına taşıyın.
               Ancak, sorunu biçimsel olarak yeniden ifade etme amacının çözüm için bir fikir edinmek olduğunu
            unutmayın. Problemi çözemediyseniz ve diğer gizli işlemleri keşfedemediyseniz, eylem listesi oluşturur-
            ken de problemi çözemezsiniz demektir. Bunun yerine işlemleri kapsamlı (biçimsel) yapmalı ve koşullu
            hâle getirmeliyiz.
                 1. İşlem: Tekneyi bir kıyıdan diğerine götürün.

                 2. İşlem: Teknede yalnızca çiftçi varsa (sadece bir nesne) tekneye kıyıdan bir nesne yükleyin.
                 3. İşlem: Teknede iki nesne varsa (çiftçi ve bir nesne daha) nesneyi kıyıya bırakın.
               Bu ikinci işlem listesi; problem hakkında en biçimsel anlamda düşünmemizi, koşullara uygun biçim-
            de problemi çözmemizi, kaz ile yakın kıyıya geri yolculuğu düşünmemizi sağlayacaktır. Olası tüm hare-
            ket dizilerini üretirsek, her bir diziyi kısıtlamalardan birini ihlal ederek veya daha önce gördüğümüz bir
            yapılandırmaya ulaşarak bitirirsek, sonunda Şekil 1.3’teki diziye ulaşıp bulmacayı çözeriz. Bulmacanın
            doğasında olan zorluk, kısıtlamaların ve işlemlerin düzgün olarak tekrar konması yoluyla engellenecek-
            tir. Böylece bu problemi X adımda çözdüğümüzü görürüz.
                 1. İşlem: Kazı nehrin karşı tarafına taşıyın.
                 2. İşlem: Tekneyi bir kıyıdan diğerine götürün.
                 3. İşlem: Tilkiyi nehrin karşı tarafına taşıyın.

                 4. İşlem: Kazı nehrin karşı tarafına taşıyın.


         34
   30   31   32   33   34   35   36   37   38   39   40