ã¢ã«ãããã¯å€§åŠã§æè·ããã修士è«æãæžãéçšã§ãç¹å¥ãªã¯ã©ã¹ã®åé¡ã«é©ããçµã¿åããçæã®ã¢ã«ãŽãªãºã ã®1ã€ãç 究ããŠé©çšããå¿ èŠããããŸããã ããã¯ãããã€ãã®ç䟡é¢ä¿ãè¿œå ã§å°å ¥ãããæ§é ã®çæã§ãã å±æ©ã«whatããŠãããã®ãæ確ã«ããããã«ãç°¡åãªäŸãæããŸãã å è§åœ¢ã®ãã¹ãŠã®äžè§åœ¢åå²ãçæããŠã¿ãŸãããã 次ã®ãããªãã®ãåŸãããŸãã
ãã®ãããªãã¹ãŠã®äžè§åœ¢åå²ãè¿ãã¢ã«ãŽãªãºã ãæžãã®ã¯éåžžã«ç°¡åã§ãã ããšãã°ããã®æé ã¯æ©èœããŸããããã€ãã®ãšããžãä¿®æ£ãïŒãšããž1ã6ã«ããŸãïŒããã®åŸããµã€ã¯ã«ã§ã¯ããã®ç«¯ã§ã¯ãªãé ç¹ããœãŒãããŸãã çŸåšã®é ç¹ãšåºå®ãšããžã§äžè§åœ¢ãäœæããæ®ãã®2ã€ã®é åãååž°çã«äžè§åœ¢åå²ããŸãã ãã®ã¢ã«ãŽãªãºã ã®æäœããçããäžè§åœ¢åå²ãããèŠããšããããã®å€ããã»ãŒåãã§ãããé ç¹ã®ã©ãã«ïŒæ°å€ïŒã®é 眮æ¹æ³ã®ã¿ãç°ãªãããšã«æ°ä»ãã§ãããã ãã®ããã次ã®å³ã«ç€ºãããã«ãããããã©ãã«ãªãã®äžè§åœ¢åå²ãçæããã¢ã«ãŽãªãºã ãèãåºããšäŸ¿å©ã§ãã
ãã圢åŒçã«ã¯ããªããžã§ã¯ãã®ã»ããã«ç䟡ãªã»ãããäœçšãããã»ããå šäœãäºãã«å圢ã®ãªããžã§ã¯ãã®ã¯ã©ã¹ã«åå²ããŸãã åã¯ã©ã¹ãã1ã€ã®ä»£è¡šãçæããå¿ èŠããããŸãã ããããã2çªç®ã®å³ã®2ã€ã®å³åŽã®äžè§åœ¢åå²ãäºãã«éåžžã«äŒŒãŠããããã®ãã¡ã®1ã€ã ããæ®ãããšãã§ããããšã«æ°ã¥ããã§ãããã çŸå®ã«ã¯ãããã¯ç§ãã¡ãã©ã®çš®é¡ã®åå€é¢ä¿ãéžãã ãã«äŸåããŸãã å転åŸã«äºãã«éãåãããããšãã§ããäžè§åœ¢ã®ã¿ãååãšèŠãªãå Žåããããã¯4ã€ãããå è§åœ¢ãå床å転ããå¯èœæ§ãèš±å¯ããå Žåã¯3ã€ã§ãã
åã¯ã©ã¹ãã1ã€ã®ä»£è¡šãçæããããšã¯é£ãããªããšæãããŸãããã¹ãŠã®ãªããžã§ã¯ããçæããåŸããã¢ã§ååããã¹ãããéè€ãã¹ããŒããŸãã æ®å¿µãªããããªããžã§ã¯ãã®çš®é¡ã«ãã£ãŠã¯ãnãå°ããå Žåã§ãã²ã©ãé·ãåäœããŸãã ããšãã°ã2ã€ã®ã°ã©ãã®ååããã§ãã¯ããåé¡ã¯ãå€é åŒæéã§ã¯è§£æ±ºã§ããŸãããã€ãŸãããã®åé¡ãã§ããã ã解決ããªããµãã«ãŒãã³ãåŒã³åºãããšããå§ãããŸãã ææ¡ãããåçŽãªã¢ãããŒãã®å¥ã®æ¬ ç¹ã¯ããã¹ãŠã®ãªããžã§ã¯ããåæã«ã¡ã¢ãªã«ä¿æããå¿ èŠãããããšã§ãã åæã«ãæ£ããçããäžããé ãããã°ã©ã ãåŸ ã€å Žåãããã¯ãŸã çè«çã«ã¯å¯èœã§ãããçãã®ä»£ããã«ã¡ã¢ãªãªãŒããŒãããŒãååŸããããšã¯ãã§ã«å®å šã«åãå ¥ããããŸããã ãã®ããããã¢ã¯ã€ãºéååãªããžã§ã¯ããçæããã«ã¯ãããããªãããŒãªæ¹æ³ã䜿çšããå¿ èŠããããŸãã ãã®æ¹æ³ã¯ãå€ãã®ç¹å®ã®çµã¿åãããªããžã§ã¯ãïŒã°ã©ããããªãŒãããŒãã£ã·ã§ã³ïŒã«ã€ããŠç¹°ãè¿ãåçºèŠãããäžè¬çãªçšèªã§Isomorph-Free Exhaustive Generationã®èšäºã§èª¬æãããŸããã
ãã®æ¹æ³ã«ã€ããŠã¯ãäžè§åœ¢åå²ã®åé¡ãšæ¯èŒããŠããäžè¬çãªåé¡ã®äŸãšããŠèª¬æããŸãããã¹ãŠã®ã解åããã€ãŸããããªãŽã³ãå¿ ãããäžè§åœ¢ã«åå²ããã®ã§ã¯ãªããå ¥åã«äŸçµŠããããªã¹ãã®èŸºã®æ°ãæã€ããªãŽã³ã«åå²ããæ¹æ³ãçæããŸãããã°ã©ã ã
ãã®æ¹æ³ã説æããã«ã¯ãããã€ãã®æ£åŒãªå®çŸ©ãå¿ èŠã§ãã
Xããæ§é ãã®ã»ããã«ããŸãã ã»ããXã®èŠçŽ ã¯ã ã©ãã«ä»ããªããžã§ã¯ããšåŒã°ããŸã ã ãã®åé¡ã§ã¯ãããŒã¯ããããªããžã§ã¯ãã¯ãé ç¹ã«åæèšåãã«çªå·ãä»ãããã解åã§ãã ããŒã¯ãããã»ã¯ã·ã§ã³ã®ããŒã¿æ§é ã¯åçŽã§ã-ãããã¯é£æ¥ãªã¹ãã§ãïŒ
public class Dissection { private int[][] adjacent; ... }
GãéåXã«äœçšããé åã°ã«ãŒããšããŸããããã¯ãXã®åã©ãã«ä»ããªããžã§ã¯ãxãšã°ã«ãŒãGã®åèŠçŽ gãå¥ã®ã©ãã«ä»ããªããžã§ã¯ãy = g * xã«é¢é£ä»ãããã次ã®ããããã£ãæºããããããšãæå³ããŸãïŒ
- ã°ã«ãŒãhããã³gã®èŠçŽ ã®ä¹ç®ã¯ããªããžã§ã¯ãxãžã®ã¢ã¯ã·ã§ã³ã®é 次é©çšã«å¯Ÿå¿ããŸãïŒh *ïŒg * xïŒ=ïŒhgïŒ* xã
- ã°ã«ãŒãeã®åäœã¯ãããŒã¯ãããåãªããžã§ã¯ãxãããèªäœã«å€æããŸãïŒe * x = xã
ã»ããXå šäœãçžå¯Ÿé¢ä¿ã®ç䟡ã¯ã©ã¹ã«åå²ãããŠããããšãããããŸããx= g * yã®å Žåãxãšyã¯ç䟡ã§ãã äžè§åœ¢åå²ã®æåã®äŸã§ã¯ãã°ã«ãŒãã®èŠçŽ ïŒ0ã60ã120ã180ã240ãããã³300床ã®å転ïŒãã»ããå šäœã4ã€ã®ç䟡ã¯ã©ã¹ã«åå²ããŸãããããã®èŠçŽ ã¯ãé ç¹ããŒãã³ã°ã§ã¯ãªãæ§é ãæ£ç¢ºã«ç°ãªããŸãã ãããã®ç䟡ã¯ã©ã¹ã¯ã2çªç®ã®å³ã«ç€ºãããŠããŸãã ãããã®ã¯ã©ã¹ãã©ãã«ãªããªããžã§ã¯ããšåŒã³ãŸã ã
Xã®åèŠçŽ ã«èªç¶æ°ãé¢é£ä»ããŸãããããé åºãšåŒã³ãŸãã ãã¹ãŠã®åçã®ãªããžã§ã¯ãã®é åºã¯åãã§ãªããã°ãªããŸããã ãã®ããããã£ã䜿çšãããšãç䟡ã¯ã©ã¹ïŒã©ãã«ãªããªããžã§ã¯ãïŒã®é åºãåå®çŸ©ã§ããŸããããã¯ã察å¿ããã¯ã©ã¹ã®ä»£è¡šã®é åºãšçãããªããŸãã å³ã®äŸã§ã¯ãé åºã¯ããªãŽã³å ã®é ç¹ã®æ°ã§ãã å³å ã®ãã¹ãŠã®ã©ãã«ãªããªããžã§ã¯ãã«ã€ããŠã¯ã6ã§ãã
ãããã¯ããªãäžè¬çãªå®çŸ©ã§ããã 次ã«ãå°æ¥ã®ã¢ã«ãŽãªãºã ã«åºæã®å®çŸ©ã«ç§»ããŸãããã ããŒã¯ãããåãªããžã§ã¯ãxã«ã2ã€ã®ã»ããïŒ äžäœãªããžã§ã¯ãã®ã»ããLïŒxïŒãšäžäœãªããžã§ã¯ãã®ã»ããUïŒxïŒïŒãé¢é£ä»ããŸã ã ãããã®ã»ããã®èŠçŽ ã®é åºã¯ãå®çŸ©ã«ããxã®é åºãšåãã§ãã äžäœãªããžã§ã¯ããšäžäœãªããžã§ã¯ãã«æ£åŒãªèŠä»¶ãäžããåã«ãçŽæçãªèª¬æãããããšããŸãã äžäœã®åãªããžã§ã¯ãã«ã¯ãçŸåšã®ãªããžã§ã¯ãããäžäœã®ãªããžã§ã¯ãã«æ確ã«åãæ¿ããæ¹æ³ã«é¢ããæ å ±ãå«ãŸããŠããå¿ èŠããããŸãã ããšãã°ãäžéšåéãªããžã§ã¯ãã¯ãã極端ãªãããªãŽã³ã®1ã€ãè¿œå ã§åŒ·èª¿è¡šç€ºãããŠããåéïŒããšãã°ãèµ€ãå¡ãããŠããïŒã§ããããã®åéããåãåãããšãã§ããŸãã å察ã«ãäžäœãªããžã§ã¯ãã¯ããŒã¯ããããªããžã§ã¯ããšæ å ±ã§ãããæ確ãªæ¹æ³ã§ãæé·ãããé åºãå¢å ãããããšãã§ããŸãã ããšãã°ãäžéšè§£åã¯ãããªãŽã³ã®åŽé¢ã®1ã€ãããã«åŒ·èª¿è¡šç€ºããïŒããšãã°ãèµ€ãå¡ããïŒããã®äžã«æ°åãæžã蟌ãŸãã解åã§ãã ãã®ãããªè§£åãèŠããšãæ°ããããªãŽã³ãã©ã¡ãã®åŽã«è²Œãä»ããŠé åºãå¢ããããç解ã§ããŸãã æ¥çãããããªãŽã³ã®èŸºã®æ°ã¯ããšããžã«æžãããæ°ã«ãã£ãŠæ±ºãŸããŸãã ãã®èãã¯ãåã解åã«å¯Ÿå¿ãã2ã€ã®ãªããžã§ã¯ãïŒäžãšäžïŒã瀺ã次ã®å³ã§èª¬æã§ããŸãã
ããã°ã©ã ã§ã¯ãäžéšãšäžéšã®ã»ã¯ã·ã§ã³ã¯æ¬¡ã®ããã«è¡šç€ºãããŸãã
public class LowerDissection { private Dissection dissection; private int after; ... }
public class UpperDissection { private Dissection dissection; private int after, size; ... }
ããã ã«ããã®å Žåãåé€ããããªãŽã³ãå§ãŸãé ç¹çªå·ã®ã¿ãä¿åããŸãã äžéšã»ã¯ã·ã§ã³ã«ã¯ãé ç¹çªå·ãä¿åãããŸãããã®åŸãæ°ããããªãŽã³ãšãã®èŸºã®æ°ãæ¥çããå¿ èŠããããŸãã
äžéšã®äžäœãªããžã§ã¯ããšäžäœãªããžã§ã¯ãã¯ãäžèŽãé¢ä¿ã«ããããšãããããŸããäžäœãªããžã§ã¯ãã¯ãäžäœãªããžã§ã¯ãã§ãšã³ã³ãŒããããæ¹æ³ã§é åºãæžãããåŸã«ååŸãããäžäœãªããžã§ã¯ãã«å¯Ÿå¿ããŸãã
ããã§ã¯ãäžã®ãªããžã§ã¯ããäžã®ãªããžã§ã¯ãã«ãããã³ã°ãããŸããããã¯ãéžæããå蟺圢ãåé€ããçµæã§ãã 次ã®å³ã§ã¯ããããšã¯éã«ãªã£ãŠããŸããäºè§åœ¢ã¯ãäžéšã®ãªããžã§ã¯ãããŸãã¯éžæãããšããžã«5ãæžã蟌ãŸããç¶æ ã§æ¥çãããŠããŸãã ããã«ãããæäœãããŒã«ããã¯ããæ¹æ³ã«é¢ããæ å ±ãæ ŒçŽããäžäœãªããžã§ã¯ããäœæãããŸãã
ããŠãæ£åŒã«ã¯ãäžèšã®æ§é ããäœãå¿ èŠãïŒ
- ã°ã«ãŒãGã¯ãã©ãã«ä»ããäžéšãäžéšã®3çš®é¡ã®ãªããžã§ã¯ãã«äœçšããŸãã ãããã®3ã€ã®ã»ããã¯ãããããã°ã«ãŒãã®ã¢ã¯ã·ã§ã³ã«å¯ŸããŠéããããŸãïŒããã¯ãããšãã°ãã°ã«ãŒãã®èŠçŽ ã«ãã£ãŠäžäœãªããžã§ã¯ãã«äœçšããå Žåãäžäœãªããžã§ã¯ããååŸããããšã¯äžå¯èœã§ããããšãæå³ããŸã-ãããæ£åŒãªèŠä»¶ã§ãïŒã
- ããŒã¯ãããåãªããžã§ã¯ãxãšã°ã«ãŒãgã®èŠçŽ ã«å¯ŸããŠïŒLïŒg * xïŒ= g * LïŒxïŒ; UïŒg * xïŒ= g * UïŒxïŒïŒg * LïŒxïŒãšããè¡šèšã¯ãg * UïŒxïŒã«ã€ããŠãåæ§ã«ãã»ããLïŒxïŒã®åèŠçŽ ã«gãé©çšããããšãæå³ããŸãïŒã
- åäžäœãªããžã§ã¯ãyã«ã€ããŠã察å¿ããäžäœãªããžã§ã¯ãã®ã»ããã¯ç©ºã§ã¯ãããŸããã
- äžéšã®2ã€ã®ãªããžã§ã¯ãyãšxãåçïŒã€ãŸããy = g * xïŒã®å Žåããããã«å¯Ÿå¿ããäžéšã®2ã€ã®ãªããžã§ã¯ããåçã§ãã
- äžã®2ã€ã®ãªããžã§ã¯ãyãšxãåçã§ããå Žåããããã«å¯Ÿå¿ãã2ã€ã®äžã®ãªããžã§ã¯ããåçã§ãã
- äžäœãªããžã§ã¯ãã®é åºã¯ã察å¿ããäžäœãªããžã§ã¯ãã®é åºããã倧ãããªããŸãã
ãã®æŠå¿µãããããç解ããããã«ãèªæžããè±ç·ããã»ããXãšããŠäžè§åœ¢ã®ãªãã°ã©ãïŒã€ãŸãã3ã€ã®é ç¹ããã¹ãŠãšããžã§åæã«æ¥ç¶ãããŠããªãã°ã©ãïŒãååŸããå Žåãäžéšãªããžã§ã¯ããšäžéšãªããžã§ã¯ããã©ã®ããã«ãªãããèããããšããå§ãããŸãïŒ
çã
ãã¡ãããããã¯å¯äžã®æ¹æ³ã§ã¯ãããŸããããäžè§åœ¢ã®ãªãã°ã©ããäžã®ãªããžã§ã¯ããšããŠåããé ç¹ã®1ã€ãèµ€ã«ãªãïŒããã¯åé€ããããšãæå³ããŸãïŒãäžè§åœ¢ã®ãªãã°ã©ããäžã®ãªããžã§ã¯ããšããŠåãã®ã¯èªç¶ã§ãããã€ãã®é ç¹ãèµ€è²ã«ãªã£ãŠããŸãïŒããã¯ãé ç¹ãè¿œå ããããããã¹ãŠã®èµ€ãé ç¹ã«æ¥ç¶ããããšãæå³ããŸãïŒã ãã®å Žåãèµ€ãããŒã¯ããã¢ã§æ¥ç¶ãããŠããªãããšãèŠæ±ããå¿
èŠããããŸãã ãã®å Žåãæ°ããé ç¹ãè¿œå ããåŸãäžè§åœ¢ã¯åœ¢æãããŸããã
ç¶ããŸãããã ã©ãã«ã®ãªããªããžã§ã¯ãããäœãåã¿ä»ããŠã¯ãããŸããã ãããã£ãŠãããã«å¯Ÿå¿ããïŒãŸãã¯ãããŒã¯ããããªããžã§ã¯ãã«å¯Ÿå¿ããïŒäžäœãªããžã§ã¯ãã¯ãããŸããã ãã®ãããªãªããžã§ã¯ãã¯æ¢çŽãšåŒã°ããŸãã ç§ãã¡ã®å Žåãåäžã®ããªãŽã³ã§æ§æãããã«ããã¯æ¢çŽã§ãã ä»ã®ãã¹ãŠã¯éå å¯èœã§ãã
ç§ãã¡ã®ã¢ã«ãŽãªãºã ã¯ããã¹ãŠã®éååã«ããããæ¢çŽã«ããããå§ããŠãé çªãåŸã ã«å¢ãããŠãé 次çæããŸãã ãããè¡ãããã«ããã¹ãŠã®å¯èœãªèŸºããã®ãã¹ãŠã®å¯èœãªããªãŽã³ãçŸåšã®ã»ã¯ã·ã§ã³ã«åºå®ããŸãã ãã ããåé¡ã¯ãããã€ãã®æ¹æ³ã§åã解åã«å°éã§ããããšã§ãã ããšãã°ãåã®2ã€ã®åçã®äžéšã®ãªããžã§ã¯ãã«å¯Ÿå¿ããå «è§åœ¢ãã«ããããã«ã¯ãåè§åœ¢ãäžè§åœ¢ã«æ¥çããŠããäºè§åœ¢ã«æ¥çããããå察ã«äžè§åœ¢ãšåè§åœ¢ãäºè§åœ¢ã«æ¥çããããšã§ã§ããŸãã ãããã£ãŠãåã解åãæ°åçæããããšãå¯èœã«ãªããæ°ä»ãããšãããããŸããã ããã¯ããªãããã é¿ããããã®ã§ãã
æ°ããã«ãããçæããŠãã®åé¡ãåé¿ããã«ã¯ããã®ã«ãããæ§ç¯ããç¬èªã®æšæºçãªæ¹æ³ã§ããªãŽã³ã®æåŸã®è¿œå ãæ£ãããã©ããã確èªããŸãã ãããè¡ãã«ã¯ãããŒã¯ãããåãªããžã§ã¯ãã«ãããããåå«ãã§ããäžäœãªããžã§ã¯ãã®ã»ãããé¢é£ä»ããé¢æ°Pãå¿ èŠã§ãã é¢æ°Pã¯ã次ã®èŠä»¶ãæºãããŠããå¿ èŠããããŸãã
- LïŒxïŒã空ã®å ŽåãPïŒxïŒã空ã§ãã
- LïŒxïŒã空ã§ãªãå ŽåãPïŒxïŒã¯ããªããžã§ã¯ãxã«å¯Ÿå¿ãããã®ãããªäžäœãªããžã§ã¯ãã®ã¿ã§æ§æããããããã®ãããã2ã€ãg * x = xã§ããèŠçŽ gã®ã¢ã¯ã·ã§ã³ã®äžã§çžäºã«å€æããŸãã
- ã©ãã«ã®ãªããªããžã§ã¯ãxããã³ã°ã«ãŒãgã®èŠçŽ ã®å ŽåïŒg * PïŒxïŒ= PïŒg * xïŒã
2çªç®ã®èŠä»¶ã«ç¹ã«æ³šæãæã䟡å€ããããŸããå®éãã»ããPïŒxïŒã¯ããªããžã§ã¯ãxã®å¯Ÿç§°æ§ã«é¢ããŠç䟡ãªè€æ°ã®ãªããžã§ã¯ãã§æ§æããå¿ èŠãããããšãæå³ããŸãã ããšãã°ãã«ããxã0床ãš180床ã®å転ã«å¯ŸããŠã®ã¿å¯Ÿç§°ã§ãããšããŸãã 次ã«ãPïŒxïŒã¯ããã®ãããªã¿ãŒã³ã®å©ããåããŠäºãã«ååŸãããæ£ç¢ºã«2ã€ã®äžäœãªããžã§ã¯ãã§æ§æãããå¿ èŠããããŸãã
ãã®äŸã®äžè¬çãªèŠä»¶ãæºããããã«ããŸãããã ãããè¡ãã«ã¯ãxã®äžéšãåãåãããã®äžã®ããŒã¯ãnåãã¹ãŠã®æ¹æ³ã§ã¹ã¯ããŒã«ããŸãïŒnã¯é ç¹ã®æ°ã§ãïŒã æ¯åãé ç¹1ãš2ããã極端ãªãããªãŽã³ãå§ãŸããšãïŒåãåãããããã«ïŒããã®çªå·ä»ããèŠããŠããŸãã ãã®åŸãéžæãããé ç¹çªå·ä»ãã®ãµãçªå·ä»ãå šäœãããé£æ¥é¢ä¿ãªã¹ãã®èŸæžçã«æå°éã®ïŒä»ã®åççãªé åºãé©åã§ãïŒãšã³ããªãäžãããã®ãéžæããŸãã ãããã®çªå·ä»ãã«ãããå ã®ãªããžã§ã¯ãxäžã®ããã€ãã®ããªãŽã³ãåŸãããŸãã察å¿ããçªå·ä»ãã§1ãš2ããå§ãŸããŸããPïŒxïŒã¯ããããã®ããªãŽã³ãèµ€ã§è¡šç€ºãããxã®äžäœãªããžã§ã¯ãã§æ§æãããŸãã ããã§ã¯ãåçãªãã§ã¯ã§ããŸããã
ããã§ãå·Šã«ç€ºã解åxãéžæãã8ã€ã®ç°ãªãæ¹æ³ã§ããŒã¯ãåé 眮ããŸããã ã¡ãœããaãcãeãããã³gã¯ããã«ã¯é©ããªãïŒé ç¹1ã2ã...ãiã§ã¯ãã«ããå¯èœãªããªãŽã³ãæ§ç¯ãããªãã ã¡ãœããbãšfã¯ã¡ãœããdãšhãšæ¬è³ªçã«åãã§ããããšãããããŸãã ããã4ã€ã®æ¹æ³ã®ãã¡ãããæå³ã§ãæå°éãã®ãã®ãéžæããŸãã ãã§ã«ãæ°ã¥ãã®ãšãããå¿ èŠã«å¿ããŠæå°å€ãå®çŸ©ããããšã¯å¯èœã§ãããééããããŸããã ããšãã°ãé£æ¥ãªã¹ãã®èŸæžç·šéã«é©ããæå°éã®ã¬ã³ãŒããé©ããŠããŸãã ãã®å Žåãã¡ãœããbããã³fãåªå ãããŸãã ãã®æ¹æ³ã§ã¯ãå ã®ããŒã¯ããããªããžã§ã¯ãxäžã«äžè§åœ¢2,3,4ããã³6,7,8ãåŸãããŸãã ãã®çµæãå³ã®å³ã«ç€ºãããŠãã2ã€ã®äžéšãªããžã§ã¯ããååŸãããŸãã
Pé¢æ°ã¯ãé«éçæã®ããã«æãéèŠã§ãã å®éãæå®ãããèŠä»¶ãæºãããäœæ¥ã®é«éåãç¶æããããšã¯éåžžã«å°é£ã§ãã ã芧ã®ãšãããããæå³ã§ãé¢æ°Pã䜿çšãããšãååãŸã§ãã©ã®ããã«æ¥µç«¯ãªå€è§åœ¢ããé£ãæ¢ãããæ¹æ³ãæ£æºã§ããããæå®ã§ããŸãã æŠå¿µãæ確ã§ããã°ãäžè§åœ¢ã®ãªãæ¢è¿°ã®ã°ã©ãã«å¯ŸããŠé¢æ°PïŒxïŒãã©ã®ããã«æ©èœããããèããŠã¿ãããšããå§ãããŸãã
çã
ãã¡ãããçãã¯æçœã§ãã ã·ã³ãã«ãªïŒéåžžã«å¹æçã§ã¯ãªãïŒæ¹æ³ã®1ã€ã¯æ¬¡ã®ãšããã§ããäžè§åœ¢xã®ãªãã°ã©ãã®å Žåãé ç¹ã®çªå·ãä»ãçŽãããã«ãã¹ãŠã®æ¹æ³ã調ã¹ãé£æ¥é¢ä¿ãªã¹ãã®èŸæžçã«æå°éã®èšé²ãäžããæ¹æ³ãæ®ããŸãã ãããã®ã¡ãœããã®ããããã«ã€ããŠãçªå·1ãæã€é ç¹vãéžæããäžçªäžã®ãªããžã§ã¯ãã§ããé ç¹vãèµ€ãå¡ãããã°ã©ãxãæ§æããŸãã ãã®ãããªããŸããŸãªäžäœãªããžã§ã¯ãã¯ãã¹ãŠãPïŒxïŒã®çµæã圢æããŸãã
äžèšã®ãã¹ãŠã®æ©èœãå®è£ ããäžèšã®ã¯ã©ã¹ã«ã¡ãœãããè¿œå ããã³ãŒãã¯ã ãªããžããªã§æãããèŠãããŸãã詳现ã«ã€ããŠèª¬æããã«ã¯æè¡çãªè©³çŽ°ãå€ãããŸãã
ããã§ãçæã¢ã«ãŽãªãºã ãçŽæ¥èª¬æããæºåããã¹ãŠæŽããŸããã åæžã§ããªãåã«ããã«å¯ŸããŠå®è¡ãããŸãã çŸåšã®è§£åã§ã¯ããã¹ãŠã®éååã®æ¹æ³ã§äžäœãªããžã§ã¯ããäœæããååŸããåäžäœãªããžã§ã¯ããé çªã«å¢å ããŠäžäœãªããžã§ã¯ãã«æ¡åŒµããŸãã 次ã«ãPé¢æ°ã䜿çšããŠãäžäœã®åãªããžã§ã¯ãããã§ãã¯ããå®éã«å¯Ÿå¿ããããŒã¯ããããªããžã§ã¯ãã®èŠªã§ããããšã確èªããŸãã ãã®ãã§ãã¯ã«åæ Œããå Žåããã®ããŒã¯ããããªããžã§ã¯ãã¯æ°ããç䟡ã¯ã©ã¹ã®ä»£è¡šã§ãããšèŠãªãããŸãã ã¢ã«ãŽãªãºã ãååž°çã«å®è¡ããŸãã ãã¡ããããã®ã¢ã«ãŽãªãºã ã®æ£ããã蚌æããããšã¯ã§ããŸãããç§ã¯ãã§ã«åœ¢åŒäž»çŸ©ãå°ãããéããŠãããšæããŠããŸãããã®èšŒæ ã«å¯ŸåŠããããã«ã å ã®èšäºãåç §ããæ¹ãç°¡åã§ãã
ãŸããçæãæ åœããã³ãŒããèŠãŠã¿ãŸãããã
public static void generateSubtreeFrom(Dissection root, int maxOrder) { for (UpperDissection upper : root.createAllUpper()) { LowerDissection lower = upper.createArbitraryLower(); if (lower != null) { Dissection probableChild = lower.getUnderlyingDissection(); if (probableChild.getOrder() <= maxOrder && lower.isParentFor(probableChild)) { root.addChild(probableChild); generateSubtreeFrom(probableChild, maxOrder); } } } }
ãããŠä»-ãã¹ãŠã®éååã«ãããæ倧ã§8æ¡ãŸã§ã®3.4ããã³5ãŽã³ã«çæããçµæã ç¢å°ã¯ã芪ããåå«ã«åããããŠããŸãã ãã¹ãŠã®ã«ããã¯ãæ ¹ãæ¢çŽãªããžã§ã¯ãã§ããããªãŒã圢æããŠããããšãããããŸãã
ãã®å³é¢ãçæããããã°ã©ã ã®ãœãŒã¹ã³ãŒãã¯ã Googleã³ãŒãã§å ¥æã§ããŸã ã 圌女ã®ä»äºã®çµæã¯ãgraphviz圢åŒã®èª¬æã§ãã
çµè«ãšããŠãèããããåé¡ã«ã€ããŠã¯ãååãšããŠãããã·ã³ãã«ã§åæã«é«éãªã¢ã«ãŽãªãºã ãæãã€ãããšãã§ãããšä»ãå ããŸãã ãã ãã説æãããŠããæé ã¯ãèªå°çã«æ§ç¯ã§ããã»ãŒãã¹ãŠã®ã¿ã€ãã®çµã¿åãããªããžã§ã¯ãã«é©çšã§ããæ§é ããæ§ç¯ãããŸãã ããã«ãã¢ã«ãŽãªãºã ã®äœæè ã«ããã°ãå°ãªããšãäžéšã®ã°ã©ãã®çš®é¡ã§ã¯ããã®ã¢ãããŒãã«ãããä»æ¥ã§ã¯æé«ã§ã¯ãªãã«ããŠãæé«ã®çæçãåŸãããŸãã