Chapter 3 Brute Force Copyright © 2007 Pearson Addison-Wesley. All rights reserved.
Kaba Kuvvet Problemin tanımınına dayanan direk yaklaşım Örnekler: an (a > 0, n negatif olamayan bir tamsayıdır) hesaplama n! Sayısını hesaplama 2 matrisin çarpımı Listede verilen değeri arama
Kaba kuvvet sıralama algoritması Seçmeli sıralama Dizideki en küçük elemanı seç ve ilk elemanla değiştir. Sonra 2. elemandan başla, en küçük elemanı bul ve 2. elemanla değiştir. Genel olarak, i .(0 i n-2) geçişte A[i..n-1] dizisinin en küçük elemanını bul ve A[i] ile değiştir: A[0] . . . A[i-1] | A[i], . . . , A[min], . . ., A[n-1] Example: 7 3 2 5
Seçmeli Sıralama (Selection Sort) SelectionSort(A,n) for i←1 to n-1 min←i for j←i+1 to n if (A[j]<A[min]) then min←j A[i]↔A[min] Bu algoritmanın işlem süresi θ(n2) dir.
Dizgi Eşleme (String Matching) Desen (pattern): m karakterden oluşan ve aranan dizgi (string) metin (text): n karakterden oluşan ve içinde arama yapılan uzun bir dizgi(string) problem: metinde desenle eşleşen tüm bir dizgiyi bulmak Kaba kuvvet algoritması Adım 1 deseni metnin en başına yerleştir Adım 2 Soldan sağa giderek desenin her karakterini metnin uygun karakteri ile Tüm karakterler eşleşene (başarılı arama); veya Eşleşme başarısız olana kadar karşılaştır Adım 3 Desen bulunmadığı ve metin tükenmediği sürece deseni bir karakter sağa kaydır ve adım 2 ye git
Örnekler Desen: 001011 Metin: 10010101101001100101111010 Desen: happy Metin: It is never too late to have a happy childhood.
Dizge Eşleme BruteForceStringMatching(T,n,P,m) for i←1 to n-m+1 j←1 while j<=m and P[j]=T[i+j-1] j←j+1 if j=m+1 then return i return -1
Kaba kuvvet polinom hesabı Problem: Aşağıdaki polinomun p(x) = anxn + an-1xn-1 +… + a1x1 + a0 x = x0 noktasındaki değerini hesapla Brute-force algorithm Zaman analizi: θ(n2) p 0.0 for i n downto 0 power 1 for j 1 to i //compute xi power power x p p + a[i] power return p
Polynomial Hesabı: İyileştirme Sağdan sola yaparak iyileştirebiliriz: Better brute-force algorithm Zaman analizi: θ(n) p a[0] power 1 for i 1 to n do power power x p p + a[i] power return p
En yakın 2 nokta problemi 2 boyutlu Kartezyen düzlemde n nokta veriliyor. Birbirine uzaklığı en yakın olan 2 noktayı bulunuz. Brute-force algoritması Her hangi 2 nokta arasındaki uzaklığı hesapla ve uzaklıkları en az olan 2 noktanın indislerini geri gönder. Draw example.
En yakın 2 nokta kaba kuvvet Algoritması The basic operation of the algorithm is computing the Euclidean distance between two points. The square root is a complex operation who’s result is often irrational, therefore the results can be found only approximately. Computing such operations are not trivial. One can avoid computing square roots by comparing distance squares instead. zaman analizi:
Kaba kuvvet güçlü ve zayıf yanları Güçlü yanları Geniş kullanılabilirliği Basit liği önemli bazı problemler (matris çarpımı, sıralama, arama, dizgi eşleştirme) için kabul edilebilir algoritmaların oluşu Zayıf yönleri Nadiren verimli algoritmaların olması Bazı kaba kuvvet algoritmalarının kabul edilemeyecek kadar yavaş olması Diğer tasarım tekniklerine göre yapıcı olmaması
Yorucu arama (Exhaustive Search) Verilen bir özelliği olan bir elemanı bir küme içerisinde aramanın kaba kuvvet çözümüdür. Yöntem: Tüm olası çözümlerin listesini oluştur Optimizasyon problemlerinde olası çözümleri tek tek hesapla kötü sonuçları ele ve her defasında o ana kadarki en iyi çözümü elinde tut Arama bittiğinde elindeki çözümü açıkla
Örnek 1: Gezgin satıcı problemi Aralarındaki uzaklıklar verilen n şehir vardır. Her şehirde tam olarak 1 defa olmak ve harekete başlanan şehire geri dönmek koşuluyla en kısa tur yapılması istenmektedir. Çizge kuramı dilinde: Verilen bağlantılı ağırlıklı çizgede en kısa Hamilton devresini bulunuz. Örnek: a b c d 8 2 7 5 3 4
TSP problemi yorucu arama yöntemi ile Tour Cost a→b→c→d→a 2+3+7+5 = 17 a→b→d→c→a 2+4+7+8 = 21 a→c→b→d→a 8+3+4+5 = 20 a→c→d→b→a 8+7+4+2 = 21 a→d→b→c→a 5+4+3+8 = 20 a→d→c→b→a 5+7+3+2 = 17 Başka tur var mı? Zaman analizi:
Örnek 2: Hırsız çantası problemi n tane eşya vardır: ağırlıkları: w1 w2 … wn değerleri: v1 v2 … vn Çanta kapasitesi W Çantayı toplam değeri en fazla olan eşyalarla doldurmak gerekir Örnek: Çanta kapasitesi W=16 eşya ağırlık değer 2 $20 5 $30 10 $50 5 $10
Çanta problemi için yorucu arama Altküme Ağırlık Değer {1} 2 $20 {2} 5 $30 {3} 10 $50 {4} 5 $10 {1,2} 7 $50 {1,3} 12 $70 {1,4} 7 $30 {2,3} 15 $80 {2,4} 10 $40 {3,4} 15 $60 {1,2,3} 17 not feasible {1,2,4} 12 $60 {1,3,4} 17 not feasible {2,3,4} 20 not feasible {1,2,3,4} 22 not feasible Zaman analizi:
Örnek 3: İş Atama Problemi n kişi ve n iş vardır, her kişiye bir işi yaptırmak istiyoruz. i kişisinin j işini yapmasının maliyeti C[i,j] dir. Toplam maliyeti minimize eden atamayı yapınız. Job 0 Job 1 Job 2 Job 3 Person 0 9 2 7 8 Person 1 6 4 3 7 Person 2 5 8 1 8 Person 3 7 6 9 4 Algoritma : Tüm mümkün atamaları yap, her birinin değerini hesapla ve en ucuzunu seç. Kaç tane mümkün atama vardır?
Atama problemi için yorucu arama 9 2 7 8 6 4 3 7 5 8 1 8 7 6 9 4 Atama Toplam değer 1, 2, 3, 4 9+4+1+4=18 1, 2, 4, 3 9+4+8+9=30 1, 3, 2, 4 9+3+8+4=24 1, 3, 4, 2 9+3+8+6=26 1, 4, 2, 3 9+7+8+9=33 1, 4, 3, 2 9+7+1+6=23 ve b. C =
Yorucu arama için yorumlar Pratikte sadece az sayıda verilenler için işe yarayabilir Bazı durumlarda çok da iyi çözümler vardır! Euler turu problemi için En kısa yol problemi için Minimum örten ağaç problemi için Atama problemi için Hırsız çantaıs problemi için