首页 > 其他分享 >52 Things: Number 6: How can we interpret NP as the set of theorems whose proofs can be checked in p

52 Things: Number 6: How can we interpret NP as the set of theorems whose proofs can be checked in p

时间:2024-04-11 12:58:34浏览次数:26  
标签:whose set but 52 NP time polynomial 我们

52 Things: Number 6: How can we interpret NP as the set of theorems whose proofs can be checked in polynomial time?

52 件事: 第 6 点:我们如何将 NP 解释为一组定理,其证明可以在多项式时间内检查? This is the latest in a series of blog posts to address the list of '52 Things Every PhD Student Should Know' to do Cryptography: a set of questions compiled to give PhD candidates a sense of what they should know by the end of their first year. We continue the Complexity Theory section with an alternative definition of NP...
这是一系列博客文章中的最新一篇,旨在解决“每个博士生都应该知道的 52 件事”来做密码学:一组问题汇编,让博士生在第一年结束时了解他们应该知道什么。我们继续复杂性理论部分,对 NP 进行替代定义......
This question is very much a follow up question to the previous one. Last week Guy answered the question of ``What is meant by the complexity class NP?'', while this week I will be answering the related question of ``How can we interpret NP as the set of theorems whose proofs can be checked in polynomial time?''.
这个问题在很大程度上是前一个问题的后续问题。上周,Guy 回答了“复杂性类 NP 是什么意思”的问题,而本周我将回答“我们如何解释 NP 为可以在多项式时间内检查其证明的定理集”的相关问题。   Now to me this is a more intuitive definition of what it means for a problem to be in NP. Not only is it a more intuitive definition but it should (hopefully) also be clearer as to why this is a complexity class that is useful both for cryptography and the wider world. Now before we go into what we can use the class of problems for, the definition is as follows:
现在对我来说,这是对问题意味着什么的更直观的定义 NP 。它不仅是一个更直观的定义,而且(希望)也应该更清楚地说明为什么这是一个对密码学和更广阔的世界都很有用的复杂性类。现在,在我们讨论可以使用问题类的用途之前,定义如下:   NP is the class of languages that have polynomial time verifiers.
NP 是具有多项式时间验证器的语言类。   OK but what does this actually mean? Basically if we have an element x and we want to know if x∈L (where L is some NP language) we have a prover P which given x outputs a witness w, this may take exponential time to find w given x. Then if we give x and w to our verifier V, V can tell if x∈L in polynomial time.
好的,但这实际上意味着什么?基本上,如果我们有一个元素 x ,我们想知道( x∈L 某种 NP 语言在哪里 L )我们是否有一个给定 x 输出见证的证明 P 器 w ,这可能需要指数级时间来找到 w 给定 x 的。然后,如果我们给 x 和 w 给我们的验证者 V , V 可以判断是否 x∈L 在多项式时间内。   This definition seems very different from the one given last week but they are in fact equivalent. Informally they are equivalent because the witness w can just be the sequence of decisions the NDT made at each branching point to show that x∈L. For a (slightly) more formal proof of their equalence [1] is a reasonable online source (with references to textbooks).
这个定义似乎与上周给出的定义大不相同,但它们实际上是等价的。非正式地,它们是等价的,因为证人 w 可以只是 NDT 在每个分支点做出的一系列决定,以表明 x∈L .对于它们相等的(稍微)更正式的证明[1]是一个合理的在线资源(参考教科书)。   So why might this be useful in cryptography? Well essentially we have a class of languages which can take exponential time to check if you do not know a witness but with a witness it can be done in polynomial time. This has the ``feel'' of a lot of cryptographic algorithms - take Encryption (formalisation to follow in future weeks' blogs) for example; you want it to be exponentially hard to get the message from ciphertext without the key (similar to a witness) but with the key you want it to be efficient (polynomial time) to extract the message.
那么,为什么这在密码学中很有用呢?好吧,从本质上讲,我们有一类语言,它可能需要指数时间来检查你是否不认识一个证人,但有了证人,它可以在多项式时间内完成。这具有许多加密算法的“感觉”——以加密(未来几周的博客中将遵循的形式化)为例;您希望在没有密钥(类似于见证)的情况下从密文获取消息的难度呈指数级增长,但使用密钥,您希望它高效(多项式时间)来提取消息。   A warning: While it sounds like a good move to use an NP problem for cryptography it may not be as simple as it first appears. This is because languages are in NP based on the worse case complexity where as for encryption we need it to be hard on average. For example we may have an NP language which has one element that takes exponential time to solve but all others are really efficient to solve - this will not make a good basis for an encryption scheme because we want encryption to be secure for all messages not just one.
警告:虽然将 NP 问题用于密码学听起来是一个好举动,但它可能并不像最初看起来那么简单。这是因为语言 NP 是基于更糟糕的情况复杂性,至于加密,我们需要它平均很难。例如,我们可能有一种 NP 语言,它有一个元素需要指数级的时间来解决,但所有其他元素都非常有效 - 这不会为加密方案提供良好的基础,因为我们希望加密对所有消息都是安全的,而不仅仅是一个消息。   Now I am aware that integer factorization isn't known to be NP-complete and isn't known to be in P (See Ryan's blog here for a description) but it makes for a nice example of the point I am trying to make about choosing your NP instances carefully. In general finding a factor of a number is easy (half of them are divisible by two!) but if we choose something sensible we can make it hard to factor. Let us focus on numbers of the form N=p⋅q for p,q prime (a.k.a numbers with only two proper factors). Now if either of these numbers is small then it is again easy, so we want the numbers to be of equal size (this is what we do for RSA). From this it is possible to build an encryption scheme over the top.
现在我知道整数分解不是已知 NP 的 -complete,也不知道是否在 P (有关描述,请参阅此处的 Ryan 博客),但它为我试图提出的关于谨慎选择 NP 实例的观点提供了一个很好的例子。一般来说,找到一个数字的因数很容易(其中一半可以被二整除!),但如果我们选择一些合理的东西,我们就会使因式分解变得困难。让我们关注 p,q 素数形式的 N=p⋅q 数字(又名只有两个适当因数的数字)。现在,如果这些数字中的任何一个都很小,那么它又很容易,因此我们希望这些数字的大小相等(这就是我们为 RSA 所做的)。由此可以在顶部构建加密方案。

标签:whose,set,but,52,NP,time,polynomial,我们
From: https://www.cnblogs.com/3cH0-Nu1L/p/18104676

相关文章

  • 副本集replicaSet
    mongodb高可用架构https://www.mongodb.com/docs/manual/tutorial/deploy-replica-set/复制是跨多个服务器同步数据的过程。复制提供冗余,并通过不同数据库服务器上的多个数据副本增加数据可用性。复制保护数据库免受单个服务器的丢失。复制还允许从硬件故障和服务中断中恢......
  • 布隆过滤器 及 Redis Sorted sets 使用注意事项
    布隆过滤器基本概念布隆过滤器(英语:BloomFilter)是1970年由伯顿·霍华德·布隆(BurtonHowardBloom)提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有......
  • group by grouping sets计算每个分组的占比
    计算每个分组的数量selectparent_dict_code,count(*)fromtb_data_dictgroupbyrollup(parent_dict_code);计算占比,注意要*1.0,否则仍为整型,全为0selectparent_dict_code,count(data_dict_id),(selectcount(data_dict_id)fromtb_data_dict)assum_all,count(data_dict......
  • CF1913C Game with Multiset 题解
    翻译初始时你有一个空序列,共\(m\)次操作,每次操作读入两个数\(t_i\),\(v_i\),分为以下两种操作:当\(t_i=1\)时,在空序列中加入\(2^{v_i}\)这一元素。(此时\(0\lev_i\le29\))当\(t_i=2\)时,询问是否存在:取当前序列的某些元素,使它们的的和等于\(v_i\)(此时\(0\lev_i\l......
  • MIPI DSI --- DCS(Display Command Set)
    MIPI协议族,定义了一个专门用于显示的命令集,叫做DisplayCommandSet,简称为DCS。屏幕制造商(屏幕驱动芯片)都使用这一套标准。DisplayArchitectures按照是否带有帧缓存,分为三种架构:不带帧缓存、带完整一帧的缓存、带一部分帧缓存。如果带了 Framebuffer,那么图形数据不用每次......
  • [kernel] 带着问题看源码 —— setreuid 何时更新 saved-set-uid (SUID)
    前言在写《[apue]进程控制那些事儿》/"进程创建"/"更改进程用户ID和组ID"一节时,发现setreuid更新实际用户ID(RUID)或有效用户ID(EUID)时,保存的设置用户ID(savedset-user-idSUID)只会随EUID变更,并不像man上说的会随RUID变更(mansetreuid):Ifthe......
  • Seurat Dimplot, Vlnplot画图时报错,Error in setup_panel_guides(..., self = self) :
    SeuratDimplot,Vlnplot画图时报错,Errorinsetup_panel_guides(...,self=self):unusedargument(list(~features.plot,~id))pdf(paste0("EBV_GaC","_Marker_genes_Vln.png"),width=30,height=10)>DotPlot(object=subset_cells,featur......
  • PlayerSettings.WebGL.emscriptenArgs设置无效的问题
    1)PlayerSettings.WebGL.emscriptenArgs设置无效的问题2)多个小资源包合并为大资源包的疑问3)AssetBundle在移动设备上丢失4)Unity云渲染插件RenderStreaming,如何实现多用户分别有独立的操作这是第381篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术......
  • 【Kotlin】List、Set、Map简介
    1List​Java的List、Set、Map介绍见→Java容器及其常用方法汇总。1.1创建List1.1.1emptyListvarlist=emptyList<String>()//创建空List1.1.2List构造函数varlist1=List(3){"abc"}//[abc,abc,abc]varlist2=ArrayList<Int>()varlist3=......
  • C++ 标准模板库 STL(1)set 与 multiset
    一、简介    set与multiset容器能够快速查找键,键是存储在一维容器中的值,二者的区别在于前者不能够存储重复的键值,后者能够存储重复键值。    set与multiset内部结构类似于二叉树,并且被插入到set与multiset容器中的元素会默认进行排序,从而提高查找速度。这意......