Algoritmalar II Ders 7 Açgözlü Algoritmalar.

Slides:



Advertisements
Benzer bir sunumlar
Yığınlama Sıralaması (Heap Sort)
Advertisements

FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Karmaşıklık Giriş.
Yinelemeli Algoritma Analizi & Asimptotik Notasyon
Ayrık Yapılar Algoritma Analizi.
MIT503 Veri Yapıları ve algoritmalar
IT503 Veri Yapıları ve algoritmalar
Algoritmalar Ders 8 Dinamik Programlama.
MIT503 Veri Yapıları ve algoritmalar Algoritma Oluşturma – Açgözlü algoritmalar ve buluşsallar Y. Doç. Yuriy Mishchenko.
Kontrol Çevrimleri FOR WHILE DO-WHILE IF-ELSE SWITCH-CASE-DEFAULT
MATEMATİK.
Algoritmalar En kısa yollar I En kısa yolların özellikleri
MIT503 Veri Yapıları ve algoritmalar En önemli graf problemleri
Özyinelemeli(Recursive) Algoritma Tasarımı
Özyineli Sıralama Algoritmaları
Bölüm 3 – Yapısal Programlama
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Yapısal Program Geliştirme – if, if-else
While Döngüsü Tekrarlama deyimidir. Bir küme ya da deyim while kullanılarak bir çok kez yinelenebilir. Yinelenmesi için koşul sınaması döngüye girilmeden.
Koşul İfadeleri ve Akış Kontrolü Yazdığımız uygulamanın hangi koşulda nasıl davranacağını belirterek bir akış kontrolü oluşturabilmek için koşul ifadelerini.
İŞLEM TANIM: A boş olmayan bir küme olmak üzere,A×A nın bir R alt kümesinden A ya tanımlanan her fonksiyona, işlem denir.İşlemi tanımlarken,’’
YMT219: Veri Yapıları Ders Saatleri: Pazartesi 9:15-12, 17:30-20:15
HIZLI SIRALAMA ALGORİTMALARI(QUICK SORT)
C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar.
ÜNİTE 2 OLASILIK, İSTATİSTİK VE SAYILAR
TEK FONKSİYON-ÇİFT FONKSİYON
RASYONEL SAYILAR Q.
Bulanık Mantık Bulanık Mantığın Temel Kavramları
Matematiksel Veri Yapıları. İçerik Matematiksel Veri Yapıları – Kümeler – Diziler – Fonksiyonlar – İkili ilişkiler Sonsuz kümeler – Sonlu nicelik – Sonsuz.
Lineer Denklem Sistemlerinin
SİMPLEKS METOT Müh. Ekonomisi.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
Greedy Algorithms.
Dinamik programlama ve açgözlü yaklaşım soruları.
Bölüm10 İteratif İyileştirme Copyright © 2007 Pearson Addison-Wesley. All rights reserved.
Dinamik programlama ve Açgözlü algoritma
Dynamic Programming Introduction to Algorithms MIT Press (Chapter 15)
Algoritmalar II Ders 6 Açgözlü Algoritmalar.
0-1 Sırt Çantası Problemi
Algoritmalar II Ders 2 Dinamik Programlama Yöntemi.
Algoritmalar II Ders 5 Açgözlü Algoritmalar.
Algoritmalar II Ders 10 Dinamik Programlama ve Açgözlü Yaklaşım Soruları-2.
Algoritmalar II Ders 13 Çizgelerde tüm ikililer arasında en kısa yollar.
Tüm ikililer arasında en kısa yollar
Algoritmalar II Ders 1: Alan zaman takası yöntemi.
Algoritmalar II Ders 4 Dinamik Programlama Yöntemi.
Algoritmalar II Ders 14 Çizgelerde tüm ikililer arasında en kısa yollar.
Algoritmalar II Ders 17 İteratif İyileştirme Yöntemi.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
İleri Algoritma Analizi
9. Ders Tüm ikililer arasında en kısa yollar
Algoritmalar II Ders 3 Dinamik Programlama Yöntemi.
PINAR KARTALO Ğ LU.  Belirli sayıda i ş lemlerin tekrarlanması için kullanılan döngülerdir. for döngüleri ba ş langıç ve biti ş de ğ erleri arasında.
İleri Algoritma Analizi
İleri Algoritma Analizi
Chapter 6 Dönüştür ve Yönet (Transform-and-Conquer)
NİŞANTAŞI ÜNİVERSİTESİ
Algoritmalar II Ders 9 Dinamik Programlama ve Açgözlü Yaklaşım Soruları.
Algoritmalar II Ders 3 Dinamik Programlama Yöntemi.
NİŞANTAŞI ÜNİVERSİTESİ
Bilgisayar Bilimi Fonksiyonlar-2.
MTM216 GÖRSEL PROGRAMLAMA
İleri Algoritma Analizi
İleri Algoritma Analizi
Algoritmalar II Ders 2 Dinamik Programlama Yöntemi.
Algoritmalar II Ders 16 Prim algoritması.
8. Ders Tüm ikililer arasında en kısa yollar
Çizge Algoritmalari 10. Ders.
Bölüm 5 Azalt ve yönet (Decrease-and-Conquer)
10. Ders Floyd-Warshal algoritması
Sunum transkripti:

Algoritmalar II Ders 7 Açgözlü Algoritmalar

Greedy Algorithms

Para Bozdurma Sorusu

Soru N lira para ve her birinden yeterli miktarda x1, x2,…,xk birimlik bozuk paralar veriliyor. N ve x1, x2,…xk sayıları pozitif tam sayılardır. Amacımız N lira parayı toplam bozuk para sayısı en az olacak biçimde bozdurmaktır.

Sorunun matematiksel ifadesi Yani öyle a1, a2,…ak negatif olmayan tam sayılarını bulmak gerekir ki N=a1.x1+a2.x2+…ak.xk ve a1+a2+…ak toplamı en az olsun.

Açgözlü Algoritma? Bu soruyu çözmek için açgözlü (greedy) algoritma uygulanabilir mi? Yani önce S={x1, x2,…xk} kümesinin mümkün olabilecek en büyük elemanını mümkün olabilecek sayıda kullanırız. Sonra da N in artan kısmına aynı algoritmayı tekrar tekrar uygularız.

Açgözlü Algoritma? S={x1, x2,…xk}={1, 4, 5, 10} ve N=8 olursa Açgözlü algoritmaya göre önce 5, sonra 3 tane 1 alınır, yani N=5+1+1+1 bulunur. Bu durumda 4 bozuk para bulunur. Oysaki N=4+4 optimal çözümdür, yani 2 bozuk para ile 8 lirayı bozabiliriz. Yani Açgözlü algoritma çalışmaz

Dinamik programlama 1. adım. Optimal çözümün yapısını karakterize etme N=a1.x1+a2.x2+…an.xn+…ak.xk olsun. Bu çözümü her hangi bir bozuk paraya göre iki parçaya ayırdığımızda, örneğin, b=a1.x1+…an.xn ve diğer parça da N-b olduğunda b lira paranın bozuk paralara optimal ayrılışı b=a1.x1+…an.xn olacaktır. Aynısı N-b için de geçerlidir.

ispat b nin bozuk paralara ayrılışı daha az sayıda bozuk para ile mümkün olsaydı N=b+N-b sayısının da bozuk paralara ayrılışı daha az sayıda bozuk para ile yapılabilirdi, bu ise N=a1.x1+a2.x2+…ak.xk ayrılışının optimal olması ile çelişmektedir

Optimal çözümün değeri için formül 2. adım. Optimal Çözümün değeri için özyinelemeli (rekursive) formül bulunması C[p] ile p lira paranın optimal bozulması için gerekli olan bozuk para sayısını işaret edelim. xi<=p koşuluna uyan ve p lira paranın optimal bozulmasında kullanılan ilk bozuk para birimi xi olsun.

Optimal çözümün değeri için formül 1. adıma göre p-xi lira para da optimal bozulmuş olur. Yani C[p]=1+C[p-xi] olur. Biz xi nin kaç olduğunu bilmiyoruz ama k tane i için tüm durumlara bakabiliriz. C[p]= 0, eğer p=0 ise, min {1+C[p-xi] }, eğer p>0 ise 1<=i<=k xi<=p

Optimal Çözümün değerinin hesaplanması 3. adım. Optimal Çözümün değerlerini aşağıdan yukarıya doğru hesaplayabiliriz. Aşağıdaki sözde kodda x bozuk para birimleri dizisini, k bu dizinin eleman sayısını, n ise bozulması gereken para değerini göstermektedir

Sözde Kod Change(x, k, n) 1 C[0] ← 0 2 for p ← 1 to n 3 min ← ∞ 4 for i ← 1 to k 5 if x[i] <= p then 6 if 1 + C[p − x[i]] < min then 7 min ← 1 + C[p − x[i]] 8 coin ← i 9 C[p] ← min 10 S[p] ← coin 11 return C and S

Hesaplanan değerlerden optimal çözümün oluşturulması 4. adım Make-Change(S, x, n) 1 while n > 0 2 Print S[n] 3 n ← n − x[S[n]]