代码之家  ›  专栏  ›  技术社区  ›  fluffels

计算机科学对熵的定义是什么?

  •  59
  • fluffels  · 技术社区  · 17 年前

    16 回复  |  直到 17 年前
        1
  •  62
  •   Niyaz    17 年前

    熵可以有不同的含义:

    Computing

    在计算中,熵是最重要的 由操作系统收集的随机性 在中使用的系统或应用程序 密码学或其他用途 需要随机数据。这种随机性 通常从硬件中收集 来源,无论是先前存在的来源,如 如鼠标移动或特别

    Information theory

    在信息论中,熵是一个概念 相关不确定度的测量 在这种情况下,它本身通常指 到香农熵,它 量化,在某种意义上 包含在消息中,通常在 单位,如位。同样地 香农熵是一种度量 平均信息含量为1 当一个人不知道该怎么做的时候,他就失去了 随机变量的值

    数据压缩中的熵

    数据压缩中的熵可能表示输入到压缩算法的数据的随机性。熵越大,压缩比越小。这意味着文本的随机性越强,压缩的效果就越差。

    香农熵代表一个 最大可能的绝对极限 沟通:将信息视为 编码为一个独立的 和同分布随机 定理表明,在极限条件下 最短路径的平均长度 给定字母表中的消息是它们的 熵除以 目标中的符号数

        2
  •  20
  •   nathanjosiah    14 年前

    我最喜欢的定义是在这本优秀的书的第一章中,有一个更实际的重点 The Pragmatic Programmer: From Journeyman to Master 安德鲁·亨特和大卫·托马斯:

    软件熵

    对我们打击很大。熵是一个来自 物理学指的是 热力学定律 接近最大值。当混乱 软件、编程人员的增加

    有许多因素可以影响 对软件腐败的贡献最大 心理学,或文化,在某一领域起作用 项目即使你是一个团队 非常微妙的事情。尽管 最好的计划和最好的人,一个 项目仍然会经历毁灭和失败 还有其他项目 艰难困苦 挫折,成功地战胜自然 倾向于混乱并设法解决问题

    ...

    破窗户。

    一扇坏了的窗户,没有修理 任何相当长的时间, 灌输给该地区的居民 建立一种被遗弃的感觉a 感觉到被赋予的权力并不存在 关心大楼。又是这样 结构破坏开始了。在一个 相对较短的时间间隔 所有者修复它的愿望,以及 被遗弃的感觉变成了现实。

    纽约警察局 纽约和其他主要城市将被攻破 别碰大东西。它的工作原理是: 站在破碎的窗户上, 降低了严重犯罪率。

    提示4

    不要和破窗户住在一起

    不要留下“破碎的窗户”(坏的 设计、错误的决策或糟糕的决策 代码)未修复。尽快解决每一个问题 没有足够的时间来修复它, 那就把它挂起来。也许你可以 注释掉有问题的代码,或者 或者替换虚拟数据。拿 防止进一步损坏的一些措施 情况

    案文摘自: http://pragprog.com/the-pragmatic-programmer/extracts/software-entropy

        3
  •  11
  •   Adrian Grigore    17 年前

    我总是遇到香农熵意义上的熵。

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

    在信息论中,熵是对随机变量的不确定性的度量。在这种情况下,术语本身通常指香农熵,它在预期值的意义上量化消息中包含的信息,通常以位等单位表示。等价地,香农熵是一个平均信息含量的度量,当一个人不知道随机变量的值时,他丢失了这个平均信息含量。

        4
  •  9
  •   Glorfindel Doug L.    7 年前

    alt text
    (来源: mit.edu

    University of Mexico

    信息论的概念 熵是对熵的一种推广 随机数的随机性 随机产生的信息量 变量或随机过程 邮件可以发送的数量 压缩的。最后是 这需要被问及一个随机事件

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

    该值的概率乘以 该问题的日志(即。 由第一原理推导而来 信息的属性。

        5
  •  6
  •   Zahra    6 年前

    这里有一个很好的替代解释 在信息论中。

    熵是一种能量的度量 决策过程中的不确定性 预言 .

    我们也可以把熵描述为 惊讶

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

    假设我们有一个名为 Surprise(x) .

    更新:

    我做了这个可视化来描述熵和动物图像分类器模型(机器学习)中预测类的置信度之间的关系。这是 用作 量度分类器模型在其预测中的可信度 .

    entropy as a confidence measure

        6
  •  5
  •   joel.neely    17 年前

    根据压缩和信息理论,信源的熵是信源中的符号可以传递的平均信息量(以位为单位)。非正式地说,一个符号越不可能出现,它的出现带来的惊喜就越多。

    如果你的来源有两个符号,比如 A B ,并且它们的可能性相同,则每个符号传递相同数量的信息(一位)。具有四个相同可能符号的源每个符号传输两位。

    举个更有趣的例子,如果源代码有三个符号, A. , B 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(独占)之间的日志是负数。

        7
  •  3
  •   Axel K    12 年前

    熵一词可以用一句话来定义:

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

    想象一个宇宙膨胀的例子:从一开始,所有物质都聚集在大爆炸之前的一个小点上,因此我们可以用“所有物质都在一个点内”来描述这个系统。而今天,需要更多的信息来描述这个系统(即宇宙),你需要描述所有行星的位置,它们的运动,它们上面有什么等等。。 “hello”=5个字符熵=40位熵(如果charsize为8位)。

    从这一点也可以看出,你拥有的信息越多,你就可以用更多的方式来安排这些信息。如果您有40位,则有2^40种不同的排列方式。如果我们在这里谈论的是密码,那么信息(位)的安排越可能,破解(暴力或字典攻击)所需的时间就越长。

        8
  •  2
  •   tripleee    10 年前

    简单地说,熵定义了随机性。这更像是不可预测的事情。更专业的说法是,在计算中,熵是操作系统或应用程序收集的随机性,用于密码学或其他需要随机数据的用途。这种随机性通常是从硬件资源中收集的,既可以是预先存在的资源,如鼠标移动,也可以是专门提供的随机性生成器。

    现在,我们可以很容易地得出熵对于一个文件的意义,即衡量一个文件中字节的无序程度。有各种各样的单位用来定义熵,如纳特、香农或哈特利。嗯,最常用的单位是香农。根据Shannons算法,文件熵必须输入的值范围为0到8。所以,当熵值为零时,可以说结果是确定的。相反,当熵值为8时,结果最不可预测。Shannon给出的测量事件结果随机性的公式为:

              Entropy = ∑ pi log(1/pi)
    

    哪里 事件是否具有概率性 圆周率 .

    这个等式的结果总是在0到8之间。

    https://www.talentcookie.com/2016/02/file-entropy-in-malware-analysis/

        9
  •  0
  •   Codingday    17 年前

    熵对于病毒研究人员来说也是一个哈希代码。熵越小,就意味着可能是加密或压缩的代码,可能是病毒。

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

        10
  •  0
  •   jwendl    17 年前

    熵在计算机科学中有许多典型的含义。这取决于上下文。在安全性中,熵意味着你放置了多少随机性,例如,当你生成私钥时,许多应用程序要求你移动鼠标来生成熵。这将通过随机性的“人类”元素生成熵,并将其添加到生成密钥的散列过程中。

    现在也有了熵的软件工程定义。此定义表示过时的代码,或是许多开发人员编写过的代码。通常用于参考何时接近重构软件项目。“这个项目的代码有着巨大的熵,因为维护它的很多人目前都不在这个项目中”。

    下面是我还记得的第三个用法示例。在模拟退火主题中(就计算机科学而言),熵被描述为算法评估过程中发生了多少衰减。

    不过,我想回答你的问题,除了你在字典里能找到的定义外,“熵”这个词没有一个具体的定义。计算机科学如何应用该术语取决于所用术语的上下文及其应用对象。

        11
  •  0
  •   Community Mohan Dere    9 年前

    熵很容易成为一件大事。在我看来,这是一个美丽的夜晚 simple and useful concept .

    基本上,它量化了平均而言,您将从一个事件中学到的内容,比如掷硬币、执行分支指令或为数组编制索引。

    像一个比较运算中间的一个搜索算法,有一定的概率p取一个分支,另一个取一个p。

    假设P是1/2,就像在二进制搜索中一样。然后,如果你使用那个分支,你会比以前知道多一点,因为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)
    

    因此,如果答案是肯定的,你可以学习10位,但这种可能性大约是千分之一。

    另一方面,不太可能。它是熵

    1023/1024 * log(1024/1023)
    

    或者大约1乘以大约零=大约零。

    把这两个因素加在一起,你平均会在这个决定上学到1/100左右。

    这就是线性搜索速度慢的原因。每次决策时的熵(您期望学习的信息量)太小,因为您必须学习10位才能在表中找到条目。

        12
  •  0
  •   Community Mohan Dere    9 年前

    计算机科学中的熵通常指一串位的随机性。 下面的问题是关于如何做到这一点:

    How do I compute the approximate entropy of a bit string?

        13
  •  0
  •   fahad pirzada    9 年前

    简单地说,如果你知道语言中符号的概率,你可以计算语言中符号的平均信息含量。

    语言的熵是语言中平均符号的信息含量的度量

    考虑一枚公平的硬币;

    所以熵计算为

        14
  •  0
  •   machajackson    9 年前

    熵是指偶尔根据客户需求对软件进行重塑的程度,因此重塑软件以满足客户需求的成本达到最大。

        15
  •  -1
  •   Fortyrunner    17 年前

    我听说人们误用了熵的热力学定义。

    在这个系统中,熵肯定在增加。