資料結構中最佳傾斜樹
尋找不等字母成本的最優字首碼的問題在於計算最小成本字首碼,其中編碼字母表由不等成本(長度)的字母組成,長度為α和β,其中α≤β。我們僅限於二叉樹。
程式碼由傾斜樹表示,類似於霍夫曼樹表示霍夫曼編碼問題的解。儘管兩者相似,但不等字母成本的情況比經典的霍夫曼問題困難得多;儘管文獻豐富,但對於一般的字母成本,仍然沒有已知或可用的多項式時間演算法。
但是,已知存在多項式時間演算法,α和β是整數常數。
在這種情況下計算最小成本樹的問題首先由Karp在1961年研究,他透過歸約到整數線性規劃來解決這個問題,產生一個在n和β上都是指數級的演算法。從那時起,人們對問題的各個方面做了大量工作,例如:對最優樹的成本進行界定;限制為所有權重都相等的特殊情況。
儘管付出了所有這些努力,但令人驚訝的是,基本問題是否可以多項式時間求解或屬於NP完全問題仍然未知。
Golin和Rote描述了一種O(nβ+2)時間的動態規劃演算法,該演算法以自頂向下的方式構建樹。
這已經透過實施不同的方法(單調矩陣概念,例如Monge屬性和SMAWK演算法)得到了改進。
定理1:最優傾斜樹可以在O(nβ)時間內構造。
這是對於β值較小的情況最有效的已知演算法;在實踐中,字母成本通常很小(例如,莫爾斯電碼)。
最近提供了一種有效的近似演算法方案。
定理2
存在一個用於最優傾斜樹的多項式時間近似方案。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP