Questions tagged «entropy»

7
PRNG可以用来魔术压缩东西吗?
这个想法是我小时候学习编程的想法,并且是第一次接触PRNG。我仍然不知道它有多现实,但是现在有了堆栈交换。 这是14岁的人使用的一种出色的压缩算法方案: 取一个PRNG并用种子s进行种子处理,以获得长序列的伪随机字节。要将序列发送给另一方,您只需要传达PRNG的说明,适当的种子和消息的长度。对于足够长的序列,该描述将比序列本身短得多。 现在,假设我可以反转该过程。如果有足够的时间和计算资源,我可以进行蛮力搜索,找到可以产生所需序列的种子(和PRNG,或者换句话说:一个程序)(比方说,一张有趣的猫调皮的照片)。 在生成足够多的比特之后,PRNG会重复,但是与“典型”周期相比,我的消息非常短,因此这似乎不是一个很大的问题。 Voila,一种有效的压缩数据方式(如果是rube-Goldbergian)。 因此,假设: 我希望压缩的序列是有限的,并且事先知道。 我的现金或时间并不短缺(只要两者都需要有限的金额) 我想知道: 该计划背后的推理是否存在根本缺陷? 分析这类思想实验的标准方法是什么? 摘要 通常,好的答案不仅可以弄清楚答案,而且可以弄清楚我真正要问的是什么。感谢大家的耐心配合和详细的答案。 这是我对答案的第n次尝试: PRNG /种子角度没有任何作用,只不过是生成所需序列作为输出的程序。 信鸽原理:长度大于k的消息比长度小于等于k的(消息生成)程序多。因此,某些序列根本不能成为比消息短的程序输出。 值得一提的是,程序(消息)的解释程序必须事先确定。它的设计确定了接收到长度为k的消息时可以生成的(小)消息子集。 至此,原始的PRNG想法已经死了,但是至少还有一个最后的问题需要解决: 问:我能幸运地发现我的长(但有限)消息恰好是长度小于k位的程序的输出吗? 严格来说,这不是偶然的问题,因为必须事先知道所有可能的消息(程序)的含义。要么是 <k位的一些信息的含义或它不是。 如果我随机选择一个随机消息,该消息>> k位(为什么?),无论如何我都将拥有使用少于k位发送消息的可能性,并且几乎可以肯定无法发送它完全使用不到k位。 OTOH,如果我从少于k位的程序输出中选择大于等于k位的特定消息(假设有这样的消息),那么实际上我是在利用已经传输到接收方(解释程序的设计),它被视为已传输消息的一部分。 最后: 问:熵 / kolmogorov复杂度业务到底是什么? 最终,两者都告诉我们与(简单的)信鸽原理告诉我们的一样,我们可以压缩的程度:也许一点也没有,也许有些,但是肯定不如我们想象的那么多(除非我们作弊)。

6
无损压缩算法会减少熵吗?
根据维基百科: 香农的熵衡量的是消息中包含的信息,而不是确定的(或可预测的)消息部分。后者的示例包括语言结构的冗余或与字母或单词对,三胞胎等的出现频率有关的统计属性。 因此,熵是对消息中包含的信息量的度量。熵编码器用于将此类消息无损压缩到表示该消息所需的最小位数(熵)。对我来说,这似乎是一个完美的熵编码器,它是尽可能无损压缩消息所需的全部。 然而,许多压缩算法在熵编码之前使用步骤以减少消息的熵。 根据德国维基百科 Entropiekodierer werdenhäufigmit anderen Kodierern kombiniert。大律师,大律师,大律师和大律师。 用英语: 熵编码器经常与其他编码器结合使用。前面的步骤用于减少数据的熵。 即bzip2在应用熵编码(在这种情况下为霍夫曼编码)之前先使用Burrows-Wheeler-Transform,然后再进行Move-To-Front-Transform。 这些步骤是否真的减少了消息的熵,这意味着减少了消息中包含的信息量?这在我看来是矛盾的,因为那将意味着在压缩过程中信息丢失,从而阻止了无损解压缩。还是仅转换消息以提高熵编码算法的效率?还是熵不直接对应于消息中的信息量?

2
用少于N个随机位来模拟2 ^ N中的1的概率
说我需要模拟以下离散分布: P(X=k)={12N,1−12N,if k=1if k=0P(X=k)={12N,if k=11−12N,if k=0 P(X = k) = \begin{cases} \frac{1}{2^N}, & \text{if $k = 1$} \\ 1 - \frac{1}{2^N}, & \text{if $k = 0$} \end{cases} 最明显的方法是绘制NNN随机位,并检查它们是否均等于000(或111)。但是,信息论说 S=−∑iPilogPi=−12Nlog12N−(1−12N)log(1−12N)=12Nlog2N+(1−12N)log2N2N−1→0S=−∑iPilog⁡Pi=−12Nlog⁡12N−(1−12N)log⁡(1−12N)=12Nlog⁡2N+(1−12N)log⁡2N2N−1→0 \begin{align} S & = - \sum_{i} P_i \log{P_i} \\ & = - \frac{1}{2^N} \log{\frac{1}{2^N}} - \left(1 - \frac{1}{2^N}\right) \log{\left(1 - \frac{1}{2^N}\right)} …

7
停止问题和热力学熵之间有联系吗?
艾伦·图灵(Alan Turing)提出了一种用于计算机(图灵机,TM)的模型,该模型可以进行计算(数字,函数等),并证明了Halting定理。 TM是机器(或引擎)的抽象概念。停止定理是不可能的结果。卡诺发动机(CE)是热机的抽象概念,卡诺证明了卡诺定理,这是与热力学熵有关的另一种不可能的结果。 假设TM在物理上是可以实现的(至少与CE一样多,或者可能不是?),是否存在TM或CE的映射或表示或“同构”,可以统一这些结果,并且还可以与熵联系起来? 当然,在算法信息论(例如Chaitin,Kolmogorov等)和熵(在这种情况下)方面,有TM和Halting定理的表述。这个问题要求一个更物理的熵概念(如果在潜在答案的过程中出现了算法熵,那很好,但是这并不是问题的确切含义)。 人们还可以检查Phys.se中的另一个问题,该问题将量子不确定性与热力学第二定律联系起来。另请参阅:熵的代数表征,熵的算法表征,熵的各种公式之间的回顾和联系

11
冯·诺依曼在罪孽中的随机性不再适用吗?
一些小伙子说: 任何试图通过确定性方法生成随机数的人当然都处于犯罪状态。 这总是意味着您不能仅凭计算机生成真正的随机数。他说,当计算机的大小与单个Intel 8080微处理器(约6000个阀)的大小相同时。计算机变得越来越复杂,我相信冯·冯·诺依曼的说法可能不再正确。考虑到仅软件实现的算法是不可能的。它们在物理硬件上运行。真正的随机数生成器及其熵源也由硬件组成。 这个Java片段陷入了循环: file.writeByte((byte) (System.nanoTime() & 0xff)); 可以创建一个我以图像表示的数据文件: 您可以看到结构,但也有很多随机性。有趣的是,此PNG文件的大小为232KB,但包含250,000灰度像素。PNG压缩级别最高。那只是7%的压缩率。相当不可压缩。有趣的是该文件是唯一的。此文件的每一代都是略有不同的模式,并且具有相似的〜7%压缩率。 我强调这一点,因为这对我的论点至关重要。熵约为7位/字节。当然,使用更强大的压缩算法将减少这种情况。但不要减少到0位/字节附近。通过拍摄上面的图像并将其颜色映射表替换为随机的图像,可以产生更好的印象: 大多数结构(在上半部分)消失了,因为它只是具有相似但略有不同值的序列。这是仅通过在多任务操作系统上执行Java程序而创建的真正的熵源吗?不是统一分布的随机数生成器,而是一个的熵源?由在物理硬件上运行的软件构建的熵源,恰好是PC。 补充性 为了确认每个图像都产生新的熵,而没有所有人共有的固定模式,生成了10个连续图像。然后将它们连接起来,并使用我可以编译的最强大的存档器(paq8px)进行压缩。此过程将消除所有通用数据,包括自动关联,仅保留更改/熵。 串联文件被压缩到〜66%,这导致〜5.3位/字节或10.5Mbits /图像的熵率。令人惊讶的熵⌣⌣ \smile 补充2 有负面评论认为我的压缩测试方法的熵是有缺陷的,仅给出了一个松散的上限估计。因此,现在我通过NIST的官方加密熵评估测试SP800-90B_EntropyAssessment运行了级联文件。这与非IID熵测量一样好。这是报告(很抱歉,这个问题越来越长,但是问题很复杂):- Running non-IID tests... Entropic statistic estimates: Most Common Value Estimate = 7.88411 Collision Test Estimate = 6.44961 Markov Test Estimate = 5.61735 Compression Test Estimate = 6.65691 t-Tuple Test Estimate …

2
操作系统如何为随机种子创建熵?
在Linux上,文件/dev/random和/dev/urandom文件分别是伪随机字节的阻塞和非阻塞源。 它们可以作为普通文件读取: $ hexdump /dev/random 0000000 28eb d9e7 44bb 1ac9 d06f b943 f904 8ffa 0000010 5652 1f08 ccb8 9ee2 d85c 7c6b ddb2 bcbe 0000020 f841 bd90 9e7c 5be2 eecc e395 5971 ab7f 0000030 864f d402 74dd 1aa8 925d 8a80 de75 a0e3 0000040 cb64 4422 02f7 0c50 6174 f725 0653 2444 …

2
更难的是:对已排序的牌组进行混洗还是对经过改组的牌组进行分类?
您有不同元素组成的数组。您可以访问比较器(一个黑盒函数接受两个元素a和b并返回true iff a &lt; b)和一个真正随机的位源(一个黑盒函数不接受任何参数并返回一个独立的均匀随机位)。请考虑以下两个任务:nnnaaabbba&lt;ba&lt;ba < b 该数组当前已排序。产生均匀(或近似均匀)的随机选择排列。 该数组由自然而然随机选择的一些排列组成。产生一个排序的数组。 我的问题是 哪个任务需要渐近的能量? 我无法更精确地定义问题,因为我对信息论,热力学或其他任何需要回答此问题的知识都不了解。但是,我认为这个问题可以定义得很清楚(希望有人在回答这个问题时能帮助我!)。 现在,按照算法,我的直觉是它们相等。请注意,每种排序都是相反的顺序,反之亦然。排序需要比较,而洗牌,因为它从选取的随机排列ñ !选择,需要登录n !≈ ñ 日志ñ随机位。改组和排序都需要大约n次交换。logn!≈nlognlog⁡n!≈nlog⁡n\log n! \approx n \log nn!n!n!logn!≈nlognlog⁡n!≈nlog⁡n\log n! \approx n \log nnnn 但是,我觉得应该采用兰道尔原理来回答,该原理说需要一点能量来“擦除”。直觉上,我认为这意味着对数组进行排序更加困难,因为它需要“擦除” 位信息,从低能量,高熵的无序基态到高度有序的状态。但另一方面,对于任何给定的计算,排序只是将一个排列转换为另一个排列。由于我是一个完全的非专家,所以我希望了解物理学的人可以帮助“解决”这个问题!nlognnlog⁡nn \log n (该问题在math.se上没有得到任何答案,因此我将其重新张贴在这里。希望可以。)

3
香农熵为0.922,三个不同的值
给定一串值AAAAAAAABCAAAAAAAABCAAAAAAAABC,对数基数222的Shannon熵 为0.9220.9220.922。据我了解,在基数 222,向上舍入的Shannon熵是二进制中代表单个值之一的最小位数。 摘自此维基百科页面上的介绍: https://en.wikipedia.org/wiki/Entropy_%28information_theory%29 那么,如何用一位来表示三个值呢?AAA 可以是 111,BBB 可以是 000 ; 但是你怎么代表 CCC? 先感谢您。

1
推断优化类型
在工作中,我的任务是推断一些有关动态语言的类型信息。我将语句序列重写为嵌套let表达式,如下所示: return x; Z =&gt; x var x; Z =&gt; let x = undefined in Z x = y; Z =&gt; let x = y in Z if x then T else F; Z =&gt; if x then { T; Z } else { F; Z } 由于我从一般类型信息开始,并试图推断出更具体的类型,因此自然的选择是精简类型。例如,条件运算符返回其真假分支类型的并集。在简单的情况下,它效果很好。 但是,在尝试推断以下类型时遇到了障碍: function …
11 programming-languages  logic  type-theory  type-inference  machine-learning  data-mining  clustering  order-theory  reference-request  information-theory  entropy  algorithms  algorithm-analysis  space-complexity  lower-bounds  formal-languages  computability  formal-grammars  context-free  parsing  complexity-theory  time-complexity  terminology  turing-machines  nondeterminism  programming-languages  semantics  operational-semantics  complexity-theory  time-complexity  complexity-theory  reference-request  turing-machines  machine-models  simulation  graphs  probability-theory  data-structures  terminology  distributed-systems  hash-tables  history  terminology  programming-languages  meta-programming  terminology  formal-grammars  compilers  algorithms  search-algorithms  formal-languages  regular-languages  complexity-theory  satisfiability  sat-solvers  factoring  algorithms  randomized-algorithms  streaming-algorithm  in-place  algorithms  numerical-analysis  regular-languages  automata  finite-automata  regular-expressions  algorithms  data-structures  efficiency  coding-theory  algorithms  graph-theory  reference-request  education  books  formal-languages  context-free  proof-techniques  algorithms  graph-theory  greedy-algorithms  matroids  complexity-theory  graph-theory  np-complete  intuition  complexity-theory  np-complete  traveling-salesman  algorithms  graphs  probabilistic-algorithms  weighted-graphs  data-structures  time-complexity  priority-queues  computability  turing-machines  automata  pushdown-automata  algorithms  graphs  binary-trees  algorithms  algorithm-analysis  spanning-trees  terminology  asymptotics  landau-notation  algorithms  graph-theory  network-flow  terminology  computability  undecidability  rice-theorem  algorithms  data-structures  computational-geometry 

2
有霍夫曼编码到算术编码的推广吗?
在试图理解霍夫曼编码,算术编码和范围编码之间的关系时,我开始想到霍夫曼编码的缺点与分数位打包问题有关。 也就是说,假设一个符号有240个可能的值,并且需要将其编码为位,即使您不需要“全” 8,因为每个符号8个位都可以表示256个可能的值,因此每个符号将被卡住8位每个符号。解决这个问题的方法就是我所说的“小数位压缩”,在这种情况下,您可以使用乘法以2的非幂次幂进行“移位”。就像2的幂的乘积是移位的x * 2 == x &lt;&lt; 1,x * 4 == x &lt;&lt; 2等等对于2的所有幂一样,所以您也可以通过乘以非2的幂来“移位”,然后打包成小数位大小的符号。 问题与霍夫曼编码类似:您最终得到的代码长度必须是非小数位大小的,因此这种打包效率很低。但是,您不能只使用fracitonal-bit-packing解决方案,因为该解决方案假定使用固定大小的符号。 问题是,是否有任何论文或解决方案可对霍夫曼编码进行改进,其思想与小数位打包相似,可实现类似于算术编码的功能?(或任何相反的结果)。

1
矩阵熵的约束优化问题
我在(Shannon)矩阵熵一个约束优化问题。矩阵可以写成形式为的秩1矩阵之和其中是给定的归一化向量。排名第一的矩阵的系数是我们进行优化的未知数,它们必须大于零且总和为1。 A [ v i(小号û 米(e n t r (e i g (A ))))(sum(entr(eig(A))))\mathtt{(sum(entr(eig(A))))}一个AAv 我[ v一世vŤ一世][viviT][v_i\,v_i^T]v一世viv_i 用类似CVX的语法,问题如下:给定变量C(n )c(n)\mathtt{c(n)} 最小化小号ü 米(e n t r (e i g (A )))minimizesum(entr(eig(A)))\text{minimize} \qquad \mathtt{sum(entr(eig(A)))} 服从一个Σ ç一世C一世= ∑ c一世v一世vŤ一世= 1≥ 0subject toA=∑civiviT∑ci=1ci≥0\begin{align} \text{subject to} \qquad A &= \sum c_i v_i v_i^T\\ \sum c_i &= 1\\ …

1
如何实际测量文件的熵?
我现在正在尝试测量文件中包含的许多非冗余(实际)信息。有人称这为熵的量。 当然有标准的p(x)log {p(x)},但我认为Shannon只是从通过信道传输的角度考虑它。因此,公式需要一个块大小(以位为单位,通常为8)。对于大文件,这种计算是相当无用的,忽略了符号之间的短距离到长距离的相关性。 有二叉树方法和Ziv-Lempel方法,但这些方法在本质上似乎具有很高的学术性。 可压缩性也被认为是熵的量度,但是对于压缩程度似乎没有下限。对于我的文件hiss.wav, 原始的hiss.wav = 5.2 MB 通过香农公式的熵= 4.6 MB hiss.zip = 4.6 MB hiss.7z = 4.2 MB hiss.wav.fp8 = 3.3 MB 是否有某种合理可行的方法来测量hiss.wav中存在多少熵?
9 entropy 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.