是什么让问题比另一个更基础?

时间:2010-12-12 22:09:49

标签: algorithm definition

对于什么使问题比另一个问题更为基础,有没有正式的定义?否则,什么是可接受的非正式定义?

比另一个更基本的问题的一个例子是排序vs字体渲染。

5 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

原始问题是有效的,并且不必像@slebetman建议的那样假设/考虑复杂性和可复原性。 (从而使问题更加根本:)

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

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

答案 2 :(得分:1)

如果我理解你的问题。

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

答案 3 :(得分:1)

更多应用的问题或解决方案更基础

(排序有很多应用,P!= NP也有很多应用(或影响),渲染只有少量应用。)

答案 4 :(得分:0)

当他暗示复杂性和可还原性时,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。因此,图灵完整性是一个比停止问题更基本的问题。

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