跳至內容
主選單
主選單
移至側邊欄
隱藏
導覽
首頁
近期變更
隨機頁面
MediaWiki說明
Taiwan Tongues 台語維基
搜尋
搜尋
外觀
建立帳號
登入
個人工具
建立帳號
登入
檢視 Burrows-Wheeler變換 的原始碼
頁面
討論
臺灣正體
閱讀
檢視原始碼
檢視歷史
工具
工具
移至側邊欄
隱藏
操作
閱讀
檢視原始碼
檢視歷史
一般
連結至此的頁面
相關變更
特殊頁面
頁面資訊
外觀
移至側邊欄
隱藏
←
Burrows-Wheeler變換
由於以下原因,您無權編輯此頁面:
您請求的操作只有這些群組的使用者能使用:
使用者
、taigi-reviewer、apibot
您可以檢視並複製此頁面的原始碼。
'''Burrows–Wheeler Transform'''(簡稱 BWT,嘛叫做'''塊排序壓縮'''), 是一个予人應用佇數據壓縮技術(如 bzip 二)中的算法。該當是一九九四年被 Michael Burrows 和 David Wheeler 佇咧加利福尼亞州帕洛阿爾托的 DEC 系統研究中心發明。伊的基礎是進前 Wheeler 佇一九八三年發明的一種無公開的轉換方法。 做一个字符串用該算法轉換的時陣,算法干焦改變這字符合串中字符仔的順序並無改變其字符仔。若這原字符捾有幾若改出現濟改,遐爾轉換過的字符串頂懸就會有一寡連紲重複的字符,這對壓縮是足有路用的。這个方法會當予因為處理字符合連紲重複字符的技術(如 MTF 變換佮遊程編碼)的編碼閣較容易予人壓縮著。 比一个例: 該算法的輸出因為有閣較濟的重複字符仔閣較會去予人壓縮去。 ==Burrows–Wheeler 變換過程== 算法將輸入字符串的所有循環字符串按照字典序排序,並以排序後字符串形成的矩陣的最後一列為其輸出。 ==Burrows–Wheeler 換的閣原過程== * 是因為上述的 BWT 變換過程,以字符符合「banana」做例,咱得著矣變換結果「annb $ aa」。 其他的過程見以下過程: 一 . 是因為原字符串矩陣的上尾仔一列做「annb $ aa」,咱進行該列進行排序,得著「$ aaabnn」, 嘛共其做為還原矩陣的第一列一列 . 二經過一刀一的轉移、排序佮組合,咱得著七對鄰接字符串:< a $ > < na > < na > < ba > < $ b > < an > < an >,共這七對鄰接字符合來做排序了後,得著 < $ b > < a $ > < an > < an > < ba > < na > < na >,由此,咱得著矣還原矩陣的第二列「b $ nnaaa」 一 . 三經過一鋪二的轉移、排序佮組合,咱得著七對鄰接字符串:< a $ b > < na $ > < nan > < ban > < $ ba > < ana > < ana >,共這七對鄰接字符合來做排序了後,得著 < $ ba > < a $ b > < ana > < ana > < ban > < na $ > < nan >,由此,咱得著矣還原矩陣的第三列「abaan $ n」 一 . 四經過一鼻三的轉移、排序佮組合,咱得著七對鄰接字符串:< a $ ba > < na $ b > < nana > < bana > < $ ban > < ana $ > < anan >,共這七對鄰接字符合來做排序了後,得著 < $ ban > < a $ ba > < ana $ > < anan > < bana > < na $ b > < nana >,由此,咱得著矣還原矩陣的第四列「na $ naba」 一 . 五經過一爿四的轉移、排序佮組合,咱得著七對鄰接字符串:< a $ ban > < na $ ba > < nana $ > < banan > < $ bana > < ana $ b > < anana >,共這七對鄰接字符合來做排序了後,得著 < $ bana > < a $ ban > < ana $ b > < anana > < banan > < na $ ba > < nana $ >,由此,咱得著矣還原矩陣的第五列「anbana $」 一 . 六經過一刀五的轉移、排序佮組合,咱得著七對鄰接字符串:< a $ bana > < na $ ban > < nana $ b > < banaan > < $ banan > < ana $ ba > < anana $ >,共這七對鄰接字符合來做排序了後,得著 < $ banan > < a $ bana > < ana $ ba > < anana $ > < banana > < na $ ban > < nana $ b >,由此,咱得著矣還原矩陣的第六列「naa $ anb」。 經過六改排序轉移佮組合,閣原出了原有的字符串即「$ banana」。 ==python 實現 ( 是因為 next 值方式 )== ==python 實現 ( 基於尾添加唯一字符方式 )== 通過佇尾溜咧添加唯一字符 ( 無和輸入字串中任何字符相仝 ) 了後才閣進行變換,會當無需要傳遞索引值列表,毋過顛倒變換的時陣愛做閣較濟計算。 下跤的偽代碼提供一个逆過程的素實現(輸入字符串 s 為原過程之輸出): ` ` ` '''function'''inverseBWT ( _ string _ s ) 生成 length(s)個空串 '''repeat'''length ( s )'''times''' 鋪字符串 s 做吐一列插入每一字符串的串頭歕所有的字符合排序倒轉去塗尾溜 EOF 的行 ` ` ` ==參考資料== ==外部連結== * Compression comparison of BWT based file compressors * Article by Mark Nelson on the BWT * A Bijective String-Sorting Transform , by Gil and Scott * Yuta's openbwt-v 一垺五 . zip contains source code for various BWT routines including BWTS for bijective version * On Bijective Variants of the Burrows–Wheeler Transform , by Kufleitner * Blog post and project page for an open-source compression program and library based on the Burrows–Wheeler algorithm * MIT open courseware lecture on BWT ( Foundations of Computational and Systems Biology ) [[分類: 待校正]]
返回到「
Burrows-Wheeler變換
」。