Upload
grkdogan
View
242
Download
1
Embed Size (px)
Citation preview
Algoritmalara Giriş6.046J/18.401J
DERS 1Algoritmaların Çözümlemesi• Araya yerleştirme sıralaması• Asimptotik çözümleme • Birleştirme sıralaması• Yinelemeler
Prof. Charles E. LeisersonCopyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
September 7, 2005 Introduction to Algorithms L1.2
Dersle ilgili bilgiler
1. Öğretim kadrosu2. Uzaktan eğitim3. Ön koşullar4. Dersler5. Etütler6. Ders notları7. Ders kitabı
8. Dersin WEB sitesi9. Ek destek10. Kayıt 11. Problem setleri12. Algoritmaları tanımlamak13. Not verme politikası14. Ortak çalışma politikası
September 7, 2005 Introduction to Algorithms L1.3Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Algoritmaların çözümlemesi
Bilgisayar program başarımı ve kaynak kullanımı konusunda teorik çalışmalar
Başarımdan daha önemli ne vardır ? • modülerlik• doğruluk• bakım kolaylığı• işlevsellik• sağlamlık
• kullanıcı dostluğu• programcı zamanı• basitlik • genişletilebilirlik• güvenilirlik
September 7, 2005 Introduction to Algorithms L1.4Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Neden algoritmalar ve başarımla uğraşırız?
• Algoritmalarla ölçeklenebilirlik anlaşılabilir. • Başarım genelde yapılabilir olanla imkansızın
arasındaki çizgiyi tanımlar.• Algoritmik matematik program davranışlarını
açıklamak için ortak dil oluşturur.•Başarım bilgi işleme'nin para birimidir.• Program başarımından alınan dersler
diğer bilgi işleme kaynaklarına genellenebilir. •Hız eğlencelidir!
September 7, 2005 Introduction to Algorithms L1.5Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Sıralama (sorting) problemi
Girdi: dizi ⟨a1, a2, …, an⟩ sayıları.
Çıktı: permütasyon ⟨a'1, a'2, …, a'n⟩ öyle ki a'1 ≤ a'2 ≤ … ≤ a'n .
Örnek:Girdi: 8 2 4 9 3 6
Çıktı: 2 3 4 6 8 9
September 7, 2005 Introduction to Algorithms L1.6Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Araya yerleştirme sıralaması (Insertion sort)
INSERTION-SORT (A, n) ⊳ A[1 . . n]for j ← 2 to n
do key ← A[ j]i ← j – 1while i > 0 and A[i] > key
do A[i+1] ← A[i]i ← i – 1
A[i+1] = key (anahtar)
“pseudocode” ( sözdekod )
September 7, 2005 Introduction to Algorithms L1.7Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
INSERTION-SORT (A, n) ⊳ A[1 . . n]for j ← 2 to n
do key ← A[ j]i ← j – 1while i > 0 and A[i] > key
do A[i+1] ← A[i]i ← i – 1
A[i+1] = key
“pseudocode” (sözde kod)
sorted (sıralı)
i j
key (anahtar)A:
1 n
Araya yerleştirme sıralaması (Insertion sort)
September 7, 2005 Introduction to Algorithms L1.8Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Araya yerleştirme sıralaması örneği
8 2 4 9 3 6
September 7, 2005 Introduction to Algorithms L1.9Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Araya yerleştirme sıralaması örneği
8 2 4 9 3 6
September 7, 2005 Introduction to Algorithms L1.10Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Araya yerleştirme sıralaması örneği
8 2 4 9 3 6
2 8 4 9 3 6
September 7, 2005 Introduction to Algorithms L1.11Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Araya yerleştirme sıralaması örneği
8 2 4 9 3 6
2 8 4 9 3 6
September 7, 2005 Introduction to Algorithms L1.12Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Araya yerleştirme sıralaması örneği
8 2 4 9 3 6
2 8 4 9 3 6
2 4 8 9 3 6
September 7, 2005 Introduction to Algorithms L1.13Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Araya yerleştirme sıralaması örneği
8 2 4 9 3 6
2 8 4 9 3 6
2 4 8 9 3 6
September 7, 2005 Introduction to Algorithms L1.14Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Araya yerleştirme sıralaması örneği
8 2 4 9 3 6
2 8 4 9 3 6
2 4 8 9 3 6
2 4 8 9 3 6
September 7, 2005 Introduction to Algorithms L1.15Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Araya yerleştirme sıralaması örneği
8 2 4 9 3 6
2 8 4 9 3 6
2 4 8 9 3 6
2 4 8 9 3 6
September 7, 2005 Introduction to Algorithms L1.16Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Araya yerleştirme sıralaması örneği
8 2 4 9 3 6
2 8 4 9 3 6
2 4 8 9 3 6
2 4 8 9 3 6
2 3 4 8 9 6
September 7, 2005 Introduction to Algorithms L1.17Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Araya yerleştirme sıralaması örneği
8 2 4 9 3 6
2 8 4 9 3 6
2 4 8 9 3 6
2 4 8 9 3 6
2 3 4 8 9 6
September 7, 2005 Introduction to Algorithms L1.18Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Araya yerleştirme sıralaması örneği
8 2 4 9 3 6
2 8 4 9 3 6
2 4 8 9 3 6
2 4 8 9 3 6
2 3 4 8 9 6
2 3 4 6 8 9 (bitti)
September 7, 2005 Introduction to Algorithms L1.19Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Koşma süresi (Running time)
• Koşma süresi girişe bağımlıdır: Öncedensıralanmış bir diziyi sıralamak daha kolaydır.
• Koşma süresinin girişin boyutuna göre parametrelenmesi yararlıdır, çünkü kısa dizileri sıralamak uzun dizilere oranla daha kolaydır.
• Genellikle, koşma süresinde üst sınırları ararız, çünkü herkes garantiden hoşlanır.
September 7, 2005 Introduction to Algorithms L1.20Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Çözümleme türleriEn kötü durum (Worst-case): (genellikle)
• T(n) = n boyutlu bir giriştealgoritmanın maksimum süresi
Ortalama durum: (bazen)• T(n) = n boyutlu her girişte
algoritmanın beklenen süresi.• Girişlerin istatistiksel dağılımı için
varsayım gerekli.En iyi durum: (gerçek dışı)
• Bir giriş yapısında hızlı çalışan yavaş bir algoritma ile hile yapmak.
September 7, 2005 Introduction to Algorithms L1.21Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Makineden-bağımsız zaman
Araya yerleştirme sıralamasının en kötü zamanı nedir?• Bilgisayarın hızına bağlıdır:
• bağıl ( rölatif ) zaman ( aynı makinede),• mutlak (absolüt ) zaman (farklı makinelerde).
BÜYÜK FİKİR:•Makineye bağımlı sabitleri görmezden gel.• n →∞ ' a yaklaştıkça, T(n)'nin büyümesine bak.
“Asem " Asimptotik Çözümleme"
September 7, 2005 Introduction to Algorithms L1.22Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Θ- simgelemi (notation)
• Düşük değerli terimleri at; ön sabitleri ihmal et.• Örnek: 3n3 + 90n2 – 5n + 6046 = Θ(n3)
Matematik: Θ(g(n)) = { f (n) : Öyle c1, c2, n0 pozitif sabit sayıları vardır ki tüm n ≥ n0} için 0 ≤ c1 g(n) ≤ f (n) ≤ c2 g(n).
Mühendislik:
September 7, 2005 Introduction to Algorithms L1.23Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Asimptotik başarım
n
T(n)
n0
• Öte yandan asimptotik açıdan yavaş algoritmalarıihmal etmemeliyiz.
• Gerçek dünyada tasarımın mühendislik hedefleriyle dikkatle dengelenmesi gereklidir.
• Asimptotik çözümlemedüşüncemizi yapılandırmada önemli bir araçtır.
n yeterince büyürse, Θ(n2) algoritması bir Θ(n3) algoritmasından her zaman daha hızlıdır.
September 7, 2005 Introduction to Algorithms L1.24Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Araya yerleştirme sıralaması çözümlemesi En kötü durum: Giriş tersten sıralıysa.
( )∑=
Θ=Θ=n
jnjnT
2
2)()(
Ortalama durum:Tüm permutasyonlar eşit olasılıklı.
( )∑=
Θ=Θ=n
jnjnT
2
2)2/()(
[aritmetik seri]
Araya yerleştirme sıralaması hızlı bir algoritma mıdır ?• Küçük n değerleri için olabilir.• Büyük n değerleri için asla!
September 7, 2005 Introduction to Algorithms L1.25Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Birleştirme sıralaması
BİRLEŞTİRME-SIRALAMASI A[1 . . n]1. Eğer n = 1 ise, işlem bitti.2. A[ 1 . . ⎡n/2⎤ ]ve
A[ ⎡n/2⎤+1 . . n ]'yi özyinelemeli sırala.3. 2 sıralanmış listeyi “Birleştir”.
Anahtar altyordam: Birleştirme
September 7, 2005 Introduction to Algorithms L1.26Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Sıralı iki dizilimi birleştirme
12
11
9
1
20
13
7
2
September 7, 2005 Introduction to Algorithms L1.27Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
20
13
7
2
12
11
9
1
1
Sıralı iki dizilimi birleştirme
September 7, 2005 Introduction to Algorithms L1.28Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
20
13
7
2
12
11
9
1
1
20
13
7
2
12
11
9
Sıralı iki dizilimi birleştirme
September 7, 2005 Introduction to Algorithms L1.29Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
20
13
7
2
12
11
9
1
1
20
13
7
2
12
11
9
2
Sıralı iki dizilimi birleştirme
September 7, 2005 Introduction to Algorithms L1.30Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
20
13
7
2
12
11
9
1
1
20
13
7
2
12
11
9
2
20
13
7
12
11
9
Sıralı iki dizilimi birleştirme
September 7, 2005 Introduction to Algorithms L1.31Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
20
13
7
2
12
11
9
1
1
20
13
7
2
12
11
9
2
20
13
7
12
11
9
7
Sıralı iki dizilimi birleştirme
September 7, 2005 Introduction to Algorithms L1.32Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
20
13
7
2
12
11
9
1
1
20
13
7
2
12
11
9
2
20
13
7
12
11
9
7
20
13
12
11
9
Sıralı iki dizilimi birleştirme
September 7, 2005 Introduction to Algorithms L1.33Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
20
13
7
2
12
11
9
1
1
20
13
7
2
12
11
9
2
20
13
7
12
11
9
7
20
13
12
11
9
9
Sıralı iki dizilimi birleştirme
September 7, 2005 Introduction to Algorithms L1.34Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
20
13
7
2
12
11
9
1
1
20
13
7
2
12
11
9
2
20
13
7
12
11
9
7
20
13
12
11
9
9
20
13
12
11
Sıralı iki dizilimi birleştirme
September 7, 2005 Introduction to Algorithms L1.35Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
20
13
7
2
12
11
9
1
1
20
13
7
2
12
11
9
2
20
13
7
12
11
9
7
20
13
12
11
9
9
20
13
12
11
11
Sıralı iki dizilimi birleştirme
September 7, 2005 Introduction to Algorithms L1.36Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
20
13
1220
13
7
2
12
11
9
1
1
20
13
7
2
12
11
9
2
20
13
7
12
11
9
7
20
13
12
11
9
9
20
13
12
11
11
Sıralı iki dizilimi birleştirme
September 7, 2005 Introduction to Algorithms L1.37Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
20
13
7
2
12
11
9
1
1
20
13
7
2
12
11
9
2
20
13
7
12
11
9
7
20
13
12
11
9
9
20
13
12
11
11
20
13
12
12
Sıralı iki dizilimi birleştirme
September 7, 2005 Introduction to Algorithms L1.38Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
20
13
7
2
12
11
9
1
1
20
13
7
2
12
11
9
2
20
13
7
12
11
9
7
20
13
12
11
9
9
20
13
12
11
11
20
13
12
12
Süre = Θ(n), toplam n elemanıbirleştirmek için (doğrusal zaman).
Sıralı iki dizilimi birleştirme
September 7, 2005 Introduction to Algorithms L1.39Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Birleştirme sıralamasının çözümlenmesi
BİRLEŞTİRME-SIRALAMASI A[1 . . n]1. Eğer n = 1'se, bitir.2. Yinelemeli olarak A[ 1 . . ⎡n/2⎤ ] ve
A[ ⎡n/2⎤+1 . . n ]'yi sırala.3. 2 sıralı listeyi “Birleştir”
T(n)Θ(1)2T(n/2)
Θ(n)Suistimal
Özensizlik: T( ⎡n/2⎤ ) + T( ⎣n/2⎦ ) olması gerekir, ama asimptotik açıdan bu önemli değildir.
September 7, 2005 Introduction to Algorithms L1.40Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Birleştirme sıralaması için yineleme
T(n) =Θ(1) eğer n = 1ise;2T(n/2) + Θ(n) eğer n > 1ise.
• Genellikle n'nin küçük değerleri için taban durumu ( base case ) olan T(n) = Θ(1) 'i hesaplara katmayacağız; ama bunu sadece yinelemenin asimptotik çözümünü
etkilemiyorsa yapacağız. • 2. Derste T(n)'nin üst sınırını bulmanın birkaç yolunu inceleyeceğiz.
September 7, 2005 Introduction to Algorithms L1.41Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Yineleme ağacı T(n) = 2T(n/2) + cn'yi çözün; burada c > 0 bir sabittir.
September 7, 2005 Introduction to Algorithms L1.42Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Yineleme ağacı T(n) = 2T(n/2) + cn'i çözün; burada c > 0 bir sabittir.
T(n)
September 7, 2005 Introduction to Algorithms L1.43Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Yineleme ağacı T(n) = 2T(n/2) + cn'i çözün; burada c > 0 bir sabittir.
T(n/2) T(n/2)
cn
September 7, 2005 Introduction to Algorithms L1.44Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Yineleme ağacı T(n) = 2T(n/2) + cn'i çözün; burada c > 0 bir sabittir.
cn
T(n/4) T(n/4) T(n/4) T(n/4)
cn/2 cn/2
September 7, 2005 Introduction to Algorithms L1.45Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Yineleme ağacı T(n) = 2T(n/2) + cn'i çözün; burada c > 0 bir sabittir.'i çözün; burada c > 0 bir sabittir.
cn
cn/4 cn/4 cn/4 cn/4
cn/2 cn/2
Θ(1)
…
September 7, 2005 Introduction to Algorithms L1.46Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Yineleme ağacı T(n) = 2T(n/2) + cn'i çözün; burada c > 0 bir sabittir.
cn
cn/4 cn/4 cn/4 cn/4
cn/2 cn/2
Θ(1)
…
h = lg n
September 7, 2005 Introduction to Algorithms L1.47Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Yineleme ağacı T(n) = 2T(n/2) + cn'i çözün; burada c > 0 bir sabittir.
cn
cn/4 cn/4 cn/4 cn/4
cn/2 cn/2
Θ(1)
…
h = lg n
cn
September 7, 2005 Introduction to Algorithms L1.48Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Yineleme ağacı T(n) = 2T(n/2) + cn'i çözün; burada c > 0 bir sabittir.
cn
cn/4 cn/4 cn/4 cn/4
cn/2 cn/2
Θ(1)
…
h = lg n
cn
cn
September 7, 2005 Introduction to Algorithms L1.49Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Yineleme ağacı T(n) = 2T(n/2) + cn'i çözün; burada c > 0 bir sabittir.
cn
cn/4 cn/4 cn/4 cn/4
cn/2 cn/2
Θ(1)
…
h = lg n
cn
cn
cn
…
September 7, 2005 Introduction to Algorithms L1.50Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Yineleme ağacı T(n) = 2T(n/2) + cn'i çözün; burada c > 0 bir sabittir.
cn
cn/4 cn/4 cn/4 cn/4
cn/2 cn/2
Θ(1)
…
h = lg n
cn
cn
Θ(n)
…
cn
yaprak sayısı = n
September 7, 2005 Introduction to Algorithms L1.51Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Yineleme ağacı T(n) = 2T(n/2) + cn'i çözün; burada c > 0 bir sabittir.
cn
cn/4 cn/4 cn/4 cn/4
cn/2 cn/2
Θ(1)
…
h = lg n
cn
cn
cn
yaprak sayısı = n Θ(n)
…
Toplam = Θ(n lg n)
cn
yaprak sayısı = n
September 7, 2005 Introduction to Algorithms L1.52Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson
Sonuçlar
• Θ(n lg n), Θ(n2)'dan daha yavaş büyür.
• En kötü durumda, birleştirme sıralaması asimptotik olarak araya yerleştirme sıralamasından daha iyidir.
• Pratikte, birleştirme sıralaması araya yerleştirme sıralamasını n > 30 değerlerinde geçer.
• Bunu kendiniz deneyin!