麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

js神秘的電報密碼 哈弗曼編碼實現(xiàn)

2019-11-19 10:50:25
字體:
供稿:網(wǎng)友

這篇文章主要介紹了js神秘的電報密碼 哈弗曼編碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

哈夫曼編碼,根據(jù)每個單詞在文本中出現(xiàn)的次數(shù)頻率為權(quán)值,頻率高的權(quán)值大。然后每次取兩個頻率最小的生成樹,最后生成一顆大樹。從根節(jié)點到該單詞的路徑,左邊為0,右邊為1,

function HFM(){  var souce = [];     function createNode(node){    var obj = {      weight:0,       parent:-1,      lchild:-1,      rchild:-1,      value:''    };         return Object.assign(obj,node);  }     this.addNode = function(node){    //添加單詞和頻率(權(quán)值)    souce.push(createNode(node));  }     this.createTree = function(){    //哈夫曼樹    var HuffNode = JSON.parse(JSON.stringify(souce));    var n = HuffNode.length;         var x1,x2; //兩個權(quán)值最小的索引    var m1,m2;     //兩個權(quán)值最小的值         for(var i = 0; i < n ; i++){      m1 = m2 = Infinity; //初始化為最大值      x1 = x2 = -1;             for(var j = 0; j < n+i; j++){ //尋找兩個權(quán)值最小,且父節(jié)點為-1的        var item = HuffNode[j];        if(item.weight < m1 && item.parent == -1){          m2 = m1;          x2 = x1;                     m1 = item.weight;          x1 = j;                   }else if(item.weight < m2 && item.parent == -1){          m2 = item.weight;;          x2 = j;        }      }             if(x1 != -1 && x2 != -1){        HuffNode[x1].parent = n + i; //更新父節(jié)點        HuffNode[x2].parent = n + i;                 //創(chuàng)建一個新的節(jié)點        HuffNode[n+i] = createNode({          weight:m1+m2,          lchild:x1,          rchild:x2        });      }                 }         return HuffNode;  };     this.getCode = function(){    //哈夫曼編碼    var n = souce.length;    var tree = this.createTree();    var codes = {};    for(var i = 0; i < n; i++){      var p = tree[i].parent;      var code = '';      var c = i;      while(p != -1){ //迭代前溯        if(tree[p].lchild == c){          code = 0 + code;        }else{          code = 1 + code;        }        c = p;        p = tree[p].parent;      }             codes[ tree[i].value ] = code;      console.log(tree[i].value , code);         }         return codes;  }     } var hfm = new HFM();hfm.addNode({  weight:5,  value:"a"});hfm.addNode({  weight:32,  value:"b"});hfm.addNode({  weight:18,  value:"c"});hfm.addNode({  weight:7,  value:"d"});hfm.addNode({  weight:25,  value:"e"});hfm.addNode({  weight:13,  value:"f"});console.log(hfm.getCode())

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 色视频在线播放 | 久久最新免费视频 | 黄色av免费电影 | 免费小毛片 | 日韩精品无码一区二区三区 | 色欲香天天天综合网站 | 免费a级毛片永久免费 | 久久91久久久久麻豆精品 | 91豆奶 | 国产无遮挡一区二区三区毛片日本 | 在线播放免费视频 | 精品视频在线免费看 | 国产美女做爰免费视 | 亚洲天堂午夜 | 日韩999| 一级一级一级一级毛片 | 91成人免费 | 久久亚洲春色中文字幕久久 | 国产二区三区在线播放 | 国产亚洲精品成人a | 在线 日本 制服 中文 欧美 | 欧美a级在线免费观看 | 成人一级黄色片 | 亚洲精品自在在线观看 | 亚洲激情91 | 一级免费特黄视频 | 久久久久久久高清 | 草草视频免费观看 | 精品国产一区二 | 久草在线网址 | 91丝袜 | 亚洲第一成人久久网站 | 性感美女一级毛片 | 日韩美香港a一级毛片免费 日韩激情 | 蜜桃传媒视频麻豆第一区免费观看 | 亚洲免费永久 | 国产成人精品二区 | 亚洲精品一区中文字幕 | 成年人在线免费 | 一级黄色在线免费观看 | 久久免费视频8 |