【计算复杂性理论】证明复杂性(九):命题鸽巢原理的指数级归结下界——更简短的证明

news2024/11/16 13:41:59

往期文章:

  • 【计算复杂性理论】证明复杂性(Proof Complexity)(一):简介
  • 【计算复杂性理论】证明复杂性(二):归结(Resolution)与扩展归结(Extended Resolution)证明系统
  • 【计算复杂性理论】证明复杂性(三):弗雷格(Frege)与扩展弗雷格(Extended Frege)证明系统
  • 【计算复杂性理论】证明复杂性(四):相继式演算(Sequent Calculus)
  • 【计算复杂性理论】证明复杂性(五):量化命题演算(Quantified Propositional Calculus)
  • 【计算复杂性理论】证明复杂性(六):其他证明系统简介
  • 【计算复杂性理论】证明复杂性(七):有界算术(Bounded Arithmetic)与IΔ₀理论
  • 【计算复杂性理论】证明复杂性(八):命题鸽巢原理(Propositional Pigeonhole Principle)的指数级归结下界

文章目录

  • 一、整体框架
  • 二、宽子句消除
    • 1. 关键赋值(Critical Truth Assignments)、关于关键赋值的等价性和可靠性
    • 2. 消去否定连接词
    • 3. 宽子句的定义
    • 4. 消除宽子句
  • 三、宽度下界
  • 四、总结
  • 五、可以不消去否定连接词吗?
  • 六、关于深度受限弗雷格系统的指数级下界

看完上期文章的小伙伴们恐怕都觉得:这么长的证明,谁能看懂啊?确实,那篇文章是证明这个下界的第一篇文章,其方法的确很繁杂。不过,这个问题有很简短(其实可能也不算简短,但比上一个要简短的)的证明。这个证明出自Paul Beame和Toniann Pitassi 1996年的论文Simplified and Improved Resolution Lower Bounds,他也被收录进了《计算复杂性:现代方法》中。它给出的证明步数下界, Ω ( 2 n 20 ) \Omega\left(2^{\frac{n}{20}}\right) Ω(220n),比Haken的论文还要好。

对于鸽巢原理等术语的定义,请参阅往期文章。

一、整体框架

首先我们定义一个概念:关键赋值(和上期文章的定义一样),就是舍弃一只鸽子、为其他所有鸽子安排好住处的赋值。还是一样,设 n n n为鸽子的个数, n − 1 n-1 n1为巢的个数,共有 n ( n − 1 ) n(n-1) n(n1)个变量,关键赋值使得其中 n − 1 n-1 n1个变量为 1 1 1,其余变量都为 0 0 0。我们将会在关键赋值上讨论问题。

我们将会重点关系证明的宽度,也就是证明中一个子句最多包含了多少个文字。对于一个证明,我们想办法把它的宽子句都消除,具体方法是找到一个能消除宽子句最多的文字使其赋值为 1 1 1,就可以成比例地消除宽子句,消除之多 O ( log ⁡ S ) O(\log S) O(logS)次后就没有宽子句了( S S S是证明的步数,它大于等于宽子句的个数)。如果 S S S很小的话,消除的步数很少, n n n就没有消掉多少,只消了一部分,这样我们最后就得到了一个对 P H P n ′ n ′ − 1 \mathrm{PHP}_{n'}^{n'-1} PHPnn1的窄证明( n ′ n' n是消除了这么多次之后还剩多少个鸽子)。随后我们还会论证,窄证明根本证明不了 P H P n ′ n ′ − 1 \mathrm{PHP}_{n'}^{n'-1} PHPnn1,产生矛盾,这就说明宽子句有指数个,进而说明 S S S是指数级的。

接下来我们会严谨的论述上面的证明过程。

二、宽子句消除

首先我们明确一下我们有 n ( n − 1 ) n(n-1) n(n1)个变量 P i j   ( i = 1 , 2 , ⋯   , n ; j = 1 , 2 , ⋯   , n − 1 ) P_{ij}\ (i=1,2,\cdots,n;j=1,2,\cdots,n-1) Pij (i=1,2,,n;j=1,2,,n1),表示是否给第 i i i个鸽子安排第 j j j个巢。

1. 关键赋值(Critical Truth Assignments)、关于关键赋值的等价性和可靠性

一个对 { P i j ∣ i = 1 , 2 , ⋯   , n ; j = 1 , 2 , ⋯   , n − 1 } \{P_{ij}|i=1,2,\cdots,n;j=1,2,\cdots,n-1\} {Piji=1,2,,n;j=1,2,,n1}的赋值是关键赋值,就是说它定义了 n − 1 n-1 n1只鸽子到 n − 1 n-1 n1个巢的一一映射。

如图,这种分配方式就是一个关键赋值,其中变量 P 12 , P 31 , P 43 P_{12},P_{31},P_{43} P12,P31,P43为真,其余变量为假。在一个关键赋值中,如果第 i i i只鸽子是无家可归的,我们就称它是一个“落下 i i i的赋值”(原文是i-critical,不过我这里翻译得更形象了一些)

我们接下来的语境都是在关键赋值上说的。我们定义两个子句 c 1 , c 2 c_1,c_2 c1,c2关于关键赋值等价为:对于任何关键赋值 α \alpha α c 1 c_1 c1 α \alpha α上的值都等于 c 2 c_2 c2 α \alpha α上的值。两个并不完全等价的子句可能关于关键赋值等价。同样,我们还有推理关于关键赋值可靠的定义:两个子句 c 1 , c 2 c_1,c_2 c1,c2推出 c 3 c_3 c3的这步推理关于关键赋值可靠,就是说对于每个使 c 1 = c 2 = 1 c_1=c_2=1 c1=c2=1的关键赋值也使 c 3 = 1 c_3=1 c3=1

2. 消去否定连接词

接下来我们会利用关于关键赋值等价这个概念。我们知道, P H P n n − 1 \mathrm{PHP}_n^{n-1} PHPnn1里含有很多形如 ¬ P i k ∨ ¬ P j k \neg P_{ik}\lor\neg P_{jk} ¬Pik¬Pjk的子句,我们想把 ¬ \neg ¬消掉(这一步不是关键步骤,不过会使我们的证明更简洁)。我们接下来证明这样一个事实:

引理1 P i k ‾ = P 1 k ∨ P 2 k ∨ ⋯ ∨ P i − 1 , k ∨ P i + 1 , k ∨ ⋯ ∨ P n k \overline{P_{ik}}=P_{1k}\lor P_{2k}\lor\cdots\lor P_{i-1,k}\lor P_{i+1,k}\lor\cdots\lor P_{nk} Pik=P1kP2kPi1,kPi+1,kPnk。则 ¬ P i k \neg P_{ik} ¬Pik P i k ‾ \overline{P_{ik}} Pik关于关键赋值等价。

证明:核心的东西就是注意到关键赋值是一个一一映射,第 k k k个巢一定是住了鸽子的;要么第 i i i只鸽子占据该巢,要么其他某个鸽子占据该巢。

  • 如果 P i k = 1 P_{ik}=1 Pik=1,即 ¬ P i k = 0 \neg P_{ik}=0 ¬Pik=0,则鸽子 i i i占据了巢 k k k,那么其他鸽子都不能占据巢 k k k,即 ¬ P 1 k ∧ ¬ P 2 k ∧ ⋯ ∧ ¬ P i − 1 , k ∧ ¬ P i + 1 , k ∧ ⋯ ∧ ¬ P n k \neg P_{1k}\land\neg P_{2k}\land\cdots\land\neg P_{i-1,k}\land\neg P_{i+1,k}\land\cdots\land\neg P_{nk} ¬P1k¬P2k¬Pi1,k¬Pi+1,k¬Pnk成立;
  • 如果 P i k = 0 P_{ik}=0 Pik=0,即 ¬ P i k = 1 \neg P_{ik}=1 ¬Pik=1,则鸽子 i i i没有占据巢 k k k,那么一定有其他某个鸽子占据了巢 k k k,即 P 1 k ∨ P 2 k ∨ ⋯ ∨ P i − 1 , k ∨ P i + 1 , k ∨ ⋯ ∨ P n k P_{1k}\lor P_{2k}\lor\cdots\lor P_{i-1,k}\lor P_{i+1,k}\lor\cdots\lor P_{nk} P1kP2kPi1,kPi+1,kPnk成立。∎

所以我们就把每个 ¬ P i k \neg P_{ik} ¬Pik转化为了一个不含 ¬ \neg ¬的子句 P i k ‾ \overline{P_{ik}} Pik。我们不仅要处理掉原 P H P n n − 1 \mathrm{PHP}_n^{n-1} PHPnn1公式中的 ¬ \neg ¬,还要处理推理过程中的 ¬ \neg ¬。每一步归结 a ∨ b , ¬ a ∨ c    ⟹    b ∨ c a\lor b,\neg a\lor c\implies b\lor c ab,¬acbc现在变成了 a ∨ b , a ‾ ∨ c    ⟹    b ∨ c a\lor b,\overline a\lor c\implies b\lor c ab,acbc这列推理是关于关键赋值可靠的,可以这么理解:在关键赋值下, a a a a ‾ \overline a a中有且仅有一个成立; a ∨ b a\lor b ab就是说若 a ‾ \overline a a成立,则 b b b成立; a ‾ ∨ c \overline a\lor c ac就是说如果 a a a成立,则 c c c成立。因此 b b b c c c必至少有一个成立。

处理完之后,我们证明就不含任何否定连接词了。

3. 宽子句的定义

定义宽子句为含有至少 n 2 10 \cfrac{n^2}{10} 10n2个文字(即变量)的子句,也就是包含了至少总变量个数的(大约) 1 10 \cfrac{1}{10} 101的子句。例如,当 n = 5 n=5 n=5时,子句 P 12 ∨ P 13 ∨ P 14 P_{12}\lor P_{13}\lor P_{14} P12P13P14就是包含了 3 > 5 2 10 3>\cfrac{5^2}{10} 3>1052个变量的宽子句。为什么选择分母为 10 10 10呢?我们待会会看到其原因。

4. 消除宽子句

回忆我们在整体框架中提到的,我们采用反证法,先假设证明步数 S < 2 n 20 S<2^{\frac{n}{20}} S<220n,然后推出矛盾。设宽子句的个数为 W W W。注意,每个宽子句包含了至少 n 2 10 \cfrac{n^2}{10} 10n2个变量,而一个子句只包含了一个变量,所以这 W W W个宽子句一共有 W n 2 10 W\cfrac{n^2}{10} W10n2个变量。而变量总共只有 n ( n − 1 ) n(n-1) n(n1)个,所以其中一个变量(设为 P i j P_{ij} Pij)一定在超过 W 10 \cfrac{W}{10} 10W个宽子句中出现了(否则,如果所有变量都只在不超过 W 10 \cfrac{W}{10} 10W个宽子句中出现,则它们的出现次数加起来至多为 W 10 n ( n − 1 ) < W n 2 10 \cfrac{W}{10}n(n-1)<W\cfrac{n^2}{10} 10Wn(n1)<W10n2)。那么,如果在证明的所以步数中令 P i j = 1 P_{ij}=1 Pij=1,就可以消去所有含 P i j P_{ij} Pij的子句,也就是消除了至少 W 10 \cfrac{W}{10} 10W个宽子句。换言之,我们让宽子句的数量减少了 1 10 \cfrac{1}{10} 101。这一步也相当于是将第 i i i只鸽子与第 j j j个巢配对了。当然,不要忘记,我们是在关键赋值下讨论问题的,所以我们还要让其他所有的 P i l   ( l ≠ j ) P_{il}\ (l\ne j) Pil (l=j) P u j   ( u ≠ i ) P_{uj}\ (u\ne i) Puj (u=i)等于 0 0 0,这样才能让鸽子 i i i不与另一个巢配对、且其他鸽子也不能与第 j j j个巢配对了。至此,变量还剩下 ( n − 1 ) ( n − 2 ) (n-1)(n-2) (n1)(n2)个,证明被转化为了“除第 i i i只外的其他 n − 1 n-1 n1只鸽子不能与除第 j j j个以外的其他 n − 2 n-2 n2个巢配对”,即我们得到了一个 P H P n − 1 n − 2 \mathrm{PHP}_{n-1}^{n-2} PHPn1n2的证明。

以此类推,如法炮制,每增加一个新的配对就可以让宽子句的个数减少至少 1 10 \cfrac{1}{10} 101,最多只需要 log ⁡ 10 9 W \log_{\frac{10}{9}} W log910W次宽子句就消完了。

此时,我们得到的是一个对于 P H P n ′ n ′ − 1 \mathrm{PHP}_{n'}^{n'-1} PHPnn1的证明,其中 n − n ′ n-n' nn就是确定配对的个数,所以 n − n ′ ≤ log ⁡ 10 9 W n-n'\le \log_{\frac{10}{9}} W nnlog910W n ′ ≥ n − log ⁡ 10 9 W ≥ n − log ⁡ 10 9 S > n − log ⁡ 10 9 2 n 20 = ( 1 − 1 20 log ⁡ 10 9 2 ) n ≈ 0.67106 n n'\ge n-\log_{\frac{10}{9}} W\ge n-\log_{\frac{10}{9}} S>n-\log_{\frac{10}{9}} 2^{\frac{n}{20}}=\left(1-\frac{1}{20}\log_{\frac{10}{9}} 2\right)n\approx 0.67106 n nnlog910Wnlog910S>nlog910220n=(1201log9102)n0.67106n也就是说,我们证明了:如果 S < 2 n 20 S<2^{\frac{n}{20}} S<220n,则存在一个对 P H P n ′ n ′ − 1 \mathrm{PHP}_{n'}^{n'-1} PHPnn1的不含宽子句的证明。接下来,我们将证明一个引理与这个结论矛盾。

三、宽度下界

引理2 任何对于 P H P n n − 1 \mathrm{PHP}_{n}^{n-1} PHPnn1的归结证明都存在一个宽度至少为 2 9 n 2 \cfrac{2}{9}n^2 92n2的子句。

证明
(1) 子句的复杂性 H H H是一个子句集,定义 H H H对于所有关键赋值蕴含子句 C C C为:所有满足 H H H中全部子句的关键赋值 α \alpha α都能满足 C C C。设 C C C的复杂度 complexity ⁡ ( C ) \operatorname{complexity}(C) complexity(C)为:在 P H P n n − 1 \mathrm{PHP}_n^{n-1} PHPnn1的所有子句中能蕴含 C C C的最少子句个数。有些结论是一个子句蕴含不了的,需要多各子句蕴含,比如我们用 a ∨ b a\lor b ab ¬ a ∨ c \neg a\lor c ¬ac推出 b ∨ c b\lor c bc a ∨ b a\lor b ab一个子句是蕴含不了 b ∨ c b\lor c bc的,需要配合 ¬ a ∨ c \neg a\lor c ¬ac才能蕴含出来,因此 b ∨ c b\lor c bc的复杂性至少是 2 2 2

对于关键赋值而言,前提中描述两只鸽子不能飞进同一个巢的子句是自动被满足的,所以我们只考虑描述一只鸽子必须至少占一个巢的子句(称为“鸽子有家子句”)。每个“鸽子有家子句”的复杂度为 1 1 1(因为它自己就可以蕴含自己),证明中最后一个子句 0 0 0的复杂度为 n n n(前提一个都不能少)。那么归结能干什么呢?设子句 C 1 , C 2 C_1,C_2 C1,C2被归结成 C 3 C_3 C3 C i C_i Ci是由包含一些“鸽子有家子句”的初始子句集 T ( C i ) T(C_i) T(Ci)蕴含得来的,则 T ( C 3 ) = T ( C 1 ) ∪ T ( C 2 ) T(C_3)=T(C_1)\cup T(C_2) T(C3)=T(C1)T(C2) complexity ⁡ ( C 3 ) = ∣ T ( C 3 ) ∣ ≤ complexity ⁡ ( C 1 ) + complexity ⁡ ( C 2 ) \operatorname{complexity}(C_3)=|T(C_3)|\le\operatorname{complexity}(C_1)+\operatorname{complexity}(C_2) complexity(C3)=T(C3)complexity(C1)+complexity(C2)

我们断言:证明过程中一定存在一个“中等”复杂度子句,其复杂度介于 1 3 n \cfrac{1}{3}n 31n 2 3 n \cfrac{2}{3}n 32n之间。原因在于,我们从复杂度为 n n n 0 0 0子句开始向上回溯,每次选择那个复杂度较大的前提,则我们观察的子句的复杂度在一点一点地减少(可能不变,但因为“鸽子有家子句”的复杂度为 1 1 1所以一定有一些时刻是减少的)。我们要证明其复杂度不可能一下子从 > 2 3 n >\cfrac{2}{3}n >32n跳到 < 1 3 n <\cfrac{1}{3}n <31n。因为如果这种情况存在,设复杂度 > 2 3 n >\cfrac{2}{3}n >32n的子句为 L L L,其复杂度较高、较低的前提分别为 J , K J,K J,K,因为 J J J的复杂度 < 1 3 n <\cfrac{1}{3}n <31n所以 K K K的复杂度也 < 1 3 n <\cfrac{1}{3}n <31n;这与绿色不等式矛盾。这样我们就证明了“中等”复杂度的子句的存在性。

(2) 中等复杂度子句一定含有很多个变量 C C C是那个中等复杂度子句, H H H是能蕴含 C C C的最小的“鸽子有家子句”的集合, ∣ H ∣ = m |H|=m H=m。我们将证明 C C C至少有 ( n − m ) m ≥ 2 9 n 2 (n-m)m\ge\cfrac{2}{9}n^2 (nm)m92n2个变量。这个不等式成立的原因是一个二次函数极值问题,可以用下图简要地理解。

证明一个子句中含有某个变量的方法就是证明该变量的赋值发生改变可以改变该子句的赋值。

注意到不满足子句 Q i Q_i Qi=“第 i i i只鸽子必须飞进某个巢”的关键赋值就是“落下 i i i的赋值”。因为 H H H是“鸽子有家子句”的集合,所以 H H H包含了一些 Q i Q_i Qi。任选一个 i i i使得 Q i ∈ H Q_i\in H QiH。我们断言:存在一个“落下 i i i的赋值” β \beta β不仅不满足 Q i Q_i Qi,还不满足 C C C。这是因为如果所有“落下 i i i的赋值”都满足 C C C,那么 Q i Q_i Qi就可以从 H H H中移除了,这与 H H H的最小性矛盾。你问我为什么 Q i Q_i Qi可以从 H H H中移除?设 H ∖ { Q i } H\setminus\{Q_i\} H{Qi}的合取为 R R R,我们有 R ∧ Q i → C R\land Q_i\to C RQiC,即 ∀ \forall 关键赋值 α \alpha α,若 α \alpha α同时满足 R R R Q i Q_i Qi α \alpha α满足 C C C。现在又有: ∀ \forall 关键赋值 α \alpha α,若 α \alpha α不满足 Q i Q_i Qi α \alpha α满足 C C C,这也意味着满足 R R R且不满足 Q i Q_i Qi α \alpha α都满足 C C C。结合起来就得到 α \alpha α只要满足 R R R就可以满足 C C C,即 R → C R\to C RC因为 β \beta β是关键赋值,所以 β \beta β一定给除了 i i i以外的每只鸽子 j j j都单独安排了住处。现在任取鸽子 j j j使得 j ∉ H j\notin H j/H,把 β \beta β j j j的住处分配给 i i i,我们就得到了一个与 β \beta β只有一些细微差别的“落下 j j j的赋值” β ′ \beta' β β ′ \beta' β满足所有 H H H中的子句,因为这些子句描述的鸽子都有住处,没住处的鸽子对应的“鸽子有家子句”在 H H H外面。设 β \beta β给鸽子 j j j分配的巢是 l l l,则 β \beta β β ′ \beta' β的差别在于两个地方: β \beta β P j l P_{jl} Pjl分配 1 1 1 β ′ \beta' β分配 0 0 0 β \beta β P i l P_{il} Pil分配 0 0 0 β ′ \beta' β分配 1 1 1。由于 C C C是一个不含否定连接词的子句,如果 C C C不含 P i l P_{il} Pil P j l P_{jl} Pjl 1 1 1 0 0 0不可能让 C C C 0 0 0 1 1 1;因此 C C C一定含 P i l P_{il} Pil。让 i i i取遍 H H H中“鸽子有家子句”描述的鸽子,让 j j j取遍所有与 H H H无关的鸽子并让 l l l β \beta β j j j分配的住处,则这样的 P i l P_{il} Pil共有 m ( n − m ) m(n-m) m(nm)个,即 C C C的宽度至少为 m ( n − m ) ≥ 2 9 n 2 m(n-m)\ge\cfrac{2}{9}n^2 m(nm)92n2。∎

回顾第二节结束时我们提到的:如果 S < 2 n 20 S<2^{\frac{n}{20}} S<220n,则存在一个对 P H P n ′ n ′ − 1 \mathrm{PHP}_{n'}^{n'-1} PHPnn1的不含宽子句的证明,其中 n ′ ≥ 0.67106 n n'\ge 0.67106n n0.67106n。而引理 2 2 2意味着对 P H P n ′ n ′ − 1 \mathrm{PHP}_{n'}^{n'-1} PHPnn1的任何一个归结证明都包含了一个宽度至少为 2 9 n ′ 2 = 0.10007 n > 1 10 n 2 \cfrac{2}{9}n'^2=0.10007n>\cfrac{1}{10}n^2 92n′2=0.10007n>101n2的子句,与证明不含宽子句矛盾,因此 S ≥ 2 n 20 S\ge 2^{\frac{n}{20}} S220n。证毕。

四、总结

最后,我们就证明了:

定理 对于充分大的 n n n,任何对 P H P n n − 1 \mathrm{PHP}_n^{n-1} PHPnn1的归结证明的大小都至少为 2 n 20 2^{\frac{n}{20}} 220n

这里我还想提一句:为什么把宽子句定义为包含了至少 n 2 10 \cfrac{n^2}{10} 10n2个变量?为什么分母是 10 10 10而不是 9 9 9 11 11 11?以及 2 n 20 2^{\frac{n}{20}} 220n是最好上界吗?首先我们需要知道:引理2的 2 9 n 2 \cfrac{2}{9}n^2 92n2已经是最优的结果了,根据二次函数的性质, m n \cfrac{m}{n} nm的上界是下界的两倍时只有它们关于 1 2 \cfrac{1}{2} 21对称才能让 min ⁡ ( n − m ) m \min (n-m)m min(nm)m最大;此时上下界分别为 1 3 \cfrac{1}{3} 31 2 3 \cfrac{2}{3} 32 min ⁡ ( n − m ) m = 2 9 n 2 \min (n-m)m=\cfrac{2}{9}n^2 min(nm)m=92n2。我们再设我们能得到的最好上界为 2 x n 2^{xn} 2xn,宽子句的定义是含有至少 μ n 2 \mu n^2 μn2个变量的子句,那么 n ′ n' n的计算公式为 n ′ ≥ ( 1 − x log ⁡ 1 1 − μ 2 ) n n'\ge(1-x\log_{\frac{1}{1-\mu}} 2)n n(1xlog1μ12)n而引理2意味着对 P H P n ′ n ′ − 1 \mathrm{PHP}_{n'}^{n'-1} PHPnn1的任何一个归结证明都包含了一个宽度至少为 2 9 n ′ 2 \cfrac{2}{9}n'^2 92n′2的子句,我们要控制 2 9 n ′ 2 ≥ μ n 2 \cfrac{2}{9}n'^2\ge\mu n^2 92n′2μn2,同时使 x x x最大。即 max ⁡ x ,  s.t.  ∃ μ ,   2 9 ( 1 − x log ⁡ 1 1 − μ 2 ) 2 ≥ μ \max x,\text{ s.t. }\exists\mu,\ \cfrac{2}{9}(1-x\log_{\frac{1}{1-\mu}} 2)^2\ge\mu maxx, s.t. μ, 92(1xlog1μ12)2μ这个问题非常奇怪,我算出来 x x x可以高达 0.278 0.278 0.278左右,不过 1 20 \cfrac{1}{20} 201的确是一个解,有兴趣的童鞋们可以自己算一下~

五、可以不消去否定连接词吗?

可以,方法详见Eli Ben-Sasson和Avi Wigderson与1999年发表的论文Short Proofs Are Narrow - Resolution Made Simple的第 5 5 5节与第 6.2 6.2 6.2节。

六、关于深度受限弗雷格系统的指数级下界

证明深度不超过 d d d的弗雷格系统下界的方法大概是:假设证明的步数不超过一个预定值 S S S,对整个弗雷格证明施加随即约束,证明有很大的概率深度会减少 1 1 1,但问题的复杂度并没有太大的变化。施加 d − 2 d-2 d2次后,证明的深度变为 2 2 2(也就是变成了一个带弱化规则的归结证明),其步数并没有发生显著变化,也就意味着用 S S S步归结就可以证明一个 n n n相当大的 P H P \mathrm{PHP} PHP,然后再用这篇文章的内容反驳这一点即可。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于springboot实现二手图书交易平台系统项目【项目源码+论文说明】

基于springboot实现二手图书交易平台系统演示 摘要 本文讲述了基于B/S模式的校园二手交易网站统的设计与实现。所谓的校园二手交易网站统是通过网站推广互联企业的二手物品和技术服务&#xff0c;并使客户随时可以了解企业和企业的产品&#xff0c;为客户提供在线服务和订单处…

【2024最新版】我用python代码带你看最绚烂的烟花,浪漫永不过时!

2024年就快要到了&#xff0c;提前用python代码给自己做一个烟花秀庆祝一下。本次介绍的python实例是实现一个简易的烟花秀。 一、步骤分析 总的来说&#xff0c;要实现烟花秀的效果&#xff0c;需要以下几个步骤&#xff1a; 1.1、创建一个类&#xff0c;包含烟花各项粒子的…

Golang 调度器 GPM模型

Golang 调度器 GPM模型 1 多进程/线程时代有了调度器需求 在多进程/多线程的操作系统中&#xff0c;就解决了阻塞的问题&#xff0c;因为一个进程阻塞cpu可以立刻切换到其他进程中去执行&#xff0c;而且调度cpu的算法可以保证在运行的进程都可以被分配到cpu的运行时间片。这…

Springboot项目实战

文章目录 SpringBootVue后台管理系统所需软件下载、安装、版本查询Vue搭建一个简单的Vue项目 *Spring项目项目架构 SpringBootVue后台管理系统 学习视频&#xff1a; https://www.bilibili.com/video/BV1U44y1W77D/?spm_id_from333.337.search-card.all.click&vd_sourcec…

搜索算法(算法竞赛、蓝桥杯)--DFS迭代加深

1、B站视频链接&#xff1a;B25 迭代加深 Addition Chains_哔哩哔哩_bilibili 题目链接&#xff1a;Addition Chains - 洛谷 #include <bits/stdc.h> using namespace std; int n,d;//d为搜索的深度 int a[10005];//存储加成的序列bool dfs(int u){//搜索第u层 if(ud)r…

【论文阅读】基于图像处理和卷积神经网络的板式换热器气泡识别与跟踪

Bubble recognizing and tracking in a plate heat exchanger by using image processing and convolutional neural network 基于图像处理和卷积神经网络的板式换热器气泡识别与跟踪 期刊信息&#xff1a;International Journal of Multiphase Flow 2021 期刊级别&#xff1a;…

【Spring Boot 源码学习】BootstrapRegistry 初始化器实现

《Spring Boot 源码学习系列》 BootstrapRegistry 初始化器实现 一、引言二、往期内容三、主要内容3.1 BootstrapRegistry3.2 BootstrapRegistryInitializer3.3 BootstrapRegistry 初始化器实现3.3.1 定义 DemoBootstrapper3.3.2 添加 DemoBootstrapper 四、总结 一、引言 前面…

反序列化逃逸 [安洵杯 2019]easy_serialize_php1

打开题目 题目源码&#xff1a; <?php$function $_GET[f];function filter($img){$filter_arr array(php,flag,php5,php4,fl1g);$filter /.implode(|,$filter_arr)./i;return preg_replace($filter,,$img); }if($_SESSION){unset($_SESSION); }$_SESSION["user&qu…

2024年腾讯云优惠政策_腾讯云TOP10优惠活动

腾讯云服务器多少钱一年&#xff1f;62元一年起&#xff0c;2核2G3M配置&#xff0c;腾讯云2核4G5M轻量应用服务器218元一年、756元3年&#xff0c;4核16G12M服务器32元1个月、312元一年&#xff0c;8核32G22M服务器115元1个月、345元3个月&#xff0c;腾讯云服务器网txyfwq.co…

医学大数据|文献阅读|有关“胃癌+机器学习”的研究记录

目录 1.基于32基因特征构建的机器学习模型可有效预测胃癌患者的预后和治疗反应 2.胃癌患者术后90天死亡率的机器学习风险预测模型 3.使用机器学习模型预测幽门螺杆菌根除患者胃癌患病风险 4.利用初始内窥镜检查和组织学结果进行个性化胃癌发病率预测 1.基于32基因特征构建的…

马斯克指控OpenAI违背成立协议,要求恢复开源;Automattic否认向AI公司出售用户数据

&#x1f989; AI新闻 &#x1f680; 马斯克指控OpenAI违背成立协议&#xff0c;要求恢复开源 摘要&#xff1a;马斯克近日在旧金山高等法院对OpenAI及其CEO阿尔特曼提起诉讼&#xff0c;指控他们违反最初促进AI技术造福人类非营利方向的成立协议。马斯克声称&#xff0c;Ope…

租房招聘平台新篇章:Java+SpringBoot技术革新

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

探索数据结构:深入了解顺序表的奥秘

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;数据结构与算法 贝蒂的主页&#xff1a;Betty’s blog 1. 什么是顺序表 顺序表是用一段物理地址连续的存储单元依次存储数据元…

购买腾讯云服务器请先领取代金券,2024腾讯云优惠

腾讯云优惠代金券领取入口共三个渠道&#xff0c;腾讯云新用户和老用户均可领取8888元代金券&#xff0c;可用于云服务器等产品购买、续费和升级使用&#xff0c;阿腾云atengyun.com整理腾讯云优惠券&#xff08;代金券&#xff09;领取入口、代金券查询、优惠券兑换码使用方法…

C++真题列表

题目解析&#xff1a;RAM是闪存&#xff0c;只要一关机一拔电&#xff0c;就会丢失数据 题目解答&#xff1a;A 题目解析&#xff1a;TXT格式是文本文档 题目解答&#xff1a;B 题目解析&#xff1a;IP地址中每一个字节的取值范围是[0~255]&#xff0c;是不可能有256的 题目…

完美解决Iframe嵌入帆软报表出现跨域cookie写不进去的问题

随着google chrome对第三方cookie的限制越来越狠,现在发现之前使用iframe嵌入的帆软报表已经不好使了。官方现在解决iframe嵌入帆软报表出现跨域导致cookie写不进去的方案是主推 统一主域名的方案(谷歌浏览器单点登录失败- FineReport帮助文档 - 全面的报表使用教程和学习资料…

java 基础(核心知识搭配代码)

前言 java的学习分为了上部分以及下部分进行学习&#xff0c;上部分就是对于java的基础知识&#xff0c;面向对象上&#xff0c;面向对象下&#xff0c;异常操作&#xff0c;javaApi&#xff1b;下部主要是集合&#xff0c;泛型&#xff0c;反射&#xff0c;IO流&#xff0c;J…

【HTML】HTML基础5(特殊字符)

目录 特殊字符的作用 常用的特殊字符 使用效果 特殊字符的作用 例如 当我在两个文字间打出空格时 <p>“银河护卫队”系列 在漫威电影宇宙中一直是异数般的存在&#xff0c;不仅因为影片主角是一群反英雄&#xff0c;<strong>与超级英雄相比显得格格不入<…

Ubuntu18.04安装RTX2060显卡驱动+CUDA+cuDNN

Ubuntu18.04安装RTX2060显卡驱动CUDAcuDNN 1 安装RTX2060显卡驱动1.1 查看当前显卡是否被识别1.2 安装驱动依赖1.3 安装桌面显示管理器1.4 下载显卡驱动1.5 禁用nouveau1.6 安装驱动1.7 查看驱动安装情况 2 安装CUDA2.1 查看当前显卡支持的CUDA版本2.2 下载CUDA Toolkit2.3 安装…