我最近在我的大学开设了数据压缩课程 . 但是,我发现使用术语“熵”,因为它适用于计算机科学而不是模棱两可 . 据我所知,它大致转化为系统或结构的“随机性” .
计算机科学“熵”的正确定义是什么?
熵在计算机科学中有很多含义 . 这取决于具体情况 . 在安全性中,熵意味着您放置了多少的randomality,例如,当您生成私钥时,许多应用程序会要求您移动鼠标以生成熵 . 这通过采用randomality的“human”元素生成熵并将其添加到生成密钥的散列过程中 .
现在还有一个熵软件工程的定义 . 这个定义代表了过时的代码,或许多开发人员编写它的代码 . 通常用于参考何时接近重构您的软件项目 . “这个项目的代码具有大量的熵,因为许多维护它的人目前不在项目中” .
这是我记得的第三个示例用法 . 在模拟退火的主题中(就计算机科学而言),熵被描述为在算法评估期间发生了多少衰减 .
我想回答你的问题,除了你可以在字典中找到的那些之外,没有“熵”这个词的具体定义 . 计算机科学如何倾向于应用该术语取决于所使用术语的背景及其应用的内容 .
简单来说,熵定义随机性 . 这更像是一些不可预测的东西 . 用更多的技术词汇来说,“在计算中,熵是由操作系统或应用程序收集的随机性,用于密码学或其他需要随机数据的用途 . 这种随机性通常是从硬件源收集的,可以是预先存在的,如鼠标移动或专门提供的随机生成器 . “由维基百科定义 .
现在可以很容易地得出关于文件的熵的含义,作为文件中字节的无序程度的度量 . 有各种单位用于定义像nat,shannon或hartley这样的熵 . 嗯,最常用的单位是香农 . 根据Shannon算法,文件熵必须进入的值范围是0到8.因此,当熵值为零时,可以说结果是确定的 . 相反,当熵值为8时,结果可能是最不可预测的 . Shannon给出的用于测量事件结果随机性的公式是:
Entropy = ∑ pi log(1/pi)
我是具有概率pi的事件 .
该等式总是在0到8之间 .
有关更多信息,请浏览以下链接:https://www.talentcookie.com/2016/02/file-entropy-in-malware-analysis/
熵就像病毒研究人员的哈希码一样 . 你得到的熵越少,就意味着它可能是加密或压缩的代码,可能是病毒 .
标准二进制文件具有比压缩或加密的熵更高的熵 .
简单来说,如果您知道语言中符号的概率,就可以计算语言中符号的平均信息内容 .
要么
语言的熵是语言中平均符号的信息内容的度量
考虑一个公平的硬币;
有两个符号,每个符号的概率为1/2,因此熵计算为
h = - (1/2 * log1 / 2 1/2 * log1 / 2)= 1
计算机科学中的熵通常指的是一串比特的随机性 . 以下问题是关于如何精确:
How do I compute the approximate entropy of a bit string?
我最喜欢的定义,更具实用性,可以在Andrew Hunt和David Thomas出版的优秀书籍The Pragmatic Programmer: From Journeyman to Master的第1章中找到:
软件熵虽然软件开发几乎不受所有物理定律的影响,但熵会让我们难以接受 . 熵是物理学中的一个术语,指的是系统中“无序”的数量 . 不幸的是,热力学定律保证了宇宙中的熵趋于最大化 . 当软件无序增加时,程序员称之为“软件腐烂” . 有许多因素可能导致软件腐烂 . 最重要的一个似乎是项目工作中的心理学或文化 . 即使你是一个团队,你的项目的心理也可能是一个非常微妙的事情 . 尽管有最好的计划和最优秀的人,但一个项目在其生命周期中仍然会经历毁灭和腐烂 . 然而,还有其他一些项目,尽管面临巨大的困难和不断的挫折,但却成功地打击了大自然的无序倾向,并且设法出色 . ......一扇破窗户 . 一个破碎的窗户,在任何相当长的时间内都没有修复,给建筑物的居民灌输了一种遗弃感 - 这种感觉是不关心的建造 . 所以另一个窗口被打破了 . 人们开始乱扔垃圾 . 涂鸦出现了 . 严重的结构损坏开始 . 在相对较短的时间内,建筑物的损坏超出了主人修复它的愿望,并且放弃感变为现实 . “破窗理论”启发了纽约和其他主要城市的警察部门,以打击小东西,以阻止大事 . 它起作用:保持在破碎的窗户,涂鸦和其他小的违规行为之上,降低了严重的犯罪水平 . 提示4不要与破碎的Windows一起生活不要让“破窗”(糟糕的设计,错误的决定或糟糕的代码)未经修复 . 一发现就修复每一个 . 如果没有足够的时间来正确修理它,请将其登上 . 也许您可以注释掉有问题的代码,或者显示“未实现”消息,或者替换虚拟数据 . 采取一些行动,以防止进一步的损害,并表明你是最重要的 .
文字取自:http://pragprog.com/the-pragmatic-programmer/extracts/software-entropy
熵可能意味着不同的东西:
Computing
在计算中,熵是操作系统或应用程序收集的随机性,用于密码学或需要随机数据的其他用途 . 这种随机性通常是从硬件源收集的,既可以是现有的,也可以是鼠标移动或专门提供的随机生成器 .
Information theory
在信息论中,熵是衡量随机变量相关的不确定性的指标 . 在这种情况下,该术语本身通常是指香农熵,它在期望值的意义上量化消息中包含的信息,通常以比特为单位 . 等效地,香农熵是当人们不知道随机变量的值时丢失的平均信息内容的度量 .
Entropy in data compression
数据压缩中的熵可以表示您输入到压缩算法的数据的随机性 . 熵越多,压缩比越小 . 这意味着文本越随机,您压缩它的次数越少 .
Shannon的熵表示对任何通信的最佳可能无损压缩的绝对限制:将消息编码为一系列独立且相同分布的随机变量,Shannon的源编码定理表明,在极限中,平均长度为用于编码给定字母表中的消息的最短可能表示是它们的熵除以目标字母表中符号数的对数 .
http://en.wikipedia.org/wiki/Entropy_(information_theory)
我听说人们滥用熵的热力学定义w.r.t CS .
例如 . 熵在这个系统中肯定会增加 .
当他们的意思是这个代码变得越来越糟糕!
在压缩和信息理论方面,源的熵是来自源的符号可以传达的平均信息量(以位为单位) . 非正式地说,符号越不可能,它的外观就越令人惊讶 .
如果您的源有两个符号,例如 A 和 B ,并且它们具有相同的可能性,则每个符号传达相同数量的信息(一位) . 具有四个同等可能符号的源每个符号传送两个比特 .
A
B
有一个更有趣的例子,如果你的源有三个符号, A , B 和 C ,前两个符号的可能性是第三个的两倍,那么第三个更令人惊讶,但也不太可能 . 这个来源的净熵为1.52,如下所示 .
C
您将熵计算为“平均意外”,其中每个符号的“惊喜”是概率乘以概率的负二进制对数:
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之间的值的日志(不包括)是负数 .
这是信息论中熵的一个很好的替代解释 .
熵是衡量预测所涉及的不确定性的指标 .
我们还可以将熵描述为在我们进行初始预测后获得结果时我们会感到多么惊讶 .
让我们说我们有一个弯曲的硬币,99%的时间给我们一个头,1%的时间给我们一个尾巴 . 由于只有百分之一的机会获得尾巴,如果我们真的得到尾巴,我们会非常惊讶 . 另一方面,如果我们有一个头,因为我们已经有99%的机会获得一个头,这也不会太令人惊讶 .
假设我们有一个名为 Surprise(x) 的函数,它会给我们每个结果带来惊喜的数量;然后我们可以平均概率分布的意外数量 . 这种平均惊喜数量也可以用来衡量我们的不确定性 . 这种不确定性称为 entropy .
Surprise(x)
alt text http://ocw.mit.edu/NR/rdonlyres/Electrical-Engineering-and-Computer-Science/6-050JSpring-2008/9CD33A23-A58F-4CCD-8C34-DF5A83D56435/0/chp_telegraph_1.jpg
来自University of Mexico
熵的信息理论概念是物理概念的概括 . 描述熵的方法有很多种 . 它是随机随机性的度量变量 . 它也是随机变量或随机过程包含的信息量的度量 . 它也是可以压缩消息量的下限 . 最后,需要询问有关随机实体确定其 Value 的是/否问题的平均数 .
用于概率计算的示例应用中的熵方程:
它是该值乘以该概率的对数的概率的rv的所有值的总和(即p(x)logp(x)) . 该等式可以从信息属性的第一原理导出 .
我总是遇到香农熵意义上的熵 .
来自http://en.wikipedia.org/wiki/Information_entropy:
在信息论中,熵是与随机变量相关的不确定性的度量 . 在这种情况下,该术语本身通常是指香农熵,它在期望值的意义上量化消息中包含的信息,通常以比特为单位 . 等效地,香农熵是当不知道随机变量的值时丢失的平均信息内容的度量 .
熵很容易做出很大的贡献 . 在我看来,它是一个漂亮的simple and useful concept .
基本上,它量化了平均而言,您将从事件中学到什么,例如掷硬币,接受分支指令或索引数组 .
就像在搜索算法中间的比较操作具有一定概率P取一个分支,而1-P取另一个分支 .
假设P是1/2,就像二进制搜索一样 . 然后,如果你采取那个分支,你知道比以前多1位,因为log(2/1),base 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位,但这种可能性大约是千分之一 .
另一方面,NO更可能发生 . 它的熵是
1023/1024 * log(1024/1023)
或大约1倍大致零=大约零 .
将两者加在一起,平均而言,您将了解该决定的1/100 .
这就是线性搜索速度慢的原因 . 每个决策的熵(你可以期望学到多少)太小,因为你将不得不学习10位来查找表中的条目 .
熵一词可以用一句话来定义:
想象一下宇宙膨胀的一个例子:从一开始,所有物质都是在大爆炸之前的一个小点收集的,所以我们可以用"all matter is within one point."描述系统 . 而今天需要更多的信息来描述系统(宇宙) ,那就是),人们需要描述所有的行星位置,它们的运动,它们上面的内容等等 . 在信息理论方面,定义也有效:例如:你添加到密码(系统)的字母越多,描述密码需要更多信息 . 然后你可以用不同的单位测量它,比如比特或字符,比如"hello" = 5个字符熵= 40比特的熵(如果charsize是8比特) .
从这一点来看,您拥有的信息越多,您可以在更多方式安排信息 . 如果您有40位,则可以安排2 ^ 40种不同的方式 . 如果我们在这里谈论密码那么信息(比特)的可能性越多,它就越需要破解(用暴力或字典攻击) .
熵是指软件根据客户要求偶尔重新塑造的程度,因此重塑它以满足客户需求的成本变得最大 .
16 回答
熵在计算机科学中有很多含义 . 这取决于具体情况 . 在安全性中,熵意味着您放置了多少的randomality,例如,当您生成私钥时,许多应用程序会要求您移动鼠标以生成熵 . 这通过采用randomality的“human”元素生成熵并将其添加到生成密钥的散列过程中 .
现在还有一个熵软件工程的定义 . 这个定义代表了过时的代码,或许多开发人员编写它的代码 . 通常用于参考何时接近重构您的软件项目 . “这个项目的代码具有大量的熵,因为许多维护它的人目前不在项目中” .
这是我记得的第三个示例用法 . 在模拟退火的主题中(就计算机科学而言),熵被描述为在算法评估期间发生了多少衰减 .
我想回答你的问题,除了你可以在字典中找到的那些之外,没有“熵”这个词的具体定义 . 计算机科学如何倾向于应用该术语取决于所使用术语的背景及其应用的内容 .
简单来说,熵定义随机性 . 这更像是一些不可预测的东西 . 用更多的技术词汇来说,“在计算中,熵是由操作系统或应用程序收集的随机性,用于密码学或其他需要随机数据的用途 . 这种随机性通常是从硬件源收集的,可以是预先存在的,如鼠标移动或专门提供的随机生成器 . “由维基百科定义 .
现在可以很容易地得出关于文件的熵的含义,作为文件中字节的无序程度的度量 . 有各种单位用于定义像nat,shannon或hartley这样的熵 . 嗯,最常用的单位是香农 . 根据Shannon算法,文件熵必须进入的值范围是0到8.因此,当熵值为零时,可以说结果是确定的 . 相反,当熵值为8时,结果可能是最不可预测的 . Shannon给出的用于测量事件结果随机性的公式是:
我是具有概率pi的事件 .
该等式总是在0到8之间 .
有关更多信息,请浏览以下链接:https://www.talentcookie.com/2016/02/file-entropy-in-malware-analysis/
熵就像病毒研究人员的哈希码一样 . 你得到的熵越少,就意味着它可能是加密或压缩的代码,可能是病毒 .
标准二进制文件具有比压缩或加密的熵更高的熵 .
简单来说,如果您知道语言中符号的概率,就可以计算语言中符号的平均信息内容 .
要么
语言的熵是语言中平均符号的信息内容的度量
考虑一个公平的硬币;
有两个符号,每个符号的概率为1/2,因此熵计算为
h = - (1/2 * log1 / 2 1/2 * log1 / 2)= 1
计算机科学中的熵通常指的是一串比特的随机性 . 以下问题是关于如何精确:
How do I compute the approximate entropy of a bit string?
我最喜欢的定义,更具实用性,可以在Andrew Hunt和David Thomas出版的优秀书籍The Pragmatic Programmer: From Journeyman to Master的第1章中找到:
文字取自:http://pragprog.com/the-pragmatic-programmer/extracts/software-entropy
熵可能意味着不同的东西:
Computing
Information theory
Entropy in data compression
数据压缩中的熵可以表示您输入到压缩算法的数据的随机性 . 熵越多,压缩比越小 . 这意味着文本越随机,您压缩它的次数越少 .
http://en.wikipedia.org/wiki/Entropy_(information_theory)
我听说人们滥用熵的热力学定义w.r.t CS .
例如 . 熵在这个系统中肯定会增加 .
当他们的意思是这个代码变得越来越糟糕!
在压缩和信息理论方面,源的熵是来自源的符号可以传达的平均信息量(以位为单位) . 非正式地说,符号越不可能,它的外观就越令人惊讶 .
如果您的源有两个符号,例如
A
和B
,并且它们具有相同的可能性,则每个符号传达相同数量的信息(一位) . 具有四个同等可能符号的源每个符号传送两个比特 .有一个更有趣的例子,如果你的源有三个符号,
A
,B
和C
,前两个符号的可能性是第三个的两倍,那么第三个更令人惊讶,但也不太可能 . 这个来源的净熵为1.52,如下所示 .您将熵计算为“平均意外”,其中每个符号的“惊喜”是概率乘以概率的负二进制对数:
使用二进制日志的否定(当然),因为0到1之间的值的日志(不包括)是负数 .
这是信息论中熵的一个很好的替代解释 .
我们还可以将熵描述为在我们进行初始预测后获得结果时我们会感到多么惊讶 .
让我们说我们有一个弯曲的硬币,99%的时间给我们一个头,1%的时间给我们一个尾巴 . 由于只有百分之一的机会获得尾巴,如果我们真的得到尾巴,我们会非常惊讶 . 另一方面,如果我们有一个头,因为我们已经有99%的机会获得一个头,这也不会太令人惊讶 .
假设我们有一个名为
Surprise(x)
的函数,它会给我们每个结果带来惊喜的数量;然后我们可以平均概率分布的意外数量 . 这种平均惊喜数量也可以用来衡量我们的不确定性 . 这种不确定性称为 entropy .alt text http://ocw.mit.edu/NR/rdonlyres/Electrical-Engineering-and-Computer-Science/6-050JSpring-2008/9CD33A23-A58F-4CCD-8C34-DF5A83D56435/0/chp_telegraph_1.jpg
来自University of Mexico
用于概率计算的示例应用中的熵方程:
我总是遇到香农熵意义上的熵 .
来自http://en.wikipedia.org/wiki/Information_entropy:
在信息论中,熵是与随机变量相关的不确定性的度量 . 在这种情况下,该术语本身通常是指香农熵,它在期望值的意义上量化消息中包含的信息,通常以比特为单位 . 等效地,香农熵是当不知道随机变量的值时丢失的平均信息内容的度量 .
熵很容易做出很大的贡献 . 在我看来,它是一个漂亮的simple and useful concept .
基本上,它量化了平均而言,您将从事件中学到什么,例如掷硬币,接受分支指令或索引数组 .
就像在搜索算法中间的比较操作具有一定概率P取一个分支,而1-P取另一个分支 .
假设P是1/2,就像二进制搜索一样 . 然后,如果你采取那个分支,你知道比以前多1位,因为log(2/1),base 2,是1.另一方面,如果你拿另一个分支,你也学习1位 .
要获得您将学习的平均信息量,将您在第一个分支上学到的内容乘以您获取该分支的概率乘以您在第二个分支上学到的内容乘以该分支的概率 .
1/2比特1比特加1/2比特1比特,是1/2比特加1/2比特,或总共1比特的熵 . 这是您可以期望从该决定平均学到的东西 .
另一方面,假设您在1024个条目的表中进行线性搜索 .
在第一次==测试中,YES的概率是1/1024,因此该决定的YES的熵是
或1/1024 * 10 =约1/100位 .
因此,如果答案是肯定的,那么你将学习10位,但这种可能性大约是千分之一 .
另一方面,NO更可能发生 . 它的熵是
或大约1倍大致零=大约零 .
将两者加在一起,平均而言,您将了解该决定的1/100 .
这就是线性搜索速度慢的原因 . 每个决策的熵(你可以期望学到多少)太小,因为你将不得不学习10位来查找表中的条目 .
Super SIMPLE定义
熵一词可以用一句话来定义:
“描述系统所需的信息量 . ”
想象一下宇宙膨胀的一个例子:从一开始,所有物质都是在大爆炸之前的一个小点收集的,所以我们可以用"all matter is within one point."描述系统 . 而今天需要更多的信息来描述系统(宇宙) ,那就是),人们需要描述所有的行星位置,它们的运动,它们上面的内容等等 . 在信息理论方面,定义也有效:例如:你添加到密码(系统)的字母越多,描述密码需要更多信息 . 然后你可以用不同的单位测量它,比如比特或字符,比如"hello" = 5个字符熵= 40比特的熵(如果charsize是8比特) .
从这一点来看,您拥有的信息越多,您可以在更多方式安排信息 . 如果您有40位,则可以安排2 ^ 40种不同的方式 . 如果我们在这里谈论密码那么信息(比特)的可能性越多,它就越需要破解(用暴力或字典攻击) .
熵是指软件根据客户要求偶尔重新塑造的程度,因此重塑它以满足客户需求的成本变得最大 .