什麼是前綴編碼?
數據結構的題目。前綴編碼是什麼意思 10分
選A.
B中01是011和010的前綴
C中11常110的前綴
D中1是11的前綴,0是00的前綴
前綴碼的定義
前綴碼:給定一個序列的集合,若不存在一個序列是另一個序列的前綴,則該序列集合稱為前綴碼。
商品條碼的前綴碼代表什麼?
0-5沒有任何含義。因為我們國家比較大,企業數量多,根據實際需要國際物品編碼協會分配給我們6個前綴碼,至於是用690唬還是用691,692則沒有什麼含義,按企業申請的先後次序分配。不過,由於我們國家規定690,691開頭的廠商識別碼是七位數字,給企業留下的商品代碼分配空間有10萬個,而692-695開頭的廠商識別碼是八位數字,給企業留下的商品代碼分配空間只有1萬個,所以一般會把大型企業、產品數量比較多的分配690-691開頭的,企業規模比較小的,產品數量少的分配692-695開頭的廠商識別碼。
另外,糾正下一樓回答中的一個錯誤,廠商識別碼是包含前綴碼的前7位或8位,而不是第4-8位。舉例中的廠商識別碼應該是69369838,而不是69838。因為69269838與69369838是完全不同的兩個廠家,按上面的說法就成了同一個廠家了。
哈夫曼樹編碼編碼如何保證前綴不重複
這是因為每個字符都是葉子結點,沒有孩子的。
數據結構 什麼是前綴碼
本人乃一個數據痴迷者,在計算機的道路上,也是範個數據結構的痴迷者,現在大學裡面和同學搞開發也痴迷於數據庫,我就我個人的理解給你談一談:
首先,數據結構是一門計算機語言學的基礎學科,它不屬於任何一門語言,其體現的是幾乎所有標準語言的算法的思想。
下列密碼中屬於前綴碼的是
前綴碼
在計算機及通信中,常用二進制編碼來表示字符。例如,可用00、01、10、11分別表示字母A、B、C、D。如果字母A、B、C、D出現的頻率是一樣的,傳輸100個字母用200個二進制位。但實際上字母出現的頻率很不一樣,如A出現的頻率為50%,B出現的頻率為25%,C出現的頻率為20%,D出現的頻率為5%。能否用不等長的二進制序列表示字母A、B、C、D,使傳輸的信息的二進制位儘可能少呢?事實上,可用000表示字母D,用001表示字母C,01表示B,1表示A。這樣表示,傳輸100個字母所用的二進制位為
3×5 + 3×20 + 2×25 + 1×50 = 175
這種表示比用等長的二進制序列表示法好,節省了二進制位。但當我們用1表示A,用00表示B,用001表示C,用000表示D時,如果接收到的信息為001000,則無法辨別它是CD還是BAD。因而,不能用這種二進制序列表示A、B、C、D。要尋找另外的表示法。
設a1a2…an-1an為長度為n的符號串,稱其子串a1,a1a2,…,a1a2…an-1分別為a1a2…an-1an的長度為1,2,…,n-1的前綴(Prefix)。
定義14.1 設A = {a1,a2,…,am}是一個符號串集合,若對任意ai,aj∈A,ai≠aj,ai不是aj的前綴,aj也不是ai的前綴,則稱A為前綴碼(Prefixed Code)。若符號串ai(i = 1,2…,m)中,只出現0和1兩個符號,則稱A為二元前綴碼(Binary Prefixed Code)。
例如{1,01,001,000}是前綴碼,而{1,11,001,0011}不是前綴碼。那麼如何產生前綴碼呢?
可用一棵二元樹來產生一個二元前綴碼。給定一棵二元樹T,假設它有t片樹葉。設v是T任意一個分支點,則v至少有一個兒子至多有兩個兒子。若v有兩個兒子,則在由v引出的兩條邊上,左邊的標上0,右邊的標上1;若v只有一個兒子,在v引出的邊上可標0也可標1。設vi為T的任意一片樹葉,從樹根到vi的通路上各邊的標號組成的符號串放在vi處,t片樹葉處的t個符號串組成的集合為一個二元前綴碼。由上述作法可知,vi中的符號串的前綴均在vi所在的通路上,因而所得集合為二元(0和1組成)前綴碼。由此法可知,若T存在帶一個兒子的分支點,則由T產生的前綴碼不惟一,但T若為完全二元樹,則T產生的前綴碼就是惟一的了。
圖14-6中所示的二元樹產生的前綴碼為:{1,00,010,011}。
當知道了傳輸的符號出現的頻率時,如何選擇前綴碼,使傳輸的二進制位儘可能定少呢?
這就要先產生一棵最優二元樹T,然後用T產生二元前綴碼,能使傳輸的二進制位最少。下面通過一個例子來說明最優前綴碼的產生過程。
已知字母A、B、C、D、E、F出現的頻率如下:
A——30%,B——25%,C——20%,
D——10%,E——10%,F——5%。
(1)求帶權30,25,20,10,10,5的最優二元樹T
(2)在T上求一個前綴碼。
(3)設樹葉vi帶權為w%×100 = w,則vi處的符號串表示出現頻率為w%的字母。
A = {01,10,11,001,0001,0000}
為一前綴碼,其中
0000表示F,0001表示E,001表示D,
01表示C,10表示B,11表示A。
傳輸100個這樣的字母所用的二進制位為
4×(5 + 10) + 3×10 + 2×(20 + 25 + 30) = 240
很複雜啊,但工夫不負有心人,努力研究啊!!!...
在什麼情況下,等長編碼是最優前的編碼 15分
在(平均碼長為2.24)情況下,等長編碼是最優前的編碼.
常見的等福編碼就是前綴碼。所謂最優前綴碼是指,平均碼長或文件總長最小的前綴編碼稱為最優的前綴碼(這裡的平均碼長相當於碼長的期望值)。
變長編碼可能使解碼產生二義性,而前綴碼的出現很好地解決了這個問題。而平均碼長相當於二叉樹的加權路徑長度,從這個意義上說,由哈夫曼樹生成的編碼一定是最優前綴碼,故通常不加區分的將哈夫曼編碼也稱作最優前綴碼。
需要注意的是,由於哈夫曼樹建立過程的不唯一性可知,生成的哈夫曼編碼也是不唯一的.
下面給出的集合中,哪一個是前綴碼
前綴編碼滿足任意一個字符的編碼都不是另一個字符的編碼的前綴.在B中10編碼是101編碼的前綴,因此不滿足前綴編碼的要求.
下面給出的集合中,哪一個是前綴碼
什麼集合
哪一組不是合法前綴編碼: A 00,01,10,11 B 0,1,00,11 C 0,10,110,111 D 1,01,000,001
B