實現(xiàn)最優(yōu)二叉樹的構(gòu)造;在此基礎(chǔ)上完成哈夫曼編碼器與譯碼器。 假設(shè)報文中只會出現(xiàn)如下表所示的字符: 字符 A B C D E F G H I J K L M N 頻度 186 64 13 22 32 103 21 15 47 57 1 5 32 20 57 字符 O P Q R S T U V W X Y Z , . 頻度 63 15 1 48 51 80 23 8 18 1 16 1 6 2 要求完成的系統(tǒng)應(yīng)具備如下的功能: 1.初始化。從終端(文件)讀入字符集的數(shù)據(jù)信息,。建立哈夫曼樹。 2.編碼:利用已建好的哈夫曼樹對明文文件進行編碼,并存入目標文件(哈夫曼碼文件)。 3.譯碼:利用已建好的哈夫曼樹對目標文件(哈夫曼碼文件)進行編碼,并存入指定的明文文件。 4.輸出哈夫曼編碼文件:輸出每一個字符的哈夫曼編碼。
上傳時間: 2014-11-23
上傳用戶:shanml
數(shù)據(jù)結(jié)構(gòu) 1、算法思路: 哈夫曼樹算法:a)根據(jù)給定的n個權(quán)值{W1,W2… ,Wn }構(gòu)成 n棵二叉樹的集合F={T1,T2…,T n },其中每棵二叉樹T中只有一個帶權(quán)為W i的根結(jié)點,其左右子樹均空;b)在F中選取兩棵根結(jié)點的權(quán)值最小的樹作為左右子樹構(gòu)造一棵新的二叉樹,且置新的二叉樹的根結(jié)點的權(quán)值為其左、右子樹上結(jié)點的權(quán)值之和;c)F中刪除這兩棵樹,同時將新得到的二叉樹加入F中; d)重復(fù)b)和c),直到F只含一棵樹為止。
標簽: 算法 W1 數(shù)據(jù)結(jié)構(gòu) 樹
上傳時間: 2016-03-05
上傳用戶:lacsx
利用哈夫曼編碼進行信息通信可以大大提高信道利用率,縮短信息傳輸時間,降低傳輸成本。但是,這要求在發(fā)送端通過一個編碼系統(tǒng)對待傳數(shù)據(jù)預(yù)先編碼,在接收端將傳來的數(shù)據(jù)進行譯碼(復(fù)原)。對于雙工信道(即可以雙向傳輸信息的信道),每端都需要一個完整的編/譯碼系統(tǒng)。試為這樣的信息收發(fā)站寫一個哈夫曼編/譯碼系統(tǒng)。 [基本要求]: (1)I:初始化(Initialization)。從終端輸入一個長度不超過80的字符串(全部為大寫字母且無空格)。統(tǒng)計字符串的長度n、以及不同字符的個數(shù)和每種字符的權(quán)值,然后建立哈夫曼樹。 (2)E:編碼(Encoding)。利用已建好的哈夫曼樹對正文字符串進行編碼,并輸出。 (3)D:譯碼(Decoding)。利用已建好的哈夫曼樹與已經(jīng)完成的編碼進行譯碼,并輸出。
上傳時間: 2016-03-15
上傳用戶:sclyutian
赫夫曼編譯碼器: 用哈夫曼編碼進行通信可以大大提高信道利用率,縮短信息傳輸時間,降低傳輸成本。但是,這要求在發(fā)送端通過一個編碼系統(tǒng)對待傳數(shù)據(jù)預(yù)先編碼,在接收端將傳來的數(shù)據(jù)進行譯碼(復(fù)原)。對于雙工信道(即可以雙向傳輸信息的信道),每端都需要一個完整的編/譯碼系統(tǒng)。試為這樣的信息收發(fā)站寫一個哈夫曼碼的編/譯碼系統(tǒng)。 [基本要求]一個完整的系統(tǒng)應(yīng)具有以下功能: (1)I:初始化(Initialization)。從終端讀入字符集大小n,以及n個字符和n個權(quán)值,建立哈夫曼樹,并將它存于文件hfmTree中。 (2)E:編碼(Encoding)。利用已建好的哈夫曼樹(如不在內(nèi)存,則從文件hfmTree中讀入),對文件ToBeTran中的正文進行編碼,然后將結(jié)果存入文件CodeFile中。 (3)D:譯碼(Decoding)。利用已建好的哈夫曼樹將文件CodeFile中的代碼進行譯碼,結(jié)果存入文件TextFile中。 (4)P:印代碼文件(Print)。將文件CodeFile以緊湊格式顯示在終端上,每行50個代碼。同時將此字符形式的編碼文件寫入文件CodePrin中。 (5)T:印哈夫曼樹(Tree printing)。將已在內(nèi)存中的哈夫曼樹以直觀的方式(樹或凹入表形式)顯示出,同時將此字符形式的哈夫曼樹寫入文件TreePrint中。
上傳時間: 2016-04-17
上傳用戶:zaizaibang
C++實現(xiàn)的哈弗曼編碼,并有流程圖(1)I:初始化(Initialization)。從指定的英文文件中Sourcefile.txt讀取數(shù)據(jù),根據(jù)文件內(nèi)容統(tǒng)計的字符的頻度,建立哈夫曼樹。 (2)E:編碼(Encoding)。利用已經(jīng)建好的哈夫曼樹進行編碼,并將每個字符的編碼寫入文件HuffCode.txt中保存。 (3)C:壓縮(Compress)。根據(jù)HuffCode.txt中編碼對文件Sourcefile.txt進行重新編碼,并將重新編碼后的內(nèi)容寫入文件CodeFile.txt中。 (4)D:譯碼(Decoding)。利用已經(jīng)建好的哈夫曼樹將文件CodeFile.txt中的代碼進行譯碼,結(jié)果存入文件TextFile中。 (5)P:打印代碼文件(Print)。將文件CodeFile.txt的內(nèi)容顯示在終端上,每行50個代碼。 (6)T:顯示哈夫曼樹(Treeprinting)。將已經(jīng)在內(nèi)存中的哈夫曼樹以直觀的方式(樹或凹入表形式)顯示在終端上。
標簽: 編碼
上傳時間: 2013-12-24
上傳用戶:gxrui1991
ADT HuffmanTree{ 數(shù)據(jù)對象:D={ai| ai∈CharSet,i=1,2,……,n, n≥0} 數(shù)據(jù)關(guān)系:R={< ai-1, ai > ai-1, ai∈D, ai-1基本操作P: HuffmanTree() 構(gòu)造函數(shù) ~ HuffmanTree() 析構(gòu)函數(shù) Initialization(int WeightNum) 操作結(jié)果:構(gòu)造哈夫曼樹。 Encoder() 初始條件:哈夫曼樹已存在或者哈夫曼樹已存到文件中。 操作結(jié)果:對字符串進行編碼 Decoder() 初始條件:哈夫曼樹已存在且已編碼。 操作結(jié)果:對二進制串進行譯碼 Print() 初始條件:編碼文件已存在。 操作結(jié)果:把已保存好的編碼文件顯示在屏幕 TreePrinting() 初始條件:哈夫曼樹已存在。 操作結(jié)果:將已在內(nèi)存中的哈夫曼樹以直觀的方式顯示在終端上
標簽: ai HuffmanTree CharSet ADT
上傳時間: 2013-12-25
上傳用戶:changeboy
【問題描述】 設(shè)計一個利用哈夫曼算法的編碼和譯碼系統(tǒng),重復(fù)地顯示并處理以下項目,直到選擇退出為止。 【基本要求】 (1)初始化:鍵盤輸入字符集大小n、n個字符和n個權(quán)值,建立哈夫曼樹; (2)編碼:利用建好的哈夫曼樹生成哈夫曼編碼; (3)輸出編碼; (4)設(shè)字符集及頻度如下表: 字符:A B C D E F 頻度:4 9 23 2 17 15 字符:G H I J K 頻度:1 2 3 3 4
上傳時間: 2017-03-07
上傳用戶:qwe1234
D-sub-jy
標簽: D-sub-jy
上傳時間: 2013-04-15
上傳用戶:eeworm
第八章 數(shù)字電路技術(shù) A/D,D/A
上傳時間: 2013-07-10
上傳用戶:eeworm
D類音頻功率放大器設(shè)計
標簽: 音頻功率 放大器設(shè)計
上傳時間: 2013-04-15
上傳用戶:eeworm
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1