Download as pdf or txt
Download as pdf or txt
You are on page 1of 12

Design and Analysis of Algorithms

Zahra ELMI

Zahra.elmi@izu.edu.tr
Algoritma tasarım teknikleri

Klasik teknikler aşağıdaki gibidir:


1 Böl ve fethet (Divide and Conquer)
2 Dinamik programlama (Dynamic Programming)
3
Açgözlü Algoritmalar (Greedy Algorithms)
4
Geri İzleme Algoritmaları (Backtracking Algorithms)
5
Dal ve Sınır Algoritmaları (Branch and Bound Algorithms)
Açgözlü Algoritmalar

Daima o anda en iyi görünen seçimi yapın.


Bu seçimin global olarak optimal bir çözüme yol açacağını
umarak yerel olarak en uygun seçimi yaparlar.
Geri dönüp kısmi çözümü düzeltme şansları yok.

Her zaman optimal çözümler getirmezler, ancak birçok problem


için kullanılırlar.
Açgözlü Algoritmalar
Aşağıdaki işlevlerin mevcut olduğunu varsayalım:
Mümkün
En uygun
Açgözlü Algoritmalar
Aşağıdaki işlevlerin mevcut olduğunu varsayalım:
Mümkün
En uygun
Herhangi bir Açgözlü Algoritma şu şekilde ifade edilebilir:
Greedy − Algorithm (Set C){
S ←0;
While (not Solution(S) and C != 0){
x ← Select (C);
C ← C −{x };
if (Feasible(S ∪ {x })){
S ← S ∪ {x };
}
}
if (Solution(S)) return(S);
else return(”nosolution”); }
İş Planlama Problemi (Job Scheduling Problem)

Tanım
J = { j1 ,j2 ,··· ,jn } , n iş kümesi verildi. Her
ji işinin bitmesi için ti zaman gerekir.
İşler tek tek yapılır.

İş Planlama Problemi, işleri, herhangi bir sistemde tüm işleri bitirmek


için toplam bekleme süresi minimum olacak şekilde düzenlemektir.
yani,
n
minimize ∑ (time in system for job jl )
l= 1

Bir fikriniz var mı...?


İş Planlama Problemi: Örnek

Example
t1 = 5, t2 = 10 and t3 = 3 olduğunu varsayalım. Aşağıdaki
düzenlemeler mümkündür:
⟨t1 ,t2 ,t3 ⟩ =⇒ T = 5 + (5 + 10) + (5 + 10 + 3) = 38
⟨t1 ,t3 ,t2 ⟩ =⇒ T = 5 + (5 + 3) + (5 + 3 + 10) = 31
⟨t2 ,t1 ,t3 ⟩ =⇒ T = 10 + (10 + 5) + (10 + 5 + 3) = 43
⟨t2 ,t3 ,t1 ⟩ =⇒ T = 10 + (10 + 3) + (10 + 3 + 5) = 41

⟨t3 ,t1 ,t2 ⟩ =⇒ T = 3 + (3 + 5) + (3 + 5 + 10) = 29
⟨t3 ,t2 ,t1 ⟩ =⇒ T = 3 + (3 + 10) + (3 + 5 + 10) = 35
İş Planlama Problemi
Aşağıdaki algoritma, İş Planlama problemini çözmektedir:
Greedy-Job-Scheduling-Algorithm(I = ⟨t1, t2,··· ,tn ⟩){
Sort I in nondecreasing order, sayI = ⟨ti1 ,ti2 ,··· ,tin ⟩;
// Perform the jobs with respect to the sorted arangement;
While (I != 0 ){
x ← First element of I;
I ← I − { x};
Performs the job x ;
}
}
İş Planlama Problemi
Aşağıdaki algoritma, İş Planlama problemini çözmektedir:
Greedy-Job-Scheduling-Algorithm(I = ⟨t1, t2,··· ,tn ⟩){
Sort I in nondecreasing order, sayI = ⟨ti1 ,ti2 ,··· ,tin ⟩;
// Perform the jobs with respect to the sorted arangement;
While (I != 0 ){
x ← First element of I;
I ← I − { x};
Performs the job x ;
}
}

Theorem
Yukarıdaki algoritma, herhangi bir sistemdeki toplam bekleme süresi
minimum olacak şekilde iş çizelgeleme problemini çözmektedir.
İş Planlama Problemi
Proof.
n
T (I) = ∑ ( n − k + 1) tik , if Iopt is not sorted, then ∃a, b : a < b and tia > tib
k =1

1 2 a b n

I opt i1 i2 ia ib in
ti1 ti2 tia tib tin

I' opt ti1 ti2 tib tia tin


i1 i2 ib ia in
1 2 a b n
İş Planlama Problemi
Proof.
n
T (I) = ∑ ( n − k + 1) ti k , if Iopt is not sorted, then ∃a, b : a < b and tia > tib
k =1

1 2 a b n

I opt i1 i2 ia ib in
ti1 ti2 tia tib tin

I' opt ti1 ti2 tib tia tin


i1 i2 ib ia in
1 2 a b n

n
T ( Iopt ) = ∑ ( n − k + 1) ti k
k =1
n
T ( Io′ pt ) = ∑ ( n − k + 1) tik + ( n − a + 1) tib + ( n − b + 1) tia
k =1
k=
! a, b
Job Scheduling Problem
Proof.
n
T (I) = ∑ ( n − k + 1) ti k , if Iopt is not sorted, then ∃a, b : a < b and tia > tib
k =1

1 2 a b n

I opt i1 i2 ia ib in
ti1 ti2 tia tib tin

I' opt ti1 ti2 tib tia tin


i1 i2 ib ia in
1 2 a b n

n
T ( Iopt ) = ∑ ( n − k + 1) ti k
k =1
n
T ( Io′ pt ) = ∑ ( n − k + 1) tik + ( n − a + 1) tib + ( n − b + 1) tia
k =1
k !=a, b

=⇒ T ( Iopt ) − T ( Io′ pt ) > 0. (çelişki)

You might also like