病毒逻辑 - 伪/ PoC

时间:2015-05-06 15:05:54

标签: logic pseudocode

我正试图解决这个问题。希望有人可以提供帮助。

想象一下,我们有一个名为Confusion;

的程序
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是否是病毒?我最初的想法是不,它不能。但我无法理解这一逻辑。

1 个答案:

答案 0 :(得分:0)

你所说的内容并不明确,但假设如下:
如果Virus-finder(p)执行true

,则p会返回infect-executable

在这种情况下,很容易证明Virus-finder(p)不可判定,并且您的伪代码完全符合: 假设Virus-finder(p)是可判定的,因此如果执行true(resp。不执行)false,它总是返回p(resp。infect-executable)。然后,您的伪代码显示Virus-finder无法确定它是否是病毒。

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