52
Algoritmalara Giriş 6.046J/18.401J DERS 1 Algoritmaların Çözümlemesi Araya yerleştirme sıralaması Asimptotik çözümleme Birleştirme sıralaması Yinelemeler Prof. Charles E. Leiserson Copyright © 2001-5 Erik D. Demaine and Charles E. Leiserson

Algoritmaların Çözümlemesi

Embed Size (px)

Citation preview

Page 1: Algoritmaların Çözümlemesi

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

Page 2: Algoritmaların Çözümlemesi

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ı

Page 3: Algoritmaların Çözümlemesi

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

Page 4: Algoritmaların Çözümlemesi

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!

Page 5: Algoritmaların Çözümlemesi

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

Page 6: Algoritmaların Çözümlemesi

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 )

Page 7: Algoritmaların Çözümlemesi

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)

Page 8: Algoritmaların Çözümlemesi

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

Page 9: Algoritmaların Çözümlemesi

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

Page 10: Algoritmaların Çözümlemesi

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

Page 11: Algoritmaların Çözümlemesi

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

Page 12: Algoritmaların Çözümlemesi

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

Page 13: Algoritmaların Çözümlemesi

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

Page 14: Algoritmaların Çözümlemesi

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

Page 15: Algoritmaların Çözümlemesi

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

Page 16: Algoritmaların Çözümlemesi

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

Page 17: Algoritmaların Çözümlemesi

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

Page 18: Algoritmaların Çözümlemesi

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)

Page 19: Algoritmaların Çözümlemesi

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.

Page 20: Algoritmaların Çözümlemesi

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.

Page 21: Algoritmaların Çözümlemesi

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"

Page 22: Algoritmaların Çözümlemesi

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:

Page 23: Algoritmaların Çözümlemesi

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.

Page 24: Algoritmaların Çözümlemesi

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!

Page 25: Algoritmaların Çözümlemesi

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

Page 26: Algoritmaların Çözümlemesi

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

Page 27: Algoritmaların Çözümlemesi

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

Page 28: Algoritmaların Çözümlemesi

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

Page 29: Algoritmaların Çözümlemesi

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

Page 30: Algoritmaların Çözümlemesi

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

Page 31: Algoritmaların Çözümlemesi

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

Page 32: Algoritmaların Çözümlemesi

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

Page 33: Algoritmaların Çözümlemesi

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

Page 34: Algoritmaların Çözümlemesi

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

Page 35: Algoritmaların Çözümlemesi

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

Page 36: Algoritmaların Çözümlemesi

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

Page 37: Algoritmaların Çözümlemesi

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

Page 38: Algoritmaların Çözümlemesi

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

Page 39: Algoritmaların Çözümlemesi

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.

Page 40: Algoritmaların Çözümlemesi

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.

Page 41: Algoritmaların Çözümlemesi

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.

Page 42: Algoritmaların Çözümlemesi

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)

Page 43: Algoritmaların Çözümlemesi

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

Page 44: Algoritmaların Çözümlemesi

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

Page 45: Algoritmaların Çözümlemesi

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)

Page 46: Algoritmaların Çözümlemesi

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

Page 47: Algoritmaların Çözümlemesi

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

Page 48: Algoritmaların Çözümlemesi

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

Page 49: Algoritmaların Çözümlemesi

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

Page 50: Algoritmaların Çözümlemesi

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

Page 51: Algoritmaların Çözümlemesi

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

Page 52: Algoritmaların Çözümlemesi

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!