我最近在大学开始了一门关于数据压缩的课程。然而,我发现“熵”一词在计算机科学中的使用相当模糊。据我所知,它大致可以翻译为系统或结构的“随机性”。

计算机科学“熵”的正确定义是什么?

有帮助吗?

解决方案

熵可以有不同的含义:

计算

  

在计算中,熵是   由操作收集的随机性   系统或应用程序中使用   密码或其他用途   需要随机数据。这种随机性   通常由硬件收集   来源,无论是预先存在的那些,   如鼠标移动或专门   提供随机性发生器。

信息理论

  

在信息理论,熵是一个   不确定性的措施有关   用的随机变量。通过术语   本身在这方面通常是指   香农熵,这   量化,在一个企业的意义   期望值,信息   包含在一个消息,通常在   单元,诸如位。相当于,   香农熵的措施   平均信息内容之一是   失踪时,一个不知道   随机变量的值

<强>熵数据压缩

熵数据压缩可以表示您正在输入查询的压缩算法的数据的随机性。的熵越多,压缩比的较小者。这意味着更多的随机文本是,较小就可以压缩。

  

香农熵表示   在最好的绝对限制   任何无损压缩   通信:处理消息是   编码为独立的序列   和相同分布的随机   变量,香农的信源编码   定理表明,在极限中,   平均长度最短   可能的表示来编码   在给定的字母的消息是他们的   由熵的对数除以   符号的目标数   字母表。

其他提示

我喜欢的定义,具有一个更实用的焦点,在出色的书的第1章中找到程序员修炼:

:从熟练工由Andrew Hunt和大卫托马斯掌握
  

<强>软件熵

     

虽然软件开发是免疫   几乎所有的物理定律,熵   打我们努力。熵是一个术语   物理引用的量   系统中的“障碍”。不幸,   热力学担保的法律   宇宙中的熵趋于   朝最高。当障碍   增加软件,程序员   称之为 “软件腐烂。”

     

有许多因素可以   有助于软件腐烂。最多   重要的似乎是   心理学,或文化,在上一个工作   项目。即使你是一个团队的   一个,你的项目的心理可能   一个非常微妙的事情。尽管   最好的计划和优秀的人才,一   项目还可以体验废墟和   在其寿命期间衰变。然而,有   其他的项目,尽管   巨大的困难和不断   挫折,成功抗击自然   倾向,无序和管理,以   出来得很好。

     

...

     

...

     

:一种破碎窗口。

     

一个碎窗,左未修理为   任何时间的相当大的长度,   在灌输的居民   建立废弃-A的感   某种意义上说是这样的权力不   关心建设。因此,另一种   窗户被打破。人们开始   乱扔垃圾。出现涂鸦。严重   结构损坏开始。在一个   的时间,所述相对短的空间   建筑成为超越受损   业主的愿望来解决它,而   遗弃感成为现实。

     

在“破窗理论”具有   启发警察部门在新   纽约和其他大城市破解   下来,以小东东   保持了大的东西。有用:   保持在破碎的窗户之上,   涂鸦,和其他小的违规行为   降低了严重犯罪水平。

     

提示4

     

不要用破碎的Windows Live

     

不要把“破窗”(坏   设计,错误的决定,或差   代码)未修复。尽快解决每一个   因为它被发现。如果有   没有足够的时间来妥善解决这个问题,   然后登上它。也许你可以   注释掉这些代码,或   显示一个“未实现”消息,   或替代虚设代替数据。采取   一些行动,以防止进一步的损害   并表明你在顶部   情况。

http://pragprog.com/the-pragmatic-:

文字取自程序员/提取物/软件熵

alt text
(来源: 麻省理工学院)

墨西哥大学

熵的信息理论概念是物理概念的概括。有许多描述熵的方法。它是对随机变量的随机性的度量。它也是随机变量或随机过程包含的信息量的量度。它也是可以压缩消息金额的下限。最后,这是需要询问随机实体的是/否问题以确定其值。

概率计算示例应用程序中的熵方程:

这是该值timer the prob的日志的所有值的总和(即p(x)logp(x))。该方程可以从信息属性的第一原理中得出。

我总是在信息熵的意义上遇到的熵。

http://en.wikipedia.org/wiki/Information_entropy

在信息论,熵是用一个随机变量相关的不确定性的量度。通过本身在本上下文中,术语通常指的是香农熵,其量化,在一个预期值,包含在一个消息中的信息,通常是在单元的感诸如位。等价地,香农熵是平均信息内容,当一个不知道随机变量的值之一是缺少的量度。

在压缩和信息理论而言,源极的熵的平均信息量(位)从源符号可以传达。非正式地说,越不可能一个符号,越惊喜其外观带来的。

如果您的源具有两个符号,说AB,并且它们是等可能的,那么每个符号传送的信息(一个比特)相同的量。有四个等距可能的符号的源传送每符号两个比特。

有关一个更有趣的例子中,如果源有三个符号,AB,和C,其中前两个的两倍,可能作为第三,那么第三是更令人惊讶,但也不太可能。有1.52这个源的净熵,如下计算。

您计算熵作为“平均惊奇”,这里的“惊喜”的每个码元的概率的负二进制日志其概率次:

                            binary
symbol  weight  probability   log    surprise
  A        2        0.4      -1.32    0.53
  B        2        0.4      -1.32    0.53
  C        1        0.2      -2.32    0.46
total      5        1.0               1.52

二进制日志的负的使用,因为0和1(不包括)之间的值的日志是负(当然)。

下面是在信息理论的很大的另一种解释。

  

熵是涉及一种制造的不确定性的度量   预测

我们也可以描述熵如何的惊讶的,如果我们得到一个结果后,我们做了我们最初的预测,我们会。

假设我们有一个弯曲的硬币,让我们的时间,时间一尾1%的头99%。由于只有一个得到一个尾部的百分之一的机会,如果我们真的得到了尾巴,我们会感到非常惊讶。在另一方面,它也不会太令人惊讶,如果我们得到了一个头,因为我们已经有抢得的99%。

让我们假设我们有一个函数调用Surprise(x),会给我们惊喜的每个结果的数量;那么我们就可以在平均概率分布惊喜的量。惊喜的这个平均量也可以作为我们是多么不确定的措施。这种不确定性被称为的

超级简单定义

字熵可以在一个句子来定义:结果

“来描述一个系统所需的信息的量。”

试想一个例子,宇宙膨胀:从一开始,所有的物质收集在大爆炸之前小了点,所以我们可以描述的系统,“所有的物质都是一个点内的。”虽然需要今天显著更多的信息来描述系统(宇宙,那是),一个需要说明所有行星的位置,他们的运动,什么是对他们等。 在信息理论而言,定义也适用:E.g:您添加到密码的字母越(系统),来形容密码所需要的更多的信息。然后,你可以在不同的单位,例如位或字符,如衡量 “你好” = 5个字符熵熵= 40位(如果charsize是8个比特)。搜索结果 从这也来,你有更多的方法,你可以安排在该信息的详细信息,如果您有40位有2 ^ 40个不同的方式,他们可以安排。如果我们在这里所说的密码,然后信息的更可能的安排(位)这是要采取开裂(用蛮力或字典攻击)。时间越长

简而言之,熵定义了随机性。这更像是某件事是多么不可预测。用更专业的话说,“在计算中,熵是操作系统或应用程序收集的随机性,用于密码学或需要随机数据的其他用途。这种随机性通常是从硬件来源收集的,要么是鼠标移动等预先存在的,要么是专门提供随机性发生器。”如维基百科所定义。

现在,人们可以轻松地得出文件熵的含义,即文件中字节的无序程度的度量。有多种单位用于定义熵,例如 nat、shannon 或 hartley。最常用的单位是香农。根据香农算法,文件熵的值范围必须为 0 到 8。因此,当熵值为零时,可以说结果是确定的。相反,当熵值为 8 时,结果是最不可预测的。香农给出的衡量事件结果随机性的公式是:

          Entropy = ∑ pi log(1/pi)

在哪里 是有概率的事件 圆周率.

这个方程的结果总是在 0 到 8 之间。

欲了解更多信息,请访问链接: https://www.talentcookie.com/2016/02/file-entropy-in-malware-analysis/

熵是指其中一个软件被偶尔重塑基础上客户的要求,因此重塑它来满足客户的reqrments成本变得最大。程度

熵是像病毒研究人员的散列代码。减熵你,那就意味着它很可能是加密或压缩的代码可能是潜在有病毒。

一个标准二进制将具有比压缩或加密的一个更高的熵。

熵通常具有的计算机科学的许多含义。这取决于上下文。在安全熵意味着你有多少randomality地方,例如当您生成私钥许多应用程序要求你移动鼠标来产生熵。这通过取randomality的“人”的元件产生熵,并将其添加到生成密钥的散列过程。

现在也有熵的软件工程defnition。这个定义代表了过时的代码,或代码,已经有很多开发人员编写的。参照通常用于当它接近的时间重构你的软件项目。 “这个项目的代码有熵的enourmous量,因为许多谁保持它不在目前该项目的个人的。”

下面是我想起太第三示例使用情况。在模拟退火的(只要计算机科学而言)的话题,熵被描述为多少衰减算法的评估过程中已经发生了。

我猜,虽然回答你的问题,没有单词“熵”的,除了可以在字典中找到的那些具体的定义。如何计算机科学趋向于应用这一术语依赖于长期的使用将被应用到什么情况下和。

这很容易使大不了的熵。在我看来这是一个非常简单而有用的概念

基本上,它量化了,平均而言,你会从事件学习,如抛硬币,取转移指令,或索引的阵列。

像的搜索算法的中间的比较操作具有取一个分支,并采取其它1-P以一定的概率P上。

假设P是1/2,因为它是在一个二进制搜索。然后,如果你采取的分支,你知道的比你以前更多了1位,因为日志(2/1),基地2个,为1。另一方面,如果你把另一个分支你也应该学会1位。

要了解你将学到的平均信息量,乘你所学到的第一个分支时候你拿那个分支的概率,再加上你的第二支次学习什么该分支的概率。

1/2倍的1位,加1/2倍的1位,为1/2位加1/2比特,或者熵的总1个比特。这是你可以期望平均借鉴这一决定的。

在另一方面,假设在1024个条目表做线性搜索。

在所述第一测试==,YES的概率为1/1024,因此YES的在该决定的熵是

1/1024 times log(1024/1)

或1/1024 * 10 =约1/100位。

所以,如果答案是肯定的,你学会了10位,但该机会在千秋约1。

在另一方面,NO是更可能。它的熵是

1023/1024 * log(1024/1023)

或大致1次大致零=约零。

添加两者相加,平均,您将学习这一决定一点的约1/100。

这就是为什么线性搜索速度慢。在每个决策熵(多少,你可以指望学习)太小了,因为你将不得不学会10位来查找表中的条目。

熵在计算机科学中通常指的比特串如何随机是。 以下的问题是关于使该精确:

如何计算近似熵的位串的?

在简单的话,如果你知道符号的的langauge的概率,可以计算在语言符号的平均信息内容。

或者

一种语言的熵是平均符号中的语言信息内容

的量度

考虑一个公平的硬币;

有两个符号,每个概率1/2 因此熵计算为

H = - (1/2 * LOG1 / 2 + 1/2 * LOG1 / 2)= 1

我听到人们滥用熵的热力学定义w.r.t CS。

E.g。熵在这个系统肯定增加。

当他们的意思是这个代码是越来越糟糕!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top