ðNPå®å šãšãã¥ãŒãªã³ã°å®å šã¯é¢ä¿ããããŸããïŒ
NPå®å šæ§ãšãã¥ãŒãªã³ã°å®å šæ§ã¯ãèšç®çè«ã®ç°ãªãåŽé¢ãæ±ã£ãŠããããããããç°ãªãæŠå¿µãè¡šããŠããŸãããèšç®ã®è€éããšèšç®å¯èœæ§ã®ç 究ãšããåºãæ çµã¿ã®äžã§é¢é£ããŠããŸãã以äžã«ãäž¡è ã®éããšé¢é£æ§ã«ã€ããŠèª¬æããŸãã
NPå®å šæ§
å®çŸ©: NPå®å šåé¡ã¯ãé決å®æ§ãã¥ãŒãªã³ã°ãã·ã³ïŒNTMïŒã§å€é åŒæéå ã«è§£ãããšãã§ãããŸããNPïŒé決å®æ§å€é åŒæéïŒã«å±ããä»»æã®åé¡ãå€é åŒæéå ã«åž°çã§ããåé¡ã®ã¯ã©ã¹ã§ãã
éç¹: NPå®å šæ§ã¯ãäž»ã«ã決å®åé¡ãã®é£ãããåé¡ããããã«äœ¿ãããŸããããã§ã®åé¡ã¯ãäžããããå¶çŽã®äžã§è§£ãååšãããã©ãããå€å®ãããã®ã§ãã
ç®ç: èšç®è€éæ§çè«ã«ãããNPå®å šåé¡ã®ç 究ã¯ãã©ã®ãããªåé¡ãå¹ççã«è§£ãããïŒP=NPåé¡ïŒããŸãã¯è§£ããªãããç解ããããšã«çŠç¹ãåœãŠãŠããŸãã
ãã¥ãŒãªã³ã°å®å šæ§
å®çŸ©: ãã¥ãŒãªã³ã°å®å šãšã¯ãããèšç®ã¢ãã«ããã¥ãŒãªã³ã°ãã·ã³ãšç䟡ãªèšç®èœåãæã€ããšãæå³ããŸããã€ãŸãããã®èšç®ã¢ãã«ã§ãã¥ãŒãªã³ã°ãã·ã³ãå®è¡ã§ããä»»æã®èšç®ãå®è¡ã§ããå Žåããã®ã¢ãã«ã¯ãã¥ãŒãªã³ã°å®å šã§ãã
éç¹: ãã¥ãŒãªã³ã°å®å šæ§ã¯ãèšç®å¯èœæ§çè«ã«ãããæŠå¿µã§ãããããã·ã¹ãã ãã©ã®ãããªèšç®ãå®è¡ã§ãããã©ããïŒçè«äžïŒãè¡šããŸãã
ç®ç: ããã°ã©ãã³ã°èšèªãèšç®ã¢ãã«ãä»»æã®èšç®åé¡ã解ãèœåãæã€ãã©ãããå€æããåºæºãšããŠçšããããŸãã
é¢é£æ§ãšéã
é¢é£æ§: äž¡è ã¯èšç®çè«ã®ç°ãªãåéã«å±ããªããããèšç®ã®éçãšå¯èœæ§ã«é¢ããç解ãæ·±ããäžã§äºãã«è£å®çãªåœ¹å²ãæãããŸãã
éã: NPå®å šæ§ã¯ç¹å®ã®åé¡ãã©ãã ãé£ãããïŒç¹ã«æ±ºå®åé¡ã«ãããŠïŒããã¥ãŒãªã³ã°å®å šæ§ã¯èšç®ã¢ãã«ãããã°ã©ãã³ã°èšèªãä»»æã®èšç®ãå®è¡ã§ããèœåãæã€ãã©ãããæ±ããŸãã
ç°¡æœã«èšãã°ãNPå®å šæ§ã¯åé¡ã®è€éãã«çŠç¹ãåœãŠããã¥ãŒãªã³ã°å®å šæ§ã¯èšç®ã¢ãã«ã®èœåã«çŠç¹ãåœãŠãŠããŸãããããã¯ç°ãªãæŠå¿µã§ãããèšç®çè«ã®ç解ãæ·±ããããã«ã¯äž¡æ¹ãšãéèŠã§ãã
NPå®å šããã¥ãŒãªã³ã°å®å šãäžç¢ºå®æ§ãå€å¥ã§ãããœãããŠã§ã¢ãã©ã€ãã©ãªã¯ååšããã§ããããïŒ
NPå®å šæ§ããã¥ãŒãªã³ã°å®å šæ§ãããã³äžç¢ºå®æ§ïŒããã§ã®ãäžç¢ºå®æ§ããäœãæããã¯æ確ã§ã¯ãããŸããããããããèšç®ã®äžç¢ºå®æ§ãã¢ã«ãŽãªãºã ã®æ±ºå®äžå¯èœæ§ãæããŠãããšè§£éããŸãïŒãèªåçã«å€å¥ã§ãããœãããŠã§ã¢ãã©ã€ãã©ãªã¯ããã®æ§è³ªäžãååšããŸããããããã®æŠå¿µãå€æããããã»ã¹ã¯ãæ·±ãæ°åŠçæŽå¯ãšå³å¯ãªè«çç蚌æãå¿ èŠãšããçŸåšã®ãšãããããå®å šã«èªååããæ¹æ³ã¯ãããŸããã
çç±
NPå®å šæ§ã®å€å®ã¯ãç¹å®ã®åé¡ãNPã«å±ãããã€NPå ã®ä»ã®åé¡ãã¹ãŠãå€é åŒæéå ã«ãã®åé¡ã«åž°çã§ããããšã蚌æããå¿ èŠããããŸãããã®ããã»ã¹ã¯ãæ¢ç¥ã®NPå®å šåé¡ããã®åž°çãéããŠè¡ããããããåµé çãªæŽå¯ãšè€éãªè«ççæšè«ãèŠããŸãã
ãã¥ãŒãªã³ã°å®å šæ§ã®å€å®ã¯ãèšç®ã¢ãã«ãä»»æã®ãã¥ãŒãªã³ã°ãã·ã³ãå®è¡ã§ããèšç®ãæš¡å£ã§ããããšã瀺ãå¿ èŠããããŸããããã¯ããã®èšç®ã¢ãã«ã®èœåãå³å¯ã«åæããããšã«ãã£ãŠã®ã¿éæå¯èœã§ãã
äžç¢ºå®æ§ã決å®äžå¯èœæ§ã®å€å®ã¯ãç¹å®ã®åé¡ãåœé¡ã«å¯ŸããŠã¢ã«ãŽãªãºã ãååšããªãããŸãã¯èšç®çµæãäžç¢ºå®ã§ããããšã瀺ãå¿ èŠããããŸããäŸãã°ãåæ¢åé¡ã¯æ±ºå®äžå¯èœãªåé¡ã®å žåçãªäŸã§ãã
代æ¿æ段
èšç®çè«ã«é¢ããçè«çãªç¥èãæ·±ããã
ç¹å®ã®åé¡ãèšç®ã¢ãã«ã«é¢ããæç®ãç 究ã調æ»ããã
èšç®è€éæ§ãèšç®å¯èœæ§ã«é¢ããã³ãã¥ããã£ããã©ãŒã©ã ã§ã®è°è«ã«åå ããã
å®çšçãªã¢ãããŒã
ç¹å®ã®åé¡ã®èšç®è€éæ§ãã¢ã«ãŽãªãºã ã®æ§èœãåæããããã®ããŒã«ãã©ã€ãã©ãªã¯ååšããŸããããããã¯äžè¬çã«å®éšçãªè©äŸ¡ãç¹å®ã®ã¢ã«ãŽãªãºã ã®å¹ççãªå®è£ ã«çŠç¹ãåœãŠãŠããŸããäŸãã°ãã°ã©ãçè«ãæé©åãæ°å€èšç®ã«é¢é£ããPythonã©ã€ãã©ãªïŒnetworkxãscipyãnumpyãªã©ïŒã¯ãç¹å®ã®åé¡ã«å¯Ÿããã¢ãããŒãã®æå¹æ§ãè©äŸ¡ããã®ã«åœ¹ç«ã¡ãŸããããããã®åé¡ã®NPå®å šæ§ããã¥ãŒãªã³ã°å®å šæ§ãèªåçã«å€å®ããããšã¯ã§ããŸããã
èšç®çè«ã®æ ¹æ¬çãªåé¡ã¯ãçŸåšã®ãšãã人éã®å°é家ã«ããæŽå¯ãšåµé æ§ã«å€§ããäŸåããŠããŸãã
NPå®å šåé¡ã¯èšç®è€éæ§çè«ã«ãããŠéèŠãªäœçœ®ãå ããŠãããå€ãã®æåãªåé¡ããã®ã¯ã©ã¹ã«åé¡ãããŠããŸãã以äžã«ã代衚çãªNPå®å šåé¡ã®äŸãããã€ãæããŸãïŒ
å·¡åã»ãŒã«ã¹ãã³åé¡ (Traveling Salesman Problem, TSP)
åé¡ã®æŠèŠ: äžããããéœåžã®éåãšåéœåžéã®è·é¢ã«å¯ŸããŠããã¹ãŠã®éœåžãäžåºŠã ã蚪ããŠåºçºç¹ã«æ»ãæçã®çµè·¯ïŒè·é¢ãæå°ïŒãèŠã€ããåé¡ã
å¿çšäŸ: ããžã¹ãã£ã¯ã¹ãé éã«ãŒãæé©åãªã©ã
ããããµãã¯åé¡ (Knapsack Problem)
åé¡ã®æŠèŠ: éããã容éã®ããããµãã¯ã«ãæã䟡å€ãé«ããªãããã«ã¢ã€ãã ãè©°ã蟌ãåé¡ãåã¢ã€ãã ã¯éããšäŸ¡å€ãèšå®ãããŠããŸãã
å¿çšäŸ: è³æºé åãããžã§ããå¶éäžã§ã®æé©æè³éžæãªã©ã
é ç¹è¢«èŠåé¡ (Vertex Cover Problem)
åé¡ã®æŠèŠ: ã°ã©ãå ã®ãã¹ãŠã®èŸºãå°ãªããšãäžæ¹ã®ç«¯ç¹ã«ãã£ãŠã被èŠãããããããªãæå°ã®é ç¹éåãèŠã€ããåé¡ã
å¿çšäŸ: ãããã¯ãŒã¯èšèšãã»ãã¥ãªãã£ç£èŠã·ã¹ãã ã®æé©é 眮ãªã©ã
éå被èŠåé¡ (Set Cover Problem)
åé¡ã®æŠèŠ: å šãŠã®èŠçŽ ãå°ãªããšãäžã€ã®éšåéåã«å«ãŸãããããªãäžããããéåã®éšåéåã®æå°æ°ãèŠã€ããåé¡ã
å¿çšäŸ: ããŒã¿ããŒã¹ã®çŽ¢åŒèšèšãã»ã³ãµãŒãããã¯ãŒã¯ãªã©ã
ã¯ãªãŒã¯åé¡ (Clique Problem)
åé¡ã®æŠèŠ: ã°ã©ããäžãããããšãããã®ã°ã©ãã®äžã§å šãŠã®é ç¹ãäºãã«é£æ¥ããæ倧ã®é ç¹éåïŒã¯ãªãŒã¯ïŒãèŠã€ããåé¡ã
å¿çšäŸ: ãœãŒã·ã£ã«ãããã¯ãŒã¯åæãçç©åŠçãããã¯ãŒã¯ã®è§£æãªã©ã
ããŒã«åŒå 足åé¡ (Boolean Satisfiability Problem, SAT)
åé¡ã®æŠèŠ: äžããããããŒã«åŒãçãšãªããããªå€æ°ã®å²ãåœãŠãååšãããã©ãããå€å®ããåé¡ã
å¿çšäŸ: ã³ã³ãã¥ãŒã¿ããã°ã©ã ã®æ€èšŒãè«çåè·¯èšèšãªã©ã
ãããã®åé¡ã¯ãããããå¹ççãªïŒå€é åŒæéã§å®è¡å¯èœãªïŒã¢ã«ãŽãªãºã ãç¥ãããŠããªããããNPå®å šã¯ã©ã¹ã«åé¡ãããŠããŸãããŸãããããã®åé¡ã«å¯Ÿããæ°ããªè§£æ³ãã¢ãããŒããçºèŠãããå Žåãèšç®è€éæ§çè«ã«ããã倧ããªé²æ©ã«ã€ãªããå¯èœæ§ããããŸãã
éåã³ã³ãã¥ãŒã¿ãŒã®çºå±ã§ãNPå®å šåé¡ã解æ¶ãããæåŸ ã¯ãããŸãã§ããããïŒ
éåã³ã³ãã¥ãŒã¿ãŒã®çºå±ã¯èšç®æ©ç§åŠã®åéã«é©åœãããããå¯èœæ§ããããŸãããNPå®å šåé¡ã«å¯Ÿãããã®åœ±é¿ã«ã€ããŠã¯æ éãªè©äŸ¡ãå¿ èŠã§ããçŸåšã®ãšãããéåã³ã³ãã¥ãŒã¿ãŒãNPå®å šåé¡ãå¹ççã«ïŒã€ãŸããå€é åŒæéã§ïŒè§£ãããšãã§ãããã©ããã¯æ確ã§ã¯ãããŸããã以äžã«ããã®ç¹ã«é¢ããããã€ãã®èå¯ã瀺ããŸãã
éåã³ã³ãã¥ãŒãã£ã³ã°ãšã¯
éåã³ã³ãã¥ãŒã¿ãŒã¯ãå€å žçãªãããã®ä»£ããã«éåãããïŒã¯ãããïŒã䜿çšããŸããã¯ãããã¯éãåãããšçµ¡ã¿åãã®éåååŠçæ§è³ªãå©çšã§ãããããç¹å®ã®çš®é¡ã®èšç®åé¡ã«ãããŠå€å žçãªã³ã³ãã¥ãŒã¿ãŒãããå€§å¹ ã«é«éã«èšç®ãè¡ãå¯èœæ§ããããŸãã
NPå®å šåé¡ãžã®åœ±é¿
å¹ççãªè§£æ³ã®äžåš: çŸåšã®ãšãããNPå®å šåé¡ãå€é åŒæéã§è§£ãéåã¢ã«ãŽãªãºã ã¯çºèŠãããŠããŸãããéåã¢ã«ãŽãªãºã ã®äžã§ãç¹ã«æåãªã·ã§ã¢ã®ã¢ã«ãŽãªãºã ïŒçŽ å æ°å解ãå€é åŒæéã§è§£ãïŒãã°ããŒããŒã®ã¢ã«ãŽãªãºã ïŒéæ§é åæ€çŽ¢åé¡ãå€å žã³ã³ãã¥ãŒã¿ãŒãããéã解ãïŒã¯ãNPå®å šåé¡å šäœãå¹ççã«è§£ããã®ã§ã¯ãããŸããã
ç¹å®åé¡ãžã®æåŸ : äžéšã®NPåé¡ã«å¯ŸããŠã¯ãéåã³ã³ãã¥ãŒã¿ãŒãå€å žçãªã¢ãããŒããããå¹ççãªè§£æ³ãæäŸããå¯èœæ§ããããŸããäŸãã°ãã°ããŒããŒã®ã¢ã«ãŽãªãºã ã¯æ€çŽ¢åé¡ã®è§£æ±ºãå éã§ããŸãããããã¯NPå®å šåé¡ã®ãµãã»ããã«çŽæ¥é©çšã§ããããã§ã¯ãããŸããã
é·æçãªèŠéã
çè«çãªãã¬ãŒã¯ã¹ã«ãŒã®å¯èœæ§: éåã³ã³ãã¥ãŒãã£ã³ã°ã®çè«ãæè¡ãé²åããã«ã€ããŠãNPå®å šåé¡ã«å¯Ÿããæ°ããªã¢ãããŒããèŠã€ããå¯èœæ§ã¯ãããŸããããããããã¯æªè§£æ±ºã®ç 究課é¡ã§ããã確å®ãªããšã¯èšããŸããã
è€éæ§ã¯ã©ã¹ã®åè©äŸ¡: éåã³ã³ãã¥ãŒãã£ã³ã°ãçºå±ããããšã§ãèšç®è€éæ§çè«ã«ãããã¯ã©ã¹ïŒäŸãã°ãP, NP, NPå®å šãªã©ïŒã®ç解ãå®çŸ©ãå€ããå¯èœæ§ããããŸãã
å€é åŒæéãšã¯äœã§ããããïŒ
å€é åŒæéïŒPolynomial timeïŒã¯ãèšç®è€éæ§çè«ã«ãããŠãã¢ã«ãŽãªãºã ã®å®è¡æéãå ¥åãµã€ãºã®å€é åŒé¢æ°ã§è¡šããå ŽåãæããŸãããã®æŠå¿µã¯ã¢ã«ãŽãªãºã ãã©ãã ããå¹ççãã«åé¡ã解ãããè©äŸ¡ããããã®åºæºã®äžã€ã§ãã
å€é åŒæéã®å®çŸ©
ã¢ã«ãŽãªãºã ãå€é åŒæéã§ãããšã¯ããã®å®è¡æé ï¿œ(ï¿œ)T(n) ãå ¥åãµã€ãº ï¿œn ã®å€é åŒ ï¿œï¿œnkïŒãã㧠ᅵk ã¯å®æ°ïŒã§äžéãèšå®ã§ããå Žåãæå³ããŸããããªãã¡ãã¢ã«ãŽãªãºã ã®å®è¡æéã ï¿œ(ï¿œ)=ï¿œ(ᅵᅵ)T(n)=O(nk) ã§ããå Žåããã®ã¢ã«ãŽãªãºã ã¯å€é åŒæéã§åäœãããšèšããŸãã
äŸ
ç·åœ¢æéïŒï¿œ(ï¿œ)O(n)ïŒ: ã¢ã«ãŽãªãºã ã®å®è¡æéãå ¥åãµã€ãºã«çŽæ¥æ¯äŸããå Žåã
äºæ¬¡æéïŒï¿œ(ï¿œ2)O(n2)ïŒ: ã¢ã«ãŽãªãºã ã®å®è¡æéãå ¥åãµã€ãºã®å¹³æ¹ã«æ¯äŸããå Žåã
å€é åŒæéã®éèŠæ§
å¹ççãªã¢ã«ãŽãªãºã : äžè¬çã«ãå€é åŒæéã§å®è¡ã§ããã¢ã«ãŽãªãºã ã¯ãå¹ççããšèŠãªãããŸããããã¯ãå®è¡æéãå ¥åãµã€ãºã«å¯ŸããŠåççãªé床ã§å¢å ããããã§ãã
Pã¯ã©ã¹: èšç®è€éæ§çè«ã«ãããŠãå€é åŒæéã§è§£ãã決å®åé¡ã®ã¯ã©ã¹ãPãšåŒã³ãŸããPã¯ãå€é åŒæéã§è§£ããåé¡ã®éåããšè§£éã§ããŸãã
éå€é åŒæé
å¯Ÿç §çã«ãææ°æéïŒäŸ: ï¿œ(2ï¿œ)O(2n)ïŒãéä¹æéïŒäŸ: ï¿œ(ï¿œ!)O(n!)ïŒã®ã¢ã«ãŽãªãºã ã¯ãå ¥åãµã€ãºãå¢å ããã«ã€ããŠå®è¡æéãéåžžã«æ¥æ¿ã«å¢å ãããããéå¹ççãšèŠãªãããŸãããããã®ã¢ã«ãŽãªãºã ã¯ãå®çšçãªç®çã«ãããŠå€§ããªå ¥åãµã€ãºã§ã®äœ¿çšãå°é£ã§ãã
å€é åŒæéã¯ãã¢ã«ãŽãªãºã ãåé¡ã®èšç®è€éæ§ãç解ããããã®éèŠãªæŠå¿µã§ãããå¹ççãªèšç®ã®åºæºãšããŠåºã䜿çšãããŠããŸãã