首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >病毒逻辑-伪/ PoC

病毒逻辑-伪/ PoC
EN

Stack Overflow用户
提问于 2015-05-06 23:05:54
回答 1查看 247关注 0票数 0

我正在试着解决这个问题。希望有人能帮上忙。

假设我们有一个名为Confusion的程序;

代码语言:javascript
复制
Program confusion
if(Virus-Finder(Confusion) = false) then
   infect-executable
else
   halt
End program confusion

显然这是伪代码,所以不会运行。

对于任何程序P,我们可以运行Virus-Finder(P),如果是病毒,则结果为True,如果不是,则结果为False

infect-executable是一个模块,它扫描内存中的可执行程序,并在这些可执行程序中复制程序Confusion

我们不知道Virus-Finder实际做了什么,只知道如果输入是病毒,它将返回True,如果不是,则返回False

能否确定Virus-Finder能否正确判断Confusion是否是病毒?我最初的想法是不,它不可能。但我无法理解其中的逻辑。

EN

回答 1

Stack Overflow用户

发布于 2016-03-17 10:20:13

您所说的内容定义不明确,但假设如下:

如果p执行infect-executable,则Virus-finder(p)返回true

在这种情况下,很容易证明Virus-finder(p)是不可判定的,并且您的伪代码确实可以做到这一点:

假设Virus-finder(p)是可判定的,因此它总是返回true (resp.false)如果执行p (分别为不执行) infect-executable。然后你的伪代码显示Virus-finder不能决定它是否是病毒。

正如Barmar提到的,这样的推理通常是证明某些问题的不可判断性的一种方法,特别是停顿问题(另一个众所周知的方法是简化为其他不可判定的问题)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30080615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档