Bir algoritmada bulunması gereken temel öğeler sıra, karar verme yapıları ve yinelemedir. Çözüm adımları bir sıraya dizilmiş olarak verilmelidir. Bu sıra çözüm adımlarının hangi sırayla uygulanacağını gösterir. Bir adımın içerdiği alt adımlar numaralama düzeniyle açıkça belirlenir.
İçindekiler Tablosu
- Algoritma Nedir?
- Algoritmalar Nasıl Çalışır?
- İyi Bir Algoritmayı Ne Oluşturur?
- Algoritmalara Neden İhtiyaç Var?
- Algoritma Örnekleri
- Algoritma Nasıl Yazılır?
- Algoritmaların Temellerini Öğrenin
- Algoritmaların Analizi
- Algoritma Türleri
Algoritma Nedir?
Bir algoritma, bir hesaplama problemini çözmek için kullanılabilen iyi tanımlanmış talimatların sonlu bir dizisidir. Bir girdiyi istenen bir çıktıya dönüştüren adım adım bir prosedür sağlar.
Algoritmalar Nasıl Çalışır?
Algoritmalar genellikle mantıksal bir yapıyı takip eder:
- Giriş: Algoritma giriş verilerini alır.
- İşleme: Algoritma, giriş verileri üzerinde bir dizi işlem gerçekleştirir.
- Çıktı: Algoritma istenilen çıktıyı üretir.
Bir Algoritmanın Özellikleri:
- Açık ve Belirsiz: Algoritma belirsiz olmamalıdır. Her adımı her açıdan açık olmalı ve yalnızca bir anlama yol açmalıdır.
- İyi Tanımlanmış Girdiler: Bir algoritma girdi almayı söylüyorsa, iyi tanımlanmış girdiler olmalıdır. Girdi alabilir veya almayabilir.
- İyi Tanımlanmış Çıktılar: Algoritma, hangi çıktının üretileceğini açıkça tanımlamalı ve iyi tanımlanmış olmalıdır. En az 1 çıktı üretmelidir.
- Sonluluk: Algoritma sonlu olmalıdır, yani sonlu bir süre sonra sonlanmalıdır.
- Uygulanabilir: Algoritma basit, genel ve pratik olmalı, böylece makul kısıtlamalar ve kaynaklar kullanılarak yürütülebilmelidir.
- Dil Bağımsız: Algoritma dil bağımsız olmalıdır, yani herhangi bir dilde uygulanabilen düz talimatlardan oluşmalı ve beklendiği gibi çıktı aynı olmalıdır.
Algoritmalara Neden İhtiyaç Var?
Algoritmalar karmaşık hesaplama problemlerini verimli ve etkili bir şekilde çözmek için olmazsa olmazdır. Bunlar şunlara sistematik bir yaklaşım sağlar:
- Sorunları çözme: Algoritmalar sorunları daha küçük, yönetilebilir adımlara böler.
- Çözümlerin optimize edilmesi: Algoritmalar sorunlara en iyi veya en iyiye yakın çözümleri bulur.
- Görevlerin otomatikleştirilmesi: Algoritmalar tekrarlayan veya karmaşık görevleri otomatikleştirerek zamandan ve emekten tasarruf sağlayabilir.
Algoritma Örnekleri
Aşağıda algoritmalara dair bazı örnekler verilmiştir:
- Sıralama algoritmaları: Birleştirme sıralaması, Hızlı sıralama, Yığın sıralaması
- Arama algoritmaları: Doğrusal arama, İkili arama, Karma
- Grafik algoritmaları: Dijkstra algoritması, Prim algoritması, Floyd-Warshall algoritması
- Dize eşleştirme algoritmaları: Knuth-Morris-Pratt algoritması, Boyer-Moore algoritması
Algoritma Nasıl Yazılır?
Bir algoritma yazmak için şu adımları izleyin:
- Sorunu tanımlayın: Çözülmesi gereken sorunu açıkça belirtin.
- Algoritmayı tasarlayın: Uygun bir algoritma tasarım paradigması seçin ve adım adım bir prosedür geliştirin.
- Algoritmayı uygula: Algoritmayı bir programlama diline çevir.
- Test edin ve hata ayıklayın: Algoritmanın doğruluğunu ve verimliliğini sağlamak için çeşitli girdilerle algoritmayı çalıştırın.
- Algoritmayı analiz edin: Zaman ve mekan karmaşıklığını belirleyin ve alternatif algoritmalarla karşılaştırın.
Algoritmaların Temellerini Öğrenin
- Algoritma Nedir | Algoritmalara Giriş
- Algoritmaların Tanımı, Türleri, Karmaşıklığı, Örnekleri
- Algoritma Tasarım Teknikleri
- Bir Algoritmanın analizi neden önemlidir?
Algoritmaların Analizi
- Asimptotik Analiz
- En Kötü, Ortalama ve En İyi Durumlar
- Asimptotik Notasyonlar
- Alt ve Üst Sınır Teorisi
- Amortize Analize Giriş
- ‘Uzay Karmaşıklığı’ ne anlama geliyor?
- Polinom Zaman Yaklaşımı Şeması
- Muhasebe Yöntemi | Amortize Analiz
- Amortize Analizde Potansiyel Yöntemi
Algoritma Türleri
Algoritmalar, ne yaptıklarına ve nasıl yapıldıklarına bağlı olarak farklı türlerde olabilir. Bazı yaygın türler şunlardır:
1. Arama ve Sıralama Algoritmaları
- Arama Algoritmalarına Giriş
- Sıralama Algoritmasına Giriş
- Kararlı ve Kararsız Sıralama Algoritmaları
- Karşılaştırmaya dayalı sıralama algoritmaları için alt sınır
- Karşılaştırma tabanlı bir sıralama algoritmasının Çalışma Zamanı Karmaşıklığı N logN’den az olabilir mi?
- Hangi sıralama algoritması en az sayıda bellek yazma işlemini gerçekleştirir?
2. Açgözlü Algoritmalar
- Açgözlü Algoritmalara Giriş
- Etkinlik Seçimi Problemi
- Huffman Kodlaması
- İş Sıralaması Problemi
- Açgözlü Algoritmalar Sınavı
- Bir Tren/Otobüs İstasyonu İçin Gerekli Minimum Platform Sayısı
3. Dinamik Programlama Algoritmaları
- Dinamik Programlamaya Giriş
- Çakışan Alt Problemler Özelliği
- Optimum Alt Yapı Özelliği
- En Uzun Artan Alt Dizi
- En Uzun Ortak Alt Dizi
- Min Maliyet Yolu
- Madeni Para Değişimi
- Matris Zincir Çarpımı
- 0-1 Sırt Çantası Problemi
- En Uzun Palindromik Alt Dizi
- Palindrom Bölümlendirme
4. Desen Arama Algoritmaları
- Desen Aramaya Giriş
- Saf Desen Arama
- KMP Algoritması
- Rabin-Karp Algoritması
- Tüm Eklerin Trie’sini Kullanarak Desen Arama
- Desen Arama için Aho-Corasick Algoritması
- Z algoritması (Doğrusal zaman desen arama algoritması)
5. Geri İzleme Algoritması
- Geri İzlemeye Giriş
- Verilen bir dizenin tüm permütasyonlarını yazdır
- Şövalyenin tur problemi
- Labirentteki Fare
- N Kraliçe Sorunu
- Alt küme toplamı
- m Boyama Problemi
- Hamilton Döngüsü
- Sudoku
6. Böl ve Yönet Algoritması
- Böl ve Yönet’e Giriş
- Birleştirme Sıralaması
- x*n’yi hesaplamak için kendi pow(x, n)’inizi yazın
- Sayım Ters Çevirmeleri
- En Yakın Nokta Çifti
- Strassen’in Matris Çarpımı
7. Geometrik Algoritma
- Geometrik Algoritmalara Giriş
- En Yakın Nokta Çifti | O(nlogn) Uygulaması
- Verilen bir noktanın çokgenin içinde mi yoksa dışında mı olduğunu nasıl kontrol edebilirim?
- Verilen iki doğru parçasının kesişip kesişmediği nasıl kontrol edilir?
- n doğru parçası verildiğinde, herhangi iki parçanın kesişip kesişmediğini bulun
- Verilen dört noktanın bir kare oluşturup oluşturmadığını nasıl kontrol edebilirim?
- Jarvis Algoritması veya Sarmalama Kullanılarak Dışbükey Gövde
8. Matematiksel Algoritmalar
- Matematiksel Algoritmalara Giriş
- Bir Sayının 3’ün Katı Olup Olmadığını Kontrol Etmek İçin Etkin Bir Yöntem Yazın
- 14 tabanında iki sayıyı toplayan bir program yazın
- Fibonacci sayıları için program
- Bir sayı akışının ortalaması
- Çarpma, bölme ve bitsel operatörler ve döngüler kullanmadan iki tam sayıyı çarpın
- Karekök için Babil yöntemi
- Eratosthenes’in kalburu
- Pascal Üçgeni
- Verilen bir sayıya göre, bir sonraki en küçük palindromu bulun
- İki polinomu toplayan program
- İki polinomu çarpın
- Bir sayının faktöriyelindeki son sıfırları say
9. Bitwise Algoritmaları
- Bitwise Algoritmalarına Giriş
- Küçük ve Büyük Uçlu
- Karşıt işaretleri tespit edin
- Bitleri takas et
- En sağdaki set bitini kapat
- Bitleri döndür
- Aynı sayıda ayarlanmış bit ile bir sonraki daha yüksek sayı
- Bir baytta iki nibble’ı takas et
10. Grafik Algoritmaları
- Grafik Algoritmalarına Giriş
- En iyi arkadaş, en iyi arkadaş
- Grafikteki Döngüler
- En kısa yollar
- MST
- Topolojik Sıralama
- Bağlantı
- Maksimum Akış
11. Rastgele Algoritmalar
- Rastgele Algoritmalara Giriş
- Beklenti Doğrusallığı
- Başarıya Kadar Beklenen Deneme Sayısı
- Rastgele Algoritmalar | Set 0 (Matematiksel Arka Plan)
- Rastgele Algoritmalar | Set 1 (Giriş ve Analiz)
- Rastgele Algoritmalar | Set 2 (Sınıflandırma ve Uygulamalar)
- Rastgele Algoritmalar | Set 3 (Yaklaşık Medyan 1/2)
- Rezervuar Örneklemesi
12. Dal ve Sınır Algoritmaları
- Dal ve Sınır | Set 1 (0/1 Sırt Çantası ile Giriş)
- Dal ve Sınır | Set 2 (0/1 Sırt Çantasının Uygulanması)
- Dal ve Sınır | Set 3 (8 bulmaca Problemi)
- Dal ve Sınır | Set 4 (İş Atama Problemi)
- Dal ve Sınır | Set 5 (N Kraliçe Problemi)
- Dal ve Sınır | Set 6 (Gezgin Satıcı Problemi)
Sınavlar: