Algoritmalar Ve Programlama Dersi 4. Ünite Sorularla Öğrenelim
Algoritma Tasarımı
Bilgisayarlarımız sonsuz hıza sahip ve bilgisayar hafızaları ücretsiz olsaydı yine de algoritmalar üzerinde çalışmamıza gerek olur muydu?
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.
Algoritma tasarımı yaparken problem çok karmaşık ve çözümü uzun sürüyorsa nasıl bir yaklaşım geliştirilebilir?
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
Üç tane sayının ortalamasını hesaplayan bir algoritmayı sözde kod ile nasıl ifade edebiliriz?
Üç tane sayının ortalamasını hesaplayan bir algoritma tasarlayıp sözde kod ile ifade edelim:
- Sayıların değerlerini sayı1, sayı2 ve sayı3 olarak belirle
- Ortalama = (sayı1 + sayı2 + sayı3) / 3
- Kullanıcıya ortalama değerini göster
Algoritmalar temel olarak kaça ayrılır?
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.
Algoritma kodunu yazmadan önceki son işlem nedir?
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.
Bilgisayarın hızı ve hafıza kapasitesi algoritmalar üzerinde nasıl bir etki yapmaktadır?
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.
Algoritmanın tasarımı ve analizi yapılırken problemi anlama aşamasından sonra hangi aşama gelir?
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.
Algoritma tasarlandıktan sonra doğruluğu nasıl test edilir?
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.
Algoritma nedir?
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.
Elimizde n tane elemandan oluşan bir dizi olduğunu düşünelim. Bu dizinin içerisindeki en büyük elemanı nasıl buluruz?
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
Akış diyagramları ile daha çok ne tip algoritmalar göstermek doğrudur?
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.
Böl-Fethet yöntemindeki algoritmalar nasıl bir işleyiş yapısına sahiptir?
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.
-
AÖF Sınavları İçin Ders Çalışma Taktikleri Nelerdir?
date_range 8 Gün önce comment 11 visibility 17861
-
2024-2025 Öğretim Yılı Güz Dönemi Kayıt Yenileme Duyurusu
date_range 7 Ekim 2024 Pazartesi comment 1 visibility 1164
-
2024-2025 YKS Ek Yerleştirme İle Yerleşen Adayların Çevrimiçi (Online) Başvuru ve Kayıt Duyurusu
date_range 24 Eylül 2024 Salı comment 1 visibility 616
-
Çıkmış Soruları Gönder Para Kazan!
date_range 10 Eylül 2024 Salı comment 5 visibility 2741
-
2023-2024 Öğretim Yılı Yaz Okulu Sınavı Sonuçları Açıklandı!
date_range 27 Ağustos 2024 Salı comment 0 visibility 906
-
Başarı notu nedir, nasıl hesaplanıyor? Görüntüleme : 25571
-
Bütünleme sınavı neden yapılmamaktadır? Görüntüleme : 14506
-
Akademik durum neyi ifade ediyor? Görüntüleme : 12508
-
Harf notlarının anlamları nedir? Görüntüleme : 12500
-
Akademik yetersizlik uyarısı ne anlama gelmektedir? Görüntüleme : 10424