Salinan Terjemahan Dynamic Programming

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.