JAVAãPythonãRubyãPHPãCïŒãC ++ãªã©ã®ãããªäººæ°ã®ããããŒã«ãããããããå Žåãã»ãšãã©å
šèœã ãšæããŸãã ã¿ã¯ã·ãŒã®éçºãžã®æšæºçãªã¢ãããŒãã ãã ããç¹å®ã®çš®é¡ã®ã¿ã¹ã¯ã«åºäŒããŸã§ã§ãã
æé©ãªããã°ã©ã ã®æžãæ¹ãèããŠãã ãã...
â¢æ°ç¬ã¿ã€ãã®ããºã«ãŸãã¯8人ã®å¥³çã®èª²é¡ã解決ããŸãã
â¢ç¹å®ã®ãªãœãŒã¹ã»ããéã§ã¿ã¹ã¯ãåæ£ããŸãã
â¢ã¯ã©ã¹ã®ã¹ã±ãžã¥ãŒã«ãèšç®ããŸãã
â¢ãã©ãã£ãã¯ã®å¹æçãªã«ãŒãã決å®ããŸãã
â¢å€åã¹ã±ãžã¥ãŒã«ãªã©ãäœæããŸãã
å¶çŽã®ããã°ã©ãã³ã°ãšè€éãªçµã¿åããèšç»åé¡ã®è§£æ±ºãããªãã®æ匷ã®åŽé¢ã§ã¯ãªãå Žåããã®èšäºã¯ããªãã®ããã ãã®ãã®ã§ãã
äŸãšããŠãã¹ã±ãžã¥ãŒãªã³ã°ã®ã¿ã¹ã¯ã®1ã€ã§ããããã¥ãŒãã£ã¹ã±ãžã¥ãŒã«ã®èšç®ãèããŠã¿ãŸãããã ãã£ãŒãèšç®ã¢ã«ãŽãªãºã ãéžæããéã«ããã°ã©ããæ±ããåé¡ã¯äœã§ããïŒ äžèŠããã¹ãŠãéåžžã«ç°¡åã§ãã ç°¡åãªã¢ã«ãŽãªãºã ã䜿çšã§ããŸãã åŸæ¥å¡éã§è·åãã©ã³ãã ã«ãŸãã¯ããé©åã«é çªã«åçã«é
åããŸãã
ããã¯çæ³çãªãªãã·ã§ã³ã§ãã ãã ããå®éã«ã¯ããã¹ãŠãã¯ããã«è€éã§ãã éåžžãèæ
®ããªããã°ãªããªãå€ãã®è¿œå æ¡ä»¶ããããŸãã åŸæ¥å¡ã¯äŒæã«åºãããæ¥çšãå€æŽãããããŸãããã®çµæãã·ãããçŸããŸãã åŸæ¥å¡ã®åžæãèæ
®ãããå Žåãè·åãè€æ°ã®ã·ããã«åå²ãããŠããå ŽåããŸãã¯äººã®éžæã¯è³æ Œã®ã¬ãã«ãªã©ã«å¿ããŠããã«é£ãããªããŸãã ããæç¹ã§ãåçŽãªã¢ã«ãŽãªãºã ãæ©èœããªããªããŸãã ä»ã®æ¹æ³ãè©Šãããšãã§ããŸã-å€ãã®å¯èœãªçµã¿åããã®äžããæé©ãªãœãªã¥ãŒã·ã§ã³ãæ¢ããŸãã ãã ããããã§å¥ã®åé¡ãçºçããŸãã
ãã¹ãŠã®å¶éã«æºæ ããã¢ãã³ãã³ãã®æé©ãªé
åžãšããåé¡èªäœã¯æ°ãããã®ã§ã¯ãããŸããã ããã¯40幎以äžåããååšãã ããŒã¹ã¹ã±ãžã¥ãŒãªã³ã°åé¡ ïŒNSPïŒãšããŠç¥ãããŠããŸã ã
é£ããã¯äœã§ããïŒ èšç»ã¿ã¹ã¯ã¯ãæ°åŠã®
çµã¿åããã®ã»ã¯ã·ã§ã³ã«é¢é£ããŠããŸãã éåžžããã®çš®ã®ã¿ã¹ã¯ã«ã¯1ã€ã§ã¯ãªããå€ãã®ãœãªã¥ãŒã·ã§ã³ããããæã«ã¯éåžžã«å€§ããªãœãªã¥ãŒã·ã§ã³ããããŸãã ç°¡åãªäŸã æ¯æ¥10人ã®åŸæ¥å¡ã®ãã¡1人ãå€åããŠãã30æ¥éã®å€åã¹ã±ãžã¥ãŒã«ãããã€äœæã§ããŸããïŒ 10ã30床ïŒæ°åïŒã®æ¹æ³ã§ããããšãããããŸãã æ¡ä»¶ã䌌ãŠãããããã®æ¥ã3ã€ã®ã·ããïŒã·ããããšã«1人ã®åŸæ¥å¡ïŒã«åå²ãããŠããå Žåã
30床ã®ãªãã·ã§ã³ã
培åºçãªæ€çŽ¢ã®æ¹æ³ã«ãã£ãŠããã®ãããªå€æ°ã®çµã¿åããã®äžããæé©ãªãªãã·ã§ã³ãèŠã€ããããšã¯ãæã匷åãªã³ã³ãã¥ãŒã¿ãŒãè¶
ããŠããŸãã
å¥ã®é£ããïŒã»ãšãã©ã®èšç»ã¿ã¹ã¯ã¯ã
NPå°é£ã¯ã©ã¹ã®è€éãªçµã¿åããåé¡ã®äžéšã§ãã æªããã¥ãŒã¹ã¯ãNPå°é£ãªåé¡ã«ã¯ã劥åœãªæéå
ã«èšŒæå¯èœãªæé©ãªè§£ãèŠã€ããããšãã§ããå¹æçãªæ®éçãªã¢ã«ãŽãªãºã ïŒ
å€é
åŒ ïŒããªãããšã§ãã
çè«çã«ã¯ãã®ãããªã¢ã«ãŽãªãºã ãååšããå¯èœæ§ããããŸãããåé¡ã¯æªè§£æ±ºã®ãŸãŸã§ãïŒ ã¯ã©ã¹Pããã³NPã®ç䟡æ§ãåç
§ïŒã çºè¡äŸ¡æ Œã¯1,000,000ãã«ã§ãïŒ Millennium Tasksãåç
§ïŒã
幞ããªããšã«ãéæ³ã®è¬ãç¹å¹è¬ã¯ãããŸãããããŸã éã¯ãããŸãã 蚱容ã§ããæéå
ã«ãã®ã¿ã€ãã®åé¡ã«æé©ãªãœãªã¥ãŒã·ã§ã³ãèŠã€ããããã®ããŸããŸãªã¢ãããŒãããããŸãã
å¶çŽãæºããåé¡ãšããŠã®çµã¿åããåé¡
çµã¿åããåé¡ã解決ããããã«ãå¶çŽå
足åé¡ïŒCSPïŒãšããŠè¡šãããšãã§ããŸãã CSPã¯ãåçŽãªèšè¿°ã¹ããŒã ã§æ§æãããŸããå€æ°ïŒå€æ°ïŒã®ãªã¹ãã«ã¯ãããããã«å¯èœãªå€ïŒãã¡ã€ã³ïŒã®ã»ãããäžããããå€æ°ãæºããå¿
èŠã®ããå¶çŽïŒå¶çŽïŒã®ãªã¹ãããããŸãã CSPã®è§£æ±ºçã¯ãæå®ãããå¶çŽã®æ¡ä»¶ã«åŸã£ãŠå€æ°ãåãããšãã§ãããã¹ãŠã®å¯èœãªå€ãèŠã€ããããšã§ãã
åçŽãªCSPã®äŸ
- å€æ°ïŒ
X \ in \å·Š\ {1,2,3 \å³\}
Y \ in \å·Š\ {1,2 \å³\}
Z \ in \å·Š\ {1,2,3 \å³\}
- å¶éäºé
ïŒ
- 解決çïŒ
CSPã¯ç¹å®ã®æ±ºå®ã¢ã«ãŽãªãºã ãå®çŸ©ããŸããã å€ãã®ç°ãªãã¢ãããŒãããããŸãã ãããã®ããã€ãã¯æ¬¡ã®ããã«è¡šãããšãã§ããŸã...
ããšãã°ãæ€çŽ¢ããªãŒãš
ãªã¿ãŒã³æ€çŽ¢ã¢ã«ãŽãªãºã ãçµã¿åãããç¹æ®ãªCSPã¡ãœããããã䜿çšãããŸãã
CSPããã³å¶çŽããã°ã©ãã³ã°
èšç»ãšã¹ã±ãžã¥ãŒãªã³ã°ã§ã¯ãå¶çŽããã°ã©ãã³ã°ïŒCPïŒãã¯ãããžãŒãé©åã§ããããã䜿çšãããŸãã 倧èŠæš¡ãªçµã¿åããåé¡ã®å¹æçãªè§£æ±ºã®ããã®ã¢ã«ãŽãªãºã ã®ã³ã³ãã¥ãŒã¿ãŒå®è£
ã éåžžã®åœ¢åŒã®
åœä»€åããã°ã©ãã³ã°ãšã¯ç°ãªããCPã¯
å®£èš åã䜿çšããŸãã ããã«ããäœæ¥ãç°¡çŽ åãããŸããåé¡ãèšè¿°ããã ãã§ããã¹ãŠã®èšç®ãšå€ã®æ€çŽ¢ã¯ãå¹æçãªèšç®ã¢ã«ãŽãªãºã ãå«ããœã«ããŒã«ãã£ãŠå®è¡ãããŸãã
å¶çŽã§ã®ããã°ã©ãã³ã°ã¯ãå¶çŽãæºããã¿ã¹ã¯ãšå¯æ¥ã«é¢é£ããŠããŸãã ãããã£ãŠãäŸãšããŠåè¿°ããCSPã¯ãããã°ã©ã ãšããŠéåžžã«ç°¡åã«è¡šç€ºã§ããŸãã
ããšãã°ãMiniZincã§ã¯ã次ã®ããã«ãªããŸãã
äœæ¥ãå®äºãããšãããã°ã©ã ã¯æå®ãããå¶éã«åŸã£ãŠå€æ°ã®ãã¹ãŠã®æå¹ãªå€ã衚瀺ããŸãã
X=2 Y=1 Z=2
----------
X=3 Y=1 Z=3
----------
X=3 Y=2 Z=3
----------
å¶çŽã®ããããã°ã©ãã³ã°ã§ã¯ãCPãµããŒããåããåå¥ã®ããã°ã©ãã³ã°ç°å¢ãšãéåžžã®ããã°ã©ãã³ã°èšèªã®ãã©ã°ã€ã³ã©ã€ãã©ãªã®äž¡æ¹ã䜿çšãããŸãã
æ¥ç¶ãããã©ã€ãã©ãªïŒåå¥ã®ããã°ã©ãã³ã°ç°å¢ïŒCSP圢åŒã®å€åæé
ããšãã°ãå€åã¹ã±ãžã¥ãŒã«ã®èšç®ã®åé¡ãèããŠã¿ãŸãããã CSPã¢ãã«ãšããŠæ³åããŠãã ããã ã¿ã¹ã¯ã®æ¡ä»¶ã¯æå³çã«ç°¡çŽ åããããã£ã±ãæ¢çŽ¢çãªæ§æ Œãæã¡ãŸãã
å¡äŸ- 30æ¥éã10人ã®å€åã¹ã±ãžã¥ãŒã«ãèšç®ããå¿
èŠããããŸãã
- æ¯æ¥ã2人ã®åŸæ¥å¡ãè·åã«åå ãã1人ãã¡ã€ã³ã®è·åãåŒãç¶ãããã1人ãäºå圹ãåããŸãã
- æéå
šäœã®ååŸæ¥å¡ã¯ã䞻任åã®ç·æ°ã3人以äžã«ããå¿
èŠããããŸãã
- ã¡ã€ã³ã®å€åã®ç¿æ¥ãåŸæ¥å¡ã¯ã¹ã¿ã³ãã€å€åã«å
¥ãããã®åŸ1æ¥ä»¥äžäŒã¿ãŸãã
1.ãœãŒã¹ããŒã¿- n-è«æ±æéã®æ¥æ°ïŒn = 30ïŒ
- m-å€åäžã®äººæ°ïŒm = 10ïŒ
- dã¯ãã®æ¥ã®ã€ã³ããã¯ã¹ã§ãïŒd = 1ã...ãnïŒ
- e-åŸæ¥å¡ã€ã³ããã¯ã¹ïŒe = 1ã...ãmïŒ
2.å€æ°ïŒå€æ°ïŒäžé£ã®å€æ°Xã2次å
è¡åã®åœ¢åŒã§å®çŸ©ããŸãã åè¡ã®å€æ°ã®é åºã¯ãç¹å®ã®åŸæ¥å¡ã®å€åæ¥æ°ã«å¯Ÿå¿ããŠããŸãã
å€æ°ã®æå¹ãªãã¡ã€ã³ïŒ
3.å¶éïŒå¶çŽïŒæ¯æ¥ã1人ã®åŸæ¥å¡ã®ã¿ã䞻任圹å¡ã«ãªãããšãã§ããŸãã
è§æ¬åŒ§- ã¢ã€ããŒãœã³è¡šèšæ³ã§ã®æå®
æ¯æ¥ã1人ã®åŸæ¥å¡ã®ã¿ãåŸ
æ©åœ¹å¡ã«ãªãããšãã§ããŸãã
æéå
šäœã®ååŸæ¥å¡ã®äž»ãªå€åæéæ°ã¯3以äžã§ãªããã°ãªããŸããã
決å®è«çãª
æéç¶æ
ãã·ã³ãå®çŸ©ããŸãã è·åã®åé
ã®é åºã説æããŸãããã äž»èŠãªä»»åã®åŸãåŸæ¥å¡ã¯åŸ
æ©è·åœ¹å¡ãšãªãã1æ¥ä»¥äžã®äŒæ©ãç¶ããŸãã ç¶æ
éã®é·ç§»ã瀺ãããŸãïŒã¡ã€ã³= 1-ã¡ã€ã³ãã¥ãŒãã£ããªã¶ãŒã= 2-ã¹ã¿ã³ãã€ãã¥ãŒãã£ããªã= 3-äŒæ¯æ¥ã
é·ç§»è¡šã®åœ¢åŒã§ã®ãã·ã³ã®ç¶æ
ã®èª¬æïŒ
åé¡ã¯ããŸããŸãªæ¹æ³ã§å®åŒåã§ããŸãã ããšãã°ã1ãš0ã®å€ãã¡ã€ã³ïŒ3çš®é¡ã®ã·ããã®3çªç®ã®æ¬¡å
ïŒãæã€3次å
ãããªãã¯ã¹ã®åœ¢åŒã®Xå€ã®ã»ãããæ³åããŠãã ããã ãŸãã¯ãè·åã®çš®é¡ããšã«ãåå¥ã®å€æ°ãå®çŸ©ããŸãã
MiniZincã§ã®å€åã¹ã±ãžã¥ãŒã«ã®å®çšçãªå®è£
ãããŠä»ãããããæãèå³æ·±ãã ç¹å®ã®CSPæ¡ä»¶ã«åŸã£ãŠå€åã¹ã±ãžã¥ãŒã«ãèšç®ããå®éã®ããã°ã©ã ãäœæããŸãã å¶éã®ããããã°ã©ãã³ã°ç°å¢ãšããŠãMiniZincã䜿çšããŸãã
MiniZincã¯ãé«ã¬ãã«ã®ãªãŒãã³ãœãŒã¹å¶çŽã¢ããªã³ã°èšèªã§ãã ä»ã®CPããã°ã©ãã³ã°ç°å¢ãšã¯ç°ãªããå®å
šã«ãœã«ããŒã«äŸåããŸããã MiniZincã䜿çšãããšãããŸããŸãªè€éãã®ã¢ãã«ãç°¡åã«äœæãããµãŒãããŒãã£ã®ãœã«ããŒã§å®éšããããšãã§ããŸãã èšèªå
µåšã«ã¯ãå€æ°ã®ã°ããŒãã«å¶çŽ ïŒ ã°ããŒãã«å¶çŽMiniZinc ïŒãåããã©ã€ãã©ãªãå«ãŸããŠãããã«ã¹ã¿ã å¶çŽïŒè¿°èªïŒãäœæããããšãã§ããŸãã ããã«ãããé©çšãããåé¡ã®ã¢ããªã³ã°ã倧å¹
ã«ç°¡çŽ åãããŸãã
ãœã«ããŒã®ç¬ç«æ§ã¯ãMiniZincããã°ã©ã ãäžäœã¬ãã«ã®FlatZincã³ãŒãã«å€æããããšã«ããå®çŸãããŸãã ã€ã³ã¿ãŒãã§ã€ã¹ãä»ããFlatZincã¯ã å€æ°ã®ãœã«ããŒã«ãã£ãŠãµããŒããããŠããŸãã
MiniZincã¯ãã»ãšãã©ã®ãã©ãããã©ãŒã ïŒWindowsãMac OSãLinuxïŒã§äœ¿çšã§ãã ç¬ç«ããIDEãåããŠããŸãã
MiniZincèšèªã®ãã詳现ãªçŽ¹ä»ã«ã€ããŠã¯ã MiniZincãã¥ãŒããªã¢ã«ãèªãããšã匷ããå§ãããŸãã ãã®ãã¥ãŒããªã¢ã«ã§ã¯ãèšèªã®ãã¹ãŠã®æ©èœãéåžžã«ç解ãããã圢åŒã§èª¬æããå€ãã®äŸããããŸãã
CSPå€åã¹ã±ãžã¥ãŒã«ã¢ãã«ãMiniZincããã°ã©ã ã³ãŒãã«æžãæããããã°ã©ã ãå®è¡ããåé¡ã解決ããŸãã
include "regular.mzn";
ããã°ã©ã ãå®äºãããšãå€åã¹ã±ãžã¥ãŒã«ã®å¯èœãªãªãã·ã§ã³ã®1ã€ãåŸãããŸãã ååŸæ¥å¡ã®è·åé
åã®é åºïŒæ°Žå¹³ç·ïŒãããã§ãMïŒã¡ã€ã³ïŒ-ã¡ã€ã³ã®è·åãRïŒãªã¶ãŒãïŒ-ã¹ã¿ã³ãã€ã®è·åãã-ã-åŸæ¥å¡ã¯å€åããŠããªã
MR - - - - - - MR - - - - MR - - - - - - - - - - - - - -
R - - - - MR - - - MR - - - - - - - - - MR - - - - - - -
- - - - - - - MR - - - - - - MR - - - - - - - MR - - - -
- - - - - - MR - - - - - - - - MR - - - - - - - - MR - -
- MR - - - - - - - - - - - - - - - - - MR - MR - - - - -
- - MR - - - - - MR - - - - - - - - - - - MR - - - - - -
- - - - - - - - - - - - MR - - - - - MR - - - - - - MR -
- - - - MR - - - - - MR - - - - - - - - - - - - - - - MR
- - - - - - - - - - - - - MR - - - MR - - - - - - - - - M
- - - MR - - - - - - - - - - - - MR - - - - - - MR - - -
ãŸãã¯ãããç解ããããæ¹æ³ã§è¡šç€ºãããå Žåã次ã®ããã«ãªããŸãã
åŸæ¥å¡ãå€åããªãã¯ãã®äŒææ¥ãäºåã«ããã£ãŠããå ŽåããŸãã¯ç¹å®ã®æ¥ä»ã«ç¹å®ã®åŸæ¥å¡ã®å€åãä¿®æ£ããå¿
èŠãããå Žåã¯ãè¿œå ã®å¶éãéããŠãããè¡ãããšãã§ããŸãã ããšãã°ã5çªç®ã®åŸæ¥å¡ã1æ¥ç®ã«äž»ä»»åœ¹å¡ã§ããã2çªç®ã®åŸæ¥å¡ã6æ¥ç®ã«å€åããŠããªãããã«ãå¶éãèšå®ããŸãã
å¶çŽX [5.1] = 1 / \ X [2.6] = 3;ããã°ã©ã ã®ããå°ãè€éãªããŒãžã§ã³ïŒHakan KjellerstrandïŒãããã«ãããŸãã
ãããã«
ãã³ããŒã®å¹žããªææè
ã¯ãããŒã«ãåé¡ã解決ããã®ã«é©ããŠãããšããå¹»æ³ãæ±ããããããŸããã ãããããã³ããŒã¯æ®éçã§ã¯ãªããå Žåã«ãã£ãŠã¯ãã®å©ç¹ãå®å
šã«æçœã§ã¯ãããŸããã ãããŠããã®ãããªã±ãŒã¹ã¯ãããããããŸãã ãã®ãããããã°ã©ãã³ã°ã§ã¯ãç¹æ®ãªã¢ãããŒãã䜿çšããªããšãäžéšã®ã¿ã¹ã¯ã誀ã£ãŠè§£æ±ºãããããæé©ã«è§£æ±ºãããŸããã å¶çŽæ¡ä»¶ã§ã®ããã°ã©ãã³ã°ã¯åŒ·åãªããŒã«ã§ãããå€æ°ã®å®çšçãªçµã¿åããã®åé¡ãå¹æçã«è§£æ±ºããã®ã«åœ¹ç«ã€å¥ã®ãã©ãã€ã ã§ãã
Hakan Kjellerstrandããã°ã§å¶çŽããã°ã©ãã³ã°ã«é¢ããå€ãã®æçšãªæ
å ±ãèŠã€ããããšãã§ããå€ã
ã®MiniZincãµã³ãã«ã¿ã¹ã¯ããããŸãã¯
ãã ã§èŠã€ãã ãŸã ã
é¢é£ãªã³ã¯ïŒããŒã¹ã¹ã±ãžã¥ãŒãªã³ã°ã®åé¡å¶éã®æºè¶³å¶éãããããã°ã©ãã³ã°MiniZincããŒã ããŒãžMinizincãã¥ãŒããªã¢ã«MiniZincãã£ã¬ã³ãž