第六个知识点:咱们怎么把NP问题解释成一组能够在多项式内证实的命题

第六个知识点:咱们怎么把NP问题解释成一组能够在多项式内证实的命题

原文地址:http://bristolcrypto.blogspot.com/2014/11/52-things-number-6-how-can-we-interpret.htmlhtml

这是密码学52件事的第六篇,咱们继续解释复杂性理论,这篇咱们给NP问题另外一个定义。(注:就是说这节中,咱们把"问题是否为NP的"转换为另外一组能够在多项式时间内断定的定理)。算法

这个问题是紧接着上一周的问题的。上周咱们回答了什么是复杂NP类问题。这周咱们回答一个相关的问题---咱们怎么把NP解释成一组能被多项式时间检查的命题。安全

如今咱们看一个直觉上的"一个问题是NP的"这意味着什么?他不单单是一个直观的定义,更是清晰的说明了为何这类复杂性问题对密码学和世界上其余问题那么重要。如今在咱们讨论怎么用以前,咱们先给出定义:ui

NP 是一类能在多项式时间内肯定的问题加密

NP 是存在多项式时间运行的Verifierspa

这到底啥意思?首先咱们有一个元素\(x\),咱们想要知道是否\(x \in L\)(\(L\)是NP语言)。咱们有一个证实\(P\)\(x\)输出一个证据\(w\),这可能须要要给多项式时间在给定\(x\)寻找\(w\)。而后若是咱们给出\(x\)\(w\)到咱们的验证器\(V\)\(V\)可以在多项式时间内输出是否\(x \in L\)code

我在看到这里的时候以个人知识有点不懂。 这里就是交互式证实系统,限制了交互的时间复杂度。那为何非要给出一个V,而后给出一个P呢。这个是交互式证实系统定义的一部分。在这种计算模型(交互式证实系统)下,限制一下计算时间,就能够给出了NP问题的定义。 这里我十分推荐读下这节Sipser's Introduction to the Theory of Computation, section 7.3.htm

这个定义彷佛和上一周给出的不一样,可是实际上他们是等价的。(Sipser的书中有精确的定义)。非正式的说,他们的等价性是由于\(w\)能够是NDT在每一个分支节点作出的决定的序列,这样就从非肯定的降级成肯定的自动机了。(上面的那节也给出了精确的证实)。blog

所以为何这个问题在密码学中那么有用呢?本质上,咱们有一类这样的缘由,若是你没有witness(凭据?密钥?)能够用指数时间来检查,可是若是你有这个witness那么你就能够用多项式时间来完成。这是不少密码学算法的feel。(23333)。若是你不知道key那么你就很难解密这个消息,若是你知道key那么你很快就能解密出消息。ip

一个警告:虽然密码学中使用NP问题看起来是个不错的作法。可是它可能不是那么简单。由于NP问题的语言是基于最坏时间的。然而密码学中的算法是基于平均时间的。例如,咱们有一种NP语言,一个元素须要指数级的时间求解,其余元素都很是快。这不是好的加密方案。咱们但愿对全部的消息都是安全的。而不是仅仅一个。

如今咱们知道整数因子分解不知道是否是NP彻底的,也不知道是否是P类问题。可是它是一个例子。说明我想要说的关于仔细选择NP实例的问题。通常来讲,找到一个数的因数很容易。其中一半能被2整除。可是若是咱们选择一个特定的咱们将会很难分解。让咱们集中思路在形式\(N = p * q\)\(p,q\)素数。如今若是这两个数字有一个很小,那么分解它也是容易的,咱们但愿这两个数字大小相同。由此咱们能够根据这个构建加密方案(RSA)。

[1] Equivalence_of_definitions

相关文章
相关标签/搜索