Algoritmalar Ve Programlama Dersi 4. Ünite Sorularla Öğrenelim

Algoritma Tasarımı

1. Soru

Bilgisayarlarımız sonsuz hıza sahip ve bilgisayar hafızaları ücretsiz olsaydı yine de algoritmalar üzerinde çalışmamıza gerek olur muydu?

Cevap

Bu soruya vereceğimiz cevap şüphesiz evet olurdu. Bulduğumuz çözüm yönteminin doğru cevap ile sonuçlandığını gösterebilmek için de algoritmalarla çalışmamız gerekmektedir.


2. Soru

Algoritma tasarımı yaparken problem çok karmaşık ve çözümü uzun sürüyorsa nasıl bir yaklaşım geliştirilebilir?

Cevap

Kullanacağımız bilgisayarın işlemci hızı, hafıza kapasitesi vb. özellikleri tasarlayacağımız algoritmada etkilidir. Problemimiz çok karmaşık ve çözümü uzun süre gerektiriyorsa paralel programlama yöntemlerini kullanmaya karar verebiliriz. Problemimizi küçük parçalara böldükten sonra her bir parçayı ayrı bir bilgisayarda çözüp sonuçları birleştirerek asıl sonucu elde edebiliriz. Böylece problemimizi çok daha hızlı bir şekilde çözmüş oluruz


3. Soru

Üç tane sayının ortalamasını hesaplayan bir algoritmayı sözde kod ile nasıl ifade edebiliriz?

Cevap

Üç tane sayının ortalamasını hesaplayan bir algoritma tasarlayıp sözde kod ile ifade edelim:

  1. Sayıların değerlerini sayı1, sayı2 ve sayı3 olarak belirle
  2. Ortalama = (sayı1 + sayı2 + sayı3) / 3
  3. Kullanıcıya ortalama değerini göster

4. Soru

Algoritmalar temel olarak kaça ayrılır?

Cevap

Algoritmaları temel olarak iki gruba ayırabiliriz. Bunlar döngü (tekrarlama) algoritmaları ve özyinelemeli fonksiyon algoritmalarıdır. Döngü algoritmalarında, problemin çözümünü döngü içerisindeki tekrarlarla buluruz. Özyinelemeli fonksiyon algoritmalarında ise yazdığımız fonksiyon kendi içerisinde yine kendini çağırarak sonuca ulaşır. Her iki grubun da kendine has özellikleri vardır.


5. Soru

Algoritma kodunu yazmadan önceki son işlem nedir?

Cevap

Hazırladığımız algoritmanın kodunu yazmaya başlamadan önceki son işlemimiz algoritmayı analiz etmektir. Algoritmanın çalışma zamanı, başka bir ifadeyle, algoritma karmaşıklık düzeyi ve hafıza gereksinimleri analiz edilmelidir. 


6. Soru

Bilgisayarın hızı ve hafıza kapasitesi algoritmalar üzerinde nasıl bir etki yapmaktadır?

Cevap

Her ne kadar günümüzde bilgisayarlar oldukça hızlı olsa da sonsuz hızda değiller ve ayrıca bilgisayar hafızalarının da belirli bir maliyeti bulunmaktadır. Başka bir ifadeyle, sonsuz hızda bir bilgisayarımız olmadığı için algoritmalar ve algoritmaların hızı üzerinde çalışmak neredeyse bir zorunluluktur. Şimdi, ünitemizin başında verdiğimiz sıralama algoritmasını düşünelim. Elimizdeki rastgele 100 tane sayıyı sıralamak istiyorsak günümüz bilgisayarlarında hangi algoritmayı kullandığımızın fazla bir önemi olmayacaktır. Seçtiğimiz algoritma muhtemelen milisaniyeler içerisinde sonuç verecektir. Ancak, 100 yerine 10100 tane sayıyı sıralamak istersek bu sefer çok kısa sü- relerde sonuç beklememiz söz konusu olamayacaktır. Bu sebeple, algoritmalar üzerinde çalışılması bir zorunluluk hâline gelmiştir. Algoritma tasarımını yaparken nerede ve ne şekilde kullanacağımızı düşünerek bilgisayarın hızını ve hafıza kapasitesini de göz önünde bulundurmamız gerekmektedir.


7. Soru

Algoritmanın tasarımı ve analizi yapılırken problemi anlama aşamasından sonra hangi aşama gelir?

Cevap

Problemi anladıktan sonraki aşamada, algoritma tasarlama süreci gelmektedir. Algoritmaları tasarlarken diziler, kuyruklar, ağaçlar vb. veri yapılarından faydalanabiliriz. Veri yapısını seçerken mutlaka avantajlarını ve dezavantajlarını dikkate almalıyız. Ayrıca kullanacağımız programlama dili de algoritma tasarımında değerlendirmemiz gereken hususlardan biri olmalıdır. Nesne tabanlı bir dil kullanacaksak, tasarımlarımız da bu dile uygun olmalıdır.


8. Soru

Algoritma tasarlandıktan sonra doğruluğu nasıl test edilir?

Cevap

Algoritmayı tasarladıktan sonra, algoritmamızın bütün girişler için doğru sonucu vereceğini doğrulamamız gerekmektedir. Bu işlem bazı algoritmalar için nispeten kolay olmakla birlikte bazı algoritmalar için karmaşık bir süreç gerektirmektedir. Bir algoritmanın hatalı çalıştığını gösterebilmek için sadece bir tane yanlış sonuç yeterlidir, ancak doğru çalıştığını ispatlamak için bütün verilerde doğru çalıştığını teyit etmek gerekir. Örnek ola- rak sıralama algoritmasını ele alalım. Problemimizin kısıtlarını da düşünerek, tasarladığımız algoritmanın farklı eleman sayısı ve farklı elemanları sıralamak istediğimizde doğru sonucu vermesi gerekmektedir. Daha önce belirttiğimiz özel durumları da tasarımda göz önünde bulundurmalıyız. Örneğin, bölme işlemi yapan algoritmanın, sıfıra bölüm için tanımsız sonucunu vereceği de kontrol edilmelidir.


9. Soru

Algoritma nedir?

Cevap

Algoritma belirli değerleri ya da değerler kümesini giriş olarak alan, istenilen amaca uygun olarak bu değerleri bir takım işlemlerden geçirerek bir çıktı ya da çıktı kümesi oluşturan işlemlerin bütünü olarak tanımlanabilir.


10. Soru

Elimizde n tane elemandan oluşan bir dizi olduğunu düşünelim. Bu dizinin içerisindeki en büyük elemanı nasıl buluruz?

Cevap

Bu problemde ilk akla gelen çözüm bütün elemanlara tek tek bakıp en büyük olan elemanı bulmak olabilir. Bu işlemi şu şekilde yapabiliriz. Başlangıçta, dizinin ilk elemanını en büyük kabul ederiz. Daha sonra, en büyük kabul ettiğimiz değeri sırasıyla dizinin bütün elemanlarıyla karşılaştırırız. Herhangi bir sıradaki elemanın değeri, en büyük kabul ettiğimiz değerden büyükse en büyük eleman değerimizi gün- celleriz. Dizinin sonraki elemanlarını karşılaştırırken güncellenmiş en büyük değerimizi kullanırız. Dizinin sonuna geldiğimizde ise dizinin tamamı açısından en büyük elemanı bulmuş oluruz


11. Soru

Akış diyagramları ile daha çok ne tip algoritmalar göstermek doğrudur?

Cevap

Tasarladığımız algoritmayı göstermenin diğer bir yöntemi de akış diyagramı kullanmaktır. Akış diyagramıyla basit algoritmaları rahatlıkla gösterebiliriz. Ancak karmaşık algoritmalar akış diyagramı ile gösterime çok uygun olmayabilir.


12. Soru

Böl-Fethet yöntemindeki algoritmalar nasıl bir işleyiş yapısına sahiptir?

Cevap

Böl-Fethet yöntemi en iyi bilinen algoritma tasarım yöntemlerinden biridir. Böl-Fethet yöntemindeki algoritmalar aşağıdaki gibi işleyiş yapısına sahiptir:

1. Öncelikli olarak problem genellikle eşit büyüklükteki alt parçalara ayrılır.
2. Her bir alt problem, genellikle özyinelemeli fonksiyon aracılığı ile çözülür.
3. Bütün alt problemlerin çözümü birleştirilerek genel sonuç elde edilir.


Güz Dönemi Dönem Sonu Sınavı
18 Ocak 2025 Cumartesi
v