Page 22 - Bilgisayar Bilimi Kur 1| I. Bölüm
P. 22
Ö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. Eğer problemi çözemediyseniz ve diğer gizli işlemleri keşfedemiyseniz eylem listesi oluştu-
rurken de problemi çözemeyiz 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 7 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.
5. İşlem: Mısır çuvalını nehrin karşı tarafına taşıyın.
36