离散数学-逻辑与证明基础1.4(谓词和量词)

谓词

1.4.2 谓词

涉及变量的语句,例如:

x > 3 x > 3 x>3”,“ x = y + 3 x = y + 3 x=y+3”,“ x + y = z x + y = z x+y=z

以及

\quad “Computer x x x is under attack by an intruder”
\quad “Computer x x x is functioning properly”

经常出现在数学表达式、计算机程序和系统规范中。当变量的值没有被指定时,这些语句既不为真也不为假。在本节中,我们将讨论如何从这些语句中构造命题。

语句“ x x x is greater than 3”包含两部分。第一部分是变量 x x x,它是该语句的主体。第二部分是谓词“is greater than 3”,它指的是该语句可能具有的性质。我们可以用 P ( x ) P(x) P(x) 表示语句“ x x x is greater than 3”,其中 P P P 表示谓词“is greater than 3”, x x x 是变量。语句 P ( x ) P(x) P(x) 也被称为命题函数 P P P x x x 处的值。一旦给变量 x x x 赋值,语句 P ( x ) P(x) P(x) 就成为一个命题,并具有真值。

例1 P ( x ) P(x) P(x) 表示语句“ x > 3 x > 3 x>3”。 P ( 4 ) P(4) P(4) P ( 2 ) P(2) P(2) 的真值是什么?

通过在语句“ x > 3 x > 3 x>3”中设 x = 4 x = 4 x=4,我们得到语句 P ( 4 ) P(4) P(4),即“ 4 > 3 4 > 3 4>3”,是真命题。因此, P ( 4 ) P(4) P(4) 为真。而 P ( 2 ) P(2) P(2) 对应的语句是“ 2 > 3 2 > 3 2>3”,这是假命题,因此 P ( 2 ) P(2) P(2) 为假。

例2 A ( x ) A(x) A(x) 表示语句“Computer x x x is under attack by an intruder”。假设在校园中的计算机中,只有 CS2 和 MATH1 当前正在被攻击。 A ( C S 1 ) A(CS1) A(CS1) A ( C S 2 ) A(CS2) A(CS2) A ( M A T H 1 ) A(MATH1) A(MATH1) 的真值是什么?

通过将 x = C S 1 x = CS1 x=CS1 代入语句“Computer x x x is under attack by an intruder”,我们得到语句 A ( C S 1 ) A(CS1) A(CS1)。由于 CS1 不在当前被攻击的计算机列表中,因此 A ( C S 1 ) A(CS1) A(CS1) 为假。同理,由于 CS2 和 MATH1 是当前被攻击的计算机,因此我们知道 A ( C S 2 ) A(CS2) A(CS2) A ( M A T H 1 ) A(MATH1) A(MATH1) 为真。

我们也可以有涉及多个变量的语句。例如,考虑语句“ x = y + 3 x = y + 3 x=y+3”。我们可以用 Q ( x , y ) Q(x, y) Q(x,y) 表示这个语句,其中 x x x y y y 是变量, Q Q Q 是谓词。当为变量 x x x y y y 赋值时,语句 Q ( x , y ) Q(x, y) Q(x,y) 就具有真值。

例3 Q ( x , y ) Q(x, y) Q(x,y) 表示语句“ x = y + 3 x = y + 3 x=y+3”。命题 Q ( 1 , 2 ) Q(1, 2) Q(1,2) Q ( 3 , 0 ) Q(3, 0) Q(3,0) 的真值是什么?

通过在语句 Q ( x , y ) Q(x, y) Q(x,y) 中设 x = 1 x = 1 x=1 y = 2 y = 2 y=2,我们得到语句 Q ( 1 , 2 ) Q(1, 2) Q(1,2),即“ 1 = 2 + 3 1 = 2 + 3 1=2+3”,这是假的。因此, Q ( 1 , 2 ) Q(1, 2) Q(1,2) 为假。而 Q ( 3 , 0 ) Q(3, 0) Q(3,0) 对应的语句是“ 3 = 0 + 3 3 = 0 + 3 3=0+3”,这是真命题,因此 Q ( 3 , 0 ) Q(3, 0) Q(3,0) 为真。

例4 A ( c , n ) A(c, n) A(c,n) 表示语句“Computer c c c is connected to network n n n”,其中 c c c 是表示计算机的变量, n n n 是表示网络的变量。假设计算机 MATH1 连接到网络 CAMPUS2,但没有连接到网络 CAMPUS1。 A ( M A T H 1 , C A M P U S 1 ) A(MATH1, CAMPUS1) A(MATH1,CAMPUS1) A ( M A T H 1 , C A M P U S 2 ) A(MATH1, CAMPUS2) A(MATH1,CAMPUS2) 的值是什么?

由于 MATH1 没有连接到 CAMPUS1 网络,我们可以得出 A ( M A T H 1 , C A M P U S 1 ) A(MATH1, CAMPUS1) A(MATH1,CAMPUS1) 为假。然而,由于 MATH1 连接到 CAMPUS2 网络,我们可以得出 A ( M A T H 1 , C A M P U S 2 ) A(MATH1, CAMPUS2) A(MATH1,CAMPUS2) 为真。

类似地,我们可以让 R ( x , y , z ) R(x, y, z) R(x,y,z) 表示语句“ x + y = z x + y = z x+y=z”。当给变量 x x x y y y z z z 赋值时,这个语句具有真值。

例5 命题 R ( 1 , 2 , 3 ) R(1, 2, 3) R(1,2,3) R ( 0 , 0 , 1 ) R(0, 0, 1) R(0,0,1) 的真值是什么?

命题 R ( 1 , 2 , 3 ) R(1, 2, 3) R(1,2,3) 是通过在语句 R ( x , y , z ) R(x, y, z) R(x,y,z) 中设置 x = 1 x = 1 x=1 y = 2 y = 2 y=2 z = 3 z = 3 z=3 得到的。我们看到 R ( 1 , 2 , 3 ) R(1, 2, 3) R(1,2,3) 是语句“ 1 + 2 = 3 1 + 2 = 3 1+2=3”,这是正确的。还要注意 R ( 0 , 0 , 1 ) R(0, 0, 1) R(0,0,1),这是语句“ 0 + 0 = 1 0 + 0 = 1 0+0=1”,是错误的。

一般来说,涉及 n n n 个变量 x 1 , x 2 , … , x n x_1, x_2, \dots, x_n x1,x2,,xn 的语句可以表示为 P ( x 1 , x 2 , … , x n ) P(x_1, x_2, \dots, x_n) P(x1,x2,,xn)

形如 P ( x 1 , x 2 , … , x n ) P(x_1, x_2, \dots, x_n) P(x1,x2,,xn) 的语句是命题函数 P P P n n n 元组 ( x 1 , x 2 , … , x n ) (x_1, x_2, \dots, x_n) (x1,x2,,xn) 处的值, P P P 也被称为一个 n n n 位谓词或 n n n 元谓词。在计算机程序中出现的命题函数,如例 6 所示。

例6 考虑语句

“if x > 0 x > 0 x>0 then x : = x + 1 x := x + 1 x:=x+1.”

当在程序中遇到此语句时,程序执行时变量 x x x 的值被插入到 P ( x ) P(x) P(x) 中,即“ x > 0 x > 0 x>0”。如果对该值 x x x 来说 P ( x ) P(x) P(x) 为真,则执行赋值语句 x : = x + 1 x := x + 1 x:=x+1,因此 x x x 的值增加 1。如果对该值 x x x 来说 P ( x ) P(x) P(x) 为假,则不执行赋值语句,因此 x x x 的值不变。

前置条件和后置条件 谓词也用于证明计算机程序的正确性,即证明在给定有效输入时,计算机程序总是产生所需的输出。(请注意,除非证明了计算机程序的正确性,否则任何数量的测试都无法证明它对所有输入值产生所需的输出,除非每个输入值都被测试过。)描述有效输入的语句称为前置条件,而描述程序运行后输出应满足的条件称为后置条件。正如例 7 所示,我们使用谓词来描述前置条件和后置条件。我们将在 5.5 节更详细地研究这一过程。

例7 考虑以下程序,用来交换两个变量 x x x y y y 的值。

temp := x
x := y
y := temp

找到我们可以用作前置条件和后置条件的谓词,以验证该程序的正确性。然后解释如何使用它们来验证对于所有有效输入,该程序按预期工作。

对于前置条件,我们需要表达在运行程序之前 x x x y y y 具有特定的值。因此,对于这个前置条件,我们可以使用谓词 P ( x , y ) P(x, y) P(x,y),其中 P ( x , y ) P(x, y) P(x,y) 是语句“ x = a x = a x=a y = b y = b y=b”,其中 a a a b b b 是在运行程序之前 x x x y y y 的值。因为我们想要验证程序交换 x x x y y y 的值对于所有输入值都成立,对于后置条件我们可以使用 Q ( x , y ) Q(x, y) Q(x,y),其中 Q ( x , y ) Q(x, y) Q(x,y) 是语句“ x = b x = b x=b y = a y = a y=a”。

为了验证程序始终按预期工作,假设前置条件 P ( x , y ) P(x, y) P(x,y) 成立。也就是说,我们假设语句“ x = a x = a x=a y = b y = b y=b”为真。这意味着 x = a x = a x=a y = b y = b y=b。程序的第一步, t e m p : = x temp := x temp:=x,将 x x x 的值赋给变量 t e m p temp temp,所以在这一步之后我们知道 x = a x = a x=a t e m p = a temp = a temp=a,并且 y = b y = b y=b。在程序的第二步, x : = y x := y x:=y,我们知道 x = b x = b x=b t e m p = a temp = a temp=a,并且 y = b y = b y=b。最后,在第三步,我们知道 x = b x = b x=b t e m p = a temp = a temp=a,并且 y = a y = a y=a。因此,在程序运行之后,后置条件 Q ( x , y ) Q(x, y) Q(x,y) 成立,即语句“ x = b x = b x=b y = a y = a y=a”为真。

量词

全称量词

当命题函数中的变量被赋值时,得到的语句成为具有某个真值的命题。然而,还有另一种重要的方式,称为量化,用于从命题函数创建命题。量化表达谓词在元素范围内为真的程度。在英文中,词语“all”、“some”、“many”、“none”、“few” 用于量化。我们将在此集中讨论两种类型的量化:全称量化,它告诉我们谓词对所考虑的每个元素都为真;以及存在量化,它告诉我们存在一个或多个所考虑的元素使得谓词为真。处理谓词和量词的逻辑领域称为谓词演算

定义 1 P ( x ) P(x) P(x) 的全称量化是语句
\quad P ( x ) P(x) P(x) 对域中的所有 x x x 值为真。”
符号 ∀ x P ( x ) \forall x P(x) xP(x) 表示 P ( x ) P(x) P(x) 的全称量化。这里 ∀ \forall 称为全称量词。我们将 ∀ x P ( x ) \forall x P(x) xP(x) 读作“对所有 x P ( x ) x P(x) xP(x)”或“对于每个 x P ( x ) x P(x) xP(x)”。使 P ( x ) P(x) P(x) 为假的元素称为 ∀ x P ( x ) \forall x P(x) xP(x) 的反例。

例8 P ( x ) P(x) P(x) 为语句“ x + 1 > x x + 1 > x x+1>x。”当论域包含所有实数时,量化 ∀ x P ( x ) \forall x P(x) xP(x) 的真值是多少?

因为对于所有实数 x x x P ( x ) P(x) P(x) 为真,因此量化 ∀ x P ( x ) \forall x P(x) xP(x) 为真。

一个语句 ∀ x P ( x ) \forall x P(x) xP(x) 为假,当且仅当 P ( x ) P(x) P(x) 是一个命题函数且 P ( x ) P(x) P(x) x x x 属于论域时并不总是真。证明 P ( x ) P(x) P(x) x x x 属于论域时并不总是真的一种方法是找到 ∀ x P ( x ) \forall x P(x) xP(x) 的一个反例。请注意,单个反例就足以证明 ∀ x P ( x ) \forall x P(x) xP(x) 为假。例 9 说明了如何使用反例。

例9 Q ( x ) Q(x) Q(x) 为语句“ x < 2 x < 2 x<2。”当论域包含所有实数时,量化 ∀ x Q ( x ) \forall x Q(x) xQ(x) 的真值是多少?

Q ( x ) Q(x) Q(x) 对于每个实数 x x x 都不成立,例如, Q ( 3 ) Q(3) Q(3) 为假。也就是说, x = 3 x = 3 x=3 ∀ x Q ( x ) \forall x Q(x) xQ(x) 的一个反例。因此, ∀ x Q ( x ) \forall x Q(x) xQ(x) 为假。

例11 如果 N ( x ) N(x) N(x) 是“Computer x x x is connected to the network”,并且论域包含校园内的所有计算机,那么语句 ∀ x N ( x ) \forall x N(x) xN(x) 是什么意思?

语句 ∀ x N ( x ) \forall x N(x) xN(x) 意味着对于校园内的每台计算机 x x x,该计算机 x x x 连接到了网络。这个语句可以用英文表达为 “Every computer on campus is connected to the network”。

存在量词

定义 2 P ( x ) P(x) P(x) 的存在量化是命题
\quad “There exists an element x x x in the domain such that P ( x ) P(x) P(x)。”
我们使用符号 ∃ x P ( x ) \exists x P(x) xP(x) 表示 P ( x ) P(x) P(x) 的存在量化。这里 ∃ \exists 被称为存在量词。

例13 P ( x ) P(x) P(x) 表示语句 “ x > 3 x > 3 x>3。”当论域包含所有实数时,量化 ∃ x P ( x ) \exists x P(x) xP(x) 的真值是多少?

因为 “ x > 3 x > 3 x>3” 有时为真——例如,当 x = 4 x = 4 x=4 时—— P ( x ) P(x) P(x) 的存在量化,即 ∃ x P ( x ) \exists x P(x) xP(x),为真。

例14 Q ( x ) Q(x) Q(x) 表示语句 “ x = x + 1 x = x + 1 x=x+1。”当论域包含所有实数时,量化 ∃ x Q ( x ) \exists x Q(x) xQ(x) 的真值是多少?

因为对于每个实数 x x x Q ( x ) Q(x) Q(x) 都为假, Q ( x ) Q(x) Q(x) 的存在量化,即 ∃ x Q ( x ) \exists x Q(x) xQ(x),为假。

有限域上的量词

当量词的论域是有限的,也就是说,当它的所有元素都可以列出时,可以使用命题逻辑来表达量化语句。特别地,当论域的元素是 x 1 , x 2 , … , x n x_1, x_2, \dots, x_n x1,x2,,xn,其中 n n n 是一个正整数时,全称量化 ∀ x P ( x ) \forall x P(x) xP(x) 等价于合取

P ( x 1 ) ∧ P ( x 2 ) ∧ ⋯ ∧ P ( x n ) , P(x_1) \land P(x_2) \land \dots \land P(x_n), P(x1)P(x2)P(xn),

因为当且仅当 P ( x 1 ) , P ( x 2 ) , … , P ( x n ) P(x_1), P(x_2), \dots, P(x_n) P(x1),P(x2),,P(xn) 全部为真时,这个合取为真。

例15 ∀ x P ( x ) \forall x P(x) xP(x) 的真值是多少,其中 P ( x ) P(x) P(x) 表示语句 “ x 2 < 10 x^2 < 10 x2<10”,并且论域由不超过 4 的正整数组成?

语句 ∀ x P ( x ) \forall x P(x) xP(x) 与合取

P ( 1 ) ∧ P ( 2 ) ∧ P ( 3 ) ∧ P ( 4 ) , P(1) \land P(2) \land P(3) \land P(4), P(1)P(2)P(3)P(4),

相同,因为论域由整数 1、2、3 和 4 组成。由于 P ( 4 ) P(4) P(4),即语句“ 4 2 < 10 4^2 < 10 42<10”为假,得出 ∀ x P ( x ) \forall x P(x) xP(x) 为假。

类似地,当论域的元素是 x 1 , x 2 , … , x n x_1, x_2, \dots, x_n x1,x2,,xn 时,其中 n n n 是正整数, P ( x ) P(x) P(x) 的存在量化 ∃ x P ( x ) \exists x P(x) xP(x) 与析取

P ( x 1 ) ∨ P ( x 2 ) ∨ ⋯ ∨ P ( x n ) , P(x_1) \lor P(x_2) \lor \dots \lor P(x_n), P(x1)P(x2)P(xn),

相同,因为当且仅当 P ( x 1 ) , P ( x 2 ) , … , P ( x n ) P(x_1), P(x_2), \dots, P(x_n) P(x1),P(x2),,P(xn) 中至少有一个为真时,这个析取为真。

例16 ∃ x P ( x ) \exists x P(x) xP(x) 的真值是多少,其中 P ( x ) P(x) P(x) 表示语句 “ x 2 > 10 x^2 > 10 x2>10”,并且论域由不超过 4 的正整数组成?

因为论域是 1 , 2 , 3 , 4 {1, 2, 3, 4} 1,2,3,4,命题 ∃ x P ( x ) \exists x P(x) xP(x) 等价于析取

P ( 1 ) ∨ P ( 2 ) ∨ P ( 3 ) ∨ P ( 4 ) . P(1) \lor P(2) \lor P(3) \lor P(4). P(1)P(2)P(3)P(4).

由于 P ( 4 ) P(4) P(4),即语句 “ 4 2 > 10 4^2 > 10 42>10”,为真,得出 ∃ x P ( x ) \exists x P(x) xP(x) 为真。

量化和循环之间的联系 有时在确定量化的真值时,使用循环和搜索的思路是有帮助的。假设变量 x x x 的论域中有 n n n 个对象。为了确定 ∀ x P ( x ) \forall x P(x) xP(x) 是否为真,我们可以循环遍历 x x x 的全部 n n n 个值,看看 P ( x ) P(x) P(x) 是否始终为真。如果我们遇到一个 P ( x ) P(x) P(x) 为假的值 x x x,那么我们已经证明 ∀ x P ( x ) \forall x P(x) xP(x) 为假。否则, ∀ x P ( x ) \forall x P(x) xP(x) 为真。为了判断 ∃ x P ( x ) \exists x P(x) xP(x) 是否为真,我们循环遍历 x x x n n n 个值,搜索一个使 P ( x ) P(x) P(x) 为真的值。如果我们找到一个这样的 x x x,那么 ∃ x P ( x ) \exists x P(x) xP(x) 为真。如果我们从未找到这样的 x x x,那么我们已经确定 ∃ x P ( x ) \exists x P(x) xP(x) 为假。(请注意,这种搜索程序不适用于论域中有无限多个值的情况。然而,这仍然是思考量化真值的一种有用方式。)

限制论域的量词

一种简化的符号通常用于限制量词的论域。在这种符号中,变量必须满足的条件被包含在量词之后。如例 17 所示,我们还将在 2.1 节描述涉及集合成员关系的其他形式的这种符号。

例17 语句 ∀ x < 0 ( x 2 > 0 ) \forall x < 0 \ (x^2 > 0) x<0 (x2>0) ∀ y ≠ 0 ( y 3 ≠ 0 ) \forall y \neq 0 \ (y^3 \neq 0) y=0 (y3=0) ∃ z > 0 ( z 2 = 2 ) \exists z > 0 \ (z^2 = 2) z>0 (z2=2) 分别是什么意思,其中论域在每种情况下都由实数组成?

解:语句 ∀ x < 0 ( x 2 > 0 ) \forall x < 0 \ (x^2 > 0) x<0 (x2>0) 表示对于每个实数 x x x,其中 x < 0 x < 0 x<0,有 x 2 > 0 x^2 > 0 x2>0。也就是说,它表示 “The square of a negative real number is positive”。这个语句等价于 ∀ x ( x < 0 → x 2 > 0 ) \forall x(x < 0 \to x^2 > 0) x(x<0x2>0)

语句 ∀ y ≠ 0 ( y 3 ≠ 0 ) \forall y \neq 0 \ (y^3 \neq 0) y=0 (y3=0) 表示对于每个实数 y y y,其中 y ≠ 0 y \neq 0 y=0,有 y 3 ≠ 0 y^3 \neq 0 y3=0。也就是说,它表示 “The cube of every nonzero real number is nonzero”。这个语句等价于 ∀ y ( y ≠ 0 → y 3 ≠ 0 ) \forall y(y \neq 0 \to y^3 \neq 0) y(y=0y3=0)

最后,语句 ∃ z > 0 ( z 2 = 2 ) \exists z > 0 \ (z^2 = 2) z>0 (z2=2) 表示存在一个实数 z z z,其中 z > 0 z > 0 z>0 并且 z 2 = 2 z^2 = 2 z2=2。也就是说,它表示 “There is a positive square root of 2”。这个语句等价于 ∃ z ( z > 0 ∧ z 2 = 2 ) \exists z(z > 0 \land z^2 = 2) z(z>0z2=2)

请注意,全称量化的限制与条件语句的全称量化相同。例如, ∀ x < 0 ( x 2 > 0 ) \forall x < 0 \ (x^2 > 0) x<0 (x2>0) 是表达 ∀ x ( x < 0 → x 2 > 0 ) \forall x(x < 0 \to x^2 > 0) x(x<0x2>0) 的另一种方式。另一方面,存在量化的限制与合取的存在量化相同。例如, ∃ z > 0 ( z 2 = 2 ) \exists z > 0 \ (z^2 = 2) z>0 (z2=2) 是表达 ∃ z ( z > 0 ∧ z 2 = 2 ) \exists z(z > 0 \land z^2 = 2) z(z>0z2=2) 的另一种方式。

量词的优先级

量词 ∀ \forall ∃ \exists 的优先级高于命题演算中的所有逻辑运算符。例如, ∀ x P ( x ) ∨ Q ( x ) \forall x P(x) \lor Q(x) xP(x)Q(x) ∀ x P ( x ) \forall x P(x) xP(x) Q ( x ) Q(x) Q(x) 的析取。换句话说,它表示 ( ∀ x P ( x ) ) ∨ Q ( x ) (\forall x P(x)) \lor Q(x) (xP(x))Q(x),而不是 ∀ x ( P ( x ) ∨ Q ( x ) ) \forall x (P(x) \lor Q(x)) x(P(x)Q(x))

绑定变量

当一个量词作用于变量 x x x 时,我们说该变量的这个出现是绑定的。如果变量的某个出现没有被量词绑定或没有被赋值为特定值,那么这个变量被称为自由的。所有在命题函数中出现的变量必须被绑定或被赋值为特定值,才能将它变为命题。这可以通过使用全称量词、存在量词和赋值的组合来完成。

一个逻辑表达式中应用量词的部分称为该量词的范围。因此,如果一个变量位于该公式中所有量词的作用范围之外,它就是自由的。

例18 在语句 ∃ x ( x + y = 1 ) \exists x(x + y = 1) x(x+y=1) 中,变量 x x x 被存在量词 ∃ x \exists x x 绑定,但变量 y y y 是自由的,因为它没有被量词绑定,也没有被赋值给这个变量。这说明了在语句 ∃ x ( x + y = 1 ) \exists x(x + y = 1) x(x+y=1) 中, x x x 是绑定的,但 y y y 是自由的。

在语句 ∃ x ( P ( x ) ∧ Q ( x ) ) ∨ ∀ x R ( x ) \exists x(P(x) \land Q(x)) \lor \forall x R(x) x(P(x)Q(x))xR(x) 中,所有变量都是绑定的。第一个量词 ∃ x \exists x x 的作用范围是表达式 P ( x ) ∧ Q ( x ) P(x) \land Q(x) P(x)Q(x),因为 ∃ x \exists x x 仅作用于 P ( x ) ∧ Q ( x ) P(x) \land Q(x) P(x)Q(x),而不作用于语句的其余部分。同样地,第二个量词 ∀ x \forall x x 的作用范围是表达式 R ( x ) R(x) R(x)。也就是说,存在量词 ∃ \exists 绑定了 P ( x ) ∧ Q ( x ) P(x) \land Q(x) P(x)Q(x) 中的变量 x x x,而全称量词 ∀ x \forall x x 绑定了 R ( x ) R(x) R(x) 中的变量 x x x。请注意,我们可以将语句写成两个不同的变量 x x x y y y,如 ∃ x ( P ( x ) ∧ Q ( x ) ) ∨ ∀ y R ( y ) \exists x(P(x) \land Q(x)) \lor \forall y R(y) x(P(x)Q(x))yR(y),因为两个量词的作用范围不重叠。读者应该意识到,在常用表达中,同一个字母通常用于表示由不同量词绑定且作用范围不重叠的变量。

涉及量词的逻辑等价

在 1.3 节中,我们介绍了复合命题的逻辑等价的概念。我们可以将这一概念扩展到涉及谓词和量词的表达式。

定义 3 涉及谓词和量词的语句在无论用何谓词替换这些语句并且对这些命题函数中的变量使用何论域的情况下,都具有相同的真值,当且仅当如此时,它们是逻辑等价的。我们使用符号 S ≡ T S \equiv T ST 来表示两个涉及谓词和量词的语句 S S S T T T 是逻辑等价的。

例 19 说明了如何证明两个涉及谓词和量词的语句是逻辑等价的。

例19 证明 ∀ x ( P ( x ) ∧ Q ( x ) ) \forall x (P(x) \land Q(x)) x(P(x)Q(x)) ∀ x P ( x ) ∧ ∀ x Q ( x ) \forall x P(x) \land \forall x Q(x) xP(x)xQ(x) 是逻辑等价的(其中始终使用相同的论域)。这种逻辑等价表明我们可以将全称量词分配到合取中。此外,我们还可以将存在量词分配到析取中。然而,我们不能将全称量词分配到析取中,也不能将存在量词分配到合取中。(见练习 52 和 53。)

为了证明这些语句是逻辑等价的,我们必须证明它们在任何情况下都具有相同的真值,无论谓词 P P P Q Q Q 是什么,也无论使用何种论域。假设我们有特定的谓词 P P P Q Q Q,它们有一个共同的论域。我们可以通过两种方式证明 ∀ x ( P ( x ) ∧ Q ( x ) ) \forall x (P(x) \land Q(x)) x(P(x)Q(x)) ∀ x P ( x ) ∧ ∀ x Q ( x ) \forall x P(x) \land \forall x Q(x) xP(x)xQ(x) 是逻辑等价的。首先,我们证明如果 ∀ x ( P ( x ) ∧ Q ( x ) ) \forall x (P(x) \land Q(x)) x(P(x)Q(x)) 为真,那么 ∀ x P ( x ) ∧ ∀ x Q ( x ) \forall x P(x) \land \forall x Q(x) xP(x)xQ(x) 也为真。其次,我们证明如果 ∀ x P ( x ) ∧ ∀ x Q ( x ) \forall x P(x) \land \forall x Q(x) xP(x)xQ(x) 为真,那么 ∀ x ( P ( x ) ∧ Q ( x ) ) \forall x (P(x) \land Q(x)) x(P(x)Q(x)) 也为真。

首先,假设 ∀ x ( P ( x ) ∧ Q ( x ) ) \forall x (P(x) \land Q(x)) x(P(x)Q(x)) 为真。这意味着如果 a a a 在论域中,那么 P ( a ) ∧ Q ( a ) P(a) \land Q(a) P(a)Q(a) 为真。因此, P ( a ) P(a) P(a) 为真并且 Q ( a ) Q(a) Q(a) 也为真。因为 P ( a ) P(a) P(a) Q ( a ) Q(a) Q(a) 对论域中的每个元素 a a a 都为真,所以我们可以得出 ∀ x P ( x ) \forall x P(x) xP(x) ∀ x Q ( x ) \forall x Q(x) xQ(x) 都为真。这意味着 ∀ x P ( x ) ∧ ∀ x Q ( x ) \forall x P(x) \land \forall x Q(x) xP(x)xQ(x) 为真。

接下来,假设 ∀ x P ( x ) ∧ ∀ x Q ( x ) \forall x P(x) \land \forall x Q(x) xP(x)xQ(x) 为真。因此,如果 a a a 在论域中,那么 P ( a ) P(a) P(a) 为真并且 Q ( a ) Q(a) Q(a) 也为真(因为对于论域中的所有元素 P ( x ) P(x) P(x) Q ( x ) Q(x) Q(x) 都为真,在这里使用相同的 a a a 值没有冲突)。因此,所有 a a a 都满足 P ( a ) ∧ Q ( a ) P(a) \land Q(a) P(a)Q(a) 为真。由此可得 ∀ x ( P ( x ) ∧ Q ( x ) ) \forall x (P(x) \land Q(x)) x(P(x)Q(x)) 为真。我们现在可以得出结论:

∀ x ( P ( x ) ∧ Q ( x ) ) ≡ ∀ x P ( x ) ∧ ∀ x Q ( x ) \forall x (P(x) \land Q(x)) \equiv \forall x P(x) \land \forall x Q(x) x(P(x)Q(x))xP(x)xQ(x)

否定量化表达式

在这里插入图片描述

例20 语句“There is an honest politician”和“All Americans eat cheeseburgers”的否定是什么?

H ( x ) H(x) H(x) 表示“ x x x 是诚实的。”那么语句“There is an honest politician”表示为 ∃ x H ( x ) \exists x H(x) xH(x),其中论域由所有政客组成。这个语句的否定是 ¬ ∃ x H ( x ) \neg \exists x H(x) ¬∃xH(x),这等价于 ∀ x ¬ H ( x ) \forall x \neg H(x) x¬H(x)。这个否定可以表达为 “Every politician is dishonest”。(注意:在英文中,语句 “All politicians are not honest” 是模棱两可的。在日常用法中,这个语句通常意味着 “Not all politicians are honest”。因此,我们不会用这个语句来表达这个否定。)

C ( x ) C(x) C(x) 表示“ x x x 吃芝士汉堡。”那么语句“All Americans eat cheeseburgers”表示为 ∀ x C ( x ) \forall x C(x) xC(x),其中论域由所有美国人组成。这个语句的否定是 ¬ ∀ x C ( x ) \neg \forall x C(x) ¬∀xC(x),这等价于 ∃ x ¬ C ( x ) \exists x \neg C(x) x¬C(x)。这个否定可以通过几种不同的方式表达,包括 “Some American does not eat cheeseburgers” 和 “There is an American who does not eat cheeseburgers”。

例21 语句 ∀ x ( x 2 > x ) \forall x (x^2 > x) x(x2>x) ∃ x ( x 2 = 2 ) \exists x (x^2 = 2) x(x2=2) 的否定是什么?

∀ x ( x 2 > x ) \forall x (x^2 > x) x(x2>x) 的否定是语句 ¬ ∀ x ( x 2 > x ) \neg \forall x (x^2 > x) ¬∀x(x2>x),这等价于 ∃ x ¬ ( x 2 > x ) \exists x \neg (x^2 > x) x¬(x2>x)。这可以改写为 ∃ x ( x 2 ≤ x ) \exists x (x^2 \leq x) x(x2x) ∃ x ( x 2 = 2 ) \exists x (x^2 = 2) x(x2=2) 的否定是语句 ¬ ∃ x ( x 2 = 2 ) \neg \exists x (x^2 = 2) ¬∃x(x2=2),这等价于 ∀ x ¬ ( x 2 = 2 ) \forall x \neg (x^2 = 2) x¬(x2=2)。这可以改写为 ∀ x ( x 2 ≠ 2 ) \forall x (x^2 \neq 2) x(x2=2)。这些语句的真值取决于论域。

我们在例 22 中使用了量词的德摩根律。

例22 证明 ¬ ∀ x ( P ( x ) → Q ( x ) ) \neg \forall x (P(x) \to Q(x)) ¬∀x(P(x)Q(x)) ∃ x ( P ( x ) ∧ ¬ Q ( x ) ) \exists x (P(x) \land \neg Q(x)) x(P(x)¬Q(x)) 是逻辑等价的。

根据全称量词的德摩根律,我们知道 ¬ ∀ x ( P ( x ) → Q ( x ) ) \neg \forall x (P(x) \to Q(x)) ¬∀x(P(x)Q(x)) ∃ x ( ¬ ( P ( x ) → Q ( x ) ) ) \exists x (\neg (P(x) \to Q(x))) x(¬(P(x)Q(x))) 是逻辑等价的。根据 1.3 节的第五逻辑等价表,我们知道 ¬ ( P ( x ) → Q ( x ) ) \neg (P(x) \to Q(x)) ¬(P(x)Q(x)) P ( x ) ∧ ¬ Q ( x ) P(x) \land \neg Q(x) P(x)¬Q(x) 对每个 x x x 来说是逻辑等价的。因为我们可以在逻辑等价的公式中替换一个逻辑等价的表达式,因此得出 ¬ ∀ x ( P ( x ) → Q ( x ) ) \neg \forall x (P(x) \to Q(x)) ¬∀x(P(x)Q(x)) ∃ x ( P ( x ) ∧ ¬ Q ( x ) ) \exists x (P(x) \land \neg Q(x)) x(P(x)¬Q(x)) 是逻辑等价的。

将英文翻译为逻辑表达式

例23 用谓词和量词表达 “Every student in this class has studied calculus” 这个语句。

首先,我们重写这个语句,以便能够清楚地识别适当的量词。这样做,我们得到:

“For every student in this class, that student has studied calculus.”

接下来,我们引入一个变量 x x x,使我们的语句变为:

“For every student x x x in this class, x x x has studied calculus.”

继续,我们引入 C ( x ) C(x) C(x),表示语句“ x x x 已经学习了微积分。”因此,如果 x x x 的论域由班上的学生组成,我们可以将这个语句翻译为 ∀ x C ( x ) \forall x C(x) xC(x)

然而,还有其他正确的方法;不同的论域和其他谓词可以使用。我们选择的方法取决于我们想要进行的后续推理。例如,我们可能对比这个班级以外的更广泛的人群感兴趣。如果我们将论域更改为由所有人组成,我们需要将我们的语句表达为:

“For every person x x x, if person x x x is a student in this class, then x x x has studied calculus.”

如果 S ( x ) S(x) S(x) 表示语句“人 x x x 是这个班级的学生”,我们看到可以将我们的语句表示为 ∀ x ( S ( x ) → C ( x ) ) \forall x (S(x) \to C(x)) x(S(x)C(x))。【注意!我们的语句不能表示为 ∀ x ( S ( x ) ∧ C ( x ) ) \forall x (S(x) \land C(x)) x(S(x)C(x)),因为这个语句表示所有人都是这个班的学生并且都学习了微积分!】

最后,当我们对除微积分以外的学科中的人群背景感兴趣时,我们可能更喜欢使用双变量量词 Q ( x , y ) Q(x, y) Q(x,y) 来表示语句“学生 x x x 学习了科目 y y y”。然后,我们将 C ( x ) C(x) C(x) 替换为 Q ( x , calculus ) Q(x, \text{calculus}) Q(x,calculus),以两种方法中的任何一种来获得 ∀ x Q ( x , calculus ) \forall x Q(x, \text{calculus}) xQ(x,calculus) ∀ x ( S ( x ) → Q ( x , calculus ) ) \forall x (S(x) \to Q(x, \text{calculus})) x(S(x)Q(x,calculus))

例24 用谓词和量词表达语句 “Some student in this class has visited Mexico” 和 “Every student in this class has visited either Canada or Mexico”。

语句 “Some student in this class has visited Mexico” 的意思是:

“There is a student in this class with the property that the student has visited Mexico.”

我们可以引入一个变量 x x x,使我们的语句变为:

“There is a student x x x in this class having the property that x x x has visited Mexico.”

我们引入 M ( x ) M(x) M(x),表示语句“ x x x 已经去过墨西哥。”如果 x x x 的论域由班上的学生组成,我们可以将这个第一个语句翻译为 ∃ x M ( x ) \exists x M(x) xM(x)

然而,如果我们对班级以外的人感兴趣,我们以不同的方式看待这个语句。我们的语句可以表示为:

“There is a person x x x having the properties that x x x is a student in this class and x x x has visited Mexico.”

在这种情况下,变量 x x x 的论域由所有人组成。我们引入 S ( x ) S(x) S(x) 表示“ x x x 是这个班级的学生。”我们的解法变为 ∃ x ( S ( x ) ∧ M ( x ) ) \exists x (S(x) \land M(x)) x(S(x)M(x)),因为语句是说存在一个人 x x x 是这个班级的学生并且已经去过墨西哥。【注意!我们的语句不能表示为 ∃ x ( S ( x ) → M ( x ) ) \exists x (S(x) \to M(x)) x(S(x)M(x)),因为当 x x x 不在班级中时, S ( x ) → M ( x ) S(x) \to M(x) S(x)M(x) 成为 F → T F \to T FT F → F F \to F FF,两者都为真。】

同样地,第二个语句可以表示为:

“For every x x x in this class, x x x has the property that x x x has visited Mexico or x x x has visited Canada.”

(注意:我们假设是包含性的“或”,而不是排他性的“或”。)我们让 C ( x ) C(x) C(x) 表示“ x x x 已经去过加拿大。”根据我们之前的推理,我们看到如果 x x x 的论域由班级中的学生组成,第二个语句可以表示为 ∀ x ( C ( x ) ∨ M ( x ) ) \forall x (C(x) \lor M(x)) x(C(x)M(x))。然而,如果 x x x 的论域由所有人组成,我们的语句可以表示为:

“For every person x x x, if x x x is a student in this class, then x x x has visited Mexico or x x x has visited Canada.”

在这种情况下,语句可以表示为 ∀ x ( S ( x ) → ( C ( x ) ∨ M ( x ) ) ) \forall x (S(x) \to (C(x) \lor M(x))) x(S(x)(C(x)M(x)))

我们可以使用两个变量的谓词 V ( x , y ) V(x, y) V(x,y) 来表示“ x x x 已经去过国家 y y y”,代替使用 M ( x ) M(x) M(x) C ( x ) C(x) C(x) 来表示 x x x 已经去过墨西哥和 x x x 已经去过加拿大。这样, V ( x , Mexico ) V(x, \text{Mexico}) V(x,Mexico) V ( x , Canada ) V(x, \text{Canada}) V(x,Canada) 将具有与 M ( x ) M(x) M(x) C ( x ) C(x) C(x) 相同的含义,并且可以在我们的答案中替换它们。如果我们在处理涉及不同国家的人时工作,我们可能更喜欢使用这种双变量的方法。然而,为了简洁起见,我们将继续使用单变量谓词 M ( x ) M(x) M(x) C ( x ) C(x) C(x)

在系统规格说明中使用量词

在 1.2 节中,我们使用命题来表示系统规格说明。然而,许多系统规格说明涉及谓词和量词。例 25 说明了这一点。

使用谓词和量词来表达系统规格说明 “Every mail message larger than one megabyte will be compressed” 和 “If a user is active, at least one network link will be available”。

S ( m , y ) S(m, y) S(m,y) 为 “Mail message m m m is larger than y y y megabytes”,其中变量 x x x 的论域为所有邮件,并且变量 y y y 是一个正实数,设 C ( m ) C(m) C(m) 表示 “Mail message m m m will be compressed”。那么规格说明 “Every mail message larger than one megabyte will be compressed” 可以表示为 ∀ m ( S ( m , 1 ) → C ( m ) ) \forall m (S(m, 1) \to C(m)) m(S(m,1)C(m))

A ( u ) A(u) A(u) 表示 “User u u u is active”,其中变量 u u u 的论域为所有用户,设 S ( n , x ) S(n, x) S(n,x) 表示 “Network link n n n is in state x x x”,其中 n n n 的论域为所有网络链接,并且 x x x 的论域为网络链接的所有可能状态。那么规格说明 “If a user is active, at least one network link will be available” 可以表示为 ∃ u A ( u ) → ∃ n S ( n , available ) \exists u A(u) \to \exists n S(n, \text{available}) uA(u)nS(n,available)

来自路易斯·卡罗尔的例子

路易斯·卡罗尔(实际上是以笔名写作的 C. L. Dodgson),爱丽丝梦游仙境 的作者,也是几部关于符号逻辑的作品的作者。他的书包含许多使用量词的推理例子。例 26 和 例 27 来自他的书 符号逻辑;该书中的其他例子可以在本节末尾的练习中找到。这些例子展示了如何使用量词来表达各种类型的语句。

例26 考虑这些语句。前两个被称为前提,第三个被称为结论。整个集合被称为一个论证。

•	“All lions are fierce.”
•	“Some lions do not drink coffee.”
•	“Some fierce creatures do not drink coffee.”

(在 1.6 节中,我们将讨论结论是否是前提的有效结果。在这个例子中,它是。)设 P ( x ) , Q ( x ) , R ( x ) P(x), Q(x), R(x) P(x),Q(x),R(x) 分别为语句 “ x x x is a lion”, “ x x x is fierce”,以及 “ x x x drinks coffee。”假设论域由所有生物组成,用量词以及 P ( x ) , Q ( x ) , R ( x ) P(x), Q(x), R(x) P(x),Q(x),R(x) 表达这些语句。

我们可以将这些语句表达为:

∀ x ( P ( x ) → Q ( x ) ) . \forall x (P(x) \to Q(x)). x(P(x)Q(x)).

∃ x ( P ( x ) ∧ ¬ R ( x ) ) . \exists x (P(x) \land \neg R(x)). x(P(x)¬R(x)).

∃ x ( Q ( x ) ∧ ¬ R ( x ) ) . \exists x (Q(x) \land \neg R(x)). x(Q(x)¬R(x)).

注意,第二个语句不能表示为 ∃ x ( P ( x ) → ¬ R ( x ) ) \exists x (P(x) \to \neg R(x)) x(P(x)¬R(x))。原因是 P ( x ) → ¬ R ( x ) P(x) \to \neg R(x) P(x)¬R(x) x x x 不是狮子时总为真,因此 ∃ x ( P ( x ) → ¬ R ( x ) ) \exists x (P(x) \to \neg R(x)) x(P(x)¬R(x)) 只要存在一个生物不是狮子就为真,即使每只狮子都喝咖啡。同样,第三个语句也不能表示为 ∃ x ( Q ( x ) → ¬ R ( x ) ) \exists x (Q(x) \to \neg R(x)) x(Q(x)¬R(x))

例27 考虑这些语句,前三个是前提,第四个是一个有效的结论。

•	“All hummingbirds are richly colored.”
•	“No large birds live on honey.”
•	“Birds that do not live on honey are dull in color.”
•	“Hummingbirds are small.”

P ( x ) , Q ( x ) , R ( x ) , S ( x ) P(x), Q(x), R(x), S(x) P(x),Q(x),R(x),S(x) 分别为语句 “x is a hummingbird,” “x is large,” “x lives on honey,” 和 “x is richly colored.” 假设论域由所有鸟类组成,用量词以及 P ( x ) , Q ( x ) , R ( x ) , S ( x ) P(x), Q(x), R(x), S(x) P(x),Q(x),R(x),S(x) 来表达论证中的这些语句。

解:我们可以将论证中的语句表达为:

∀ x ( P ( x ) → S ( x ) ) . \forall x (P(x) \to S(x)). x(P(x)S(x)).

¬ ∃ x ( Q ( x ) ∧ R ( x ) ) . \neg \exists x (Q(x) \land R(x)). ¬∃x(Q(x)R(x)).

∀ x ( ¬ R ( x ) → ¬ S ( x ) ) . \forall x (\neg R(x) \to \neg S(x)). x(¬R(x)¬S(x)).

∀ x ( P ( x ) → ¬ Q ( x ) ) . \forall x (P(x) \to \neg Q(x)). x(P(x)¬Q(x)).

(注意,我们假设 “small” 与 “not large” 相同,并且 “dull in color” 与 “not richly colored” 相同。)要证明第四个语句是前三个语句的有效结论,我们需要使用 1.6 节中讨论的推理规则。

逻辑编程

一种重要类型的编程语言是为使用谓词逻辑规则进行推理而设计的。Prolog(源自Programming in Logic),由从事人工智能领域的计算机科学家于20世纪70年代开发,是此类语言的一个例子。Prolog 程序包括由两种语句组成的一组声明,Prolog facts 和 Prolog rules。Prolog facts 通过指定满足这些谓词的元素来定义谓词。Prolog rules 用于使用 Prolog facts 已经定义的谓词来定义新的谓词。例 28 说明了这些概念。

例28 考虑一个 Prolog 程序,该程序包含一些事实,告诉它每门课的老师和学生注册了哪些课程。该程序使用这些事实来回答有关教授哪些学生的查询。这样的程序可以使用谓词 instructor(p, c) 和 enrolled(s, c) 来表示教授 p p p 是课程 c c c 的授课教师,并且学生 s s s 注册了课程 c c c。例如,Prolog 程序中的事实可能包括:

instructor(chan, math273)
instructor(patel, ee222)
instructor(grossman, cs301)
enrolled(kevin, math273)
enrolled(juana, ee222)
enrolled(juana, cs301)
enrolled(kiko, math273)
enrolled(kiko, cs301)

(使用小写字母表示条目,因为 Prolog 将以大写字母开头的名称视为变量。)

一个新的谓词 teaches(p, s),表示教授 p p p 教授学生 s s s,可以通过 Prolog 规则定义为:

teaches(P, S) :- instructor(P, C), enrolled(S, C)

这意味着 teaches(p, s) 为真,当且仅当存在课程 c c c 使得教授 p p p 是课程 c c c 的授课教师,且学生 s s s 注册了课程 c c c。(注意,逗号用于表示 Prolog 中谓词的连接;分号用于表示谓词的析取。)

Prolog 使用给定的事实和规则来回答查询。例如,使用列出的事实和规则,查询

?enrolled(kevin, math273)

会产生响应

yes

因为 enrolled(kevin, math273) 作为输入提供的事实。

查询

?enrolled(X, math273)

会产生响应

kevin
kiko

为了生成这个响应,Prolog 确定了所有可能的 X X X 值,使得 enrolled(X, math273) 作为 Prolog 事实被包括在内。同样,为了找到教授 Juana 所注册课程的所有教授,我们使用查询:

?teaches(X, juana)

这个查询返回

patel
grossman

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/450776.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安装CentOS 8镜像和创建CentOS 8虚拟机教程

一、安装虚拟机 网上查找教程&#xff0c;我用的是VMware 17 二、下载CentOS 8镜像 1.阿里云下载CentOS 8镜像 centos安装包下载_开源镜像站-阿里云 (aliyun.com) 选择需要下载的版本&#xff0c;(建议)下载dvd1版本的iso&#xff08;也有下载boot版本的iso&#xff0c;创…

【进阶OpenCV】 (18)-- Dlib库 --人脸关键点定位

文章目录 人脸关键点定位一、作用二、原理三、代码实现1. 构造人脸检测器2. 载入模型&#xff08;加载预测器&#xff09;3. 获取关键点4. 显示图像5. 完整代码 总结 人脸关键点定位 在dlib库中&#xff0c;有shape_predictor_68_face_landmarks.dat预测器&#xff0c;这是一个…

【汇编语言】寄存器(内存访问)(二)—— DS和[address]

前言 &#x1f4cc; 汇编语言是很多相关课程&#xff08;如数据结构、操作系统、微机原理&#xff09;的重要基础。但仅仅从课程的角度出发就太片面了&#xff0c;其实学习汇编语言可以深入理解计算机底层工作原理&#xff0c;提升代码效率&#xff0c;尤其在嵌入式系统和性能优…

day46|72. 编辑距离647. 回文子串516.最长回文子序列 5 最长回文子串

文章目录 前言72. 编辑距离思路方法一647. 回文子串思路方法一方法二516.最长回文子序列思路方法一5 最长回文子串总结前言 72. 编辑距离 思路 总体思路:dp定义直接为操作数,递推公式分情况讨论,如果两个元素相等,那操作数不变;如果不相等,那么操作数就会改变–三种情况…

免费证件照app哪个好?哪个效果比较好?

在日常生活中&#xff0c;证件照的需求无处不在&#xff0c;尤其是在求职、签证和考试等场合。 许多人可能会觉得制作证件照需要花费不少费用&#xff0c;但其实市场上有许多免费的证件照制作软件&#xff0c;能够轻松满足你的需求。 这些软件不仅操作简单&#xff0c;更具备…

如何在word里面给文字加拼音?

如何在word里面给文字加拼音&#xff1f;在现代社会&#xff0c;阅读已经成为了我们日常生活中不可或缺的一部分。尤其是在学习汉语的过程中&#xff0c;拼音的帮助显得尤为重要。为了帮助大家更好地理解和掌握汉字的发音&#xff0c;许多教师和学生都希望能够在Word文档中为文…

什么是网络代理

了解网络代理 网络代理是一种特殊的网络服务&#xff0c;它允许一个网络终端&#xff08;通常指客户端&#xff09;通过这个服务与另一个网络终端&#xff08;通常指服务器&#xff09;进行非直接的连接。网络代理服务器位于发送主机和接收主机之间&#xff0c;接收网络请求&a…

使用人体关键点驱动FBX格式虚拟人原理【详解】

文章目录 1、使用人体关键点数据驱动FBX格式虚拟人的总流程2、使用mediapipe检测人体关键点和插值平滑2.1 mediapipe检测人体关键点2.2 人体关键点的插值平滑 3、将2d关键点转为3d关键点4、旋转矩阵4.1 旋转矩阵4.2 旋转矩阵转为四元数 5、将旋转矩阵用于虚拟人的驱动5.1 基础旋…

高分SCI发文利器!植物脂质代谢数据库——CLAIR

脂质是全球重要的大宗商品和工业原料。世界上消耗的24种脂质中&#xff0c;大部分来自植物。全面了解不同油料作物中与脂质生物合成相关的基因和机制&#xff0c;对于通过分子生物学和育种来提高这些作物的含油性状至关重要。 2024年2月&#xff0c;Plant Communications在线发…

台积电Q3业绩猛增,市值破万亿美元!

KlipC报道&#xff1a;全球晶圆代工龙头台积电发布第三季度财报&#xff0c;财报显示&#xff0c;三季度营收7596.9亿新台币&#xff08;约235亿美元&#xff09;&#xff0c;同比增长39%&#xff0c;市场预期7421.66亿元新台币&#xff1b;净利润达到3252.58亿新台币&#xff…

【可答疑】基于51单片机的智能衣柜(含仿真、代码、报告、演示视频等)

✨哈喽大家好&#xff0c;这里是每天一杯冰美式oh&#xff0c;985电子本硕&#xff0c;大厂嵌入式在职0.3年&#xff0c;业余时间做做单片机小项目&#xff0c;有需要也可以提供就业指导&#xff08;免费&#xff09;~ &#x1f431;‍&#x1f409;这是51单片机毕业设计100篇…

云计算第四阶段: cloud二周目 07-08

cloud 07 一、k8s服务管理 创建服务 # 资源清单文件 [rootmaster ~]# kubectl create service clusterip websvc --tcp80:80 --dry-runclient -o yaml [rootmaster ~]# vim websvc.yaml --- kind: Service apiVersion: v1 metadata:name: websvc spec:type: ClusterIPselector…

汽车建模用什么软件最好?汽车建模渲染建议!

在汽车建模和渲染领域&#xff0c;选择合适的软件对于实现精确的设计与高质量的视觉效果至关重要。那么不少的汽车设计师如何选择合适的建模软件与渲染方案呢&#xff0c;一起来简单看看吧&#xff01; 一、汽车建模用软件推荐 1、Alias Autodesk旗下的Alias系列软件是汽车设…

数据结构实验十二 图的遍历及应用

数据结构实验十二 图的遍历及应用 一、【实验目的】 1、 理解图的存储结构与基本操作&#xff1b; 2、熟悉图的深度度优先遍历和广度优先遍历算法 3、掌握图的单源最短路径算法 二、【实验内容】 1.根据下图&#xff08;图见实验11&#xff09;邻接矩阵&#xff0c;编程实…

刚刚,ChatGPT推出Windows客户端!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…

C# + SQLiteExpert 进行(cipher)加密数据库开发+Costura.Fody 清爽发布

一&#xff1a;让 SQLiteExpert 支持&#xff08;cipher&#xff09;加密数据库 SQLiteExpert 作为SQlite 的管理工具&#xff0c;默认不支持加密数据库的&#xff0c;使其成为支持&#xff08;cipher&#xff09;加密数据库的管理工具&#xff0c;需要添加e_sqlcipher.dll &…

1997-2022年各省农作物总播种面积数据(无缺失)

1997-2022年各省农作物总播种面积数据 1、时间&#xff1a;1997-2022年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;农作物总播种面积(千公顷) 4、范围&#xff1a;31省 5、缺失情况&#xff1a;无缺失 6、指标解释&#xff1a;农作物播种面积指农业生…

PCL 点云配准-改进的RANSAC算法(粗配准)

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 计算FPFH特征 2.1.2 RANSAC配准 2.1.3 可视化点云 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; PCL点云算法与项目实战案例汇总&#xff0…

基于SSM高校课程评价的设计

教师账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;指标信息管理&#xff0c;课程信息管理&#xff0c;教师自评管理 学生账号功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;课程信息管理&#xff0c;学生评价管理 开发系统&#xff1a;…

不坑盒子在哪儿下载?

不坑盒子是一款Office办公软件的插件&#xff0c;支持MicroSoft Office和WPS的三件套&#xff08;Word、Excel、PPT&#xff09;。 可以为你的Office软件增加数百个实用功能&#xff0c;比如&#xff1a;自动排版、智能写作、仿手写、全文加拼音、稿子模板、一键删除、数据分发…