【計概】有關於LZW演算法

作者: loveyou999 (lovelovelove)   2015-08-11 22:59:58
網路查到的演算步驟如下~
步驟一
使用資料源的輸入符號集合A中的所有符號字元來建立一本初始的字典,其中每一個符號
被當成字典中的一個字。
步驟二
找出目前待編碼資料中和字典的字相同(相匹配)之最長子序列(符號串)。將此匹配子序
列編碼,送出一個欄位的編碼結果[index],其中index:最長匹配子序列在字典中的索
引位置。此匹配子序列與其後的一個符號連結成一個新子序列,將此新序列加入字典中
成為一個新字。
步驟三
重複步驟二直到待編碼資料都處理完畢才停止。
我按照上面方法要求【xyx xyx xyx】的LZW編碼如下圖
http://i.imgur.com/NAhePO7.jpg
但這題的答案是1213434,說明如下~
先作成初始字典:1=x,2=y,3= (空格)
將xyx編碼成121,接著再加上空格,成為1213,因為有了空格,我們知道前面的字串
已形成一個單字,故將xyz加到字典內,即4=xyz,故其編碼為~1213434
請問~我的作法是不是有問題呢?謝謝
作者: emstarbucks (花榭清風)   2015-08-11 23:10:00
哇現在計概連這都考喔@@ 看來改天連lz78 77都會考
作者: oklp1415 (天生我材)   2015-08-11 23:17:00
如果LZ都能考LZ77、LZ78、LZW、LZO下次考出來也不例外了
作者: emstarbucks (花榭清風)   2015-08-11 23:19:00
對阿 我好訝異.. 請問這哪一年的考題?我想哪天突然不考huffman跑去考算數編碼都不意外了國考考題真是處處充滿驚奇(!?) 囧
作者: loveyou999 (lovelovelove)   2015-08-11 23:29:00
哈哈~我不知國考有沒有考過,但課本有寫,就看了啊但課本寫的方式看不懂
作者: oklp1415 (天生我材)   2015-08-11 23:48:00
拿來考資訊類的不為過,因為資訊類的考生都異於常人!!
作者: youarestupid (ptt卒仔很多)   2015-08-11 23:53:00
有 這國考考過
作者: emstarbucks (花榭清風)   2015-08-12 00:14:00
課本錯了另外 你少編了"空白"X你題目說空白在初始字典裡的符號所以你既然編了X"空白" 那"空白"X你也應該加入字典題目解法空白是一個斷點 如果是這樣他不該編碼"3"可以請問是哪一本書寫的嗎? 他解法很有問題吧@@
作者: carterdunk (妳能聽到我的心嗎)   2015-08-12 08:35:00
去年資訊技師的計概考題 會不會不影響上榜
作者: loveyou999 (lovelovelove)   2015-08-12 19:38:00
computer science an overview 這一本書寫的剛看了一下去年技師,真的有考哦~題目差不多上網查了一下,對幾乎是寫課本內的解法,但說明很簡略所以~到底那個才是正確的呢?回em兄~確實少編了一個,謝謝提醒
作者: emstarbucks (花榭清風)   2015-08-12 21:11:00
他原始演算法就是你的解法阿 如果你要處理那種斷點你就必須在程式裡做手腳阿 你懂我的意思嗎通常"預設"的字典會是ascii code 不在裡面的就要編如果你今天碰到空白不想處理 那你絕對要特別寫出來的但事實上字典大小我們會限制 所以有些符號會特別處理oh 我要更正一下我認為他空白特別處理編3錯是因為 我一直記space是32XD" SORRY 用太習慣 看到不是32就覺得他錯了簡單說 原始的演算法精神不在字典就要編但是我上面有說 字典大小我們會限制如果都編進去是一件很蠢的事情 所以我們真的在壓縮的時候 通常0跟32我們會保留起來所以課本那樣沒錯 他有處理SPACE 是我用習慣ASCII= =你的一定沒錯 你只是沒特別處理空白 都編進去而已喔然後他這題也沒說是變動長度還是固定長度總之你的解法是沒有問題的 別擔心
作者: loveyou999 (lovelovelove)   2015-08-12 22:25:00
謝謝EM兄的回答~總之土法煉鋼的方法不會有錯就對了 3Q
作者: emstarbucks (花榭清風)   2015-08-12 22:38:00
http://imgur.com/bBjaWnN 給你安心一下原文書裡不考慮效率/SIZE的原始做法 編進去就對了
作者: loveyou999 (lovelovelove)   2015-08-12 22:51:00
看懂了 謝謝 Orz

Links booklink

Contact Us: admin [ a t ] ucptt.com