SKILL.md:時間區間推理(Allen 1983)
何時使用此技能
遇到以下情況時載入此技能:
| 觸發情境 | Allen 適用的原因 |
|---|---|
| "任務 A 是否在任務 B 開始前結束?" | 需要區間關係分類(before, meets, overlaps…) |
| "我不確知 X 何時發生,只知道它發生在 Y 期間" | 對 13 種關係存在析取不確定性 |
| "如果加入此約束,排程是否仍可行?" | 約束傳播 + 不一致性偵測 |
| "事件 A 每天發生;事件 B 每年發生 — 它們如何互動?" | 用於範圍管理的參考區間層次結構 |
請勿使用,如果你只需要比較兩個絕對時間戳記且無不確定性 — 純算術即可。
決策點
新增時間斷言
IF 斷言與現有約束衝突:
→ 在傳播期間偵測到空的弧標籤
→ 立即停止,報告不一致的區間配對
→ 不要在不一致的狀態下繼續
IF 斷言一致:
→ 從受影響的弧執行約束傳播
→ 透過交集傳遞性結果更新標籤
→ 繼續直到不再有精煉可能
處理時間不確定性
IF 證據僅支援多重關係:
→ 維持完整的析取標籤 {before, meets, overlaps}
→ 在沒有證據時絕不縮減為單一關係
→ 記錄何時/為何約束集合縮小
IF 必須在不確定的情況下行動:
→ 直接使用析取標籤進行規劃
→ 將任何假設標記為可廢棄
→ 避免過早承諾
界定時間推理範圍
IF 處理時間尺度差異極大的事件:
→ 識別參考區間層次結構(年→月→日)
→ 在各個叢集內分別推理
→ 在邊界建立明確的橋接約束
→ 避免將所有東西扁平化為單一全域圖譜
IF 局部推理感覺足夠:
→ 驗證查詢範圍符合參考區間層級
→ 僅在相關叢集內傳播
→ 僅在偵測到相依性時升級跨叢集處理
狀態持續性
IF 狀態持續且沒有明確的結束邊界:
→ 套用持續性預設值 且 將其標記為可廢棄
→ 任何未來的結束邊界斷言會覆寫預設值
→ 絕不將持續性假設視為硬性約束
IF 提供了明確的時間邊界:
→ 覆寫任何現有的持續性預設值
→ 正常傳播新約束
失敗模式
| 反模式 | 症狀 | 診斷 | 修正 |
|---|---|---|---|
| 點化 | 將事件縮減為時間戳記,失去重疊/包含資訊 | 使用 time=14:30 而非 [14:30, 14:45] 區間 | 將每個事件建模為具有開始/結束的區間,即使持續時間未知 |
| 過早承諾 | 當證據支援多重關係時,選擇單一關係 | 當只知道「不在期間內」時斷言「之前」 | 維持完整的析取標籤,直到證據強制縮小 |
| 全域傳播炸彈 | 每次更新 O(N²) 成本,效能隨知識庫大小而下降 | 針對局部查詢在整個圖譜上執行約束傳播 | 使用參考區間層次結構來限制傳播範圍 |
| 空標籤否認 | 在偵測到不一致後繼續推理 | 因為衝突的約束被忽略而得到無意義的結果 | 將空的弧標籤視為成功(及早捕獲不一致),立即停止 |
| 持續性僵化 | 無法覆寫「持續直到變更」的假設 | 新的時間邊界因與持續性衝突而被拒絕 | 將所有持續性預設值標記為可廢棄,允許透過明確斷言覆寫 |
偵測規則:
- 如果你看到沒有持續時間的時間戳記 → 點化
- 如果你看到任意選擇的單一關係 → 過早承諾
- 如果傳播成本隨總知識庫大小增長 → 全域傳播炸彈
- 如果在空標籤後繼續推理 → 空標籤否認
- 如果新的時間事實被拒絕 → 持續性僵化
實際範例
範例 1:會議排程衝突偵測
情境: 在已有「客戶電話」和「工程站立會議」的行事曆中加入「團隊審查」
初始狀態:
客戶電話 (I₁):[10:00, 11:00]
工程站立會議 (I₂):[11:30, 12:00]
已知:I₁ {before} I₂
新斷言: 團隊審查 (I₃):[10:45, 11:15]
專家推理軌跡:
-
分類新關係:
- I₃ vs I₁:從 10:45 開始,I₁ 於 11:00 結束 → {overlaps}
- I₃ vs I₂:於 11:15 結束,I₂ 於 11:30 開始 → {before}
-
約束傳播:
- 從 I₁ {before} I₂ 和 I₃ {overlaps} I₁
- 傳遞性:overlaps ∘ before = {before, overlaps, meets, starts, during}
- 新約束:I₃ {before, overlaps, meets, starts, during} I₂
- 與 I₃ {before} I₂ 交集:標籤變為 {before}
-
一致性檢查: 所有標籤非空 → 排程可行但存在重疊
新手可能會錯過:
- 可能不會檢查 I₃ 與 I₁ 重疊造成資源衝突
- 可能不會驗證傳遞性維持一致性
- 可能不會區分「可行順序」與「無資源衝突」
專家會捕捉到:
- 透過關係分類立即標記重疊偵測
- 傳播驗證全域一致性維持
- 清楚區分時間可行性與資源可用性
範例 2:流程階段相依性
情境: 任務完成時間不確定的部署管線
初始狀態:
建置階段 (B):持續時間未知,必須在部署前完成
測試階段 (T):與建置結尾重疊,持續時間不確定
部署階段 (D):在 B 和 T 都完成後開始
約束網路:
T {overlaps, finishes} B (測試可以隨建置結束或在其之前結束)
B {before, meets} D (建置必須在部署前完成)
T {before, meets} D (測試必須在部署前完成)
新資訊:「測試發現關鍵錯誤,延長 2 小時」
專家推理:
- 更新影響範圍: 測試延長將 T 的結束點推後
- 傳播: 如果 T {finishes} B 原本成立,現在 T {overlaps} B(延長超過建置結束)
- 檢查一致性: T {overlaps} B 仍允許 B {before, meets} D 和 T {before, meets} D
- 結果: 部署延遲但管線邏輯不變
新手可能會錯過:
- 可能假設測試完成不影響建置-部署相依性
- 可能不會將測試延長傳播到部署時序
- 可能將「測試延長」視為孤立事實,而非約束網路更新
專家會捕捉到:
- 認識到測試-建置關係必須重新評估
- 將時序影響透過完整約束網路傳播
- 適當地維持不確定性(部署可以在建置後立即開始,或在延長的測試後開始)
品質檢查
時間推理任務完成時:
- 所有區間以明確的開始/結束邊界表示(無點事件)
- 每個區間配對具有非空的 13 種關係辭彙表弧標籤
- 約束傳播執行至完成(無待處理的傳遞性更新)
- 所有析取標籤誠實反映當前證據(無任意承諾)
- 為多尺度推理建立參考區間層次結構
- 持續性預設值在適用處標記為可廢棄
- 不一致性偵測已驗證(捕獲並報告空標籤)
- 跨參考範圍橋接已明確定義
- 所有時間斷言可追溯至證據來源
- 查詢範圍符合推理粒度層級
不屬於此技能的範圍
請勿將 Allen 的區間代數用於:
- 簡單時間戳記比較 → 使用算術:
if (t1 < t2) - 度量持續時間計算 → 使用日曆算術:
end_date - start_date - 即時排程最佳化 → 使用具有數值域的約束滿足
- 機率性時間推理 → 使用時間機率網路
- 連續時間動態 → 使用微分方程式
- 高頻事件串流 → 使用串流處理架構
改為委託:
- 度量約束:使用 constraint-satisfaction-with-numeric-domains
- 機率性時間推理:使用 bayesian-temporal-networks
- 即時系統:使用 rate-monotonic-scheduling
- 連續動態:使用 temporal-logic-model-checking
- 事件串流處理:使用 complex-event-processing
Allen 擅長: 在不確定性下進行定性時間推理,具有增量知識更新和層次化範圍管理。