Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 2

Versi bottom-up dan top-down memiliki waktu berjalan asimtotik yang sama.

Waktu pelaksanaan
prosedur BOTTOM-UP-CUT-ROD adalah (n2), karena struktur loop bertulang ganda. Jumlah iterasi dari
inner for loop, dalam baris 5-6, membentuk rangkaian aritmatika. Waktu berjalan dari rekan top-
downnya, MEMOIZED-CUT-ROD, juga (n2), meskipun waktu yang berjalan mungkin sedikit lebih sulit
untuk melihat. Karena panggilan rekursif untuk memecahkan subproblem yang telah dipecahkan
sebelumnya segera kembali, MEMOIZED-CUT-ROD menyelesaikan setiap subproblem satu kali saja.
Saya t memecahkan subproblems untuk ukuran 0, 1, ..., n. Untuk memecahkan subproblem dari
ukuran n, pengulangan for pada baris 6-7 iterasi n kali. Jadi, jumlah iterasi untuk loop ini, atas semua
panggilan rekursif dari MEMOIZED-CUT-ROD, membentuk rangkaian aritmatika, memberikan total
(n2) iterasi, seperti bagian dalam untuk loop BOTTOM-UPCUT-ROD.

Subproblem graphs
Grafik subproblem untuk masalah tersebut mewujudkan informasi ini dengan tepat. Grafik
subproblem untuk masalah ini mewujudkan informasi ini dengan tepat. Gambar 15.4 menunjukkan
grafik subproblem untuk masalah pemotongan batang dengan n = 4. Ini adalah grafik terarah, yang
berisi satu titik untuk masing-masing subproblem yang berbeda. grafik masalah memiliki tepi yang
diarahkan dari vertex untuk subproblem x ke vertex untuk subproblem y jika menentukan solusi
optimal untuk subproblem x melibatkan secara langsung mempertimbangkan solusi optimal untuk
subproblem y.

Rekonstruksi sebuah solusi


Solusi pemrograman dinamis kami untuk masalah rod-cutting mengembalikan nilai untuk sebuah
Solusi yang optimal, tapi solusi tersebut tidak mengembalikan solusi sebenarnya: daftar ukuran
potongan. Kita bisa memperpanjang pendekatan pemrograman dinamis untuk mencatat tidak hanya
yang optimal Nilai dihitung untuk setiap subproblem, namun juga pilihan yang mengarah optimal
nilai. Dengan informasi ini, kami dapat dengan mudah mencetak solusi optimal.

Berikut adalah versi extended dari BOTTOM-UP-CUT-ROD yang menghitung masing-masing Ukuran
batang j, tidak hanya pendapatan maksimal rj, tapi juga sj, ukuran optimalnya potongan pertama
untuk dipotong:
Prosedur ini mirip dengan BOTTOM-UP-CUT-ROD, kecuali yang menciptakan array s di baris 1, dan
update s[j] di baris 8 untuk menahan ukuran optimal i dari yang pertama potongan untuk dipotong
saat memecahkan subproblem ukuran j.
Prosedur berikut mengambil tabel harga p dan ukuran batang n, dan panggilan itu EXTENDED-
BOTTOM-UP-CUT-ROD untuk menghitung array s[1.. n] optimal ukuran potongan pertama dan
kemudian mencetak daftar lengkap ukuran potongan secara optimal dekomposisi batang panjang n:

Dalam contoh rod-cutting kami, panggilan EXTENDED-BOTTOM-UP-CUT-ROD (p, 10 ) akan


mengembalikan array berikut ini:

Panggilan ke PRINT-CUT-ROD-SOLUTION (p, 10) akan mencetak hanya 10, tapi dengan telepon n = 7
akan mencetak potongan 1 dan 6, sesuai dengan dekomposisi optimal pertama untuk r7 yang
diberikan tadi.

You might also like