Bilgisayar Bilimi

Problem Çözme Süreci-1

1.Problem Çözme Teknikleri

İncelediğimiz problemleri çözerken çözüm sürecine destek olan bazı yaklaşımları kullandığımızı fark etmişsinizdir. Programlama sürecinde de problemin çözümüne yönelik yol ve yaklaşımları belirlemek gerekir ama öncelikle genel kural ve teknikleri bilmek yararlıdır. Bazı genel kurallar neredeyse tüm problemler için kullanılabilir. Bu nedenle, bu kuralları içselleştirir ve düşünme sürecinizin bir parçası hâline getirebilirseniz herhangi bir problemi çözmeye çalışırken mutlaka bir fikriniz olur.

Her Zaman Bir Planınız Olsun

Her Zaman Bir Planınız Olsun: Belirsiz bir durumu yaşamak yerine her zaman bir planınız olmalıdır. Bu, en önemli kuraldır. Belki oluşturduğunuz çözüm planı ilk denemelerde sonuç vermeyecek ama her seferinde sizi çözüme biraz daha yaklaştıracak ipuçları elde etmenizi sağlayacaktır.

Problemi Tekrar İfade Edin: Önceki problemlerde de gördüğümüz üzere bazen problemi tekrar ifade etmek, göremediğimiz bir ayrıntıyı görmemizi ya da problemi daha kolay çözmek adına bir ipucu yakalamamızı sağlayabilir. Hatta bazen probleme ilişkin bir yanlış anlamanın ortaya çıkmasına ya da hedefin daha iyi anlaşılmasına neden olur. Problemi farklı biçimlerde sunmak çözüm sürecine ışık tutmasa bile bazen yalnızca problemi doğru anlayıp anlamadığımızı bile teyit etmek açısından önemlidir. Ayrıca tekrar ifade ederek problemi küçük alt parçalara ayırmak gibi yaygın işlemleri de kolaylaştırmış olabiliriz.

Problemi Küçük Parçalara Ayırın Problemi Küçük Parçalara Ayırın: Verilen problemi adımlara ya da bölümlere ayırmak, çözümü kolaylaştırır. Bir problemi iki bölüme ayırdığımız düşünüldüğünde, her bir parçanın çözümünün tümünü çözmeye göre yarı yarıya kolaylaştığını düşünebiliriz.

Önce Bildiklerinizden Yola Çıkın: Programlama yaparken öncelikle bildiklerimiz ile başlamalı ve sonra yeni çözümler arayışına girmeliyiz. Problemi küçük parçalara bölerek çözebildiğiniz parçadan başlayınız. Bu parçaları çözerken diğer parçalarla ilgili olarak aklınıza yeni fikirler geldiğini ve aynı zamanda kendinize olan güvenin arttığını göreceksiniz.

Problemi Basitleştirin: Çözmekte zorlandığınız bir problemle karşılaşırsanız problemin kapsamını daraltmayı deneyebilirsiniz. Bunun için koşulları azaltmayı ya da çözebileceğiniz biçime dönüştürmeyi, değişkenleri azaltmayı ya da problemin kapsama alanını küçültmeyi düşünebilirsiniz. Temel amacınız problemi basitçe ifade etmeye çalışmak olmalıdır. Çözüm için denediğiniz yaklaşımlar, size gerçek çözüm için yol gösterecektir. Problemi basitleştirmek size aslında problemdeki zorluğun neden kaynaklandığını da gösterecektir.

Benzerlikleri Arayın: Burada ele aldığımız benzerlik kavramı, çözülmesi istenen problemle önceden çözülen problem arasındaki olası örtüşme ya da yeni çözüme ilham verme olarak tanımlanabilir. Benzerlik, farklı biçimlerde karşımıza çıkabilir. Bazen problemler aynı, değişkenler ya da veriler farklıdır. Bazen problemin belirli bir bölümü başka bir problemle benzerlik gösterebilir.

Deneme Yapın: Bazen bir problemi çözmenin en kolay yolu denemek ve sonuçlarını gözlemlemektir. Bu, tahmin etmekten çok farklıdır. Bir çözümü tahminen öngörmek ile kodu yazarak denemek ve sonuçlarını incelemek çok farklı sonuçlar verir. Böylece problemi çözebilmek için gereken ipuçlarını elde edebilirsiniz.

Asla Vazgeçmeyin: Asla vazgeçmemek, kişisel bir özelliktir. Kararlılık, güven ve istek kaybolduğu zaman açık düşünemezsiniz, işlemler olması gerektiğinden uzun sürer ve gittikçe zorlaşır. Hatta öf ke ve kızgınlığa bile dönüşebilir. Ekrandaki program kodu çalışmadığı zaman programcı koda değil, kendisine ve aslında problemin kaynağına, yani kendi aklına kızmaktadır. Bu noktada moralimizin bozulmasına izin vererek aslında başarısız olmak için bir bahane üretmiş oluruz. Bu duygudan kurtulmak, programcı tarafından verilecek bir karardır. Böyle durumlarda en etkili çözüm ara vermektir. Problemden tamamen uzaklaşarak geçirilecek vakit sonrasında çok daha verimli çalışmak olasıdır.

2.Problem Çözme Adımları

Problem çözme sürecinde en iyi kararı verebilmek için izlenmesi gereken 6 adım vardır:

Problemi Tanımlama: Problemi çözmeye başlamadan önce problemin açık, anlaşılır ve çok doğru bir şekilde tanımlanmış olması gerekir. Problemin ne olduğunu bilemezseniz onu çözemezsiniz.

Problemi Anlama: Çözüme doğru yol almadan önce problemi çok iyi anladığınızdan emin olmanız gerekir. Problemin neler içerdiğini ve kapsamını doğru anlamalısınız. Ayrıca problemi çözmeniz gereken insan ya da sistemin bilgi tabanında neler olduğunu da çok iyi anlamalısınız. Mevcut bilgi tabanında olmayan herhangi bir kavram ya da yönergeyi problemin çözüm sürecinde kullanamazsınız. Bu konuda klasik ve önemli bir söz vardır: “Problemi anlamak, problemi yarı yarıya çözmek demektir.”

Problemin Çözümü İçin Farklı Yol ve Yöntemler Belirleme: Problemin çözümü için olabildiğince farklı yol ve yöntem belirlemeli ve bu listenin, tüm olasılıkları içerdiğinden emin olmalısınız. Bunun için konu hakkında farklı kişilerin görüşlerini alabilirsiniz. Farklı çözümler kabul edilebilir olmalıdır. Problem çözmek için tek bir yol yoktur; pek çok yol vardır.

Farklı Çözüm Yolları Listesi İçerisinden En İyi Çözümü Seçme: Bu adımda her bir çözümün olumlu ve olumsuz yönlerini ortaya koymalısınız. Bu nedenle değerlendirme yapabilmek için ölçütler oluşturmalısınız. Bu ölçütler her bir çözüm yolunu değerlendirmek için size rehber olacaktır. Problem çözmek için tek bir yol yoktur; en iyi yol vardır.

Seçilen Çözüm Yolu ile Problemi Çözmek İçin Gerekli Yönergeleri Oluşturma: Bu adımda numaralandırılmış ve adım adım yönergeler oluşturmanız gerekir. Bu yönergelerin ikinci adımda belirtilen bilgi tabanı kapsamında olmasına dikkat ediniz. Bu durum, özellikle bilgisayarlar ile çalışırken son derece kısıtlı davranmanıza neden olabilir.

Çözümü Değerlendirme: Çözümü test etmek ya da değerlendirmek, sonucun doğruluğunu kontrol etmek anlamına gelir. Sonucun doğru olması ve problemi olan bireyin beklentilerini karşılama düzeyi önemlidir. Sonuç yanlış çıkmış ya da bireyin beklentilerini karşılamamış ise problem çözme sürecine baştan başlamak gerekir.



3.Problem Türleri

Problemlerin her zaman sıradan çözümleri olmaz. Kek yapmak ya da araba kullanmak gibi problemleri çözmek için bir dizi eylem gerekir. Adım adım yönergelere dayalı olan bu çözümlere “algoritmik çözümler” denir. En iyi yolu seçtikten sonra sonuca, ilgili adımları izleyerek ulaşılır. Bu adımlardan oluşan yapıya “algoritma” denir. En lezzetli ekmeği seçmek ya da işleri büyütmek için yatırım yapmak gibi problemlerin ise açık ve net ifade edilen yanıtları yoktur. Bu çözümler bilgi ve deneyim gerektirir, bir dizi deneme ve yanılma sürecinden oluşur. Doğrudan işlem adımları ile ulaşılamayan sonuçlara “keşfe dayalı çözümler” denir.

Problemi çözen kişi her iki türdeki problem için problem çözmenin 6 adımını kullanabilir. Ancak keşifsel çözümler için son adım çok doğru sonuç vermeyebilir. Bazı problemler ise her iki türdeki çözümün de kullanılmasını gerektirir.

4.Bilgisayarla Problem Çözme

Bu ders kapsamında “çözüm” demek problem çözme sürecinin 5. adımında yer alan işlem adımları ya da yönergeler anlamına gelmektedir. “Sonuç” demek, çıktı ya da tamamlanmış bilgisayar destekli yanıt demektir. “Program” ise herhangi bir bilgisayar dilinde kodlanmış, çözümü oluşturan işlem adımlarının tamamını ifade etmektedir.

Bilgisayarlar ile Problem Çözme

Bilgisayarlar, zor ve zaman alıcı olabilen algoritmik çözümler ile ilgilenmek üzere tasarlanmıştır. İnsanlar, keşifsel çözümleri bulma konusunda daha iyidirler ancak bilgisayarların çözebildiği ileri düzey hesaplama ve karmaşık problemleri çözme konusunda bilgisayarların hızlarına ulaşamazlar. Bilgisayarlar, üst düzey matematik problemlerini kolayca çözebilir ancak konuşmak ya da top atmak gibi davranışları yapamaz. Bu işlemlerin zorluğu programlama sürecindedir. Bu tür işlemleri bilgisayarların anlayacağı bir dizi adım şekline nasıl dönüştürebiliriz?

Keşifsel problem türleri ile ilgilenen bilgisayar dalına “yapay zekâ” adı verilmektedir. Yapay zekâ uygulamaları, bilgisayarlara mevcut bilgileri kullanarak yeni bilgiler inşa etmesini sağlamaktadır. Böylece bilgisayarın problem çözme becerileri insanların yeteneklerine daha çok benzemektedir. Yapay zekâ özellikle robotik uygulamaları ile son yıllarda popüler bir çalışma alanı olmuştur. Bilgisayarlar insanlar gibi düşünmeye başlayana kadar daha çok algoritmik problemlerin çözüm süreçlerinde kullanılacaktır. Bu nedenle bu derste ağırlıklı olarak algoritmik çözümler üzerinde durulacaktır.


Problem Çözme Teknikleri konusu ile ilgili sunum dosyasına ve konu testine (yakında) aşağıdan ulaşabilirsiniz.

Sunu İndir2

Online Test Çöz2

2 thoughts on “Problem Çözme Süreci-1

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir