Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
YayınlayanYeter Kuş Değiştirilmiş 5 yıl önce
1
Algoritmalar II Ders 9 Dinamik Programlama ve Açgözlü Yaklaşım Soruları
2
Problem 1: En uzun artan altdizi Bulma sorusu
3
Problem2
4
Problem3:Palindrom sorusu-1
Problem: Bir dizgenin düzden okunuşuyla tersten okunuşu aynı ise bu dizgeye palindrom denir. Örneğin, ve KABAK birer palindromlardır. Verilen bir dizgeden en az sembol silerek palindrom elde etmek istiyoruz. Örneğin, dizgesinden 1 sembol, yani 2 silinirse palindrom oluşur.
5
DİNAMİK PROGRAMLAMA YAKLAŞİMİ
Verilen dizge S[1...n] olsun. 1. Adım. Optimal çözümün yapısını inceleme ve alt problemi tanımlama Altproblem S[i...j] dizisinden minimum sayıda harf atılarak palindrom elde etme sorusu olsun. Ana problem S[1...n ] dizisinden minimum sayıda harf atılarak palindrom elde etme sorusudur. Ana problemin optimal çözümü , alt problemin optimal çözümünü içermektedir, aksi durumda yani S[i...j] dizisinden daha az harf atılarak palindrom elde edilebilseydi S[1...n] dizisinden de daha az harf atılarak palindrom elde edilebilirdi.
6
Altproblemlerin optimal çözümleri arasında özyinelemeli formül
S[i,j] dizisinden palindrom elde etmek için atılması gereken minimum harf sayısı f(i,j) olsun. Eğer S[i]=S[j] ise S[i...j] dizgesinde baştaki ve sondaki harfler aynıdır, yani bu harflerin atılması gerekmiyor, bu durumda S[i+1...j-1] dizgesi için atılması gereken minimum harf sayısı ile f(i,j) sayısı aynı olacaktır. Yani f(i+1,j-1)=f(i,j) eğer S[i]=S[j] ise
7
Eğer S[i]≠S[j] ise ya S[i], ya da S[j] nin atılması gerekiyor
Eğer S[i]≠S[j] ise ya S[i], ya da S[j] nin atılması gerekiyor. Eğer S[i] atılırsa geriye S[i+1...j] dizgesi, eğer S[j] atılırsa geriye S[i...j-1] dizgesi kalacaktır. Her iki durumda atılması gereken harf sayısı 1 artacaktır. Bu iki durumdan minimum olanı seçmemiz gerektiğinden f(i,j)=min{f(i+1,j),f(i,j-1)}+1, eğer S[i]≠S[j] ise
8
Sonuç olarak, f(i,j) =f(i+1,j-1) eğer S[i]=S[j] ise = min{f(i+1,j),f(i,j-1)}+1, eğer S[i]≠S[j] ise Ayrıca f(i,i)=0 her i≥1 için f(i+1,i)=0 her i≥1 için
9
Burada f(i,j) değerleri aşağıda gibi hesaplanır önce indisler farkı 1 olanlar, yani f(1,2), f(2,3),...f(n-1,n), sonra indis farkı 2 olanlar yani f(1,3),f(2,4),...f(n-2,n), sonra indis farkı 3 olanlar... ve en sonda indis farkı n-1 olan yani f(1,n) hesaplanır. Bu işlem karesel zamanda yapılır.
10
Problem4: palindrom sorusu-2
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.