计算熵/无序

时间:2011-12-13 09:52:30

标签: algorithm

给定一个大约几千个32位整数的有序序列,我想知道如何计算它们的无序或熵的度量。

我想要的是能够为两个这样的序列中的每一个计算单个熵值,并且能够比较它们的熵值以确定哪个更多(不)有序。

我在这里问,因为我认为我可能不是第一个遇到这个问题而且想知道以前的工作。

提前致谢。

更新#1

我刚刚发现this答案看起来很棒,但如果整数排序则会给出相同的熵。它只给出了列表中单个int的熵的度量,并忽略了它们的(dis)顺序。

3 个答案:

答案 0 :(得分:0)

熵计算一般: http://en.wikipedia.org/wiki/Entropy_%28information_theory%29

此外,您必须对整数进行排序,然后遍历排序的整数列表以找出整数的频率。之后,您可以使用公式。

答案 1 :(得分:0)

我想我必须在2D中编码shannon熵。将32位整数列表作为一系列8位字节排列并对其进行Shannons,然后覆盖它们的排序方式,一次取八个字节并形成一个新的字节列表,该字节由0位组成。 8,然后是8位中的1位... 8位7;那么接下来的8个原始字节......,......

我会看到它是怎么回事/代码......

答案 2 :(得分:0)

熵是概率函数,而不是数据(整数或文件数组)。熵是一种无序的衡量标准,但是当修改函数以将数据作为输入时,它就会失去这种意义。

唯一可以产生数据无序度的方法是使用Kolmogorov Complexity。虽然这也存在问题,但特别是它是不可计算的,并且尚未严格定义,因为必须任意选择基本语言。如果测量的无序是相对于将要处理数据的事物,则可以解决这种明确定义。因此,在考虑在特定计算机上进行压缩时,基本语言将是针对该计算机的程序集。

所以你可以按如下方式定义整数数组的无序:

在Assembly中编写的输出数组的最短程序的长度。