问题标签 [information-theory]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 选择要实现的压缩算法
我已经获得了一些课程来实现我选择的压缩算法。它可以是任何语言,但我最了解的语言是 Java,其次是 C。它将基于 -
解压后的输出必须和原始输入匹配,所以只能看lossless的算法。
运行时间必须与消息的长度成比例。
内存要求必须与消息的长度无关。
我们的实现将按如下方式进行测试 -
标准文本文件
字节值范围为 0-255 的二进制文件
一个约 10mb 的未指定内容的大文件。
我最初的想法是使用动态算术编码,但我想知道是否有更适合上述约束的算法?其次,用 C 语言而不是 Java 语言是更好的主意吗?我问这个是因为我认为 C 的内存占用会更小,但我不确定是否真的如此。
我花了一些时间在谷歌上搜索这个问题,一些网站提到 LZW 编码与动态霍夫曼编码相结合。这会是一个明智的追求途径吗?我们的讲师确实警告我们,多年来尝试动态霍夫曼编码的提交中有 90% 没有正确实施。
也就是说,我不害怕尝试一下,但在开始之前我会重视一些意见。
任何反馈将不胜感激。
hex - 如何快速压缩一个短的十六进制字符串并在c#中解压它
我有一些像这样的 16 个字符的十六进制字符串:
我想缩短它们并使缩短的字符串仅包含大写字母。
DeflateStream 和 GZipStream 只是增加了长度。
任何人都可以帮我将这 16 个字符的十六进制字符串缩短到 6 个字符或更少吗?
或者,可以将 32 个字符的十六进制字符串缩短为 12 个字符或更少。
matlab - 需要帮助在 Matlab 中实现基本的二进制对称通道
我正在研究托马斯的封面,“信息理论元素”,并想尝试实现一个二进制对称通道的简单示例。也就是说,我可以指定一个消息“1001”,一个编码“11000011”(基本上每个bit重复两次),一个通道定律:p(y|x),我想在接收端看到我的后验更新。
现在老实说,我什至不知道从哪里开始,而且我似乎在网上找不到太多帮助。我发现的大部分内容是使用 Matlab 的 simulink 来抽象出这个过程。我实际上想将分布指定为向量等。任何指针都会很棒!
编辑:我不知道这个问题是否更适合 DSP.SE 但如果是这样,我可以把它移过来。
networking - 双向通信渠道中的信息能否更快地发送?
假设情况:
主机 A 可以以每秒一位的速率向主机 B 发送信息。
主机 B 可以以每秒 1 TB 的速率向主机 A 发送信息。
您想从 A 向 B 发送 1 GB 的随机信息。
你会怎么做?
有没有办法利用 B -> A 来加速 A -> B?
java - Java:在代码中管理信息。没有数据库
我需要帮助我在学校得到的工作......我正在尝试制作一个或多个枚举,它将在内存中包含一个月中的天数、月份名称和数字的信息本月的。
另外,我的老师说所有信息都必须在我的代码中......没有数据库或其他类似的东西。-_-
经验:
另一个经验:
注意:我真的不想使用数组,因为它不符合人体工程学 X_X 但如果您认为它是最好的解决方案,我会选择它。
algorithm - 是否有一种算法可以寻找 3 个变量之间的数学联系?
是否有可能构造一个算法来寻找链接三个变量的最简约的公式(在这种情况下,什么是简约的问题似乎有点武断!)?
例如,给定:
这三个变量之间最简洁的联系是(希望这是最简洁的):
因为:
我的问题是:
- 有可能构建这样的算法吗?
- 你知道这种已经存在的算法吗?
- 如果是的话,在我的例子中,它是否适用于相对简单的关系(快速)?
更新:
这是一个创建 3 个变量的 R 代码a.l
,b.l
并c.l
作为示例。
python - 使用 numpy 计算成对互信息的最佳方法
对于mxn矩阵,计算所有列对( nxn )的互信息的最佳(最快)方法是什么?
通过互信息,我的意思是:
I(X, Y) = H(X) + H(Y) - H(X,Y)
其中H(X)是指 X 的香农熵。
目前我正在使用np.histogram2d
andnp.histogram
来计算联合(X,Y)和个人(X 或 Y)计数。对于给定的矩阵A
(例如 250000 X 1000 的浮点矩阵),我正在做一个嵌套for
循环,
当然必须有更好/更快的方法来做到这一点?
顺便说一句,我还在数组上的列(按列或按行操作)上寻找映射函数,但还没有找到一个好的通用答案。
这是我的完整实现,遵循Wiki 页面中的约定:
尽管我的带有嵌套for
循环的工作版本以合理的速度运行,但我想知道是否有更优化的方法应用于calc_MI
所有列A
(以计算它们的成对互信息)?
我也想知道:
是否有有效的方法来映射函数以对
np.arrays
(可能像np.vectorize
,它看起来更像一个装饰器)的列(或行)进行操作?对于这个特定的计算(互信息)是否还有其他优化的实现方式?
artificial-intelligence - 决策树是否试图最大化信息增益或熵?
我知道决策树试图将具有高熵的分类器放在决策树上。然而,信息增益是如何发挥作用的呢?
信息增益定义为:
决策树是否尝试将信息增益低的分类器放在树的顶部?那么熵总是最大化而信息增益总是最小化?
对不起,我只是有点困惑。谢谢!
compression - 是否有“完美”压缩算法?
让我澄清一下,我不是在谈论能够压缩任何给定源材料的算法意义上的完美压缩,我意识到这是不可能的。我想要得到的是一种算法,它能够将任何源比特串编码为其绝对最大压缩状态,由它的香农熵确定。
我相信我听说过一些关于霍夫曼编码在某种意义上是最优的,所以我相信这个加密方案可能基于此,但这是我的问题:
考虑位串:a =“101010101010”,b =“110100011010”。
使用普通的香农熵,当我们将位串视为简单的 0 和 1 的符号时,这些位串应该具有完全相同的熵,但是这种方法是有缺陷的,因为我们可以直观地看到位串 a 的熵小于位串 b,因为它只是重复 10 的模式。考虑到这一点,我们可以通过计算复合符号 00、10、01 和 11 的香农熵来更好地了解源的实际熵。
这只是我的理解,我可能完全偏离基础,但据我了解,对于一个真正随机的遍历源,对于一个长度为 n 的遍历源。所有 n 长度符号组的统计概率必须是等可能的。
我想比标题中的问题更具体,我有三个主要问题:
使用单个位作为符号的霍夫曼编码是否会像优化的那样压缩位串,即使我们在 2 位符号级别分析字符串时会出现明显的模式?如果没有,是否可以通过循环遍历霍夫曼编码的不同“级别”(对不起,如果我在这里扼杀术语)来最佳地压缩源,直到找到最佳压缩率?在某些情况下,通过不同的“轮次”霍夫曼编码可以进一步提高压缩率吗?(首先对 5 位长的符号进行霍夫曼编码,然后对 4 位长的符号进行霍夫曼编码?huff_4bits(huff_5bits(bitstring))
)
information-theory - 如何测量信息内容或量化查询向量中的信息?
我有一个包含许多属性的查询。我想测量该查询中的信息量。然后测量如果我删除某个属性,该信息内容是如何减少或不受影响的。
信息论中是否有解决此问题的度量或度量?谢谢