【问题标题】:What makes a problem more fundamental than another?是什么让一个问题比另一个问题更根本?
【发布时间】:2010-12-12 22:09:48
【问题描述】:

对于什么使问题比另一个问题更根本,是否有任何正式的定义?否则,什么是可接受的非正式定义?

排序与字体渲染是比另一个更根本的问题示例。

【问题讨论】:

  • 字体渲染如何简化为排序?

标签: algorithm definition


【解决方案1】:

例如,当许多问题可以使用一种算法解决时。任何用于排序的最佳算法都是如此。顺便说一句,也许您正在混合问题和算法?一个问题可以简化为另一个问题有一个正式的定义。见http://en.wikipedia.org/wiki/Reduction_(complexity)

【讨论】:

  • 这里没有混淆问题和算法。在计算中有许多不是算法的基本问题,例如 P!=NP 和停机问题。
【解决方案2】:

最初的问题是一个有效的问题,不必像@slebetman 所建议的那样假设/考虑复杂性和可简化性。 (从而使问题更加基础:)

如果我们尝试一个正式的定义,我们可以这样定义:如果 P1 的解决方案会影响更广泛的其他问题集的结果,那么问题 P1 比问题 P2 更基本。这可能意味着 P1 将影响计算机科学不同领域的问题——甚至可能更远。

实际上,我会再次纠正@slebetman。我会说“如果一个问题使用或挑战一个假设,那么它比没有假设的同一个问题更不重要”,而不是“如果某事使用或挑战一个假设,那么它就没有那个假设那么重要”。强>。 IE。对象的排序比整数的排序更基础;或者,打印机上的字体渲染不如任何设备上的字体渲染基础。

【讨论】:

    【解决方案3】:

    如果我理解你的问题是正确的。

    当您可以通过应用多种算法来解决同一个问题时,在内存和 CPU 上都证明其轻量级的算法被认为是更基础的。我可以想到另一件事,一个基本算法不会使用其他算法,否则它会是一个复杂的算法。

    【讨论】:

    • 某事物的“轻量级”与基本原理无关,因为问题is the brute-force approach the only way to solve this and if so can the brute-force approach be speeded up? 是计算中最基本的问题之一(与停止问题有关)。问题的正式名称是:P != NP or P = NP.
    【解决方案4】:

    具有更多应用的问题或解决方案是更基本的

    (排序有很多应用,P!=NP 也有很多应用(或含义),渲染只有少数应用。)

    【讨论】:

      【解决方案5】:

      Inf 在暗示复杂性和可简化性时是正确的,而不仅仅是算法实现中涉及/包含的内容。这是你做出的假设。

      所有代码片段都是根据对其运行所在世界的假设编写的。这些假设比使用这些假设编写的代码更基本。简而言之,我想说:如果某事使用或挑战某个假设,那么它就没有该假设那么基本

      让我们举个例子:排序。排序的问题是,当以幼稚的方式完成时,排序所需的时间会增长得非常快。用技术术语来说,排序问题往往是 NP 完全的。因此,开发排序算法的目的是避免 NP 完全。但是 NP 完成总是很慢吗?这本身就是一个问题,这个问题被称为 P!=NP,到目前为止还没有被证明是真的还是假的。所以 P!=NP 比排序更基础。

      但即使是 P!=NP 也会做出一些假设。它假设 NP 完全问题总是可以运行到完成,即使它需要很长时间才能完成。换句话说,NP 完全问题的大 O 表示法永远不会是无限的。这就引出了一个问题,所有问题都保证有一个完成点吗?答案是否定的,并非所有问题都有保证完成点,其中最简单的就是无限循环:while (1) {print "still running!"}。那么我们能检测出所有程序无限运行的情况吗?不,这就是停机问题的证明。因此,停机问题比 P!=NP 更为根本。

      但即使是停机问题也会做出假设。我们假设我们所有的程序都在一种特定的 CPU 上运行。我们可以将所有 CPU 视为等效吗?是否有可以构建的 CPU 来解决停机问题?嗯,答案是只要一个 CPU 是图灵完备的,它们就等同于其他图灵完备的 CPU。因此,图灵完备性是比停机问题更根本的问题。

      我们可以继续质疑我们的假设,例如:各种信号是否等效?流体计算机或机械计算机有可能与电子计算机根本不同吗?它将把我们引向香农的信息论和布尔代数等,我们发现的每一个假设都比上面的假设更基础。

      【讨论】:

      • “从技术上讲,排序问题趋向于NP完全。” - 呃,什么?不仅排序不完整,而且我无法想象有人认真考虑它可能是。
      • @Nick:最糟糕的排序实现是要求您在第一轮中找到可能的最小数字,然后在第二轮中找到第二小的数字,然后是第三小等等。这是NP完成。这就是人类在物理世界中自然地对事物进行排序的方式,也是新手第一次遇到这个问题时可能会实施的算法之一。
      • @slebetman 说:如果某事使用或挑战一个假设,那么它就没有那个假设那么重要。 LordCover 说:一个基本的算法不会使用其他算法,否则它会是一个复杂的算法。意思相同。
      • @LordCover:但排序实际上并没有“使用”NP-completeness(事实上,这是一个已知不是 NP-complete 的问题,这是 Nick 在上面抱怨的),而是使用了知识NP完全算法​​需要很长时间才能解决。没有这样的算法称为 NP-complete。事实上,排序算法旨在避免 NP 完全性。换句话说,排序算法试图“不使用”NP-completeness。在您的定义中,这使得排序的基础不亚于 P!=NP。
      • @LordCover:另一方面,如果您在陈述中将“算法”一词替换为“问题”或“知识”或“假设”,那么您将是正确的。这正是我在回答中所做的。
      猜你喜欢
      • 1970-01-01
      • 2019-07-03
      • 2011-05-05
      • 2013-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多