ä¸è¬åããããã¤ãã«ï¼ããã¼ãã®å®çã«ã¤ãã¦ããã¤ãããã³ã¨æ¸ãããã¨æããªãã10å¹´ãçµéãã¦ãã¾ãã¾ãããããã£ã¨ä¸è¬åãããããåæãæ¸ãããããããã¬ã¤ã«ã¾ã¨ãããããé«æ¬¡å åããããã¨ãã®å¸æã¯ããã®ã§ããããããè¨ã£ã¦ããã¨ããã«å 延ã°ãã«ãªã£ã¦ãã¾ãã®ã§ãã¨ããããç¾æç¹ã§ããããªã¨è¨ãããã¨ãããªãã¹ãæ£ç¢ºã«è¨è¿°ãããã¨ã«ãã¾ãã
ä¸åã«æ¸ãåããéã§ã¯ãªãã®ã§ãä½åº¦ãã«åãã¾ããã§ãã次åãæ°å¹´å ã«ãªããªãããã«åªãã¾ãã
å 容ï¼
- ä»ã¾ã§ã®çµç·¯ï¼å 延ã°ãã®æ´å²
- ç¨èªæ³ã®æ³¨æ
- ãã¬ãªã¼ãããã³ã®å®ç¾©
- ä¼çµ±çãªã¼ãããã³
- åå¤ãªã¼ãããã³ã¨ãªã¼ãããã³ã®å対
- æ´æ°ã¹ã¿ãã¯ã®ä¾
- ææ¨ã°ã©ãã®æä½ï¼å¶éã¨é¤å»
- éå§é ç¹æãèå¥é ç¹æãåºå®åé¢æ
- ãªã¼ãããã³ã®å®ç¾©ï¼éå§ã¨èå¥ã®æ§é
- ä»åã®ã¾ã¨ã
ã·ãªã¼ãºè¨äºãªã³ã¯ï¼
- 1ï¼æºåã¨äºä¾ ï¼ãã®è¨äºï¼
- 2ï¼æåçãªã®ã£ãããä¹ãè¶ããããã®å¯¾è¨³è¡¨
- 3ï¼ãªã¼ãããã³ã®æ¯ãèãã¨è¦³æ¸¬
ä»ã¾ã§ã®çµç·¯ï¼å 延ã°ãã®æ´å²
ãã¤ãã«ï¼ããã¼ãã®å®çã®ã½ããã¦ã§ã¢ç解éããåãæåã«ã¡ã¢ã£ã¦ããã®ã¯ã2006å¹´5æã®ããã§ãã
- ããã¼ãåå¤ã¨ãï¼ã ãã¶æªæ´çãç¨èªæ³ã»è¨æ³ãææ§ï¼
6å¹´å¾ã®2012å¹´4æã®è¨äºãã¡ã¤ã¤ã¼ä»£æ°ãã¡ã¤ã¤ã¼ææ¨ãã¡ã¤ã¤ã¼ãªã¼ãããã³ãã«ããã¦ï¼
å°éå¯è½æ§ã¨èå¥å¯è½æ§ã¨ããæ¦å¿µã使ãããã¤ãã«ï¼ããã¼ãï¼Myhill/Nerodeï¼é¢¨ã®å®çãå°ãã¾ã -- ãã®è©±ã¯é·ããªãã®ã§ã¾ãå¥ãªæ©ä¼ã«ãã¾ãããã
è¨äºã¿ã¤ãã«ã«å«ã¾ãããã¡ã¤ã¤ã¼ãªã¼ãããã³ãï¼Mayer automatonï¼ã¯ãé常ã®å®ç¾©ã«æ¯ã¹ã¦ä¸è¬åããããªã¼ãããã³ã®ãã¨ã§ããä¸è¨å¼ç¨è¨äºã®10æ¥ã»ã©å¾ã®è¨äºãã¡ã¤ã¤ã¼ãªã¼ãããã³ã«é¢ãããã¤ãã«ï¼ããã¼ãã®å®çã宣ä¼ãããã§ãã¡ã¤ã¤ã¼ãªã¼ãããã³ï¼ï¼ä¸è¬åããããªã¼ãããã³ï¼ã«å¯¾ãããã¤ãã«ï¼ããã¼ãã®å®çã示ãããä½ãå¬ããã®ããã©ããªãå©çãããã®ãã説æãã¦ãã¾ãã
ãã®å¾ãé¢é£ããæ¦å¿µãäºåç¥èã®èª¬æãå°ãã ããããã¨ã¯ããã¾ãï¼ä¸ã®è¨äºãªã©ï¼ã
ããããå®å
¨ãªè¨è¿°ã¯ãªãã®ã§ããããããã£ã³ãæ¸ããã¨æãã¾ããéå»ã®è¨äºã¸ã®åç
§ã¯ãã¾ããã説æã丸æãã¯ããªãã§ããªãã¹ãèªå·±å®çµçã«ãªãããã«ãã¾ãããã ããä¸è¬æ§ãé«ãäºåç¥èã¾ã§å度説æãããã¨ã¯ãã¾ãããã¾ããåæ©ãèæ¯ã®èª¬æã¯çç¥ãããã¨ãå¤ããªãã¨æãã¾ããâãã£ãã詳ããæ¸ãã¤ããã
ç¨èªæ³ã®æ³¨æ
ããããæ±ãâãªã¼ãããã³âã¯ãä¸è¬åããããªã¼ãããã³ã§ããããã¯ãæ°å¹´åã«åãã¡ã¤ã¤ã¼ãªã¼ãããã³ã¨å¼ãã§ãããã®ã¨åãã§ããåã«ããªã¼ãããã³ãã¨è¨ã£ãããä¸è¬åããããªã¼ãããã³ãæå³ãããã¨ã«ãã¾ããã¤ã¾ãã
- ä¸è¬åããããªã¼ãããã³ï¼ã¡ã¤ã¤ã¼ãªã¼ãããã³ï¼ãªã¼ãããã³
å½¢å¼è¨èªçè«ï¼ãªã¼ãããã³çè«ã®æç§æ¸ã«ãããããªé常ã®ãªã¼ãããã³ã¯ãä¼çµ±çãªã¼ãããã³ï¼traditional automatonï¼ã¨å¼ã¶ãã¨ã«ãã¾ããä¼çµ±çãªã¼ãããã³ã«ã¤ãã¦ããä¸è¬åããããªã¼ãããã³ã«ã¤ãã¦ããå¾ã§ãã£ã³ãå®ç¾©ãã¾ãã
ä¼çµ±çãªã¼ãããã³ã«å¯¾ãããã¤ãã«ï¼ããã¼ãã®å®çï¼Myhill–Nerode theoremï¼ã¯ãæ£è¦è¨èªã¨ãªã¼ãããã³ã®é¢é£ãè¿°ã¹ãå®çã§ãããæ£è¦è¨èªã«ã¯ç¹ã«æããªãå®å¼åããã¾ããä¸è¬åããããã¤ãã«ï¼ããã¼ãã®å®çã¯ãä¸è¬åããããªã¼ãããã³ã«å¯¾ãããã¤ãã«ï¼ããã¼ãã®å®çã®ãã¨ã§ããåã«ããã¤ãã«ï¼ããã¼ãã®å®çãã¨è¨ã£ãããä¸è¬åããããã¤ãã«ï¼ããã¼ãã®å®çãæå³ãããã¨ã«ãã¾ããã¤ã¾ãã
- ä¸è¬åããããã¤ãã«ï¼ããã¼ãã®å®çï¼ä¸è¬åããããªã¼ãããã³ã«å¯¾ãããã¤ãã«ï¼ããã¼ãã®å®çï¼ãã¤ãã«ï¼ããã¼ãã®å®ç
åºæ¬æ¦å¿µãæºåãã¦è£é¡ãç©ã¿éããã°ãä¸è¬åããããã¤ãã«ï¼ããã¼ãã®å®çã«å°éãã¾ããå ¨ä½ã®æ§å³ã¯é ã«ããã¾ãããç´°é¨ã¾ã§è©°ãããã¨ã¯ãªãã®ã§ããããããããããäºå®ã§ãã
ãã¬ãªã¼ãããã³ã®å®ç¾©
ããã§ã¯ãï¼ä¸è¬åãããï¼ãªã¼ãããã³ã¨ãã¦é¢æãªã¼ãããã³ãæ¡ç¨ãã¾ããé¢æãªã¼ãããã³ã«ã¤ãã¦ã¯ã次ã®éå»è¨äºã§æ±ã£ã¦ã¾ãããå¿ è¦ãªäºé ã¯ããä¸ã§è¿°ã¹ã¾ãã
ãªã¼ãããã³ã¯å§ç¶æ ï¼åæç¶æ ï¼ã¨çµç¶æ ãæã¡ã¾ããããããã¯å¾ã§ä»å ãããã¨ã«ãã¦ããã¬ã¼ã³ãªç¶æ é·ç§»ç³»ã«ç¸å½ãããã¬ãªã¼ãããã³ããèãã¾ãããããã¬ãªã¼ãããã³ï¼preautomatonï¼ã¨ã¯ãCãå°ããåã¨ãã¦ãF:CâSet ã¨ããå½¢ã®é¢æFã®ãã¨ã§ãããã ããåCã¯ã°ã©ãï¼æåã°ã©ãï¼ããèªç±çæããããã®ã«éå®ãã¾ããΦãã°ã©ãã¨ãã¦ãC㯠C = FreeCat(Φ) ã¨æ¸ãããã¨ã常ã«åæããããã§ããã°ã©ããã®ãªã·ã£æå大æåã§æ¸ãçç±ã¯å¾ï¼ãä¼çµ±çãªã¼ãããã³ãã®ç¯ï¼ã§èª¬æãã¾ããã°ã©ãããèªç±çæãããåï¼èªç±åããã¹ã®åãéã®åï¼ã«ã¤ãã¦ã¯ã次ã®è¨äºãåç §ãã¦ãã ããã
- åè«çªå¤ï¼æåã°ã©ãã®ãã¹ã®åï¼å®è£ ä»ãï¼
- ã¢ãã¤ãã¨æåã°ã©ãããåãæ§æãã
ã°ã©ãã¨åã®ããã ã«ã¯æ¬¡ã®éä¼´é¢ä¿ãããã¾ãã
- CAT(FreeCat(Φ), Set) GRAPH(Φ, Forget(Set))
ããã§ãCATã¯âå¿ ãããå°ãããªãåâã®åãGRAPHã¯âå¿ ãããå°ãããªãã°ã©ãâã®åã§ãã大ããªåSetãå«ã¾ããã®ã§ãå¿ ãããå°ãããªããã¨ããæãæ¸ããå¿ è¦ã«ãªãã¾ããFreeCat:GRAPHâCAT ã¯èªç±çæããé¢æã§ãForget:CATâGRAPH ã¯å¿å´é¢æã§ãã
ãã®éä¼´é¢ä¿ FreeCat -| Forget ãããã®ã§ãèªç±åFreeCat(Φ)ããã®é¢æã¨ã°ã©ãΦããã®ã°ã©ãæºååååã¯1ï¼1ã«å¯¾å¿ãã¾ãããã®1ï¼1対å¿ã«ãããé¢æã¨ã°ã©ãæºååååãåãè¨å·ã§è¡¨ããã¨ãããã¾ãï¼è¨å·ã®ä¹±ç¨ã§ãï¼ãä¾ãã°ã(F:FreeCat(Φ)âSet) ââ (F:ΦâSet) ã®ããã«ãåãFã§é¢æã¨ã°ã©ãæºååååã表ãã¾ãã
ãã¬ãªã¼ãããã³ã¨ã¯èªç±åããã®é¢æã ã£ãã®ã§ãF:FreeCat(Φ)âSet ã¾ã㯠F:ΦâSet ã¨ãã¦ãã¬ãªã¼ãããã³ã表ããã¨ã«ãªãã¾ããé¢æFãå¤ãåãåãSet以å¤ã«ããã¨ãå¥ç¨®ã®ãã¬ãªã¼ãããã³ãå®ç¾©ã§ãã¾ããä¾ãã°ãF:ΦâRel ãªããFã¯é決å®æ§ãã¬ãªã¼ãããã³ã§ããkãé©å½ãªä½ã¨ãã¦ãF:ΦâVectk ãªããFã¯k-ç·å½¢ãã¬ãªã¼ãããã³ã«ãªãã¾ãããããããã§ã¯ãé¢æã®å¤ã®åã¯Setã«éãã¾ããã¤ã¾ãã決å®æ§ãã¬ãªã¼ãããã³ã ããèãããã¨ã«ãªãã¾ãã
å¾ï¼ããªã¼ãããã³ã®å®ç¾©ï¼éå§ã¨èå¥ã®æ§é ãã®ç¯ï¼ã§è¿°ã¹ãããã«ããã¬ãªã¼ãããã³ã¨ãªã¼ãããã³ã®å·®ã¯ãããã¦ãªãã®ã§ããã¬ãªã¼ãããã³ããªã¼ãããã³ã¨å¼ã¶ãã¨ãããã¾ããç¹ã«å¼·èª¿ãããã¨ãã ãããã¬ããä»ãããã¨ã«ãã¾ãã
ä¼çµ±çãªã¼ãããã³
ä¼çµ±çãªã¼ãããã³ããå ã«å®ç¾©ããé¢æ(ãã¬)ãªã¼ãããã³ã¨ã¿ãªãæ¹æ³ãè¦ã¦ããã¾ãããã
ä¼çµ±çãªã¼ãããã³ã¯ãA = (Î, Q, δ, q0, T) ã¨ãã¦å®ç¾©ããã¾ããããã§ï¼
- Îã¯ã¢ã«ãã¡ãããï¼alphabetï¼ã§ããã©ããªéåã§ããã¾ãã¾ãããä¼çµ±çã«ã¢ã«ãã¡ãããã¯Î£ã§è¡¨ããããã¨ãå¤ãã®ã§ããã大æåã·ã°ããå¥ãªæå³ã§ä½¿ãå¯è½æ§ãããã®ã§å¤§æåã¬ã³ãï¼Îï¼ã使ãã¾ããã
- Qã¯ç¶æ 空éï¼state spaceï¼ã§ãã空ã§ãªããã°ã©ããªéåã§ããã¾ãã¾ãããæåSã使ããªãã£ãã®ã¯ãSãå¾ã§å¥ãªæå³ã§ä½¿ãããã§ãã
- δã¯é·ç§»ååï¼transition mapï¼ã§ãδ:QÃÎâQããããä½ã®å¶éãããã¾ããã
- q0ã¯å§ç¶æ ï¼initial stateï¼ãq0âQ ãªãä½ã§ãããã§ãã
- Tã¯çµç¶æ ï¼final state, terminal stateï¼ã®éåã§ãTâQãTã¯ç©ºã§ãªãé¨åéåã§ãã
A = (Î, Q, δ, q0, T) ãããã°ã©ãΦã¨é¢æ F:ΦâSet ãä½ãã¾ããå度注æãã¾ãããé¢æã¨ã°ã©ãæºååååãé©å®åä¸è¦ãã¦ãã¾ããF: ΦâSet ã¯ããã³ãã¯é¢æãããªããã©ãC = FreeCat(Φ) ã®é¢æã«ä¸æçã«æ¡å¼µã§ããã®ã§ãâé¢æâã¨ãå¼ã³ã¾ãã
ããããä½ãã°ã©ãΦã¯ãä¼çµ±çãªã¼ãããã³Aã®ææ¨ã°ã©ãï¼signature graphï¼ãã¾ãã¯åã«ææ¨ï¼signatureï¼ã¨å¼ã³ã¾ããã¤ã³ã¹ãã£ãã¥ã¼ã·ã§ã³çè«ã§ã¯ãææ¨ãã®ãªã·ã£æå大æåã§è¡¨ãç¿æ £ãããã®ã§ãããã«å¾ã£ã¦ã®ãªã·ã£æå大æåã使ã£ãã®ã§ãã
Φã¯ã°ã©ãã§ãããåã¨åæ§ãªè¨æ³ã使ã£ã¦ãé ç¹ã®éåã|Φ|ãx, yâ|Φ| ã«å¯¾ãã¦2é ç¹ã®ããã ã®è¾ºã®éåãΦ(x, y)ã§è¡¨ãã¾ããä¼çµ±çãªã¼ãããã³Aã«å¯¾ããææ¨ã°ã©ãΦã¯æ¬¡ã®éãã§ãã
- |Φ| = {0, 1, 2}
- Φ(0, 1) = {i}
- Φ(1, 1) = Î
- Φ(1, 2) = {t}
- ãã以å¤ã®Î¦(n, m)ã¯ç©ºéåã
ææ¨ã°ã©ãΦã¯ãã¢ã«ãã¡ãããÎã ããã決ã¾ãããã®ä»ã®æ§æè¦ç´ ã¯é¢ä¸ãã¦ãªããã¨ã«æ³¨æãã¦ãã ããã以ä¸ã¯ãÎ = {a, b} ã®å ´åã®ææ¨ã°ã©ãã§ãã
次ã«ãF:ΦâSet ãå®ç¾©ãã¾ããï¼å®ç¾©ã«ã¤ã³ãã©ã¼ãã«ãªã©ã ãè¨æ³ã使ã£ã¦ã¾ããã©ã ãè¨æ³ã«ã¤ãã¦ã¯ãéå»è¨äºãJavaScriptã§å¦ã¶ã»ããã°ã©ãã®ããã®ã©ã ãè¨ç®ãããçµµãæãã¦å¦ã¶ã»ããã°ã©ãã®ããã®ã©ã ãè¨ç®ããªã©ãåç §ãã¦ãã ãããï¼
- F(0) = 1 ï¼1ã¯ç¹å®ãããåå éåã1 = {0}ï¼
- F(1) = Q
- F(2) = B ï¼Bã¯çå½å¤ã®éå㧠B = {true, false}ï¼
- F(i):1âQ ã¯ã0|âq0 ã§æ±ºã¾ãååã
- aâÎ ã«å¯¾ããF(a):QâQ ã¯ãλsâQ.δ(s, a) ã§æ±ºã¾ãååã
- F(t):QâBã¯ãsâTãªãtrueãããã§ãªããªãfalseã§æ±ºã¾ãååã
以ä¸ã§ãä¼çµ±çãªã¼ãããã³ A = (Î, Q, δ, q0, T) ããææ¨ã°ã©ãΦã¨é¢æï¼ã°ã©ãæºååååï¼Fï¼Î¦âSet ã決ã¾ãã¾ãããFã¯Aã®æ å ±ããã¹ã¦æã£ã¦ããã®ã§ãé¢æFããä¼çµ±çãªã¼ãããã³Aãåç¾ã§ãã¾ãã
- Π= Φ(1, 1)
- Q = F(1)
- δ(s, a) = F(a)(s) ï¼F(a):QâQï¼
- q0 = F(i)(0) ï¼F(i):1âQï¼
- T = F(t)-1(true) ï¼F(t):QâBï¼
åå¤ãªã¼ãããã³ã¨ãªã¼ãããã³ã®å対
決å®æ§ãªã¼ãããã³ã ãã®ç¯å²ã§ã¯ãå対æ§ã®è°è«ã¯ãã¾ããã¬ã¤ã«ã¾ã¨ã¾ãã¾ãããåãä½ãè¦è½ã¨ãã¦ããã®ããç¥ããªãã§ãããé決å®æ§ãªã¼ãããã³ã¾ã§å«ããªãã¨æ¬è³ªçã«ãã¾ããããªããã£ã¦å¯è½æ§ãããã¾ãããããããã§ããå対ãèãããã¨ã¯éè¦ãªãã¯ããã¯ã§ãã
å ã«æ³¨æããããã«ãã°ã©ãæºåååå F:ΦâSet ã«å¯¾å¿ããé¢æãåãFã§è¡¨ãã¾ããC = FreeCat(Φ) ã¨ããã¨ãF:CâSet ï¼é¢æï¼ ã¨ãæ¸ãã¾ãã以ä¸ãCã¯FreeCat(Φ)ã®æå³ã§ä½¿ãã¾ãã
ãªã¼ãããã³Fã¯Cããã®å ±å¤é¢æã§ããããåå¤é¢æ G:CopâSet ãèãããã¨ãã§ãã¾ããé¢æã¨ãã¦åå¤ã§ãããªã¼ãããã³ãåå¤ãªã¼ãããã³ï¼contravariant automatonï¼ã¨å¼ã³ã¾ããä½ãªã¼ãããã³ï¼coautomatonï¼ãå対ãªã¼ãããã³ï¼opposite automatonï¼ã§ãããã¨æãã¾ããå 群ã¨ã®é¡ä¼¼ã§ã¯å·¦ãªã¼ãããã³ï¼left automatonï¼ã¨å¼ã¶ã¹ãã§ãããããå·¦å³ã®åºå¥ã¯æ¸ãæ¹ã§å¤ãã£ã¦ãã¾ãã®ã§ããå·¦ããå³ããç©æ¥µçã«ä½¿ãæ°ã¯ããã¾ããã
ãªã¼ãããã³ F:CâSet ãããã¨ãããFã®å対ããæ¨æºçã«ä½ãããã¨ããã¨ãããã¯åºæ¥ã¾ãããéååSetã«ã¯æ¨æºçå対ã®æ¦å¿µããªãããã§ããã§ãã人çºçã»æ£æçãªå対ãªãä½ãã¾ããé©å½ã« Vâ|Set| ãé¸ãã§ãVã«é¢ãã¦å対ãªåå¤ãªã¼ãããã³ãæ§æãã¾ãã
ã¾ããéååSetã«V-å対æ§ãå°å ¥ãã¾ãã
- éåXã«å¯¾ãã¦ãX*V := VXãããã§ãVXã¯ãXããVã¸ã®ååã®å ¨ä½ãããªãéåï¼é¢æ°éåãææ°ï¼ã
- åå Ï:XâY ã«å¯¾ã㦠Ï*V:Y*VâX*V ããÏ*V(Ï:YâV) := Ï;Ï ã¨å®ç¾©ãããããã¯ãÏãåçµåï¼pre-composeï¼ãã¦ã®å¼ãæ»ãã§ãã
X|âX*V 㨠Ï|âÏ*V ãä¸ç·ã«ããã¨ã(-)*V:SetopâSet ã¨ããåå¤é¢æãå®ç¾©ã§ãã¾ããV = B = {true, false} ã®ã¨ãã(-)*Vã¯åå¤ããéåé¢æã¨åããã®ã§ãããã® V = B ã®ã±ã¼ã¹ãæããã使ãå対æ§ã§ãã
ãªã¼ãããã³ F:CâSet ã®V-å対ãªã¼ãããã³ï¼V-dual automatonï¼F*Vã次ã®ããã«å®ç¾©ãã¾ãã
- xâ|C| ã«å¯¾ãã¦ãF*V(x) := F(x)*V
- fâC(x, y) ã«å¯¾ãã¦ãF*V(f) := F(f)*V
Fã®V-å対ãªã¼ãããã³ã¯åå¤ãªã¼ãããã³ã§ãããã¨ã«æ³¨æãã¦ãã ãããGãåå¤ãªã¼ãããã³ã§ããå ´åã¯ãGã®V-å対ãªã¼ãããã³ãä½ãã¨å ±å¤ãªã¼ãããã³ã«ãªãã¾ããV-å対ã«ããåå¤ã¨å ±å¤ãå ¥ãæ¿ããã¾ãã
æ£ç¢ºã«ã¯ãå ±å¤ãªã¼ãããã³Fã®V-å対ãªåå¤ãªã¼ãããã³ãã¨ãè¨ãã¹ãã§ãããåå¤ã»å ±å¤ã¯æèã§å¤æãã¦ãã ãããã¾ããVãåºå®ãã¦ããç¶æ³ã§ã¯ãF*Vãåã«F*ã¨æ¸ããã¨ãããã¾ãã
A = (Î, Q, δ, q0, T) ãä¼çµ±çãªã¼ãããã³ã¨ãã¦ãF:ΦâSet ã対å¿ããé¢æãªã¼ãããã³ã¨ãã¾ããV = B ã¨åºå®ãã¦ãFã®å対ãªã¼ãããã³ F* = F*B ãèãã¦ã¿ã¾ãããã以ä¸ãPow(X)ã¯Xã®ããéåã§ãã
- F*(0) = B1 B
- F*(1) = BQ Pow(Q)
- F*(2) = BB Pow(B)
ååã§ããéåã¯äºãã«ç½®ãæãã¦ãå®è³ªã¯åããªã®ã§ã次ã®ããã«å®ç¾©ãã¦ãã¾ãã¾ãããã
- F*(0) = B = {true, false}
- F*(1) = Pow(Q)
- F*(2) = Pow(B) = {{}, {true}, {false}, {true, false}}
i:0â1, t:1â2 㨠a:1â1ï¼aâÎï¼ã«å¯¾ããF*ã®å¤ã¯æ¬¡ã®ããã«ãªãã¾ãã
- F*(i):Pow(Q)âB ã¯ãλXâPow(Q).(if (q0âX) then true else false)ã
- F*(a):Pow(Q)âPow(Q) ã¯ãλXâPow(Q).{yâQ | F(a)(y) âX}ã
- F*(t):Pow(B)âPow(Q) ã¯ã{true}|âT, {false}|â(Tã®è£éå) ã§å®ç¾©ãããååã
ããã§ãFã®å対ã§ããåå¤ãªã¼ãããã³F*ãå®ç¾©ã§ãã¾ããããã®ä¾ããåããããã«ãFã¨F*ã¯å¼·ã対称æ§ãæã£ã¦ããããã§ã¯ããã¾ãããå§ç¶æ ã¨çµç¶æ ãå ¥ãæ¿ãã£ã¦ããããã«ãæãã¾ãããå®éã«ã¯å¯¾ç§°æ§ã¯æªãã§ãã¾ãã対称æ§ãå¾ãã«ã¯ãåå¥ã®å·¥å¤«ãå¿ è¦ã§ããããå®æã«å¯¾ç§°æ§ãæå¾ ãã¦ã¯ãã¡ã§ãã
æ´æ°ã¹ã¿ãã¯ã®ä¾
ä¼çµ±çãªã¼ãããã³ä»¥å¤ã®ãªã¼ãããã³ã®ä¾ãåºãã¦ããã¾ããããæ´æ°å¤ãç©ãã¹ã¿ãã¯ãèãã¾ãã
ã¹ã¿ãã¯ã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ãè¨è¿°ãã¾ããããã¤ã³ã¿ã¼ãã§ã¤ã¹è¨è¿°è¨èªã¯æ¬ä¼¼è¨èªã§ããããªãããã®ããã°ã©ãã³ã°è¨èªãç¥ã£ã¦ããã°æå³ã¯ããåããã§ããããã¡ã¤ã¤ã¼å çã«ã¤ãã¦ã¯ããã¡ã¤ã¤ã¼å çã®å大ãã¨Command-Queryåé¢ããåç §ãã¦ãã ããã
interface IntStack {
query: // ã¡ã¤ã¤ã¼å çã®ã¯ã¨ãª
isEmpty : this -> boolean;
top : this -> int throws Error;
command: // ã¡ã¤ã¤ã¼å çã®ã³ãã³ã
pop : this -> this;
push : this, int -> this;
creator: // çæåï¼ã³ã³ã¹ãã©ã¯ã¿ï¼
emptyStack : void -> this;
singletonStack : int -> this; // åä¸ã®è¦ç´ ãæã¤ã¹ã¿ãã¯
}
èªåèªèº«ã表ãæé»ã®ã½ã¼ãï¼åãã¼ã¯ã¼ãï¼thisãçç¥ããã«æ¸ãã¦ãã¾ããpopã¯ä¾å¤ãæããã«ã空ã¹ã¿ãã¯ã«å¯¾ãã¦ã¯ä½ãããªãã ãã¨ãã¾ãã
[追è¨]thisã¯ããºãã£ããªã¼ãthisã®ç¨æ³ã¯ãèªåèªèº«ã表ãåãããªãã¦ãå¤æ°ã®ããã«ä½¿ãã¾ãããåã¯å¤§æåå§ã¾ãThisã«ãã¦ãthisâThis ã¨ãããããªæãã«ããã°ããã£ãããããã¯ãinterfaceã®è¦åºãã«ä½¿ã£ãIntStackãåã®ååã«ä½¿ããã
å®éã®thisã®ç¨æ³ã¨ã¯é£ãéãã¾ãããçµµï¼ä¸ï¼ãããã®ã§ãã¢ãã°ãµãã¦ãã®ã¾ã¾ã§ãã[/追è¨]
ãã®ã¤ã³ã¿ã¼ãã§ã¤ã¹IntStackã«å¯¾å¿ããææ¨ã°ã©ããΨãå ·ä½çã«ä½ãã¾ããããã¾ãã|Ψ| = {this, void, boolean, int, intError} ã¨ãã¾ããintErrorã¯ãä¾å¤ãèµ·ããããç¥ããªãæ´æ°å¤ã®åã§ããã°ã©ãã®è¾ºã«é¢ãã¦ãpushã ãã¯ç´°å·¥ããã¾ããpushã¯æ´æ°å¼æ°ããã¤ã®ã§ãå¼æ°ã®å¤ãã¨ã«1æ¬ã®è¾ºãä½ãã¾ããpush(0), push(1), push(-1), ... ãªã©ããããã1æ¬ã®è¾ºã«ãªãã¾ãã辺ã®éåã¯æ¬¡ã®ã¨ããï¼
- Ψ(this, boolean) = {isEmpty}
- Ψ(this, intError) = {top}
- Ψ(this, this) = {pop}âª{push(n) | nâZ}
- Ψ(void, this) = {emptyStack}
- Ψ(int, this) = {singletonStack}
- ãã®ä»ã®Î¨(x, y)ã¯ç©ºéåã
ææ¨ã°ã©ãΨã®å½¢ç¶ã¯æ¬¡ã®ããã«ãªãã¾ããΨ(this, this)ã¯ç¡éæ¬ã®è¾ºãæã¤ã®ã§æãåãã¾ããã
次ã«é¢æ G:ΨâSet ãå®ç¾©ãã¾ãã以ä¸ãList(Z)ã¯æ´æ°ã®ãªã¹ãã®éåã§ãã
- G(this) = List(Z);
- G(void) = 1 = {0}
- G(boolean) = B = {true, false}
- G(int) = Z
- G(intError) = Zâª{error}
G(isEmpty), G(top), G(pop), G(push(n)), G(emptyStack), G(singletonStack) ã¯ãã¾ã¼ãããããå®ç¾©ãã¾ããããã¨ãG:ΨâSet ã¯é¢æï¼ã°ã©ãæºååååï¼ã¨ãªãã¾ãã
ææ¨ã°ã©ãã®æä½ï¼å¶éã¨é¤å»
(ãã¬)ãªã¼ãããã³ã®ææ¨ã¨ãã¦ã¯ãä»»æã®ã°ã©ãï¼æåã°ã©ãï¼ã使ãã¾ããå¶éã¯ä½ãããã¾ãããããã¦ææ¨ã°ã©ãã¨å¼ã¶çç±ã¯ï¼
- ãã®ã°ã©ãΦããèªç±åFreeCat(Φ)ãä½ããã¨ãåæãã¦ããã
- åºæ¥ãèªç±åFreeCat(Φ)ããéååSetã¸ã®é¢æãèããå¿ç©ãããããã
ææ¨ã°ã©ãã«å¯¾ãã2ã¤ã®æä½ãããã§å®ç¾©ãã¦ããã¾ãããã
Φ | ã¯ã°ã©ãΦã®é ç¹ã®éåã表ãã®ã§ãããXâ | Φ | ãã¤ã¾ãXãé ç¹å ¨ä½ã®é¨åéåã¨ãã¾ããæ°ããã°ã©ãΨã次ã®ããã«å®ç¾©ãã¾ãã |
- |Ψ| = X
- Ψ(x, y) = Φ(x, y) ï¼x, yâXï¼
ãããã¦ä½ãããΨã¯æããã«Î¦ã®é¨åã°ã©ãã«ãªãã¾ããã°ã©ãçè«ã§ã¯ãé ç¹ã®é¨åéåXã«ããèªå°é¨åã°ã©ãï¼indueced subgraphï¼ã¨å¼ã¶ãã¨ãå¤ãã§ãããããã§ã¯åè«ã½ãè¨è使ãããã¦ãå æºé¨åã°ã©ãï¼full subgraphï¼ã¨å¼ã³ã¾ããããå æºé¨åã°ã©ãã¯ãé ç¹ã®éåãXã«å¶éããã°ã©ãã¨ãè¨ãã¾ããΦãXã«å¶éããã°ã©ãï¼å æºé¨åã°ã©ãï¼ãΦ@Xã¨æ¸ããã¨ã«ãã¾ãã
åãã Xâ|Φ| ã¨ãã¦ã|Φ|ããXãåãé¤ãã¦æ°ããã°ã©ããä½ããã¨ãã§ãã¾ããããã¯ããï¼¼ããå·®éåã¨ãã¦ã|Φ|ï¼¼X ã«Î¦ãå¶éãããã¨ã¨åãã§ãã念ã®ããã«è©³ããæ¸ãã¨ï¼
- |Ψ| = |Φ|\X
- Ψ(x, y) = Φ(x, y) ï¼x, yâ(|Φ|ï¼¼X)ï¼
ãã®Î¨ããΦããXãé¤å»ããã°ã©ãã¨å¼ãã§ãΦ\X ã¨æ¸ããã¨ã«ãã¾ããå®ç¾©ããï¼
- Φ\X = Φ@(|Φ|\X)
éå§é ç¹æãèå¥é ç¹æãåºå®åé¢æ
ä¼çµ±çãªã¼ãããã³ã«ã¯ãå§ç¶æ ã¨çµç¶æ ãããã¾ãããä¸è¬åããã(ãã¬)ãªã¼ãããã³ã«ã¯å§ç¶æ ï¼çµç¶æ ã®æ¦å¿µãã¾ã ããã¾ããããããããå§ç¶æ ï¼çµç¶æ ã«é¡ä¼¼ã®æ¦å¿µãå°å ¥ãã¾ãããã®ããã«ã¯ãææ¨ã°ã©ãã«æ§é ãä¸ããå¿ è¦ãããã¾ãã
Φãä»»æã®ææ¨ã°ã©ãã¨ãã¾ããé ç¹éå|Φ|ã®2ã¤ã®é¨åéåS, Dãèãã¾ããSâ|Φ|ãDâ|Φ|ãSãDã空ã§ããã¾ãã¾ãããSã¨Dã®ç¸äºã®é¢ä¿ï¼ä¾ãã°ã交ãããªãããªã©ï¼ã¯ç¹ã«ä»®å®ãã¾ããã
ä¸è¨ã®ç¶æ³ã§ãSã«å±ããé ç¹ãéå§é ç¹ï¼starting vertexï¼ãDã«å±ããé ç¹ãèå¥é ç¹ï¼distinguishing vertexï¼ã¨å¼ã³ã¾ããããã¦ãéåSã¯éå§é ç¹æï¼family of starting vertexesï¼ãéåDã¯èå¥é ç¹æï¼family of distinguishing vertexesï¼ã¨å¼ã³ã¾ãããã
ä¼çµ±çãªã¼ãããã³ã®å ´åã¯ãS = {0}, D = {2} ã§ããéå§é ç¹ãèå¥é ç¹ã1åãã¤ããããã¾ããããããä¼çµ±çãªã¼ãããã³ã®ç¹å¾´ã§ããæ´æ°å¤ãç©ãã¹ã¿ãã¯ã§ã¯ãS = {void, int}, D = {boolean, intError} ã§ãã
ã°ã©ãΦããé ç¹ã®éåSâªDã«å¶éããé¨åã°ã©ãΦ@(SâªD)ãΦvisã¨ãæ¸ãã¾ããvisã¯visibleï¼å¯è¦ï¼ã®æå³ã§ãï¼ç±æ¥ã¯å¾è¿°ï¼ãΦvisã®å®ç¾©ã念ã®ããæ¸ãã¨ï¼
- |Φvis| = SâªD
- x, yâSâªD ã«å¯¾ãã¦ãΦvis(x, y) = Φ(x, y)
Φvis | ã«å±ããé ç¹ãå¯è¦é ç¹ï¼visible vertexï¼ã¨å¼ã³ã¾ããå®ç¾©ãããå¯è¦é ç¹ã¯éå§é ç¹ã¾ãã¯èå¥é ç¹ã®ãã¨ã§ããΦã®é¨åã°ã©ãΦvisã¯å¯è¦é¨åã°ã©ãï¼visible subgraphï¼ã¨å¼ã³ã¾ãã |
å¯è¦é ç¹ã§ãªãé ç¹ã¯é è½é ç¹ï¼hidden vertexï¼ã¨å¼ã³ã¾ããã°ã©ãΦããé ç¹ã®éåSâªDãé¤å»ããé¨åã°ã©ãΦ\(SâªD)ãΦhidã¨ãæ¸ãã¾ããhidã¯hiddenï¼é è½ï¼ã®æå³ã§ããΦã®é¨åã°ã©ãΦhidã¯é è½é¨åã°ã©ãï¼hidden subgraphï¼ã¨å¼ã³ã¾ãã
å¯è¦ï¼é è½ã¨ããå¼ã³æ¹ã¯ãã´ã°ã¨ã³ï¼Joseph Goguenï¼ãªã©ã®é è½ä»£æ°ï¼hidden algebraï¼çè«ã«ç±æ¥ãã¾ããé è½ä»£æ°ãææ¨ã«ããå®ç¾©ããã¾ãããææ¨ã«ç»å ´ããé ç¹ãå¯è¦ã¨é è½ã«åé¡ããã®ã§ãããã ãé è½ä»£æ°ã§ã¯ï¼ä»ã®å¤ãã®æèã§ãï¼ææ¨ã«é¢ããç¨èªæ³ã¯ã°ã©ãçè«ã¨ã¯ç°ãªãè¨èã使ãã¾ãã
ã°ã©ãã®ç¨èª | ææ¨ã«åºæãªç¨èª |
---|---|
é ç¹ | ã½ã¼ãè¨å·ï¼ã¾ãã¯åã«ã½ã¼ãï¼ |
辺 | ãªãã¬ã¼ã·ã§ã³è¨å·ï¼ã¾ãã¯åã«ãªãã¬ã¼ã·ã§ã³ï¼ |
å¯è¦é ç¹ | å¯è¦ã½ã¼ãè¨å·ï¼ã¾ãã¯åã«å¯è¦ã½ã¼ãï¼ |
é è½é ç¹ | é è½ã½ã¼ãè¨å·ï¼ã¾ãã¯åã«é è½ã½ã¼ãï¼ |
ãã¹ | é |
å¯è¦ã½ã¼ãè¨å·ã¯ãâæ¢ç¥ã®éåï¼åï¼âã表ãè¨å·ãé è½ã½ã¼ãè¨å·ã¯âä¸å¯ç¥ãªéåï¼åï¼âã表ãè¨å·ã§ãã両端ãå¯è¦é ç¹ï¼å¯è¦ã½ã¼ãï¼ã§ããå¯è¦è¾ºï¼å¯è¦ãªãã¬ã¼ã·ã§ã³ï¼ã¯ãâæ¢ç¥ã®ååâã表ããã¨ã«ãªãã¾ãã
ãããã£ã¦ãå¯è¦é ç¹ï¼å¯è¦è¾ºï¼å¯è¦ã½ã¼ãï¼å¯è¦ãªãã¬ã¼ã·ã§ã³ï¼ã«ã¯åãã£ã¦å®éã®éåï¼ååãå²å½ã¦ã¦ããã¾ãããã®å²å½ã¦ã K:ΦvisâSet ã¨ãã¾ããKã¯ã°ã©ãæºååååã§ãããé¢æã¨ãã¿ãªãã¾ãï¼é¢æãªã FreeCat(Φvis)âSetï¼ãKã¯å¯è¦é¨åã°ã©ãã®æå³ãåºå®ããããã«ä½¿ãã®ã§ãåºå®åé¢æï¼fixtur functorï¼ã¨å¼ã³ã¾ãããã
å¯è¦ï¼é è½ã®åºå¥ã¯ãé¢æãã¼ã¿ãã¼ã¹ã§ã使ã£ã¦ãã¾ãã次ã®å³ã§ãæ°´è²ãå¯è¦é ç¹ããã³ã¯ãé è½é ç¹ã§ãã詳ããã¯ãä¸è¬é¢æã¢ãã«ï¼ç¸å¯¾ã¹ãã¼ãã¨ç¸å¯¾ã¤ã³ã¹ã¿ã³ã¹ããåç §ãã¦ãã ããã
ä¼çµ±çãªã¼ãããã³ã®å ´åã¯ãå¯è¦é¨åã°ã©ãã¯2åã®é ç¹{0, 2}ãããªãé¢æ£ã°ã©ãï¼è¾ºã¯ãªãï¼ã§ãK(0) = 1, K(2) = B ã§å®ç¾©ããã K:{0, 2}â|Set| ãåºå®åé¢æã¨æã£ã¦ããã¾ãã¾ããã
ããããèããææ¨ã°ã©ãΦã«ã¯ãéå§é ç¹æSã¨èå¥é ç¹æDãçµã¿è¾¼ã¾ãã¦ããã¨ãã¦ãΦ = (Φ, S, D) ã®ããã«è¨ãã¾ãï¼è¨å·ã®ä¹±ç¨ï¼ãã¾ããåºå®åé¢æKãå ¥ãã (Φ, K) = (Φ, S, D, K) ãΦ/Kã¨ç¥è¨ãã¾ããΦã¨Kãçµã¿ã«ããΦ/Kããé¨ååºå®ææ¨ã°ã©ãï¼partially fixed signature graphï¼ãã¾ãã¯åã«é¨ååºå®ææ¨ï¼partially fixed signatureï¼ã¨å¼ã³ã¾ãããªãããä¸è¬é¢æã¢ãã«ï¼ç¸å¯¾ã¹ãã¼ãã¨ç¸å¯¾ã¤ã³ã¹ã¿ã³ã¹ãã§ã¯ãé¨ååºå®ææ¨ã°ã©ãã¨åçãªæ¦å¿µãç¸å¯¾ã¹ãã¼ãã¨å¼ãã§ãã¾ãã
ãªã¼ãããã³ã®å®ç¾©ï¼éå§ã¨èå¥ã®æ§é
éå§é ç¹æSã¨èå¥é ç¹æDãæå®ãããææ¨ã°ã©ãã Φ = (Φ, S, D) ã®ããã«æ¸ãã¾ããéå§é ç¹æï¼èå¥é ç¹æãæã¤ææ¨Î¦ã¨åºå®åé¢æ K:ΦvisâSet ãçµã«ããé¨ååºå®ææ¨Î¦/Kãããã¨ããΦ/K-ãªã¼ãããã³ï¼Î¦/K-automatonï¼ã¨ã¯ãé¢æ F:ΦâSet ã§ãããå¯è¦é¨åã°ã©ãΦvisä¸ã§ã¯åºå®åé¢æKã¨ä¸è´ãããã®ã§ããè¨ãæ¹ãæããã¨ã(FãΦvisã«å¶éããé¢æ) = K ã¨ããçå¼ãæç«ãã¾ãã
F, G:ΦâSet ã2ã¤ã®Î¦/K-ãªã¼ãããã³ã®ã¨ããFããGã¸ã®ãªã¼ãããã³å°ï¼ãªã¼ãããã³ã®æºååååï¼ã¨ã¯ãé¢æFããé¢æGã¸ã®èªç¶å¤æã®ãã¨ã ã¨ãã¾ãããã ããå¯è¦é ç¹ä¸ã§ã¯èªç¶å¤æã®æåãæçå°ã¨ãªã£ã¦ããã¨ãã¾ããαããªã¼ãããã³å°ã§ãããã¨ã¯ãα:FâG ã¨æ¸ãã¾ãããαãèªç¶å¤æã¨ã¿ãªãã¨ãã¯ãα::FâG:CâSet ã®ããã«ãæ¸ãã¾ãã
Φ/K-ãªã¼ãããã³ã¨ãã®ããã ã®ãªã¼ãããã³å°ã®å ¨ä½ãããªãåãAutom[Φ/K]ã¨æ¸ããã¨ã«ãã¾ãããªããAutom[-]ã¨ããè¨æ³ã¯ãå½¢å¼è¨èªçè«ã®ããã®ä»£æ°ãã§ã使ã£ã¦ãã¾ãããä»åã®å®ç¾©ã¨ã¯ç°ãªãã¾ãã
æåã«å®ç¾©ãããã¬ãªã¼ãããã³ã¯ãææ¨ã°ã©ããä½ã®æ§é ãæããï¼SãDãæå®ããã¦ãªãï¼ãåºå®åé¢æKãæå®ããã¦ãªãç¶æ³ã§å®ç¾©ããã¾ãããΨãç¡æ§é ã®ï¼SãDãæå®ããã¦ãªãï¼ææ¨ã°ã©ãã¨ãã¦ããã¬ãªã¼ãããã³ã®åãPreAutom[Ψ]ã¨ããã°ãå¿å´é¢æ Forget:Aotom[Φ/K]âPreAutom[Ψ] ãå®ç¾©ã§ãã¾ããããã§ãΨã¯Î¦ã®S, Dãå¿ãããã¬ã¼ã³ãªææ¨ã°ã©ãã§ãï¼Kãå¿å´ãã¾ãï¼ã
å®ã¯ããã¬ãªã¼ãããã³ããªã¼ãããã³ã¨ã¿ãªãæ¹æ³ãããã¾ããΦ = (Φ, S, D) ã§ãSãDã空éåã®ã¨ãã¯ãå¯è¦é¨åã°ã©ãΦvisã¯ç©ºã°ã©ãã§ããåºå®åé¢æã¯ç©ºã°ã©ãï¼ç©ºåï¼ããã®é¢æãªã®ã§ä¸æã«æ±ºã¾ãã¾ãï¼ããç¡æå³ã§ãï¼ãã¤ã¾ããS = D = 0 ï¼0ã¯ç©ºéåï¼ã®å ´åã¯ãSãDãæå®ããªãã®ã¨åãã§ãããã£ã¦ããã¬ãªã¼ãããã³ã¯ãªã¼ãããã³ã®ç¹æ®ã±ã¼ã¹ã¨ã¿ãªãã¾ãã
Sã¾ãã¯Dã空ã®å ´åã¯ï¼
- Φ = (Φ, 0, 0) -- Φã¯ç¡æ§é ãΦvisã¯ç©ºã§ãåºå®åé¢æKã¯ç¡æå³ã
- Φ = (Φ, S, 0) -- Φã¯éå§é ç¹æã ããæã¤ãåºå®åé¢æK㯠Φvis = Φ@S ä¸ã§å®ç¾©ãããã
- Φ = (Φ, 0, D) -- Φã¯èå¥é ç¹æã ããæã¤ãåºå®åé¢æK㯠Φvis = Φ@D ä¸ã§å®ç¾©ãããã
ããã§æ³¨æãè¿°ã¹ã¦ããã¾ãï¼ éå§é ç¹æã¨èå¥é ç¹æã¯ãã¼ã¿å ¥åºåã§ã¯ããã¾ããããã¼ã¿å ¥åºåãèããããªãã¾ãå¥ãªå®å¼åãå¿ è¦ã§ãããã¼ã¿å ¥åºåã«å¯¾ãã¦ãéå§ï¼èå¥ã¨åããã¯ããã¯ã使ãããã¨ãããã¾ãããéå§ï¼èå¥ã®æ§é ãå ¥åºåã«å¯ãéããã®ã¯å¥½ã¾ããããã¾ããã
ä»åã®ã¾ã¨ã
ä»åãã£ããã¨ã¯ãåAutom[Φ/K]ãå®ç¾©ãããã¨ã§ããΦã¯éå§é ç¹æã¨èå¥é ç¹æãæã¤ææ¨ Î¦ = (Φ, S, D) ã§ãããKã¯åºå®åé¢æ K:ΦvisâSet ã§ããåAutom[Φ/K]ã®å¯¾è±¡ãæã ãæ±ãã¹ããªã¼ãããã³ã§ããããã®å®ä½ã¯éåå¤é¢æã§ãããããã£ã¦ãåAutom[Φ/K]ã¯é¢æåã§ããå®éããªã¼ãããã³ã®ããã ã®å°ï¼æºååååï¼ã¯èªç¶å¤æã§ãã
ä»åãåAutom[Φ/K]ãå®ç¾©ããæ¹æ³ã¯ãä¸è¬é¢æã¢ãã«ã¨ã»ã¨ãã©åãã§ããèå³ãããã°ã次ã®è¨äºãåèã«ãªãã§ãããã
- ä¸è¬é¢æã¢ãã«ï¼ç¸å¯¾ã¹ãã¼ãã¨ç¸å¯¾ã¤ã³ã¹ã¿ã³ã¹
- ä¸è¬é¢æã¢ãã«ï¼ãåã®è¡¨ç¤ºãã®å
ï¼ä¸è¬åãããï¼ãã¤ãã«ï¼ããã¼ãã®å®çã¯ãåAutom[Φ/K]ã®æ§é ã詳ãã調ã¹ããã¨ã§å¾ããã¾ãã