Chapter 4 Divide-and-Conquer

Slides:



Advertisements
Benzer bir sunumlar
Algoritmalar DERS 3 Böl ve Fethet(Divide and Conquer) İkili arama
Advertisements

Özyineli Sıralama Algoritmaları
Algoritmalar DERS 4 Çabuk sıralama Böl ve fethet Bölüntüler
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Çıkış katmanındaki j. nöron ile gizli katmandaki i. nörona ilişkin ağırlığın güncellenmesi Ağırlığın güncellenmesi Hangi yöntem? “en dik iniş “ (steepest.
Hat Dengeleme.
Hatırlatma Ortogonal bazlar, ortogonal matrisler ve Gram-Schmidt yöntemi ile ortogonaleştirme vektörleri aşağıdaki özeliği sağlıyorsa ortonormaldir: ortogonallik.
Bilimsel bilgi Diğer bilgi türlerinden farklı
Bu yaklaşımda, kullanıcıların bilişsel ve fiziksel davranışları modellenmeye çalışılır. Ayrıca, kullanıcı davranışlarının bu modele uyup uymadığı ya da.
Metrik koşullarını sağlıyor mu?
Hopfield Ağı Ayrık zamanSürekli zaman Denge noktasının kararlılığı Lyapunov Anlamında kararlılık Lineer olmayan sistemin kararlılığı Tam Kararlılık Dinamik.
Greedy Algorithms.
Örnek 1 Kullanıcının girdiği bir sayının karesini hesaplayan bir program yazınız.
BULUŞ YOLUYLA ÖĞRETİM JEROME BRUNER.
OLASILIK TEOREMLERİ Permütasyon
Yazılım Mühendisliği1[ 3.hft ]. Yazılım Mühendisliği2 Yazılım İ sterlerinin Çözümlemesi Yazılım Yaşam Çevrimi “ Yazılım Yaşam çevrimin herhangi bir yazılım.
Çok Katmanlı Algılayıcı-ÇKA (Multi-Layer Perceptron)
ÖTÖ 451 Okul Yönetiminde Bilgisayar Uygulamaları R. Orçun Madran.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Bölüm 3 : Yapay Sinir Ağları (MatLab) Artificial Neural Network
0-1 Sırt Çantası Problemi
ÖRNEKLEME YÖNTEMLERİ Doç. Dr. Ender DURUALP.
Tüm ikililer arasında en kısa yollar
Insertion Sort Fikir: Oyun kartlarını sıralamaya benzer.
Deneme Modelleri Neden-sonuç ilişkilerinin sorgulandığı araştırma türleridir. Deneme ve tarama modelleri arasındaki fark nedir? Deneme modellerinde amaçlar.
Algoritmalar II Ders 4 Dinamik Programlama Yöntemi.
1. Bernoulli Dağılımı Bernoulli dağılımı rassal bir deneyin sadece iyi- kötü, olumlu-olumsuz, başarılı-başarısız, kusurlu-kusursuz gibi sadece iki sonucu.
Ünite 8: Olasılığa Giriş ve Temel Olasılık Hesaplamaları
- Sağlama - Kısa yoldan Çarpmalar
İleri Algoritma Analizi
Derinlik öncelikli arama (Depth-first Search(DFS))
İleri Algoritmalar 2. ders.
MAT – 101 Temel Matematik Mustafa Sezer PEHLİVAN *
TANIMLAYICI İSTATİSTİKLER
İleri Algoritma Analizi
İleri Algoritma Analizi
Ağırlıksız ikili eşleştirme
Algoritmalar II Ders 3 Dinamik Programlama Yöntemi.
İleri Algoritma Analizi
ELE 574: RASTGELE SÜREÇLER
İleri Algoritma Analizi
B+-Ağaçları.
Algoritmalar II Ders 12 DFS algoritması. Kirişlerin sınıflandırılması. Topolojik Sıralama.Kuvvetli bağlantılı bileşenler.
Chapter 6 Dönüştür ve Yönet (Transform-and-Conquer)
Algoritmalar II Ders 15 En Küçük Örten Ağaçlar.
Evren-Örneklem, Örnekleme Yöntemleri 2
Algoritmalar II Ders 13 Çizgelerde tüm ikililer arasında en kısa yollar.
Çizge Algoritmaları.
İleri Algoritma Analizi
Yrd. Doç. Dr. Ömer Kutlu BAŞARI TESTLERİNİN GELİŞTİRİLMESİ
Sonlu Özdevinirlere Giriş
MAK212-SAYISAL YÖNTEMLER Sayısal Türev ve İntegral
NİŞANTAŞI ÜNİVERSİTESİ
BLM-111 PROGRAMLAMA DİLLERİ I Ders-10 Diziler
Tanımlar Sonlu Özdevinirlerle Eşdeğerlik
İleri Algoritma Analizi
KARIŞIMLAR.
TYS102 ÖLÇME BİLGİSİ Yrd. Doç. Dr. N. Yasemin EMEKLİ
Ders İçeriği Nicel araştırma adımları
MAK-404 Takım Tezgahları Tasarımı
İleri Algoritma Analizi
Algoritmalar II Ders 15 En Küçük Örten Ağaçlar.
Ders 9: İkili arama ağaçları
8. Ders Tüm ikililer arasında en kısa yollar
RASTGELE DEĞİŞKENLER Herhangi bir özellik bakımından birimlerin almış oldukları farklı değerlere değişken denir. Rastgele değişken ise tanım aralığında.
Rekürensler Rekürens aranan fonksiyonun ve onun daha önceki girişlerdeki değerinin bir arada bulunduğu denklem veya eşitsizliktir. Örneğin, MERGE-SORT.
Bilimsel Araştırma Yöntemleri
Bölüm 5 Azalt ve yönet (Decrease-and-Conquer)
Chapter 6 Transform-and-Conquer
Çizge Algoritmalari 6. ders.
Sunum transkripti:

Chapter 4 Divide-and-Conquer Copyright © 2007 Pearson Addison-Wesley. All rights reserved.

Böl-ve-Yönet En çok bilinen algoritma tasarım stratejisi: Problemin giriş verilerini 2 veya daha çok sayıda parçalara böl Her parça İçin problemi özyinemeli olarak çöz Bulunan çözümleri birleştirerek en başta verilen problemin çözümünü bul

Böl ve Yönet n boyuttlu problem n/2 boyutlu 1. alt problem 1. Altproblemin çözümü 2. Altproblemin çözümü Orijinal problemin çözümü

Böl ve Yönet örnekleri Sıralama: birleştirmeli (mergesort) ve hızlı sıralama ( quicksort) İkili ağaçta gezinme İkili arama (?) Büyük tam sayıların çarpımı Matrislerin çarpımı Strassen algoritması En yakın ikili ve dışbükey zarf (convex-hull) algoritmaları

Genel Böl-ve-Yönet Rekürensleri T(n) = aT(n/b) + f (n) Master teoremin en çok karşılaşılan durumu f(n)  (nd), d  0 Master Teoremin özel durumu: Eğer a < bd, T(n)  (nd) Eğer a = bd, T(n)  (nd log n) Eğer a > bd, T(n)  (nlog b a ) Örnek: T(n) = 4T(n/2) + n  T(n)  ? T(n) = 4T(n/2) + n2  T(n)  ? T(n) = 4T(n/2) + n3  T(n)  ?

Birleştirmeli sıralama(Mergesort) Önceki derslerde anlatıldı (ders3)

Hızlı sıralama (Quicksort) Bir pivot (bölen eleman) seç – aşağıda ilk eleman seçilmiş İlk s yere pivottan küçük veya eşit olanları, sonraki n-s yere pivottan büyük veya eşit olanları yerleştir Pivot ile ilk (yani, ) altdizinin son elemanının yerini değiştir — pivot olması gereken yere gelmiş olacak Diğer 2 altdiziyi özyinemeli olarak sırala p A[i]p A[i]p

Quicksort Partition Quicksort(A, p, r) if p < r then q ← Partition(A, p, r) Quicksort(A, p, q – 1) Quicksort(A, q + 1, r) Partition(A, p, r) x ←A[r] i ← p – 1 for j ← p to r – 1 if A[j]  x then i ← i + 1 A[i]  A[j] A[i + 1]  A[r] return i + 1 A[p..r] 5 A[p..q – 1] A[q+1..r] Partition 5  5  5

Başlanğıç durum 2 5 8 3 9 4 1 7 10 6 pivot=6 Örnek p r Başlanğıç durum 2 5 8 3 9 4 1 7 10 6 pivot=6 i j sonraki iterasyon 2 5 8 3 9 4 1 7 10 6 i j iterasyon: 2 5 8 3 9 4 1 7 10 6 i j iterasyon: 2 5 3 8 9 4 1 7 10 6

Örnek (devamı) 2 5 3 8 9 4 1 7 10 6 i j i j 2 5 3 4 9 8 1 7 10 6 2 5 3 4 1 8 9 7 10 6 i j i j 2 5 3 4 1 6 9 7 10 8

Zaman analizi Kötü durum: Her zaman sadece 1 elemanı ayırıyor Bu durum sıralı listede oluşur!! En iyi durum: Tam ortadan ayrılıyor. T(n) = 2T(n/2) + (n) = (n lg n)

Ortalama zaman analizi Her zaman aşağıdaki gibi ayırma olursa T(n) = T(9n/10) + T(n/10) + (n)? Yine de (n lg n)!! n sayısını c > 1 ile bölersek (lg n) defadan sonra 1 bulunur n  n/c n/c2  1 kabaca, logc n adım

Rastgele versiyonu İşlem zamanını veri girişinden bağımsız yapmak istiyoruz. Randomized-Partition(A, p, r) i ← Random(p, r) A[r]  A[i] Partition(A, p, r) Randomized-Quicksort(A, p, r) if p < r then q ← Randomized-Partition(A, p, r) Randomized-Quicksort(A, p, q – 1) Randomized-Quicksort(A, q + 1, r)

Ortalama zaman hesabı X = bölünmedeki toplam karşılaştırma sayısı olsun. E[X] yi hesaplamak yeterlidir İşaretleme: z1, z2, …, zn sayılar olsun Zij = {zi, zi+1, …, zj}olsun Xij = 1, zi ile zj karşılaştılırdı 0, aksi durumda

Analiz (devam) Not: E[Xij] = 0·P[Xij=0] + 1·P[Xij=1] = P[Xij=1] Yani bu olasılık hesaplanmalı P[zi ile zj].

Analiz(devam) zi ve zj karşılaşırlar ancak ve ancak Zij kümesinden seçilen pivot zi veya zj dır Yani

Analiz(devam)

Harmonik Sayılar Hn ? İntegrallaerin yaklaşımı kullanılırsa (CLRS, sayfa1067). (monoton azalan fonksiyonlar için.) f(x)  x m–1 m n n+1

Harmonik Sayılar

Diğer versiyonlar Quicksort algoritmasının çok sayıda değişik versiyonları vardır

İkinci Versiyon Quicksort(A, p, r) if r  p then x ← A[r] A[0] ← ; i ← p – 1 j ← r repeat repeat i ← i + 1 until A[i]  x repeat j ← j  1 until A[j]  x t ← A[i] A[i]  A[j] until j  i A[j] ← A[i] A[i] ← A[r] A[r] ← t Quicksort(A, p, i–1) Quicksort(A, i+1, r) A[0] ← ; Quicksort(A, 1, n)

Örnek başlanğıç: 2 5 8 3 9 4 1 7 10 6 pivot = 6 i j İçteki tekrarlardan sonra: 2 5 8 3 9 4 1 7 10 6 i j Değiştirdikten sonra: 2 5 1 3 9 4 8 7 10 6 t = 8 İçteki tekrarlardan sonra: 2 5 1 3 9 4 8 7 10 6 i j Değiştirdikten sonra: 2 5 1 3 4 9 8 7 10 6 t = 9 İçteki tekrarlardan sonra: 2 5 1 3 4 9 8 7 10 6 j i

Örnek İçteki tekrarlardan sonra 2 5 1 3 4 9 8 7 10 6 önceki slayttan j i Değişiklikten sonra: 2 5 1 3 9 4 8 7 10 6 t = 9 Dıştaki tekrardan sonra: 2 5 1 3 4 6 8 7 10 9

Üçüncü Versiyon) Hoare orijinal versiyon Partition Partition(A, p, r) x ← A[p] i ← p j ← r + 1 repeat repeat j ← j – 1 until A[j]  x repeat i ← i + 1 until A[i]  x A[i]  A[j] until i  j A[i]  A[j] A[p]  A[j] return j Quicksort(A, p, r) if p < r then q ← Partition(A, p, r) Quicksort(A, p, q-1) Quicksort(A, q + 1, r) A[p..r] 5 A[p..q] A[q+1..r] Partition  5  5

Örnek Başlanğıç: 5 3 1 9 8 2 4 7 i j Tekrarlardan sonra: 5 3 1 9 8 2 4 7 i j Değiştirdikten sonra: 5 3 1 4 8 2 9 7 Tekrarlardan sonra: 5 3 1 4 8 2 9 7 i j Değiştirdikten sonra: 5 3 1 4 2 8 9 7 Tekrarlardan sonra: 5 3 1 4 2 8 9 7 j i A[p..q] A[q+1..r]

Örnek 2 3 1 4 5 8 9 7 Tekrarlardan sonra: 5 3 1 4 2 8 9 7 onceki slayt j i Değiştirdikten sonra: 5 3 1 4 8 2 9 7 5 3 1 4 2 8 9 7 2 3 1 4 5 8 9 7

Quicksort analizi (özet) En iyi durum: ortadan ayırma — Θ(n log n) En kötü durum: sıralı dizi! — Θ(n2) Ortalama durum: rastgele dizi — Θ(n log n) İyileştirme: iyi pivot seçilebilir Az sayida veri kaldığında eklemeli sıralamaya geçilebilir Bölünme yöntemi üzerinde değişiklikler yapılabilir % 20-25 iyileştirilebilir