Anda di halaman 1dari 3

Solusi untuk Pekerjaan Rumah Delapan CSE 101

1. Masalah buku teks 6.1.


Subproblem: Misal S(j) adalah jumlah dari jumlah maksimum yang berdekatan yang berakhir tepat di a j (tetapi mungkin
panjangnya nol). Kami ingin maks j S (j).
Rumusan rekursif: Subsequence yang mendefinisikan S(j) baik (i) memiliki panjang nol, atau (ii) terdiri dari subsequence
terbaik yang diakhiri dengan j-1 , diikuti oleh elemen a j . Karena itu,

S(j) = maks{0, aj + S (j - 1)}.

Untuk konsistensi S(0) = 0.


Algoritma:

S[0] = 0
untuk j = 1 sampai n:
S[j] = maks(0, aj + S [j - 1])
kembalikan maks j S[j]

Waktu berjalan: Putaran tunggal: O(n).

2. Masalah buku teks 6.2.


Submasalah: Biarkan T (j) menjadi penalti minimum yang ditimbulkan hingga lokasi a j , dengan asumsi Anda berhenti di
sana. Kami ingin T (n).
Formulasi rekursif: Misalkan kita berhenti di a j . Perhentian sebelumnya adalah i , i < j (atau mungkin a j adalah perhentian
pertama). Mari kita coba semua kemungkinan untuk : i

T(j) = min T(i) + (200 - (a j - a )) ,


i
2

0≤i<j

di mana untuk kenyamanan kita menetapkan T (0) = 0 dan a = 0. 0

Algoritma:

untuk j = 1 sampai n:
T(j)=(200-a j ) 2

untuk i = 1 hingga j - 1:
T(j)=min{T(j),T(i)+(200-(a j -a i )) }2

kembalikan T(n)

Waktu berjalan: Dua putaran, O(n ). 2

3. Masalah buku teks 6.7.


Submasalah: Tentukan T (i, j) sebagai panjang dari urutan palindromik terpanjang dari x[i . . . J]. Kami ingin T(1, n).
Formulasi rekursif: Dalam menghitung T(i,j), pertanyaan pertama adalah apakah x[i] = x[j]. Jika demikian, kita dapat
mencocokkannya dan kemudian mengulang ke dalam, ke T (i + 1, j - 1). Jika tidak, setidaknya salah satunya tidak ada di
palindrom.

(1 jika i = j
T ( i,j ) = 2 + T ( saya + 1 ,j - 1) jika i < j dan x [ saya ] = x [ j ]
[ maks{T (i + 1,j),T (i,j — 1)} sebaliknya

Untuk mengatur konsistensi T ( i, i - 1) = 0 untuk semua i .


Algoritma: Hitung T ( i, j ) dalam urutan peningkatan panjang interval | j - i |.

1
untuk i = 2 hingga n + 1:
T[i, i - 1] = 0 untuk i = 1 hingga n:
T[i,i]=1
untuk d = 1 sampai n - 1: (panjang interval)
untuk i = 1 sampai n - d:
j=i+d
jika x[i] = x[j]:
T[i,j]=2+T[i+1,j-1]
kalau tidak:
T[i,j] =max{T[i+1,j],T[i,j-1]} kembalikan T[1, n]

Waktu berjalan: Ada O(n ) submasalah dan masing-masing membutuhkan O(1) waktu untuk menghitung, sehingga total
2

waktu berjalan adalah O(n ). 2

4. Masalah buku teks 6.17.


Submasalah: Untuk sembarang bilangan bulat 0 ≤ u ≤ v, tentukan T (u) benar jika memungkinkan untuk membuat perubahan
untuk u menggunakan koin yang diberikan x 1 , x 2 , . . . , x n . Jawaban yang kita inginkan adalah T (v).
Formulasi rekursif: Perhatikan itu

T (u) benar jika dan hanya jika T (u - x ) benar untuk beberapa i.


i

Untuk konsistensi, atur T (0) ke true.


Algoritma:

T [0] = benar
untuk u = 1 sampai v:
T [u] = salah
untuk i = 1 sampai n:
jika u ≥ x dan T [u - x ]: T [u] = true
i i

Waktu berjalan: Tabel memiliki ukuran v dan setiap entri memerlukan waktu O(n) untuk diisi; oleh karena itu total waktu
berjalan adalah O(nv).

5. Jumlah jalur dalam DAG.


Submasalah: Anggaplah G adalah graf asiklik berarah. Untuk sembarang simpul v dalam graf, tentukan numpaths[v] sebagai
jumlah lintasan dari s ke v. Kuantitas yang kita inginkan adalah numpaths[t].
Formulasi rekursif: Pilih (u, v ) ∈ E setiap simpul v 6= s dalam grafik. Setiap jalur dari s ke v berakhir di tepi
. Dengan demikian:
numpaths[v] = numpaths[u].
kamu:(u,v)∈E

Dan tentu saja, numpaths[s] = 1.


Algoritma: Kita dapat mengisi array dengan mempertimbangkan node dalam urutan topologi:

Temukan urutan topologi G untuk semua v ∈ V :


numpath[v] = 0
numpath[s] = 1
untuk semua u ∈ V , dalam urutan topologi:
untuk semua (u, v) ∈ E :
numpath[v] = numpath[v] + numpath[u] mengembalikan numpath[t]

Waktu berjalan: Total waktu berjalan adalah O(V + E), linier.

6. Masalah buku teks 6.21.


Submasalah: Akar pohon di sembarang simpul r. Untuk setiap u ∈ V , tentukan

T(u) = ukuran penutup simpul terkecil dari subpohon yang berakar pada u.

Kami ingin T (r).

2
Rumusan rekursif: Dalam mencari tahu T (u), pertanyaan yang paling mendesak adalah apakah u ada di penutup simpul.
Jika tidak, maka anak-anaknya harus berada di penutup simpul. Misalkan C(u) adalah himpunan anak-anak u, dan misalkan
G(u) adalah cucunya. Kemudian

T(u) = min
।)
T ( u )=min
|C(u)|+ P z∈G(u) T(z)

dimana |C (u)| adalah jumlah anak dari simpul u. Kasus pertama menyertakan u di penutup simpul; kasus kedua tidak.
Algoritma:

Pilih salah satu node root r


dist[·] = BFS(pohon, r)

untuk semua node u, dalam urutan penurunan dist:


51 = 1 (opsi 1: sertakan u di penutup simpul)
untuk semua (u, w) ∈ E sehingga dist[w] = dist[u] + 1: (mis. w = anak dari u):
S 1 = S 1 + T [w]
52 = 0 (opsi 2: jangan sertakan u di penutup vertex)
untuk semua (u, w) ∈ E sehingga dist[w] = dist[u] + 1: (mis. w = anak dari u):
S2=S2+1
untuk semua (w, z) ∈ E sehingga dist[z] = dist[w] + 1: (mis. z = cucu dari u):
S 2 = S 2 + T [z]
T[u] = min{S 1 ,S 2 }
kembali T [r]

Waktu berjalan: Pekerjaan yang dilakukan pada setiap node sebanding dengan jumlah cucunya, |G(u)|. Sejak u |G(u)| ≤ |
V | (setiap node memiliki paling banyak satu kakek), keseluruhan pekerjaan yang dilakukan adalah linier.

7. Masalah buku teks 6.19.


Submasalah: Untuk setiap bilangan bulat 0 ≤ u ≤ v dan 0 ≤ j ≤ k, tentukan T (u, j) benar jika memungkinkan untuk membuat
perubahan untuk u menggunakan paling banyak j koin dengan denominasi yang dipilih dari x 1 , x 2 , . . . , x n . Jawaban yang
kita inginkan adalah T(v,k).
Formulasi rekursif: Perhatikan itu

T(u, j) benar jika dan hanya jika (baik u = 0 atau (T(u - x i ,j - 1) benar untuk beberapa i)).

Untuk konsistensi, atur T (0, j) ke true untuk semua j dan T (u, 0) ke false untuk u > 0.
Algoritma:

untuk j = 0 ke k:
T [0, j] = benar
untuk u = 1 sampai v:
T [u, 0] = salah
untuk j = 1 ke k:
untuk u = 1 sampai v:
T [u, j] = salah
untuk i = 1 sampai n:
jika u ≥ x i dan T [u - x i , j - 1]: T [u, j] = true
kembalikan T [v, k]

Waktu berjalan: Tabel memiliki ukuran k × v dan setiap entri memerlukan waktu O(n) untuk diisi; oleh karena itu total waktu
berjalan adalah O (nkv).

Anda mungkin juga menyukai