Download as pdf or txt
Download as pdf or txt
You are on page 1of 38

Ders#1

Algoritma Kavramı
Algoritma Terimi
• Algoritma kelimesi başlangıcını Abu Jafar Mohammed İbn Musa el Khowarizmi’nin
Cebir ve Mukayese kitabından almıştır.(825y.)
• 0 sayısını ve x bilinmeyenini ilk kullanan kişi
• En büyük ortak böleni bulma problemi için geliştirdiği
çözüm(Euclid) ilk algoritmalardan biri olarak kabul
ediliyor.
• Günümüzde algoritma hem matematik hem de bilişimde önemli bir kavram olup
düzenli bir eylemler dizisinin betimlenmesidir.Veriye uygulandığında kesin sonuca
ulaştırır.
Algoritma Terimi
• Dolayısıyla algoritma, bir sonucun bulunmasını kolaylaştıran, ama deneme-
yanılmaya ve sezgisel çözümlemeye karşıt olan bir yöntemdir.
Algoritmaların Özellikleri

• Giriş (Input): Bir algoritma, belirli bir kümeden giriş değerlerine sahiptir.
• Çıkış (Output): Algoritma, girdi değerlerinden belirli bir kümeden çıktı değerlerini üretir. Çıktı
değerleri çözümdür.
• Doğruluk (Correctness): Bir algoritma, her girdi değeri kümesi için doğru çıktı değerlerini
üretmelidir.
• Sonluluk (Finiteness): Bir algoritma, herhangi bir girdi için sınırlı sayıda adımdan sonra çıktı
üretmelidir.
• Etkililik (Effectiveness): Algoritmanın her adımını doğru ve sınırlı bir süre içinde gerçekleştirmek
mümkün olmalıdır.
• Genellik (Generality): Algoritma, istenen formdaki tüm problemler için çalışmalıdır.
Algoritma Hedefi

– Sonlu bir zaman içinde


– Belirli girdiler ile
– İstenilen çıktıyı elde etmek
Programlama
• Programlama, bilginin kodlama tekniğinden ve uygun veri yapısının
seçiminden oluşan bir sanattır.
• Yazılan algoritma programcının tekniğini ve imzasını taşır.
İlk Algoritmalar
• Çarpma Algoritmaları
• Algoritmik açıdan sayılar üzerinde işlemlerin yapılmasında tekrarlı toplamları ifade eden
çarpmaların özel yeri vardır.
İlk Algoritmalar

• Kafes Çarpma Yöntemi


• Eldeler yalnız en son toplama işleminde göz önüne alınır.(Dikeyde çarpan sayısının
bir fazlası dikey çizgi,yatayda 2.çarpanın 1 fazlası yatay çizgi eklenir)
İlk Algoritmalar

• Rus Metodu
• Çarpma ve bölme sonucu toplama işlemi gerçekleştirilir
İkili sayı sistemi
• Bilgisayar tabanında ikili,sekizli,ve onaltılı sistemler kullanılır. İkili taban
bilgisayardaki 2 geçiş durumuna karşılık gelir ve bu sayılarla 10luk tabandaki
istenilen sayılar ifade edilir.
• Yapboz probleminin çözülmesi
• Tartı problemi…
Tartı problemi
• İki kefeli bir terazide ,1 gramdan 40 grama kadar
bütün ağırlıkları tartmak için elimizde bulunması
gereken minimum ağırlık sayısı nedir?
• İlk önce bu taşlar kaçar gram olmalı?
• Bu değerlere göre X gramının tartılması için taşlar
kefeye nasıl yerleştirilmelidir?
Tartı problemi
• Çözümde her kefeye taşlar konulmalı ve X cismi dengede tutulmalıdır(2n,n=0,1,2,….,n) taş yeterlidir
• 1,2,4,8,16
• 1=1
• 2=2
• 3=4-1
• 4=4
• 5=4+1
• 6=8-2
• 7=8-1
• 8=8
• 9=8+1
• 10=8+2
Rasgele Sayı Üretim Algoritmaları
• Rastgele sayı kesin bir şekilde tanımlanmış matematiksel bir kavramdır. Sayıları üreten
algoritma ne kadar fazla tahmin edilemez özellikler içerirse o kadar mükemmel olur.
• Jon Von Neumann’ın orta kare algoritması
4r basamaklı herhangibir sayı seçilir. Örn:32,563,247.Burada r=2.Baştan ve sondan iki rakam atıldıktan sonra
ortadaki 4 basamaklı sayının karesi bulunur. 56322=31,719,424
• 147 Algoritması
Sabit sayıyla ondalık sayı noktasını takiben 7 basamaklı bir sayının çarpımı ele alınır. Sabit çarpan olarak 147
alınır. Tamsayı kısmı çıkartılır.
R1=0.3781467. r1*147=55,5875649. r2=0,5875649,r2*147=86,3720403
• Engel Algoritması
• Blum Blum Shub Algoritması
Rasgele Sayı Üretim Algoritmaları
• C dilinin rastgele sayılar üreten fonksiyonları:Programın herçalıştırıldığında
farklı rastgele sayılar elde edilmesinin nedeni çekirdek değerinin zaman
bağımlılığından kaynaklanır.
• Problem:25000 kelime içeren türkçe sözlükteki kelimelerin rasgele olarak
üretilen harfler içerisinden bulunması.
• Sonuç söz konusu harfler dikkate alındığında ve kelime uzunluğu 4 olarak
seçildiğinde %2 anlamlı kelime bulunmuştur.
Sayı Teorisi
• Temelini bölünebilme algoritması oluşturmaktadır. Bilginin korunması amacıyla
verilerin şifrelenmesi, benzetim problemleri, sayısal çözümleme yöntemleri v.b.
Sayıların özelliklerinin iyi bilinmesi gerekir.
• Modüler aritmetik
• EBOB
• Bölünebilme kuralları
• Asal Sayı bulma yöntemleri
• Kriptoloji
Özyinelemeler
• Özyinelemelik bir algoritma olmayıp sadece algoritma tasarımında kullanılan programlama tekniğidir; ancak
birçok algoritmanın uygulanmasında bu yaklaşım kullanılır. Amaç problemi daha küçük problemlere
parçalayarak böl ve yönet yaklaşımını izlemektir.
• Faktöriyel hesabı problemi
• Fibonacci sayıları
• Polindrom sayıların yazdırılması
• Hamming sayıları
• N elemanlı kümenin alt kümelerinin bulunması
• Bazı arama algoritmaları(İkili ağaçlar)
• ………………………………
En Büyük Ortak Böleni Bulma
Problemi
• EBOB (Greater Common Divisor - gcd) bulmaproblemi
– İki negatif olmayan tam sayıyı kalansız bölen en büyük sayının
bulunması
– gcd(m, n) = ?
• Euclid Çözümü
– (m mod n) işleminin sonucu 0 olana kadar
• gcd(m, n) = gcd(n, m mod n) işlemini tekrar et
• – gcd(63, 36) = gcd(36, 27) = gcd(27, 9) =gcd(9,0)= 9.
EBOB Problemi
• Euclid Çözümü
– (m mod n) işleminin sonucu 0 olana kadar
• gcd(m, n) = gcd(n, m mod n) işlemini tekrar et
• – gcd(63, 36) = gcd(36, 27) = gcd(27, 9) =gcd(9,0)= 9.
– Adım 1 : Eğer n = 0 ise m değerini sonuç olarak döndür ve dur
• Değil ise 2. adıma git
– Adım2 : (m / n) işlemini yap, kalanı r’ye ata.
– Adım 3 : n değerini m’ye ata, r değerini n’ye ata (m = n, n = r).
• Adım 1’ dön.
EBOB Problemi

• Euclid’in algoritmasının sonu var mı?


– N değeri her iterasyonda küçülüyor.
– 0’dan daha küçük, negatif, olamayacağı biliniyor.
• İki pozitif sayının bölme işleminden negatif sayı veya
kalan çıkamaz.
– Er yada geç sıfıra ulaşarak algoritma duracaktır.
Algoritma Tasarım ve Analiz Süreci
Algoritma Tasarım ve Analiz Süreci

• Problemin Anlaşılması
– Problem net bir şekilde ifade edilmeli
• Anlaşılmayan hususlar için sorular
• Gerekliyse elle işletme
• İstisnai durumlar?
• Kullanılacak Donanımın Yetenekleri
– RAM model
• Birçok temel algoritmanın denendiği sistem
Algoritma Tasarım ve Analiz Süreci

• Kesin Sonuç – Yaklaşık Sonuç Seçimi


– Tam sonuca ulaşılabilir mi? (Exact Algorithm)
– Yaklaşık sonuç mu bulunacak? (ApproximationAlgorithm)
• Lineer olmayan denklemler
• Karekök
– Bazı durumlarda kesin sonuca ulaşmak için
• Uzun işlem süresi
• Karmaşık işlemler gerekiyorsa yaklaşık sonuç kabuledilebilir
Algoritma Tasarım ve Analiz Süreci

• Algoritmanın Analizi
– Algoritmanın doğruluğu en önemli unsur
– Etkinlik
– Zaman Etkinliği
– Basitlik
• Algoritmanın kodlanması
– Belirlenen özelliklerin, veri yapılarınınuygulanabileceği bir
dil seçilmesi
Problem Çözümleme

Neden problemleri çözeriz? Her problemin çözümü var mıdır?

• İyi biçimlendirilmiş problemler

• Kötü biçimlendirilmiş problemler


Önemli Problemler

• Sıralama

• Arama
• String İşlemleri

• Graph problemleri
• Kombinasyonel Problemler
• Geometrik problemler
• Nümerik problemler
Önemli Problemler Türleri

• Sıralama
– Bir listedeki öğeleri artan sırada düzenlemek
• Girdi : n adet sayıdan oluşan dizi <a1, a2, …, an>
• Çıktı : Girdinin a´1≤ a´2 ≤ … ≤ a´n. Şeklinde yeniden düzenlenmesi

– Neden Sıralama?
• Arama işlemini kolaylaştırmak
• Birçok algoritmanın altyordamı
– Sıralama Anahtarı
• Veri bütününün sıralamayı yönlendirmek için seçilmiş özel parçası
• – Bir başarı listesinin sıralanması (İsme, numaraya, nota göre)
Önemli Problemler Türleri

• Örnek sıralama algoritmaları


– Selection
– Bubble sort
– Insertion sort
– Merge sort
– Heap sort …
• Sıralama algoritması karmaşıklığını değerlendirmek
– Yapılan Karşılaştırma sayısı
• Sıralama algoritmaları için iki önemli özellik
– Stabilite: İki eşit elemanın birbirlerine göre sıralanmadan önceki pozisyonlarında kalması
• Bir dizide birbirine eşit iki eleman var.
• Sıralamadan önceki konumları i ve j, i<j
• Sıralamadan sonraki konumları i’ ve j’ ve i’<j’ ise algoritma stabil bir sıralama algoritmasıdır
– Yerinde (In place) :
• Fazladan bellek alanı gerektirmeyen sıralama algortimaları
• İstisna olarak küçük bellek birimleri kullanabilir
– Dizinin tamamı kadar değil, bir değişken kadar
Önemli Problemler Türleri

• Arama
– Bir değeri verilen veri seti içinde bulma
• Sıralama algoritması örnekleri
– Sıralı arama
– İkili arama…
• Her durum için ideal arama algoritması yok
– Hızlı fakat fazla bellek alanı
– Sadece sıralı verilerde arama
Önemli Problemler Türleri
Önemli Problemler Türleri

• Sıralı dizi içerisinde 19 değeri aranıyor


• 1,2,3,5,6,7,8,10,12,13,15,16,18,19,20,22
• – 1,2,3,5,6,7,8,10
• – 12,13,15,16,18,19,20,22
• 12,13,15,16
• 18,19,20,22
• – 18,19
• – 20,22
Önemli Problemler Türleri

• String İşleme
– String
• Bir alfabede yer alan karakterlerden oluşmuş dizi
– Alfabetik, nümerik, özel karakterlerden oluşabilir
– Örnek
• Bir metin içerisinde www ifadesini aramak
• @ karakterini aramak
• Derleyiciler
Önemli Problemler Türleri

• Graph Problemleri
– Graph
• Birbirine sınır adı verilen hatlarla bağlı noktalar grubu
– Gerçek hayat problemleri
• WWW modellemesi
• Haberleşme ağları
• Proje planlaması
– Graph örnekleri
• En kısa yol
• Topolojik sıralama
Önemli Problemler Türleri

• Kombinasyonel problemler
– Çeşitli kısıtlılıkları sağlayan kombinasyonelçözümlerin
bulunması
• Maksimum değer, minimum maliyet
• Sorunlar
– Probleme göre kombinasyonel çözümler çokbüyüyebilir
– Bu tip problemleri, kabul edilebilir bir süredeçözebilecek
bilinen bir algoritma yok
Önemli Problemler Türleri

• Nümerik Problemler
– Yaklaşık çözüme ulaşılmış problemlerin kesinsonuca
ulaştırılmaya çalışılması
• Denklem, denklem sistemi çözümleri
• Kısıtlı integraller
En Yakın Çift Problemi
NOKTA X KOORDİNATI Y KOORDİNATI
A 3 2
B 2 5
C 5 -3
D -2 0
E 4 6
F 0 -4

İki Nokta Arası Mesafe :(𝑋1 −𝑋2 )^2 + (𝑌1 −𝑌2 )^2
Metin Arama

• Bir metin içerisinde aranan ifadeyi bulmak


– Büyük / Küçük Harf duyarlılığı ?
– Tam uyum / Ek almış ?

You might also like