圖的 walk 與 simple path:逐對核對、長度與 trail 的區別

本頁導覽
  1. 目標與範圍
  2. 已知條件與符號
  3. 規則與來源
  4. 逐步主鏈
  5. 局部子步與引理
  6. 逐步反向審查
  7. 錯誤控制與反例
  8. 結論與限制
  9. 驗證及來源綁定

← 導讀目錄 · 原始 MKO

derivation-mko-graph-walk-simple-path-01 · production-20261019-adopted-96

目標與範圍

有限無向無 loop 簡單圖 G:V={0,1,2,3,4},E={{0,1},{1,2},{2,3},{0,3},{1,3},{3,4}}。對頂點序列 W₁=(0,1,2,3,4)、W₂=(0,1,3,1,2)、W₃=(0,2,3)、W₄=(2,3,0,1,3,4)、W₅=(4)、W₆=(1,1) 逐一判定是否為 walk、長度為何、是否為 simple path;並證明 simple path 不重複邊,以及本圖中 simple path 的長度至多為 4。

在 MKO 的範圍內工作:頂點標為 0 到 n−1,完整的無向簡單邊集合與有序頂點序列都明示(假設 a1);空序列不算 walk,單一頂點是長度 0 的 simple path(假設 a2)。trail 只用來對照 simple path;不處理 cycle、連通分量或有向圖,不改動 canonical MKO 或英文 edition。

已知條件與符號

  • graph_basics
  • finite_counting_basics
  • quantifier_negation
  • and_intro_elim
  • numeric_evaluation
  • G1 — V={0,1,2,3,4};E={{0,1},{1,2},{2,3},{0,3},{1,3},{3,4}},共 6 條邊;除此之外沒有其他邊。
  • G2 — 待判定的序列:W₁=(0,1,2,3,4)、W₂=(0,1,3,1,2)、W₃=(0,2,3)、W₄=(2,3,0,1,3,4)、W₅=(4)、W₆=(1,1),以及空序列 ()。
  • G=(V,E) — 給定的有限無向簡單圖
  • \{p,q\} — 無序頂點對;p≠q 時才可能是邊
  • W=(v_i)_{i=0}^{k} — 頂點序列 v₀ 到 v_k,共 k+1 項
  • k — walk 的 edge length(連續對的個數)
  • W_1,W_2,W_3,W_4,W_5,W_6 — 六個待判定的序列
  • n=|V|=5 — 頂點數

規則與來源

  • graph_basics · prerequisite — (簡單無向)圖:G=(V,E),E 中每條邊是 V 中兩個相異頂點的無序對;頂點度數是與它相連的邊數;握手引理 Σ_v deg(v)=2|E|。
  • finite_counting_basics · prerequisite — 有限計數:互斥有限集合 A、B 有 |A∪B|=|A|+|B|;|A×B|=|A|·|B|;有限集之間存在雙射 ⇔ 元素個數相同。
  • quantifier_negation · prerequisite — 量詞否定:¬(∀x, P(x)) 等價於 ∃x, ¬P(x);¬(∃x, P(x)) 等價於 ∀x, ¬P(x)。
  • and_intro_elim · prerequisite — 合取:由 P 與 Q 得 P∧Q;由 P∧Q 可分別得 P 與 Q。
  • numeric_evaluation · prerequisite — 明確整數或有理數算式的精確求值;可以獨立重算。
  • def_unfold · prerequisite — 展開定義:把一個已定義的詞換成它的定義內容(或反向收回),命題的真假不變。
  • contradiction · prerequisite — 反證法:若假設 ¬P 推出矛盾(某命題與其否定同時成立),則 P 成立。
  • case_analysis · prerequisite — 分情況論證:若 P∨Q 成立,且 P⇒R、Q⇒R 都已證,則 R 成立。所有情況必須涵蓋全部可能。
  • forall_intro · prerequisite — ∀引入(全稱推廣):若某命題對一個「任意的」元素 x 證成,而證明沒有對 x 加任何額外假設,則它對論域中所有 x 成立。
  • mko_walk_def · cited — 固定有限無向無 loop 簡單圖。頂點序列 (v₀ 到 v_k) 為 walk,若每個連續無序對都是邊;其 edge length 為 k。simple path 是頂點不重複的 walk。walk 可重複頂點或邊,cycle 與 trail 另有額外責任。空序列不作 walk;單頂點序列是長度 0 的 simple path。 · mko-graph-walk-simple-path
  • trail_def · prerequisite — trail 是不重複邊的 walk:對所有 0≤i<j≤k−1,{v_i,v_{i+1}}≠{v_j,v_{j+1}}。
  • unordered_pair_eq · prerequisite — 無序對相等:{p,q}={r,s} 當且僅當 (p=r 且 q=s) 或 (p=s 且 q=r)。
  • inj_size_le · prerequisite — 若有限集合 X 到有限集合 Y 有單射,則 |X|≤|Y|(鴿籠原理)。
  • L_path_trail · lemma — 在簡單圖中,每個 simple path 都不重複邊,因此是 trail。

逐步主鏈

S01 · definition

操作前

V=\{0,1,2,3,4\},\ E=\{\{0,1\},\{1,2\},\{2,3\},\{0,3\},\{1,3\},\{3,4\}\}

操作後

G\ \text{simple, loop-free};\ \sum_{v}\deg v=2+3+2+4+1=12=2|E|

條件:無

規則:graph_basics · 依賴:G1, graph_basics

葉節點依據:graph_basics + numeric_evaluation

先確認給定資料是 MKO 所要求的有限無向無 loop 簡單圖:每條邊是兩個相異頂點的無序對,清單中沒有重複的邊。度數為 deg0=2、deg1=3、deg2=2、deg3=4、deg4=1,和為 12=2·6,與握手引理一致,作為邊清單抄寫無誤的核對。

S02 · definition

操作前

W=(v_i)_{i=0}^{k}

操作後

W\ \text{walk}\iff\forall i\ (0\le i\le k-1):\ \{v_i,v_{i+1}\}\in E;\ \ \text{length}=k;\ \ \text{simple path}\iff\text{walk}\land(i\neq j\Rightarrow v_i\neq v_j)

條件:k\ge 0

規則:mko_walk_def · 依賴:mko_walk_def

葉節點依據:mko_walk_def + def_unfold

展開 MKO 的三個定義。walk 要求每一個連續無序對都是邊;長度 k 是連續對的個數,也就是項數減一;simple path 另外要求所有項彼此相異。序列至少有一項(k≥0),空序列被協定排除。

S03 · implies

操作前

W_1=(0,1,2,3,4)

操作後

\{0,1\},\{1,2\},\{2,3\},\{3,4\}\in E\ \Rightarrow\ W_1\ \text{walk}

條件:無

規則:and_intro_elim · 依賴:S02, G1, G2

葉節點依據:and_intro_elim + mko_walk_def

W₁ 有四個連續對:{0,1}、{1,2}、{2,3}、{3,4}。逐一在 E 中查到。四個條件都成立,依合取引入,W₁ 是 walk。

S04 · equivalent

操作前

W_1\ \text{has}\ 5\ \text{entries}

操作後

\operatorname{len}(W_1)=5-1=4

條件:無

規則:mko_walk_def · 依賴:S02, S03

葉節點依據:mko_walk_def + numeric_evaluation

長度是邊數(連續對的個數),不是頂點數:5 項序列有 4 個連續對,所以長度為 4。

S05 · implies

操作前

W_1\ \text{walk},\ 0,1,2,3,4\ \text{pairwise distinct}

操作後

W_1\ \text{simple path}

條件:無

規則:mko_walk_def · 依賴:S03, S02, G2

葉節點依據:mko_walk_def + and_intro_elim

W₁ 的五項 0、1、2、3、4 兩兩相異,加上 S03 的 walk 資格,依定義 W₁ 是長度 4 的 simple path。

S06 · implies

操作前

W_2=(0,1,3,1,2)

操作後

\{0,1\},\{1,3\},\{3,1\},\{1,2\}\in E\ \Rightarrow\ W_2\ \text{walk},\ \operatorname{len}(W_2)=4

條件:無

規則:and_intro_elim · 依賴:S02, G1, G2

葉節點依據:and_intro_elim + unordered_pair_eq + mko_walk_def

W₂ 的四個連續對是 {0,1}、{1,3}、{3,1}、{1,2}。無序對 {3,1} 與 {1,3} 是同一條邊,在 E 中。四對都是邊,所以 W₂ 是 walk;5 項,長度 4。

S07 · implies

操作前

v_1=1=v_3\ \text{in}\ W_2

操作後

W_2\ \text{walk but not a simple path}

條件:無

規則:quantifier_negation · 依賴:S06, S02

葉節點依據:quantifier_negation + mko_walk_def

W₂ 的索引 1 與索引 3 的項都是 1(i=1≠3=j),所以「項兩兩相異」不成立,W₂ 不是 simple path。它仍是 walk:MKO 明說 walk 可以重複頂點與邊(這裡邊 {1,3} 走了兩次)。

S08 · implies

操作前

W_3=(0,2,3)

操作後

\{0,2\}\notin E\ \Rightarrow\ W_3\ \text{not a walk}

條件:無

規則:quantifier_negation · 依賴:S02, G1, G2

葉節點依據:quantifier_negation + mko_walk_def

第一個連續對 {0,2} 不在 E 中(E 中含 0 的邊只有 {0,1} 與 {0,3})。walk 要求每一對都是邊,一對失敗就足以否定。雖然 0、2、3 都是頂點、彼此相異,W₃ 仍不是 walk,因此也不是 simple path。

S09 · implies

操作前

W_4=(2,3,0,1,3,4)

操作後

\{2,3\},\{3,0\},\{0,1\},\{1,3\},\{3,4\}\in E,\ \text{pairwise distinct}\ \Rightarrow\ W_4\ \text{trail},\ \operatorname{len}(W_4)=5

條件:無

規則:trail_def · 依賴:S02, G1, G2, trail_def

葉節點依據:trail_def + and_intro_elim + unordered_pair_eq

W₄ 的五個連續對 {2,3}、{3,0}、{0,1}、{1,3}、{3,4} 都在 E 中,所以是 walk;6 項,長度 5。這五條邊兩兩不同(逐一比對無序對),所以 W₄ 不重複邊,是 trail。

S10 · implies

操作前

v_1=3=v_4\ \text{in}\ W_4

操作後

W_4\ \text{trail but not a simple path}

條件:無

規則:quantifier_negation · 依賴:S09, S02

葉節點依據:quantifier_negation + mko_walk_def

W₄ 的索引 1 與索引 4 的項都是頂點 3,所以 W₄ 不是 simple path,雖然它沒有重複的邊。這正是 MKO 提醒的:不重複邊的 trail 不能與 simple path 混同。

S11 · implies

操作前

W=(v_i)_{i=0}^{k}\ \text{simple path}

操作後

\{v_i,v_{i+1}\}\neq\{v_j,v_{j+1}\}\ \ (0\le i<j\le k-1),\ \text{so}\ W\ \text{is a trail}

條件:無

規則:L_path_trail · 依賴:S02, trail_def

葉節點依據:contradiction + unordered_pair_eq + trail_def

反方向的關係:每個 simple path 都是 trail(引理 L_path_trail)。證明在子步 S11.1、S11.2:假設兩條邊相同,會推出兩個不同位置的頂點相同,與 simple path 矛盾。所以 simple path 比 trail 更嚴格,S10 說明反向不成立。

S12 · implies

操作前

W=(v_i)_{i=0}^{k}\ \text{simple path in}\ G,\ |V|=5

操作後

k+1\le 5,\ \text{so}\ \operatorname{len}(W)=k\le 4

條件:無

規則:inj_size_le · 依賴:S02, G1, inj_size_le

葉節點依據:inj_size_le + finite_counting_basics

simple path 的 k+1 項兩兩相異,所以 i↦v_i 是由 {i∈ℤ:0≤i≤k}(k+1 個元素)到 V(5 個元素)的單射;依鴿籠原理 k+1≤5,即長度至多 4。W₁ 的長度恰為 4,達到上界。W₄ 的長度 5>4,所以由這個上界也可看出它不可能是 simple path,與 S10 一致。

S13 · implies

操作前

W_5=(4),\ k=0

操作後

W_5\ \text{simple path of length}\ 0;\ \ ()\ \text{not a walk}

條件:無

規則:mko_walk_def · 依賴:S02, G2

葉節點依據:mko_walk_def + forall_intro

W₅ 只有一項,沒有連續對,「每個連續對都是邊」空真成立,所以是 walk,長度 1−1=0;唯一的一項當然不重複,所以是 simple path。依 MKO 協定(假設 a2),空序列 () 不算 walk,也沒有長度。

S14 · implies

操作前

W_6=(1,1)

操作後

\{1,1\}\notin E\ \Rightarrow\ W_6\ \text{not a walk}

條件:無

規則:graph_basics · 依賴:S01, S02, G2

葉節點依據:graph_basics + quantifier_negation

唯一的連續對是 {1,1},它只含一個頂點,不是兩個相異頂點的無序對;本圖無 loop(S01),所以它不是邊。W₆ 不是 walk,不能把「停在原地」當成長度 1 的 walk。

S15 · implies

操作前

\text{S05},\ \text{S07},\ \text{S08},\ \text{S10},\ \text{S13},\ \text{S14}

操作後

W_1,W_5\ \text{simple paths};\ W_2\ \text{walk only};\ W_4\ \text{trail, not simple path};\ W_3,W_6,()\ \text{not walks}

條件:無

規則:and_intro_elim · 依賴:S05, S07, S08, S10, S11, S12, S13, S14

葉節點依據:and_intro_elim

彙整:W₁ 是長度 4 的 simple path;W₂ 是長度 4 的 walk,重複頂點與邊;W₃ 不是 walk;W₄ 是長度 5 的 trail,但不是 simple path;W₅ 是長度 0 的 simple path;W₆ 與空序列不是 walk。另證得 simple path 必為 trail,且本圖 simple path 長度至多 4。

局部子步與引理

S11.1 · implies

操作前

\{v_i,v_{i+1}\}=\{v_j,v_{j+1}\},\ 0\le i<j\le k-1

操作後

v_i=v_j\ \lor\ v_i=v_{j+1}

條件:i<j

規則:unordered_pair_eq · 依賴:unordered_pair_eq

葉節點依據:unordered_pair_eq + and_intro_elim

為了反證,假設存在 i<j 使兩條邊相同。依無序對相等,(v_i=v_j 且 v_{i+1}=v_{j+1}) 或 (v_i=v_{j+1} 且 v_{i+1}=v_j);兩種情形都至少給出 v_i=v_j 或 v_i=v_{j+1}。

S11.2 · implies

操作前

v_i=v_j\ \lor\ v_i=v_{j+1},\ \ i<j<j+1

操作後

\bot,\ \text{hence no two edges of}\ W\ \text{coincide}

條件:無

規則:contradiction · 依賴:S11.1, S02

葉節點依據:contradiction + case_analysis + mko_walk_def

因 i<j<j+1,位置 i 與 j、i 與 j+1 都不同;simple path 在不同位置的頂點相異,所以兩個情形都矛盾(分情形證明)。假設不成立:任兩條邊都不同。S11.1 與 S11.2 合起來證得引理 L_path_trail。

逐步反向審查

  • S15 · sufficient_goal_reduction · S05, S07, S08, S10, S11, S12, S13, S14, and_intro_elim — 目標 G 是所有判定與兩個一般性質的合取;足夠條件 H 是各步的結論,H⇒G 由合取引入,每一項都由已知正向證得,沒有把 G 當作前提。
  • S14 · premise_audit · S01, graph_basics, quantifier_negation — 依賴「簡單圖的邊是相異頂點的無序對」;若另換允許 loop 的模型,仍須實際含有頂點 1 的 loop 才會使 W₆ 成為長度 1 的 walk;只說允許 loop 不保證結論改變。即使該 loop 存在,W₆ 仍因頂點重複而非 simple path。該模型不在此 MKO 範圍內。
  • S13 · premise_audit · mko_walk_def — 空真成立是因為沒有任何 i 滿足 0≤i≤k−1=−1;空序列的排除是協定規定,不是由定義推出。
  • S12 · premise_audit · inj_size_le, S02 — 需要項兩兩相異(單射);對一般 walk 不成立,W₂ 與 W₄ 都可重複頂點。長度 ≤4 只是必要條件,不推出是 simple path(N4、N5)。
  • S11.2 · premise_audit · S11.1, contradiction, case_analysis — 兩個情形涵蓋 S11.1 的所有可能;矛盾只用到 simple path 的定義。
  • S11.1 · premise_audit · unordered_pair_eq, and_intro_elim — 只取每個情形的第一個合取項,不宣稱反向。
  • S11 · premise_audit · L_path_trail, trail_def — 只宣稱 simple path ⇒ trail;反向由 W₄ 否定。
  • S10 · premise_audit · S09, quantifier_negation — 一組見證 (i,j)=(1,4) 足以否定頂點兩兩相異;S12 的長度上界給出獨立的交叉核對。
  • S09 · premise_audit · S02, trail_def, unordered_pair_eq — trail 需要 walk 加上邊不重複;這裡兩者都已逐一核對(N3 核長度)。
  • S08 · premise_audit · G1, quantifier_negation — 「{0,2}∉E」依 G1 的「沒有其他邊」成立;若邊集合不完整,就不能判定不相鄰,這正是假設 a1 要求完整邊集的原因。
  • S07 · premise_audit · S06, quantifier_negation — 否定「對所有 i≠j,v_i≠v_j」只需一組見證 (i,j)=(1,3)。
  • S06 · premise_audit · S02, unordered_pair_eq, and_intro_elim — 因圖是無向的,{3,1}={1,3}(無序對相等);若是有向圖,這一步要另外核對方向。
  • S05 · premise_audit · S03, mko_walk_def — simple path 需要兩個條件:walk(S03)與項不重複;只有項不重複而不是 walk 不夠(見 S08)。
  • S04 · inverse_equivalence · mko_walk_def, numeric_evaluation — 反向:長度 4 加一得項數 5;兩種說法描述同一個序列(N2)。
  • S03 · premise_audit · S02, G1, and_intro_elim — 必須核對每一個連續對,不能只核第一對或最後一對;這一步四對都已核對。
  • S02 · premise_audit · mko_walk_def, def_unfold — 只展開定義,不推出新事實;之後每個判定都回到這三個條件。
  • S01 · premise_audit · G1, graph_basics — 只確認資格與做一致性核對(N1);握手等式成立不能證明邊清單正確,只能排除部分抄寫錯誤。

錯誤控制與反例

頂點清單不一定是 walk

MKO 指出的誤解之一是把任何頂點清單當成 walk。W₃=(0,2,3) 的三個頂點都在 V 中且彼此相異,但 {0,2} 不是邊,所以不是 walk。判定必須逐一核對每個連續對(S03、S08),而且需要完整的邊集合才能判定「不相鄰」。

長度是邊數,不是頂點數

W₁ 有 5 個頂點,長度是 4。W₂ 有 5 項但只有 4 個不同頂點、3 條不同的邊,長度仍是 4:長度數的是連續對(走過的邊,重複也算),等於項數減一。

trail 不一定是 simple path

W₄ 不重複任何邊,卻兩次經過頂點 3。simple path 禁止的是重複頂點;不重複邊只是較弱的 trail 條件。引理 L_path_trail 只給出 simple path ⇒ trail 這一個方向。

  • (0,2,3) 的頂點都在 V 中且不重複,所以它是 simple path → reject — {0,2}∉E,所以它根本不是 walk。
  • W₁=(0,1,2,3,4) 有 5 個頂點,所以長度是 5 → reject — 長度是連續對的個數 5−1=4。
  • W₄ 沒有重複的邊,所以是 simple path → reject — 頂點 3 出現在索引 1 與索引 4 的項;而且長度 5 超過 simple path 的上界 4。
  • (1,1) 是在頂點 1 停留一步、長度為 1 的 walk → reject — {1,1} 不是兩個相異頂點的無序對,無 loop 簡單圖中不是邊。

結論與限制

在 G 中:W₁=(0,1,2,3,4) 是長度 4 的 simple path;W₂=(0,1,3,1,2) 是長度 4 的 walk 但不是 simple path;W₃=(0,2,3) 因 {0,2}∉E 不是 walk;W₄=(2,3,0,1,3,4) 是長度 5 的 trail,但頂點 3 重複,不是 simple path;W₅=(4) 是長度 0 的 simple path;W₆=(1,1) 與空序列不是 walk。每個 simple path 都是 trail,反之不然;本圖中 simple path 的長度至多為 4。

  • 本稿以完整邊清單逐對核對;對更大的圖,同樣的判定可寫成演算法,但本稿不分析其複雜度。
  • cycle 與連通分量不在本稿範圍內,trail 只用作對照。

驗證及來源綁定

7 個本稿宣告算術檢查;只支持所列算式。

  • source commit: b28a5edbd46279b1db2a3f3f48bb3f447e18899f
  • adopted source SHA-256: 49f77d500fdd6a9edd41755d563203dc6463ebe4857c93350c07bbfd67d26ec3
  • original source SHA-256: 658afc79124d38166f5b5ff1eb4fae1b1b76dccfe69d963b6d261be4216f8d9c
  • Lean: NOT_RUN · independent AI: NOT_MEASURED

同源完整 JSON(含公式、AST、反控制與修訂記錄)