Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

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

Benzer bir sunumlar


... konulu sunumlar: "Algoritmalar II Ders 7 Açgözlü Algoritmalar."— Sunum transkripti:

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

2 Greedy Algorithms

3 Para Bozdurma Sorusu

4 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.

5 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.

6 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.

7 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= 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

8 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.

9 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

10 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.

11 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

12 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

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

14 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]]


"Algoritmalar II Ders 7 Açgözlü Algoritmalar." indir ppt

Benzer bir sunumlar


Google Reklamları