Optimal BST â State & Recurrence
Merancang DP untuk Optimal BST
Definisi state klasik (mengikuti CLRS):
- ⢠e[i, j] = biaya expected minimum dari subtree yang berisi kunci Kᾢ..K⹟. [web:126][web:120]
- ⢠w[i, j] = total probabilitas pᾢ..pâąź dan qᾢââ..qâąź. [web:126][web:120]
Basis:
- ⢠e[i, iâ1] = qᾢââ (subtree kosong di antara kunci). [web:126]
- ⢠w[i, iâ1] = qᾢââ. [web:126]
Recurrence untuk 1 ⤠i ⤠j ⤠n:
e[i, j] = minᾢâ¤râ¤âąź ( e[i, râ1] + e[r+1, j] ) + w[i, j]. [web:126][web:120]
Intuisi: pilih setiap Kᾣ sebagai root, jumlahkan biaya subtree kiri & kanan, tambah total probabilitas sebagai kenaikan kedalaman. [web:126][web:120]
// Sketsa DP bottom-up untuk Optimal BST
for i â 1 to n+1:
e[i, i-1] â q[i-1]
w[i, i-1] â q[i-1]
for l â 1 to n: // panjang interval kunci
for i â 1 to n-l+1:
j â i + l - 1
e[i, j] â â
w[i, j] â w[i, j-1] + p[j] + q[j]
for r â i to j:
cost â e[i, r-1] + e[r+1, j] + w[i, j]
if cost < e[i, j]:
e[i, j] â cost
// e[1, n] = biaya expected minimum BST optimal
// Waktu: O(n³), ruang: O(n²). [web:126][web:120]