# 第 23957 題：NFA到DFA的子集合構造

[返回所在分頁 120](https://ocme.evemisslab.com/zh-Hant/questions/page/120/)

[← 逐題詳解目錄](https://ocme.evemisslab.com/zh-Hant/questions/) · [原題批次](https://ocme.evemisslab.com/zh-Hant/practice/batch-20261014-advance-20261112-r07-subset-construction-nfa-to-dfa-foundations/#q-20261014-advance-20261112-r07-subset-construction-nfa-to-dfa-0082)

本頁是已完成第二對話 AI 數理與中英語義覆核的教學詳解，只支持本題明示的模型與前提。沒有人工審查或新 Lean 證明，也不提升原題或 MKO 的 Canonical 真值狀態。

R0046-23957 · q-20261014-advance-20261112-r07-subset-construction-nfa-to-dfa-0082



## 原題與已知條件

epsilon-closed start、move後closure與accepting-subset交集規則。操作=subsetdfa-full-word-trace-invariant；資料={"states":["s6","m6","f6","e16","e26","d6"],"alphabet":["a6","b6"],"start_state":"s6","final_states":["f6"],"transitions":[["s6",null,"m6"],["s6",null,"d6"],["m6","a6","m6"],["m6","b6","f6"],["f6",null,"e16"],["e16",null,"e26"]],"input":["a6","a6","b6"]}。請依 exact_ordered_tuple_declared_by_interface 欄序回答。


- G001 — epsilon-closed start、move後closure與accepting-subset交集規則。操作=subsetdfa-full-word-trace-invariant；資料={"states":["s6","m6","f6","e16","e26","d6"],"alphabet":["a6","b6"],"start_state":"s6","final_states":["f6"],"transitions":[["s6",null,"m6"],["s6",null,"d6"],["m6","a6","m6"],["m6","b6","f6"],["f6",null,"e16"],["e16",null,"e26"]],"input":["a6","a6","b6"]}。請依 exact_ordered_tuple_declared_by_interface 欄序回答。





## 定義與適用範圍

沿用原題明示的論域、假設與來源 MKO 定義。本題已完成第二對話數理與中英語義覆核，並由原始參數逐題獨立重算模型、答案與每個算術步驟；原題仍為 candidate。


- [mko-subset-construction-nfa-to-dfa](https://ocme.evemisslab.com/zh-Hant/mko/mko-subset-construction-nfa-to-dfa/)





## 逐步推導

S001 · implies操作前

source operation=subsetdfa-full-word-trace-invariant;original snapshot and mathematics retained

操作後

explicit ordered source output fields=[input, DFA_prefix_subsets, direct_NFA_prefix_subsets, prefix_invariant, accepted, certificate, finite_tests_language_equivalence_claim, boundary]

條件：無

保留原題介面快照，本頁直接列來源欄序，不需JavaScript。radius由原mode選6／11欄，不補欄；No與實際否定依來源責任分清。

步驟識別與依賴規則：source_ordered_interface_explicit_without_javascript · 依賴：G001





S002 · implies操作前

ORIGINAL states=[s6, m6, f6, e16, e26, d6],alphabet=[a6, b6],start=s6;ORIGINAL transition order=[[s6, null, m6], [s6, null, d6], [m6, a6, m6], [m6, b6, f6], [f6, null, e16], [e16, null, e26]]

操作後

final set normalized UTF16=[f6];states nonempty,alphabet/finals/relation MAYEMPTY;DUPLICATE triples rejected in THIS model

條件：無

此題與前一NFA節點不同：transition triple須唯一，finals須排序。所有subset都是真carrier子集合；不偷用舊wrapper的duplicate／final-order慣例。

步驟識別與依賴規則：subsetdfa_qualified_NFA_signature_DUPLICATE_edges_REJECTED_here · 依賴：G001, S001





S003 · implies操作前

Subset DFA ORIGINAL whole-word start:stage=0;seed set=[s6];previous set=[s6]

操作後

ALL [ORIGINAL edge index,from,to,enabled] EPS rows=[[0, s6, m6, 是], [1, s6, d6, 是], [4, f6, e16, 否], [5, e16, e26, 否]];next set=[d6, m6, s6];stable=否

條件：無

新增state都有前一層有限EPS路徑，任何含seed的EPS封閉集合都必含每層；有限states使飽和終止，得到完整且最小closure，不消耗input。

步驟識別與依賴規則：subsetdfa_ALL_EPS_fixedpoint_reachability_not_input_consumption · 依賴：G001, S002





S004 · implies操作前

Subset DFA ORIGINAL whole-word start:stage=1;seed set=[s6];previous set=[d6, m6, s6]

操作後

ALL [ORIGINAL edge index,from,to,enabled] EPS rows=[[0, s6, m6, 是], [1, s6, d6, 是], [4, f6, e16, 否], [5, e16, e26, 否]];next set=[d6, m6, s6];stable=是

條件：無

新增state都有前一層有限EPS路徑，任何含seed的EPS封閉集合都必含每層；有限states使飽和終止，得到完整且最小closure，不消耗input。

步驟識別與依賴規則：subsetdfa_ALL_EPS_fixedpoint_reachability_not_input_consumption · 依賴：G001, S003





S005 · implies操作前

Subset DFA ORIGINAL prefix step0:EXACT ORIGINAL supplied S=[d6, m6, s6];symbol=a6;ALL matching ORIGINAL edge rows=[[2, m6, m6]]

操作後

direct symbol targets=[m6];NO EPS preclosure inserted into S;now close ONLY these targets

條件：無

任意給定S未必已EPS-closed，先preclose會改本題運算；定義明示先move(S,a)再closure。empty move得到合法empty dead state。

步驟識別與依賴規則：subsetdfa_GIVEN_S_symbol_move_BEFORE_closure_NO_preclose · 依賴：G001, S004





S006 · implies操作前

Subset DFA ORIGINAL prefix step0 post-symbol EPS closure:stage=0;seed set=[m6];previous set=[m6]

操作後

ALL [ORIGINAL edge index,from,to,enabled] EPS rows=[[0, s6, m6, 否], [1, s6, d6, 否], [4, f6, e16, 否], [5, e16, e26, 否]];next set=[m6];stable=是

條件：無

新增state都有前一層有限EPS路徑，任何含seed的EPS封閉集合都必含每層；有限states使飽和終止，得到完整且最小closure，不消耗input。

步驟識別與依賴規則：subsetdfa_ALL_EPS_fixedpoint_reachability_not_input_consumption · 依賴：G001, S005





S007 · implies操作前

Subset DFA ORIGINAL prefix step1:EXACT ORIGINAL supplied S=[m6];symbol=a6;ALL matching ORIGINAL edge rows=[[2, m6, m6]]

操作後

direct symbol targets=[m6];NO EPS preclosure inserted into S;now close ONLY these targets

條件：無

任意給定S未必已EPS-closed，先preclose會改本題運算；定義明示先move(S,a)再closure。empty move得到合法empty dead state。

步驟識別與依賴規則：subsetdfa_GIVEN_S_symbol_move_BEFORE_closure_NO_preclose · 依賴：G001, S006





S008 · implies操作前

Subset DFA ORIGINAL prefix step1 post-symbol EPS closure:stage=0;seed set=[m6];previous set=[m6]

操作後

ALL [ORIGINAL edge index,from,to,enabled] EPS rows=[[0, s6, m6, 否], [1, s6, d6, 否], [4, f6, e16, 否], [5, e16, e26, 否]];next set=[m6];stable=是

條件：無

新增state都有前一層有限EPS路徑，任何含seed的EPS封閉集合都必含每層；有限states使飽和終止，得到完整且最小closure，不消耗input。

步驟識別與依賴規則：subsetdfa_ALL_EPS_fixedpoint_reachability_not_input_consumption · 依賴：G001, S007





S009 · implies操作前

Subset DFA ORIGINAL prefix step2:EXACT ORIGINAL supplied S=[m6];symbol=b6;ALL matching ORIGINAL edge rows=[[3, m6, f6]]

操作後

direct symbol targets=[f6];NO EPS preclosure inserted into S;now close ONLY these targets

條件：無

任意給定S未必已EPS-closed，先preclose會改本題運算；定義明示先move(S,a)再closure。empty move得到合法empty dead state。

步驟識別與依賴規則：subsetdfa_GIVEN_S_symbol_move_BEFORE_closure_NO_preclose · 依賴：G001, S008





S010 · implies操作前

Subset DFA ORIGINAL prefix step2 post-symbol EPS closure:stage=0;seed set=[f6];previous set=[f6]

操作後

ALL [ORIGINAL edge index,from,to,enabled] EPS rows=[[0, s6, m6, 否], [1, s6, d6, 否], [4, f6, e16, 是], [5, e16, e26, 否]];next set=[e16, f6];stable=否

條件：無

新增state都有前一層有限EPS路徑，任何含seed的EPS封閉集合都必含每層；有限states使飽和終止，得到完整且最小closure，不消耗input。

步驟識別與依賴規則：subsetdfa_ALL_EPS_fixedpoint_reachability_not_input_consumption · 依賴：G001, S009





S011 · implies操作前

Subset DFA ORIGINAL prefix step2 post-symbol EPS closure:stage=1;seed set=[f6];previous set=[e16, f6]

操作後

ALL [ORIGINAL edge index,from,to,enabled] EPS rows=[[0, s6, m6, 否], [1, s6, d6, 否], [4, f6, e16, 是], [5, e16, e26, 是]];next set=[e16, e26, f6];stable=否

條件：無

新增state都有前一層有限EPS路徑，任何含seed的EPS封閉集合都必含每層；有限states使飽和終止，得到完整且最小closure，不消耗input。

步驟識別與依賴規則：subsetdfa_ALL_EPS_fixedpoint_reachability_not_input_consumption · 依賴：G001, S010





S012 · implies操作前

Subset DFA ORIGINAL prefix step2 post-symbol EPS closure:stage=2;seed set=[f6];previous set=[e16, e26, f6]

操作後

ALL [ORIGINAL edge index,from,to,enabled] EPS rows=[[0, s6, m6, 否], [1, s6, d6, 否], [4, f6, e16, 是], [5, e16, e26, 是]];next set=[e16, e26, f6];stable=是

條件：無

新增state都有前一層有限EPS路徑，任何含seed的EPS封閉集合都必含每層；有限states使飽和終止，得到完整且最小closure，不消耗input。

步驟識別與依賴規則：subsetdfa_ALL_EPS_fixedpoint_reachability_not_input_consumption · 依賴：G001, S011





S013 · implies操作前

ORIGINAL word=[a6, a6, b6];direct NFA configuration stage=0;previous configs=[[s6, 0]]

操作後

ALL enabled [from,ORIGINAL edge index,next] rows=[[[s6, 0], 0, [m6, 0]], [[s6, 0], 1, [d6, 0]]];next configs=[[s6, 0], [m6, 0], [d6, 0]];stable=否

條件：無

這條直接路徑在完整finite state×input-position圖上求所有reachable，不把一條chosen run當成全狀態，也不把DFA同一函式重跑冒充不同觀察。

步驟識別與依賴規則：subsetdfa_DIRECT_all_NFA_word_configurations_independent_fixedpoint · 依賴：G001, S012





S014 · implies操作前

ORIGINAL word=[a6, a6, b6];direct NFA configuration stage=1;previous configs=[[s6, 0], [m6, 0], [d6, 0]]

操作後

ALL enabled [from,ORIGINAL edge index,next] rows=[[[s6, 0], 0, [m6, 0]], [[s6, 0], 1, [d6, 0]], [[m6, 0], 2, [m6, 1]]];next configs=[[s6, 0], [m6, 0], [d6, 0], [m6, 1]];stable=否

條件：無

這條直接路徑在完整finite state×input-position圖上求所有reachable，不把一條chosen run當成全狀態，也不把DFA同一函式重跑冒充不同觀察。

步驟識別與依賴規則：subsetdfa_DIRECT_all_NFA_word_configurations_independent_fixedpoint · 依賴：G001, S013





S015 · implies操作前

ORIGINAL word=[a6, a6, b6];direct NFA configuration stage=2;previous configs=[[s6, 0], [m6, 0], [d6, 0], [m6, 1]]

操作後

ALL enabled [from,ORIGINAL edge index,next] rows=[[[s6, 0], 0, [m6, 0]], [[s6, 0], 1, [d6, 0]], [[m6, 0], 2, [m6, 1]], [[m6, 1], 2, [m6, 2]]];next configs=[[s6, 0], [m6, 0], [d6, 0], [m6, 1], [m6, 2]];stable=否

條件：無

這條直接路徑在完整finite state×input-position圖上求所有reachable，不把一條chosen run當成全狀態，也不把DFA同一函式重跑冒充不同觀察。

步驟識別與依賴規則：subsetdfa_DIRECT_all_NFA_word_configurations_independent_fixedpoint · 依賴：G001, S014





S016 · implies操作前

ORIGINAL word=[a6, a6, b6];direct NFA configuration stage=3;previous configs=[[s6, 0], [m6, 0], [d6, 0], [m6, 1], [m6, 2]]

操作後

ALL enabled [from,ORIGINAL edge index,next] rows=[[[s6, 0], 0, [m6, 0]], [[s6, 0], 1, [d6, 0]], [[m6, 0], 2, [m6, 1]], [[m6, 1], 2, [m6, 2]], [[m6, 2], 3, [f6, 3]]];next configs=[[s6, 0], [m6, 0], [d6, 0], [m6, 1], [m6, 2], [f6, 3]];stable=否

條件：無

這條直接路徑在完整finite state×input-position圖上求所有reachable，不把一條chosen run當成全狀態，也不把DFA同一函式重跑冒充不同觀察。

步驟識別與依賴規則：subsetdfa_DIRECT_all_NFA_word_configurations_independent_fixedpoint · 依賴：G001, S015





S017 · implies操作前

ORIGINAL word=[a6, a6, b6];direct NFA configuration stage=4;previous configs=[[s6, 0], [m6, 0], [d6, 0], [m6, 1], [m6, 2], [f6, 3]]

操作後

ALL enabled [from,ORIGINAL edge index,next] rows=[[[s6, 0], 0, [m6, 0]], [[s6, 0], 1, [d6, 0]], [[m6, 0], 2, [m6, 1]], [[m6, 1], 2, [m6, 2]], [[m6, 2], 3, [f6, 3]], [[f6, 3], 4, [e16, 3]]];next configs=[[s6, 0], [m6, 0], [d6, 0], [m6, 1], [m6, 2], [f6, 3], [e16, 3]];stable=否

條件：無

這條直接路徑在完整finite state×input-position圖上求所有reachable，不把一條chosen run當成全狀態，也不把DFA同一函式重跑冒充不同觀察。

步驟識別與依賴規則：subsetdfa_DIRECT_all_NFA_word_configurations_independent_fixedpoint · 依賴：G001, S016





S018 · implies操作前

ORIGINAL word=[a6, a6, b6];direct NFA configuration stage=5;previous configs=[[s6, 0], [m6, 0], [d6, 0], [m6, 1], [m6, 2], [f6, 3], [e16, 3]]

操作後

ALL enabled [from,ORIGINAL edge index,next] rows=[[[s6, 0], 0, [m6, 0]], [[s6, 0], 1, [d6, 0]], [[m6, 0], 2, [m6, 1]], [[m6, 1], 2, [m6, 2]], [[m6, 2], 3, [f6, 3]], [[f6, 3], 4, [e16, 3]], [[e16, 3], 5, [e26, 3]]];next configs=[[s6, 0], [m6, 0], [d6, 0], [m6, 1], [m6, 2], [f6, 3], [e16, 3], [e26, 3]];stable=否

條件：無

這條直接路徑在完整finite state×input-position圖上求所有reachable，不把一條chosen run當成全狀態，也不把DFA同一函式重跑冒充不同觀察。

步驟識別與依賴規則：subsetdfa_DIRECT_all_NFA_word_configurations_independent_fixedpoint · 依賴：G001, S017





S019 · implies操作前

ORIGINAL word=[a6, a6, b6];direct NFA configuration stage=6;previous configs=[[s6, 0], [m6, 0], [d6, 0], [m6, 1], [m6, 2], [f6, 3], [e16, 3], [e26, 3]]

操作後

ALL enabled [from,ORIGINAL edge index,next] rows=[[[s6, 0], 0, [m6, 0]], [[s6, 0], 1, [d6, 0]], [[m6, 0], 2, [m6, 1]], [[m6, 1], 2, [m6, 2]], [[m6, 2], 3, [f6, 3]], [[f6, 3], 4, [e16, 3]], [[e16, 3], 5, [e26, 3]]];next configs=[[s6, 0], [m6, 0], [d6, 0], [m6, 1], [m6, 2], [f6, 3], [e16, 3], [e26, 3]];stable=是

條件：無

這條直接路徑在完整finite state×input-position圖上求所有reachable，不把一條chosen run當成全狀態，也不把DFA同一函式重跑冒充不同觀察。

步驟識別與依賴規則：subsetdfa_DIRECT_all_NFA_word_configurations_independent_fixedpoint · 依賴：G001, S018





S020 · implies操作前

ORIGINAL word=[a6, a6, b6];ALL DFA prefix subsets=[[d6, m6, s6], [m6], [m6], [e16, e26, f6]];independent direct NFA prefix subsets=[[d6, m6, s6], [m6], [m6], [e16, e26, f6]]

操作後

prefix_invariant=是;accepted=是;base is EPS closure of start;for ANY prefix,append one symbol move then finite EPS suffix to obtain EXACTLY all next reachable states

條件：無

一般等價要對任意prefix歸納並證兩個包含：DFA步驟有NFA路徑見證；任一多讀一字的NFA路徑可切成前prefix、symbol邊、EPS後綴。再以與final交非空對應存在完整接受run。最後固定No只拒絕由有限word tests單獨宣稱一般等價，不否定本invariant、accepted或一般定理。

步驟識別與依賴規則：subsetdfa_GENERAL_arbitrary_prefix_two_inclusions_acceptance_rule · 依賴：G001, S019









## 逐步反向核對


- S020 · premise_and_result_audit — 回到原始資料與本步條件核對，不把單向推論誤稱等價。
- S019 · premise_and_result_audit — 回到原始資料與本步條件核對，不把單向推論誤稱等價。
- S018 · premise_and_result_audit — 回到原始資料與本步條件核對，不把單向推論誤稱等價。
- S017 · premise_and_result_audit — 回到原始資料與本步條件核對，不把單向推論誤稱等價。
- S016 · premise_and_result_audit — 回到原始資料與本步條件核對，不把單向推論誤稱等價。
- S015 · premise_and_result_audit — 回到原始資料與本步條件核對，不把單向推論誤稱等價。
- S014 · premise_and_result_audit — 回到原始資料與本步條件核對，不把單向推論誤稱等價。
- S013 · premise_and_result_audit — 回到原始資料與本步條件核對，不把單向推論誤稱等價。
- S012 · premise_and_result_audit — 回到原始資料與本步條件核對，不把單向推論誤稱等價。
- S011 · premise_and_result_audit — 回到原始資料與本步條件核對，不把單向推論誤稱等價。
- S010 · premise_and_result_audit — 回到原始資料與本步條件核對，不把單向推論誤稱等價。
- S009 · premise_and_result_audit — 回到原始資料與本步條件核對，不把單向推論誤稱等價。
- S008 · premise_and_result_audit — 回到原始資料與本步條件核對，不把單向推論誤稱等價。
- S007 · premise_and_result_audit — 回到原始資料與本步條件核對，不把單向推論誤稱等價。
- S006 · premise_and_result_audit — 回到原始資料與本步條件核對，不把單向推論誤稱等價。
- S005 · premise_and_result_audit — 回到原始資料與本步條件核對，不把單向推論誤稱等價。
- S004 · premise_and_result_audit — 回到原始資料與本步條件核對，不把單向推論誤稱等價。
- S003 · premise_and_result_audit — 回到原始資料與本步條件核對，不把單向推論誤稱等價。
- S002 · premise_and_result_audit — 回到原始資料與本步條件核對，不把單向推論誤稱等價。
- S001 · premise_and_result_audit — 回到原始資料與本步條件核對，不把單向推論誤稱等價。





## 結論

([a6, a6, b6], [[d6, m6, s6], [m6], [m6], [e16, e26, f6]], [[d6, m6, s6], [m6], [m6], [e16, e26, f6]], 是, 是, each_DFA_prefix_subset_equals_all_epsilon_closed_NFA_states_reachable_after_that_prefix, 否, finite_word_tests_do_not_prove_language_equivalence_without_the_prefix_induction_invariant)

依上列完整代值及條件核對得到原題答案；原題編號、格式與狀態保持不變。





## 本題覆核與來源綁定

覆核日期：2026-10-26

原題、答案、步驟表達式、數值 AST 與既有歷史保持原樣；原來的候選狀態屬於來源歷史，不覆寫為形式化證明。

來源雜湊與覆核憑證
- input commit: 0f7be61e2c22317a4075561dc822c87d881a50db
- original question SHA-256: 4ce4c67acf3df8d5d944a9715f9fcbc48529a4a37793a0904f97926e8093884f
- candidate record SHA-256: e722542f6fc3de81b1e593cf07729179945b11776f5b97dca9586fea579029c9
- semantic review receipt SHA-256: a7c0d888ade6d307703c4222c4137c78c0d2448babdcba2fa3446fe6fdd343c1
- question-first witness SHA-256: c9571f97a37d503ad6a61034cc00108543a05c37ef246d1c4962f55136a3de02
- Lean: NOT_RUN · human review: NOT_PERFORMED

[同源完整 JSON](https://ocme.evemisslab.com/data/question-derivations/questions/q-20261014-advance-20261112-r07-subset-construction-nfa-to-dfa-0082.json)




