个人资料
国产亚洲精品高清视频免费
2000年5月24日,位于新罕布什尔州的克莱数学研究所列出了数学和计算机科学中7个尚未解决的问题。解决这些问题的奖励是研究所提供的100万美元支票。然而,直到今天,这些问题中只
国产亚洲精品高清视频免费
友情连接
    国产亚洲精品高清视频免费 您当前所在位置:国产亚洲精品高清视频免费 > 国产精品 >

    

2000年5月24日,位于新罕布什尔州的克莱数学研究所列出了数学和计算机科学中7个尚未解决的问题。解决这些问题的奖励是研究所提供的100万美元支票。然而,直到今天,这些问题中只有一个得到了解决,那就是庞加莱猜想,它是由俄罗斯数学家格里戈里·佩雷尔曼解决的。重要的是要认识到,这些问题的“解”是以数学证明的形式出现的,不是否定就是确认定理。其他六个未解决的问题之一是著名的P vs NP问题。

时间复杂度

时间复杂度的研究可以得到很好的复杂度(解释如下)。麻省理工学院的迈克尔·西珀教授以其在计算复杂性理论领域的杰出工作而闻名。他的标准定义是:

让M是一个确定性的图灵机( Turing machine),它对所有的输入上都会停机(halt,停机问题是逻辑学的焦点,也是第三次数学危机的解决方案)。M的运行时间或时间复杂度是函数f:N→N,其中f(n)是M对任何长度为n的输入所使用的最大步骤数。习惯上我们用n来表示输入的长度。

看完定义,应该是挺傻的吧?这到底是什么意思?现在,让我们降低维度来看这个问题。算法的时间复杂度可以描述为给定输入长度的算法在计算机上的运行时间。给定程序的时间复杂度可能很难确定,因此计算机科学家开发了一种称为渐近分析的估计表达式,也称为大O表示。准备好,另一个复杂的定义正在向你走来:

让f和g是函数f , g : N → R+。如果存在正整数c和n0,使每个整数n≥n0,f(n)≤cg(n),则称f(n)=O(g(n))。当f(n)=O(g(n))时,我们说g(n)是f(n)的上限,或者更准确地说,g(n)是f(n)的渐近上限,以强调我们在抑制常数因素。

让我们暂时跳过第一部分,更仔细地看看定义的第二部分。我们将在这里使用一个例子:

一个简单的循环C语言为了找到这个算法的渐近上限,我们必须首先分析每个部分。如果这个例子中数组n的大小是10,循环将运行10次。在这种情况下,函数的上限永远是n的大小,因此,n是渐进的上限,计算机科学家用来描述这一事实的符号是O(n),称为线性时间。

两个for循环的大O是O (n 2)。这里的函数有两个for循环,这意味着如果n=10,它将运行100次,或者n*n次。o的表达式是o (n 2),即平方时间。

假设一个算法,我们可以确定它的时间复杂度是f (n) = 4n+2n+12。这是不是意味着大o会是o (4n+2n+12)?看一下定义的最后一部分很重要。我们在寻找渐近线,所以我们只需要最快的项(在这种情况下是4n^2),然后我们去掉常数(因为常数可以根据硬件差异和限制进行更改),最后我们得到o (n)的大o。

那么这个和上面简单的两个循环有相同的大o。没错。o有助于计算机科学家可视化算法运行时间的上限,因此就所有目的而言,这两种不同的算法具有相同的o。

以下是不同大o复杂性的一些比较:

P类和NP类现在我们对时间复杂度有了一定的了解,终于可以把P和NP看做研究决策问题的工具了。判断一个问题是一个有“真”或“假”答案的问题。

P: P代表多项式,是两者中比较简单的。p可以被描述为一组可以在多项式时间内通过算法解决的问题。

O(n), O(n^2), O(n^3) 都是多项式时间的例子。属于P类的问题的例子包括乘法,或者寻找一个数组中最大的整数。

NP: NP代表不确定多项式,在两类中比较复杂,有两种不同的可能定义。更简单的定义是。

在计算复杂性理论中,NP(非确定性多项式时间)是一个用于对决策问题进行分类的复杂性类。NP是一组决策问题,对于这些问题,答案是“是”,它的证明可以在多项式时间内被确定性图灵机证明。

NP(非确定多项式)问题是指一个复杂的问题,在多项式时间内不能确定是否找到答案,但可以在多项式时间内验证答案是否正确。

最好看一个经典的游戏,帮助直观地理解NP问题。

例子:数独。

数独是我用来描述NP中问题类别的最常见的例子。

数独,一个正在被算法解决的数独难题,很容易解决,所以上面的算法不需要花太多时间去解决。然而,如果这个数独难题从9x9增长到100x100呢?如果把数独问题从9x9输入推广到NxN,很快就会变成NP问题。

数独很容易验证。这意味着给定数独问题的解,存在多项式时间算法,可以正确验证解是否正确。

一个解出的数独谜题再次使用这个9x9的例子,可以很容易的验证它是否是正确的解,而且设计一个算法来完成这种情况下自己大脑可以做的工作也是非常简单的。然而,解决任何大小的数独谜题的算法似乎都没有那么简单,这也是事实。

进一步研究:NP完全性。

与NP有关的问题是NP的完备性。这些问题因其难度而闻名,因为它们没有已知的多项式算法解(o (n),o (n 2)...).这些问题可以看作是计算机科学中最困难的问题。

在O(n)中运行100个元素要1秒的算法,在O(n3)中运行要3个小时。这似乎是一个很大的跳跃,一个以O(2^N)运行的问题,100个元素需要300quintillion(百万的3次方)年。因此,寻找一个多项式解比一个指数解更有价值。

确定一个问题是否是NP完全性的过程如下。

确定问题是否在NP中(可在多项式时间内验证或可由非确定性图灵机解决)。确定该问题是否是NP-Hard。NP-Hard:当事情从复杂变成更复杂。

NP-Hard问题的定义如下:

非正式地讲,NP-Hard问题与任何NP问题一样难或更难。更确切地说,任何NP-完备性问题都可以在多项式时间内简化为NP-Hard问题。

解决一个NP-Hard问题的算法可以解决所有的NP-Hard问题,因为每个NP-Hard问题都可以转化为其他问题。这意味着一个NP完全问题的解也可以解决所有其他NP完全问题。

还值得注意的是,NP-Hard问题不一定在NP中(记住)。如果同时是NP-Hard和NP,我们就把它归为NP-完全,不一定是决策问题。

示例:路径和总和。

哈密尔顿路径问题询问对于给定的图是否有只访问每个顶点一次的路径。

哈密顿路径哈密顿路径问题是NP完全问题的一个例子。很容易验证这个问题是否在NP中。

检查每个顶点。如果没有通往某个顶点的路径,则返回false。否则返回true。

子集和问题的问题是,给定一个包含整数的集合s和一个目标和(N),确定s中是否存在和为N的子集。

S={1,3,5,6},N=4。答案是 "真",因为子集{1,3}的总和为4。

这个问题也是NP完全的。要验证这个问题是否属于NP,比上一个问题简单:

将子集中的数字相加。如果它们等于N,则返回true。否则返回false。

你可能很难相信,但是子集和问题和哈密顿路径问题在功能上是等价的,因为它们是NP完全的。这意味着子集和的解可以转化为求解哈密尔顿路径问题。有大量的NP完全问题,这只是两个例子。

最后:P=NP?

p等于NP吗?

大多数数学家和计算机科学家会说不。但是我们还没有确切的证据。

普遍的共识是,左边的说法是正确的。重要的是要考虑到P=NP只告诉我们有多项式时间的解,而不是这些算法是什么。

然而,如果这些算法确实存在,并且问题得到解决,它们将不仅对计算机科学领域,而且对其他主要领域产生一些深远的影响:

公钥加密,或者说我们几乎所有的个人和可识别数据是如何被存储和保护的。加密哈希,或者说很多信息是如何被加密的,以及像比特币这样的系统是如何被保护的。计算基因组学,这个领域的一系列问题。

影响可能是巨大的,因为最终我们实际上发现最可用的算法是O(n)或O(nlogn)和O(logn)——即使P=NP,如果算法是O(n ^ 100),也没有实际意义。

这是我们还在努力解决的问题,可能永远也解决不了。

?总结P类问题:所有可以在多项式时间内求解的判定问题构成P类问题。NP类问题:所有的非确定性多项式时间可解的判定问题构成NP类问题。NP-hard,指所有NP问题都能在多项式时间复杂度内归遇到的问题。NP完备问题(简单的写法是 NP=P?):NP中的某些问题的复杂性与整个类的复杂性相关联。这些问题中任何一个如果存在多项式时间的算法,那么所有NP问题都是多项式时间可解的。这些问题被称为NP-完备问题(NPC问题)。
  

Powered by 国产亚洲精品高清视频免费 @2018 RSS地图 HTML地图

2013-2021 版权所有