Upload
tiara-elshawina
View
224
Download
0
Embed Size (px)
Citation preview
7/24/2019 Salinan Terjemahan Dynamic Programming
1/31
Bab 6
7/24/2019 Salinan Terjemahan Dynamic Programming
2/31
pemrograman dinamisDalam bab-bab sebelumnya kita telah melihat beberapa prinsip-seperti desain elegan
membagi-dan- menaklukkan, eksplorasi grafik, dan pilihan-yang serakah menghasilkan
algoritma yang pasti untuk berbagai tugas komputasi penting. Kelemahan alat ini adalah bahwa
mereka hanya dapat digunakan pada jenis yang sangat spesifik dari masalah. Kita sekarang
beralih ke dua palu godam dari pemrograman algoritma kerajinan, pemrograman dinamis dan
linear, teknik penerapan yang sangat luas yang dapat dipanggil bila metode yang lebih khusus
gagal. Bisa ditebak, umum ini sering datang dengan biaya dalam efisiensi.
6.1 jalur terpendek di dags, ditinjau
Pada akhir penelitian kami jalur terpendek (Bab 4, kami mengamati bahwa masalah ini sangat
mudah di diarahkan grafik asiklik (dags. !ari rekapitulasi kasus ini, karena terletak di jantung
pemrograman dinamislinierisasi."
#itur yang membedakan khusus dag adalah bahwa node yang dapat yaitu, mereka dapat
diatur pada baris sehingga semua tepi pergi dari kiri ke kanan ($ambar %.&. 'ntuk melihat
mengapa ini membantu dengan jalur terpendek, misalkan kita ingin menari tahu jarak dari
node ) ke node lain. 'ntuk konkrit, mari kita fokus pada node D. )atu-satunya ara untuk
sampai ke sana adalah melaluiyang
$ambar%.& * dag dan linierisasi nya (topologi pemesanan.
6
1
A
B
2
3
S 4 1
E
S 2
C 4 A 6
B 1
D 1
E2
C
3
D 1
1
2
7/24/2019 Salinan Terjemahan Dynamic Programming
3/31
&%+
7/24/2019 Salinan Terjemahan Dynamic Programming
4/31
& *lgoritma
7/24/2019 Salinan Terjemahan Dynamic Programming
5/31
pendahulunya, B atau " sehingga untuk menemukan jalan terpendek untuk D, kita hanya perlu
membandingkan dua
rute/.dist (D 0 min 1dist (B 2 &, dist ( 3
)uatu relasi yang sama dapat ditulis untuk setiap node. 5ika kita menghitung nilai-nilai dist
dalam urutan kiri ke kanan dari $ambar %.&, kita dapat selalu yakin bahwa pada saat kita
sampai ke simpul 6, kita sudah memiliki semua informasi yang kita butuhkan untuk menghitung
dist (6. 7leh karena itu kami mampu menghitung semua jarak dalam single pass/
menginisialisasi semua dist () nilai ke ? dist (s) = 0 untuk setiap v
V \ {s}, agar linier:
dist (6 0 min
(u , v) E
1dist (u 2 l (u, 6
Perhatikan bahwa algoritma ini memecahkan koleksi submasalah, {dist (u): u
V}. ita mulai dengan !ang terkecil dari mereka, dist (s), karena kita segera tahu"awabann!a untuk men"adi #. ami kemudian melan"utkan dengan semakin $besar$
sub%roblem&"arak ke sim%ul !ang lebih "auh dan lebih "auh di linierisasi&mana kita
ber%ikir dari sub%roblem sebagai besar "ika kita %erlu telah memecahkan ban!ak
sub%roblem lain sebelum kita bisa sam%ai ke sana.
8ni adalah teknik yang sangat umum. Pada setiap node, kita menghitung beberapa fungsi
dari nilai-nilai pendahulu node. Begitu terjadi bahwa fungsi tertentu kami adalah minimal jumlah,
tetapi kita bisa juga membuatnya maksimal, dalam hal ini kita akan mendapatkan jalan
terpanjang di dag tersebut. *tau kita bisa menggunakan suatu produk bukan jumlah dalam
kurung, dalam hal ini kita akan berakhir komputasi jalan dengan produk terkeil panjang tepi.
Pemrograman dinamis adalah paradigma algoritmik yang sangat kuat di mana masalahdiselesaikan dengan mengidentifikasi koleksi dari submasalah dan menangani mereka satu per
satu, terkeil pertama, menggunakan jawaban atas masalah-masalah keil untuk membantu
menari tahu yang lebih besar, sampai seluruh banyak dari mereka diselesaikan. Dalam
pemrograman dinamis kita tidak diberi dag a" dag adalah implisit. 9ode yang adalah
submasalah kita mendefinisikan, dan ujungnya adalah dependensi antara subproblem/ jika
untuk memeahkan subproblem B kita perlu jawaban untuk subproblem *, maka ada
(konseptual tepi dari * ke B. Dalam hal ini, * adalah dianggap sebagai subproblem keil dari B-
dan itu akan selalu lebih keil, dalam arti yang jelas.
:api sudah saatnya kita melihat ontoh.
6.2 Terpanjang meningkatkan subsequences
Dalam terpanjang meningkatkan masalah subse;uene, input adalah urutan angka
&,
...,
n.
S
7/24/2019 Salinan Terjemahan Dynamic Programming
6/31
ebuah subsequence 1 i
&
>
7/24/2019 Salinan Terjemahan Dynamic Programming
7/31
). Dasgupta, A Papadimitriou, dan ' aCirani &&
7/24/2019 Salinan Terjemahan Dynamic Programming
8/31
$ambar %.= dag meningkatkan subse;uenes.
Dalam ontoh ini, panah menunjukkan transisi antara unsur-unsur berturut-turut dari solusi
mal yang optimal. )eara umum, untuk lebih memahami ruang solusi, mari kita membuat grafik
semua transisi diperbolehkan/ membangun node i untuk setiap elemen
i,
dan menambahkan tepi
diarahkan (i, j setiap kali ada kemungkinan untuk
dan j
menjadi
i
untukelemen berturut-turut dalam subse;uene
meningkat, yaitu, setiap kali i
7/24/2019 Salinan Terjemahan Dynamic Programming
9/31
(") * + ma- { (i) :( i, ") E},
5 2 8 3 9 7 6 6
7/24/2019 Salinan Terjemahan Dynamic Programming
10/31
&= *lgoritma
7/24/2019 Salinan Terjemahan Dynamic Programming
11/31
ekspresi yang melibatkan subproblems hanya lebih keil. Berapa lama langkah ini mengambilI
Aal ini membutuhkan pendahulu dari j dikenal" untuk ini daftar kedekatan dengan grafik terbalik
$J, onstrutible dalam waktu linier (reall Fatihan 3.?, berguna. Perhitungan F (j maka
membutuhkan waktu sebanding dengan indegree dari j, memberikan keseluruhan linear waktu
berjalan di . 8ni adalah paling 7 (n=, makhluk maksimum ketika array input diurutkan dalam
urutan yang meningkat. 5adi solusi pemrograman dinamik sederhana dan efisiendibersihkan.
*da satu masalah terakhir yang akan F-nilai hanya memberitahu kita panjang subse;uene
optimal, jadi bagaimana kita memulihkan subse;uene sendiriI Aal ini mudah dikelola dengan
perangkat pembukuan yang sama kita digunakan untuk jalur terpendek di Bab 4. )ementara
komputasi F (j, kita juga harus menatat pre6 (j, node berikutnya-untuk-terakhir di jalan
terpanjang ke j. )ubse;uene optimal kemudian dapat direkonstruksi dengan mengikuti
bakpointers ini.
7/24/2019 Salinan Terjemahan Dynamic Programming
12/31
). Dasgupta, A Papadimitriou, dan ' aCirani &3
7/24/2019 Salinan Terjemahan Dynamic Programming
13/31
Rekursi? Tidak, terima kasihsubsequences:.
Kembali ke diskusi kita tentang terpanjang meningkatkan #ormula untuk F (j juga
menunjukkan alternatif, algoritma rekursif. I Bukankah itu lebih sederhana
)ebenarnya, rekursi adalah ide yang sangat buruk/ prosedur yang dihasilkan akan
membutuhkan waktu eksponensialE 'ntuk melihat mengapa, anggaplah bahwa dagmengandung tepi (i, j untuk semua i
7/24/2019 Salinan Terjemahan Dynamic Programming
14/31
7/24/2019 Salinan Terjemahan Dynamic Programming
15/31
&4 *lgoritma
7/24/2019 Salinan Terjemahan Dynamic Programming
16/31
emrograman?
*sal usul pemrograman dinamis jangka memiliki sangat sedikit hubungannya dengan menulis
kode. 8ni pertama kali diiptakan oleh Jihard Bellman pada &+?-an, saat pemrograman
komputer adalah suatu kegiatan esoteris dipraktekkan oleh begitu sedikit orang yang bahkan
tidak pantas nama. Kembali kemudian pemrograman berarti HperenanaanH, dan Hpemrograman
dinamisH dikandung seara optimal merenanakan proses multistage. :he dag dari $ambar %.=
dapat dianggap sebagai menggambarkan ara yang mungkin di mana proses tersebut dapat
berkembang/ setiap node menunjukkan negara, node paling kiri adalah titik awal, dan ujung-
ujungnya meninggalkan negara mewakili tindakan yang mungkin, yang mengarah ke negara
yang berbeda di unit berikutnya waktu.
timologi pemrograman linear, subjek Bab , mirip.
6.! "engedit jarak
Ketika spell heker bertemu kesalahan ejaan mungkin, terlihat dalam kamus untuk kata-kata
lain yang dekat. *pa gagasan yang tepat kedekatan dalam hal iniI
'kuran alami jarak antara dua string adalah sejauh mana mereka dapat sejajar, atau
diookkan. )eara teknis, sebuah keselarasan adalah sebuah ara penulisan string satu di
atas yang lain. )ebagai ontoh, berikut dua kemungkinan keberpihakan dari )97NO dan
)'99O/
S - NOWYSUNN - Y Biaya: 3
- SNOW - YSUN - - NY 5
Biaya/H-H menunjukkan HgapH" sejumlah ini dapat ditempatkan baik tali. Biaya suatu keselarasan
adalah jumlah kolom di mana huruf berbeda. Dan mengedit jarak antara dua string adalah biaya
mungkin keselarasan terbaik mereka. *pakah *nda melihat bahwa tidak ada keselarasan yang
lebih baik dari )97NO dan )'99O daripada yang ditampilkan di sini dengan biaya 3I
1unting "arak dinamakan demikian karena "uga da%at diangga% sebagai "umlah
minimum suntingan&sisi%an, %engha%usan, dan substitusi dari karakter dibutuhkan
untuk mengubah string %ertama ke kedua. 2isaln!a, keselarasan ditam%ilkan di
sebelah kiri sesuai dengan tiga suntingan: masukkan /, %engganti 3 4 5, dan
mengha%us 6.
)eara umum, ada begitu banyak kemungkinan keberpihakan antara dua string yang akan
sangat tidak efisien untuk menari melalui semua dari mereka untuk satu terbaik. )ebaliknya
kita beralih ke pemrograman dinamis.
#ebuah solusi pemrograman dinamisKetika memeahkan masalah dengan pemrograman dinamis, pertanyaan yang paling penting
adalah, *pa subproblemI )elama mereka dipilih sehingga memiliki properti (G dari halaman
&&. itu adalah hal yang mudah untuk menuliskan algoritma/ iteratif memeahkan salah satu
subproblem setelah lainnya, dalam rangka meningkatkan ukuranmenemukan.
:ujuan kami adalah untuk mengedit jarak antara dua string L & >>> mQ dan y & >>> nQ. *pa itu
subproblem baikI 9ah, itu harus pergi bagian dari jalan menuju pemeahan seluruh masalah"
7/24/2019 Salinan Terjemahan Dynamic Programming
17/31
jadi bagaimana
7/24/2019 Salinan Terjemahan Dynamic Programming
18/31
). Dasgupta, A Papadimitriou, dan ' aCirani &?
7/24/2019 Salinan Terjemahan Dynamic Programming
19/31
$ambar %.3 subproblem (,?.
:entang melihat jarak antara mengedit beberapa awalan string pertama, L & >>> iQ, dan beberapa
awalan kedua, y & >>> jQI )ebut ini subproblem (i, j (lihat $ambar %.3. :ujuan akhir kami,
kemudian, adalah untuk menghitung (m, n.
'ntuk ini untuk bekerja, kita perlu entah bagaimana mengekspresikan (i, j dalam hal
submasalah yang lebih keil. !ari kita lihat apa-yang kita ketahui tentang keselarasan terbaik
antara L & >>> iQ dan y & >>> jQI 9ah, kolom paling kanan hanya dapat satu dari tiga hal/
L iQ -
- y jQ
L iQ y jQ
Kasus pertama menimbulkan biaya & untuk kolom tertentu, dan tetap untuk menyelaraskan L &
>>> i - &Q dengan y & >>> jQ. :api ini persis subproblem (i-&, jE Kami tampaknya akan
mendapatkan suatu tempat. Dalam kasus kedua, juga dengan biaya &, kita masih perlu untuk
menyelaraskan L & >>> iQ dengan y & >>> j - &Q. 8ni lagi subproblem lain, (i, j -&. Dan dalam
kasus terakhir, yang baik biaya & (jika L iQ 0 y jQ atau (jika L iQ 0 y jQ, apa yang tersisa
adalah subproblem (i - &, j - &. )ingkatnya, kami telah menyatakan (i, j dalam hal tiga keil
submasalah (i - &, j, (i, j -&, (i -&, j - &. Kami tidak tahu yang mereka adalah yang benar,
jadi kita perlu untuk menoba mereka semua dan memilih yang terbaik/
(i, j 0 min 1& 2 (i - &, j, & 2 (i, j - &, diff (i, j 2 (i - &, j - dimana
&untuk kenyamanan diff (i, j didefinisikan sebagai jika L iQ 0 y jQ dan & sebaliknya .
!isalnya, dalam menghitung mengedit jarak antara K)P799)8*F dan P7F897!8*F,
subproblem (4,3 sesuai dengan prefiks RP7 dan P7F. Kolom paling kanan dari
keselarasan terbaik mereka harus menjadi salah satu dari berikut/
O -
atau
atau
- L
OL
demikian, (4,3 0 min 1& 2 (3,3, & 2 (4,=, & 2 (3,=.
5awaban atas semua submasalah (i, j membentuk tabel dua dimensi, seperti pada
$ambar %.4. Dalam rangka apa yang harus submasalah ini dipeahkanI 'rutan apapun baik-
baik saja, asalkan (i - &, j, (i, j - &, dan (i -&, j - & ditangani sebelum (i, j. !isalnya, kitabisa mengisi tabel satu baris pada satu waktu, dari baris atas ke baris bawah, dan bergerak kiri
ke kanan di setiap baris. *tau alternatif, kita bisa mengisinya di kolom dengan kolom. Kedua
metode akan memastikan bahwa pada saat kita mendapatkan sekitar untuk komputasi entri
meja tertentu, semua entri lain kita perlu sudah diisi.
Atau
atau
7/24/2019 Salinan Terjemahan Dynamic Programming
20/31
Ponn LA XE ETI
PLYNOMALIO
7/24/2019 Salinan Terjemahan Dynamic Programming
21/31
&% *lgoritma
7/24/2019 Salinan Terjemahan Dynamic Programming
22/31
$ambar %.4 (a :abel dari submasalah. ntri (i - &, j - &, (i - &, j, dan (i, j - & yang
diperlukan untuk mengisi (i, j. (b :abel akhir dari nilai-nilai yang ditemukan oleh
pemrograman dinamis.
(a
i
Dengan kedua subproblems dan memesan ditentukan, kami hampir selesai. *da hanya
tetap Hkasus dasarH dari pemrograman dinamis, subproblems sangat keil. Dalam situasi
sekarang, ini adalah (, > dan (>, , yang keduanya mudah dipeahkan. (, j adalah
mengedit jarak antara awalan -panjang L, yaitu string kosong, dan surat-surat j pertama y/
jelas, j. . Dan juga, (i, 0 i
Pada titik ini, algoritma untuk mengedit jarak pada dasarnya menulis itu sendirim.
untuk i 0 ,&,=, ...,
(i, 0 i untuk j 0 &,=, ..., n/
(, j 0 j untuk i 0 &,=, ..., m/
untuk j 0 &,=, ..., n/
(i, j 0 min 1 (i - &, j 2 &, (i, j - & 2 &, (i - &, j - & 2 diff (i, j pulang (m, n
Prosedur ini mengisi tabel baris demi baris, dan kiri ke kanan dalam setiap baris. . )etiap entri
membutuhkan waktu yang konstan untuk mengisi, sehingga waktu berjalan keseluruhan hanya
ukuran meja, 7 (mn
Dan dalam ontoh kita, jarak mengedit ternyata menjadi %/
EXPONEN - TIAL - -POLINOMIAL
nj- & j
i - &
m :'5'*9
(b
7
9
9
R
*
P
:
F
&
7/24/2019 Salinan Terjemahan Dynamic Programming
23/31
8+ @ @ @ %
&& & + @ + @ @ @ @ %
& = 3 4 ? % @ + &
& & = 3 4 ? % @ + &
= = = 3 4 ? % @ + &
3 = 3 3 4 ? % @ + &
4 3 = 3 4 ? ? % @ +
? 4 3 3 4 4 ? % @ +
% ? 4 4 4 ? ? % @ +
% ? ? ? 4 ? % @ +
@ % % % ? ? % @ +
+ @ % % % % @
P7F897!8*F
7/24/2019 Salinan Terjemahan Dynamic Programming
24/31
). Dasgupta, A Papadimitriou, dan ' aCirani &
7/24/2019 Salinan Terjemahan Dynamic Programming
25/31
$ambar %.? dag mendasari, dan jalan panjang
6.dag mendasari
)etiap program dinamis memiliki struktur dag mendasari/ memikirkan setiap node sebagai
mewakili subproblem, dan masing-masing ujung sebagai kendala didahulukan pada urutan di
mana submasalah dapat diatasi. !emiliki node u
&,
..., u
k
arahkan ke 6 berarti Hsubproblem 6 hanya dapat
diselesaikan sekali jawaban atas u
&,
..., u
k
dikenal.$ 7alam a%likasi mengedit "arak kita sekarang, nodedari dag mendasari sesuai dengan submasalah, atau ekuivalen, untuk %osisi (i, ")
dalam tabel. /"ungn!a adalah kendala didahulukan, dari bentuk (i&+, ") 4 (i, "), (i, "
&+) 4 (i, "), dan (i&+, " &+) 4 ( i, ") (8ambar 9.). ;ahkan, kita bisa mengambil hal&hal
sedikit lebih "auh dan menem%atkan beban di te%i sehingga mengedit "arak !ang
diberikan oleh "alur ter%endek di dag !ang< /ntuk melihat ini, mengatur semua
%an"ang te%i ke +, kecuali untuk {(i & +, " & +) 4 (i, "): - =i> * ! =">} (ditam%ilkan
bertitik %ada gambar), !ang %an"angn!a # ?awaban akhir adalah maka cuku% "arak
antara node s * (#,#) dan t * (m, n). 1atu "alur ter%endek !ang mungkin
ditam%ilkan, salah satu !ang menghasilkan keselarasan kami menemukan
sebelumn!a. 7i "alan ini, masing&masing bergerak turun adalah %engha%usan,masing&masing bergerak te%at adalah %en!isi%an, dan masing&masing bergerak
diagonal adalah baik %ertandingan atau substitusi.
Dengan mengubah bobot pada dag ini, kita dapat memungkinkan bentuk umum dari
mengedit jarak, dimana insersi , penghapusan, dan substitusi memiliki biaya terkait yang
berbeda.
POLYNOMIALE
X
P
ON
E
N
T
IA
7/24/2019 Salinan Terjemahan Dynamic Programming
26/31
L
7/24/2019 Salinan Terjemahan Dynamic Programming
27/31
&@ *lgoritma
7/24/2019 Salinan Terjemahan Dynamic Programming
28/31
submasalah umum
!enemukan subproblem yang tepat membutuhkan kreati6itas dan eksperimentasi. :etapi ada
pilihan standar beberapa yang tampaknya timbul berulang kali dalam pemrograman dinamis.
8. 8nput L
&,
L
=,
..., L
n
dan subproblem adalah L
&,
L
=,
..., L
i.
R
&
L
=
L
3
L
4
L
?
L
%
L
L
@
L
+
7/24/2019 Salinan Terjemahan Dynamic Programming
29/31
L
&
5umlah submasalah karena itu linear.
ii. 8nput L
&,
..., L
n,
dan y
&,
..., y
m.
)ebuah subproblem adalah L
&,
..., L
i
dan y
&,
..., y
j.
R
&
L
=
L
3
L
4
L
?
L
%
L
7/24/2019 Salinan Terjemahan Dynamic Programming
30/31
L
@
L
+
L
&
y
&
y
=
y
3
y4
y
?
y
%
y
y@
5umlah submasalah adalah 7 (mn.
iii. 8nput L
&,
..., L
n
dan subproblem adalah L
i,
L
i 2
&,..., L
j.
7/24/2019 Salinan Terjemahan Dynamic Programming
31/31
R
&
L
=
L
3
L
4
L
?
L
%
L
L
@
L
+
L
&
5umlah submasalah adalah 7 (n=.i6. 8nput adalah pohon berakar. )ebuah subproblem adalah subtree berakar.
5ika pohon memiliki n node, berapa banyak submasalah yang adaI
Kita telah menemui dua kasus pertama, dan lain-lain yang datang tak lama.