Sudoku Nedir, Nasıl Oynanır?

Sudoku Nedir, Nasıl Oynanır?

6 Şubat 2018 0 Yazar: Recep

Sudoku oyunu gazete ve dergilerde yer almasıyla ayrıca web ve telefon tabanlı bir oyun olarak sunulmasıyla son derece popüler hâle gelmiştir. Farklı varyasyonlar olmakla birlikte burada kısa olan geleneksel sürümü tartışılacaktır.

9×9 boyutlu bir tablo kısmen tek basamaklı (1-9 arası) sayı ile doldurulur ve oyuncu belirli kısıtlamalara göre hareket ederken yalnızca boş kareleri doldurmalıdır: Her bir satır ve sütunda, her rakam tam olarak bir kez yazılmalıdır ve her doldurulmuş 3×3 alanda her bir rakam tam olarak bir kez yer almalıdır. O zaman, verilen bir sudoku yapısındaki boşlukları 1-9 arasındaki her bir sayıyı; bulunduğu satır, sütun ve kare içinde yalnızca bir kez kullanılacak biçimde nasıl doldururuz?

Daha önce bu oyunu oynadıysanız muhtemelen en az zamanda bir kareyi tamamlamak için bir dizi stratejiniz vardır. Şekil 1.4’te gösterilen örnek kareye bakarak anahtar başlangıç stratejisine odaklanalım.

Şekil 1.4: Kolay bir sudoku kare bulmaca

Şekil 1.4: Kolay bir sudoku kare bulmaca

Sudoku bulmacanın zorluk derecesi doldurulması gereken karelerin sayısı ile belirlenir. Bu örnek çok kolay bir bulmacadır. 36 kare zaten doldurulmuş olduğundan, bulmacayı tamamlamak için doldurulması gereken sadece 45 kare bulunmaktadır.

Soru şudur: Hangi kareleri ilk olarak doldurmaya çalışalım?

Bulmacanın kısıtlamalarını hatırlayın. Dokuz ana karenin her bir satır ve sütunda, her rakam tam olarak bir kez yazılmalıdır ve her doldurulmuş 3×3 alanda her bir rakam tam olarak bir kez yer almalıdır. Bu kurallar, çabalarımıza nereden başlamamız gerektiğini belirtir. Bulmacanın ortasındaki 3×3 alan, dokuz kareden sekizinde zaten sayıya sahip. Bu nedenle ortadaki kare, yalnızca 3×3 alanında başka bir karede temsil edilmeyen tek bir olası değeri içerebilir. İşte bulmacayı buradan çözmeye başlamalıyız. Bu alandaki eksik rakam 7’dir, bu nedenle orta kareye 7 rakamını yerleştireceğiz.

Bu değeri yerinde yazdığımızda, bu sütunun artık dokuz kareden yedisinde değerlere sahip olduğunu ve bunların her bir sütunda bulunmayan bir değeri olması gerektiği ve yalnızca iki kareyi boş bıraktığını unutmayın: İki boş karenin değeri 3 ve 9’dur. Bu sütundaki kısıtlama her iki numarayı da her iki yere yazmamıza izin verir ancak 3’ün üçüncü satırda, 9’un zaten yedinci satırda bulunduğuna dikkat edin. Bu nedenle satır kısıtlamaları, 9’un orta sütunun üçüncü satırına, 3’ün orta sütunun yedinci satırına yazılmasını gerektirir. Bu adımlar, Şekil 1.5’te özetlenmiştir.

Şekil 1.5: Örnek sudoku bulmacanın çözümünde ilk adımlar

Şekil 1.5: Örnek sudoku bulmacanın çözümünde ilk adımlar

Tüm bulmacayı burada çözmeyeceğiz ancak bu ilk adımlar, ideal olarak mümkün olan en düşük sayıdaki kareler için aradığımız sadece bir tane önemli noktayı görmemizi sağlar.

Bu Problemden Neler Öğrendik?

Sudokunun temel dersi, problemin en kısıtlı bölümüne bakmamız gerektiğidir. Kısıtlamalar, çoğu zaman bir problemi zorlaştıran şeyken (Tilkiyi, kazı ve mısır çuvalını unutmayın.) aynı zamanda çözüm hakkındaki düşüncemizi basitleştirebilir çünkü seçenekleri ortadan kaldırır.

Yapay zekâyı bu kitapta özel olarak tartışmayacak olsak da, yapay zekâda “en katı değişken” olarak adlandırılan belirli türdeki problemleri çözmek için bir kural vardır. Kısıtlamaları karşılamak için farklı değişkenlere farklı değerler atamaya çalıştığınız bir problemde, en fazla kısıtlamaları olan değişkenle başlamak ya da olası değerlerin en düşük sayısına sahip değişkeni başka bir şekilde koymak gerekir.

İşte bu tür düşünceye bir örnek; bir grup iş arkadaşınızın sizinle beraber öğle yemeğine gitmek istediğini ve herkesin beğeneceği bir restoran bulmanızı rica ettiğini varsayalım. Problem şu: Meslektaşların her biri grup kararında birtakım kısıtlamalar getiriyor; Ayşe vejetaryen, Can deniz ürünlerini sevmiyor, Serhan’ın çoklu gıda alerjisi var vb. Hedefiniz bir restoran bulmak için gereken süreyi en aza indirmek ise en sıkı kısıtlamalara sahip olan iş arkadaşınızla konuşarak başlayın. Örneğin Serhan’ın bir dizi geniş gıda alerjisi varsa Can’dan başlamak yerine, Serhan’ın yiyebileceği yemeklerin olduğu bir restoran listesi bularak başlamak daha mantıklı olacaktır. Deniz ürünlerinden hoşlanmaması daha kolay çözülebilir.

Aynı teknik, genellikle programlama problemlerine uygulanabilir. Sorunun bir kısmı aşırı derecede kısıtlıysa bu, başlamak için harika bir yer çünkü daha sonradan çözülecekse iş yerinde boşa vakit geçirdiğinizi düşünmeden ilerleme kaydedebilirsiniz. Bununla ilgili bir sonuç, belirgin olan kısmı ile başlanması gerektiğidir. Sorunun bir bölümünü çözebilirseniz devam edin ve mümkün olanı yapın. Kendi kodunuzu görmek, gerisini çözmek hayal gücünüzü artıracak ve bundan bir şeyler öğrenebileceksiniz.