霍夫曼编码丢失的信息

问题描述

我使用 this JS-library 进行霍夫曼编码。它在某些字符串上失败,如以下示例 (RunKit) 所示:

train = "[1300 [[57 4.56 0.12 11 10260 240] [8.600000000000001 5.2 0.44 44 16447 142] [8.600000000000001 240.8 0.08 12 930] [8.600000000000001 0.16 4.63 230 1080] [8.600000000000001 482.1 2.82 490 572] [8.600000000000001 135.1 28.67 820 1185]]]"

troublesomeInput = "[1300 [[56 4.56 0.12 11 10260 240] [44 5.2 0.44 44 16447 142] [0 240.8 0.08 12 930] [0 0.16 4.63 230 1080] [0 482.1 2.82 490 572] [0 135.1 28.67 820 1185]]]"

let Encoder = huffmanUrlCompressor.createEncoder(train);

let encodedParam = huffmanUrlCompressor.encodeConfig(troublesomeInput,Encoder)

let decodParam= huffmanUrlCompressor.decodeConfig(encodedParam,Encoder)

decodParam 结果为:

[1300 [[56 4.56 0.12 11 10260 240] [44 5.2 0.44 44 16447 142] [0 240.8 0.08 12 930] [0 0.16 4.63 230 1080] [0 482.1 2.82 490 572] [0 135.1 28.67 820 1185]]

如您所见,尾括号在此过程中丢失了。我在这里做错了什么还是错过了霍夫曼算法应该做的事情?或者我应该将此报告为图书馆的问题?

解决方法

就目前而言,这很可能表明我正在使用的库存在错误。我现在打开了一个 issue on the library's GitHub page。我会在获得更多信息后更新此答案,但暂时将其关闭。