7
$\开始组$

摘自离散数学Rosen教科书

由于在这个句子中使用了多次“除非”,我很难正确解释这个突出显示的句子(摘自《离散数学-罗森教科书》)。我理解q除非(而不是p)与说p意味着q是一样的,但我不知道如何在这里对这个句子准确地应用这个规则。这等同于说(重新安排一下句子):

除非对每个输入值进行测试(称之为命题“p”),除非确定了程序的正确性(称其为命题“q”),否则任何测试都无法表明它为所有输入值产生了所需的输出(称之为主命题“r”)。

如果每个输入值都没有经过测试,那么如果程序的正确性没有建立起来,那么再多的测试也无法表明它为所有输入值产生了所需的输出。

(非p)-->(非q)-->r)

((非p)和(非q))-->r

请在这里帮助我。

可能是逗号把我甩了(我糟糕的英语哈哈)

$\端组$
  • $\开始组$ 我认为你提出的四种解释都是正确的。特别是,这两个“命题”总是等价的。因此,它们也等价于通过交换$p$和$q$获得的命题,这可能是对这个句子更“自然”的解释。但我真的不认为这句话是要用形式逻辑来解释的,因为它是一个非正式的陈述。 $\端组$ 5月20日16:32
  • 2
    $\开始组$ 在不试图使用形式逻辑(正如@Izaak van Dongen所提到的)进行改写的情况下,对我来说,这意味着:“如果计算机程序P的正确性未知,那么需要测试每个输入值,以确定P产生了所需的输出。”对我来说,这在数学上是这样说的:“如果两个集合的相等性未知,则需要测试每个集合中的每个元素在另一个集合中的隶属度”或“如果两函数的相等性不已知,则需要检测属于每个函数的图的每个有序对在另一函数的图中的隶属关系”。 $\端组$ 5月20日16:41
  • 1
    $\开始组$ @IzaakvanDongen:虽然正如你所说,这是一个非正式的声明,但如我的回答所示,用命题逻辑严格地解释它确实很容易,我很惊讶它没有被解释。。。 $\端组$ 5月21日5:25

4个答案4

重置为默认值
12
$\开始组$

我只想把突出显示的句子改写如下:

如果计算机程序的正确性还没有通过某种方法确定,那么任何测试都不能表明它为所有输入值产生了所需的输出,除非对每个输入值都进行了测试。

$\端组$
1
  • $\开始组$ 另一种说法是,完全避免使用“除非”这个词:“如果计算机程序的正确性还没有通过某种方式确定,那么表明它为每个输入都产生了所需的输出的唯一方法就是测试每个输入。” $\端组$ 5月23日3:29
8
$\开始组$

我同意李·莫舍对这个句子的描述。我将提供以下建议的重写:

任何数量的测试都不能表明计算机程序为所有输入值生成所需的输出,除非测试了每个输入值,或者[理论上]确定了程序的正确性。

我很感激你想把它转化为命题逻辑,但它并没有区分理论上建立的真理和实验上的真理。作者所说的是,如果不测试所有案例,就无法对程序进行实验验证。

$\端组$
8
$\开始组$

你不应该改写“除非”使用“暗示”。相反,只需将其替换为“or”即可:

或者确定了计算机程序的正确性
再多的测试也不能证明它能为所有输入值产生所需的输出
每个输入值都经过测试

(此处的“要么”和“要么”包含在内。)

顺便说一句,罗森的“离散数学”教科书有严重的概念缺陷,很可能妨碍数学理解除非你已经受过数学训练或有数学倾向。

$\端组$
2
  • $\开始组$ 哦,等等?!等等,到底有什么缺陷,在哪里?另外,你会推荐哪本离散的教科书? $\端组$ 5月21日17:14
  • 1
    $\开始组$ @波波马利:丹尼尔·维尔曼的《如何证明》相当不错。如果你能买到一本便宜的书,Knuth的《具体数学》也是值得的。我现在没有罗森的教科书,但我在解释逻辑时发现了基本的概念错误,我有规律地让读过它的学生根据它所说的理解理解概念。许多流行的教科书都是这样的,因为它们的成功在很大程度上归功于市场营销,而不是价值。 $\端组$ 5月22日3:27
2
$\开始组$

两个“除非”短语之间本质上有一个“和”:

请注意,除非(确定了计算机程序的正确性并测试了每个输入值),否则任何测试都不能表明它为所有输入值生成了所需的输出。

因此,这相当于“(不是(建立了计算机程序的正确性,并对每个输入值进行了测试)->(任何测试都不能表明它为所有输入值生成了所需的输出。)”

它也可以写成

请注意,除非确定了计算机程序的正确性,否则除了测试每个输入值之外,再多的测试都不能表明它为所有输入值生成了所需的输出。

为什么作者会像他们那样写?我的猜测是,他们觉得“测试每个输入值”是“测试每个输出值”的限定词,因此属于这个范畴,而不是作为一个单独的条件。说“除非一切都在测试,否则没有测试就足够了”有点奇怪,就像说“除非击球手得到四个球,否则没有多少球可以让他们跑动”有点怪;在你说任何金额都不够之前,你给出的金额都是足够的。将限定符放在否定之后更有意义,因为现在有一些东西需要限定。

$\端组$
1
  • 1
    $\开始组$ 我的猜测是,作者最初只写了“除非程序的正确性得到证实,否则任何测试都无法证明它能为所有输入值生成所需的输出”,这在许多情况下是正确的,因为输入空间是无限的,或者至少太大了,以至于需要比宇宙的生命周期更长的时间才能覆盖。但后来有人注意到,一般来说,这在技术上是不正确的,所以他们只是补充了一点关于详尽测试的内容。 $\端组$
    – 左转
    5月22日7:02

你必须登录来回答这个问题。

不是你想要的答案吗?浏览标记的其他问题.