完美和完整

问题描述 投票:1回答:1

我正在上一个软件分析课,并被问到以下问题。它与编程逻辑有关,因此我在这里发布它的原因。 (我也将它发布到数学堆栈溢出站点。):

假设SHADED部分表示不包含被零除错误的所有程序,并且黑色矩形内的UNSHADED部分表示包含此类错误的所有程序。

让A1,A2和A3进行不同的程序分析,检查除零误差。每个分析ACCEPTS(即声明它没有被零除错误)或REJECTS(即声明至少存在一个被零除错误)给定的程序。

对于每个分析,该分析所接受的程序包含在相应的椭圆内,并且该分析拒绝的程序包含在相应的椭圆外。

参考问题4,假设我们设计了一个分析A4,其在输入程序P上表现如下:

if (A1 rejects P) reject P;
else if (A3 accepts P) accept P; 
else run forever; 

A4声音? A4完整吗?

我选择A4是合理的,因为A1接受有效的程序并拒绝那些不合适的程序。这标记是正确的。我说它不完整,因为A4不接受那些确实是有效程序并被标记错误的程序。想知道是否有人可以为我揭开这一点?提前致谢。

debugging math logic analysis
1个回答
1
投票

我认为它会完整。假设您有一个程序提供DBZ错误,我们想测试这个。将该程序发送到A1。 A1包含有和没有DBZ的两个程序的空间。所以它可以被A1接受,或被A1拒绝。如果它被A1拒绝,那么我们可以拒绝该程序具有DBZ错误。如果它没有被A1拒绝,那么转到A3,它只接受没有DBZ错误的程序。请记住,这适用于未被A1拒绝的程序。如果程序被A3接受,那么我们就知道它没有DBZ错误。如果它也被拒绝,我们知道它包含DBZ错误。

基本上单独使用A1不能完全确定程序是否会被接受。但由于A3只包含可以接受的程序空间,如果在A1和A3中接受它,我们可以推断它是一个有效的程序。

根据这个解释,似乎如果程序有效,即使A1没有将程序视为无效,它也会被A3接受,因为A3只会接受有效程序,这与你所说的为什么A4不能相反完成。

如果我在这个答案中澄清一些要点,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.