0. ã¯ããã«
NTTããŒã¿æ°çã·ã¹ãã ã§ã¢ã«ãŽãªãºã ã®æ¢æ±ãããŠãã倧槻 (éç§°ãããã¡ãã) ã§ãã奜ããªã¢ã«ãŽãªãºã ã¯äºéšãããã³ã°ã§ãã
ã¢ã«ãŽãªãºã ãšããèšèãèããããšãããæ¹ã¯å€ããããããŸãããã¢ã«ãŽãªãºã ãšã¯ãåé¡ãè§£ãããã®æé ãã®ããšã§ããããããã®ããã«èããŠããå ·äœçãªã€ã¡ãŒãžã沞ããªãæ¹ãå€ããããããŸããã
æ¬èšäºã§ã¯ã¢ã«ãŽãªãºã ãšã¯äœãããšããã®ãå ·äœäŸã亀ããŠç޹ä»ããŸããç¹ã«ååã¯æç³»ã®æ¹ãèªãã§ããããèšè¿°ã«ãªã£ããšæããŸããæ¬èšäºã§ã¯åã¢ã«ãŽãªãºã ãé°å²æ°ã§æŽãããšãç®æšãšããŸãããããã詳ããåŠã³ããæ¹åãã«è©³çްãªè§£èª¬ã»ããã°ã©ãã³ã°æ¹æ³ãžã®ãã€ã³ã¿ã瀺ããŸããããŸãæåŸã®ç« ã«ãŠãã¢ã«ãŽãªãºã ãåŠã¶æçŸ©ã«ã€ããŠå人çã«æãããšãæžããŠããŸãã
ã¢ã«ãŽãªãºã ãçè§£ããããã«ã¯ãå®éã«æãåãããŠã¢ã«ãŽãªãºã ãããã°ã©ãã³ã°ãããã®ãäžçªã ãšæããŸãããã®ãããªå®è£ 蟌ã¿ã®å匷ãã§ãããµãŒãã¹ãšããŠãAtCoder ãæè¿è©±é¡ã«ãªã£ãŠããŸããAtCoder ãå§ããããã®ãã¥ãŒããªã¢ã«èšäº:
ãå·çããŠã¿ãŸããã®ã§ãèå³ã®ããæ¹ã¯èªãã§ããã ããããšæããŸãã
ã¢ã«ãŽãªãºã æ¬ãåºçïŒ (2020/9/30)
åã¯ãã¢ã«ãŽãªãºã ã®é¢çœãã»èãæ¹ãäŒããèšäºããQiita äžã«å€æ°å·çããŠããŸãããããããææ©çã«ãŸãšãããã圢ã§ãã¢ã«ãŽãªãºã æ¬ãåºçããŸããã
ã¢ã«ãŽãªãºã ãããæ·±ãåŠã³ããæ¹ã¯ããã²èªãã§ã¿ãŠãã ããã
æ¬èšäºã§æ±ãã¢ã«ãŽãªãºã ãã¡
ãã¢ã«ãŽãªãºã ãšã¯äœããã玹ä»ããå€ãã®è³æã§ã¯ãç·åœ¢æ¢çŽ¢ããããœãŒãããã¡ã€ã³ã«åãäžããããŠãããšæããŸããã¢ã«ãŽãªãºã ã® Hello World ãªããŒãã§ãããå¿çšæ å ±æè¡è 詊éšã§é »åºã®ããŒãã§ããããšã圱é¿ããŠããã§ãããããããã«ã€ããŠãèšäºãæžããŠããŸã:
- ãç·åœ¢æ¢çŽ¢ããæ¥µããïŒ ã for æã§è²ããªããšãã§ããããšãç¥ã ã
- ããœãŒãããæ¥µããïŒ ã ãªããœãŒããåŠã¶ã®ã ã
ãããã®ããŒãã¯ã¢ã«ãŽãªãºã ãè °ãæ®ããŠå匷ããããšãªã£ããšãã«ã¯æåã«éãéã§ããèšç®éãªãŒããŒãšãã£ãéèŠãªæŠå¿µã«ã€ããŠããœãŒãã顿ã«ããŠåŠã¶æ¹ãå€ãã§ãããããããããã§ã¯ãã£ãšæ°è»œã«ã¢ã«ãŽãªãºã ã®é¢çœãã«è§ŠãããããããªããŒãã 6 ååãäžããŸãããæ°è»œã«é¢çœãããŒãããšèšã£ãŠããæ²èŒããŠããã¢ã«ãŽãªãºã ãã¡ã¯æ¬æ Œçãã€æ£çµ±æŽŸãªãã®ã«ãªã£ãŠããŸãã
| åé¡ | ã¢ã«ãŽãªãºã | |
|---|---|---|
| 幎霢åœãŠã²ãŒã | äºåæ¢çŽ¢æ³ / äºåæ³ | å¿çšæ å ±ã§ãã銎æã¿ã§ã |
| ãããã³ã°åé¡ | ãããã³ã°æ³ | é¢çœãã§ã |
| è«é£ç®ããºã« | æ·±ãåªå æ¢çŽ¢æ³ (DFS) | ãã¹ãŠã®åºç€ã§ã |
| è¿·è·¯ | å¹ åªå æ¢çŽ¢æ³ (BFS) | åããéèŠãªåºç€ã§ã |
| é³å£°èªèãã¿ãŒã³ãããåé¡ | åçèšç»æ³ (DP) | DP ã¯ãšãŠãçšéãåºãã§ã |
| ãã£ãŒãã©ãŒãã³ã° | åŸé éäžæ³ | è¶ æµè¡äžã§ã |
1. ã¢ã«ãŽãªãºã ãšã¯
ã¢ã«ãŽãªãºã ãšèããšãç§ãã¡ã®ç掻ã«ã¯é¢ä¿ãªããããªé£ããæŠå¿µãšæãããããããããŸããããå®éã¯ãšãŠã身è¿ãªãã®ã§ãã
ã¡ãã£ãšãã幎霢åœãŠã²ãŒã ãèããŠã¿ãŸãããïŒ
1-1. 幎霢åœãŠã²ãŒã ã«åŠã¶ãäºåæ¢çŽ¢æ³
A ããã®å¹Žéœ¢ãåœãŠãããšããŠããŸãã
A ãããã20 æ³ä»¥äž 36 æ³æªæºã ãšããã®ã¯ããã£ãŠãããšããŸããããããªã㯠A ããã« 4 åã ã Yes / No ã§çãããã質åãããããšãã§ããŸããA ããã®å¹Žéœ¢ãåœãŠãããã§ããããïŒïŒïŒ
ãããã§ããã®ã§ãïŒïŒïŒïŒïŒ
ãŸããçŸåšããã£ãŠãã幎霢å¹
㯠20 æ³ä»¥äž 36 æ³æªæº ãš 16 æ³åãã®å¹
ããããŸãããã28 æ³ä»¥äžã§ããïŒããšèããŠã¿ãŸãã
- Yes ãªã: 28 æ³ä»¥äž 36 æ³æªæºã ãšããããéžæè¢ãäžæ°ã« 8 æ³åãŸã§çµããŸã
- No ãªã: 20 æ³ä»¥äž 28 æ³æªæºã ãšãããããã¯ãéžæè¢ãäžæ°ã« 8 æ³åãŸã§çµããŸã
ã©ã£ã¡ã®çãã ã£ããšããŠããéžæè¢ãåæžããã®ã§ãïŒïŒïŒ
ãããç¹°ãè¿ããšãA ããã 31 æ³ã ã£ããšããŠã以äžã®ããã«ã¹ããŒãªãŒãé²è¡ããã§ããã:
| äººç© | ã»ãªã | åè |
|---|---|---|
| ããªãã | ãA ãã㯠28 æ³ä»¥äžã§ããïŒã | |
| A ãã | Yes | |
| ããªãã | ãA ãã㯠32 æ³ä»¥äžã§ããïŒã | 28 ä»¥äž 36 æªæºã«çµããŠããã®ã§ããã®çãäžã§åããŸã |
| A ãã | No | |
| ããªãã | ãA ãã㯠30 æ³ä»¥äžã§ããïŒã | 28 ä»¥äž 32 æªæºã«çµããŠãã (28, 29, 30, 31 ã®ã©ãã) ã®ã§ããã®çãäžã§ |
| A ãã | Yes | |
| ããªãã | ãA ãã㯠31 æ³ä»¥äžã§ããïŒã | 30 ä»¥äž 32 æªæºã«çµããŠãã (30 ã 31 ã) ã®ã§ããã®çãäžã§ |
| A ãã | Yes | |
| ããªãã | ãA ãã㯠31 æ³ã§ããïŒã | 決ãŸããŸããïŒ |
| A ãã | æ£è§£ã§ã |
ä»ã®å Žå㯠A ããã 31 æ³ã®å Žåã®ã¹ããŒãªãŒã§ããããA ããã 20 æ³ïœ 35 æ³ã®ãã¡ã®ã©ã®å¹Žéœ¢ã§ãã£ããšããŠãã䌌ããããªã¹ããŒãªãŒã§å¿ ã 4 åã®è³ªåã§åœãŠãããšãã§ããŸãïŒ(ä»ã®äŸãæ¯éèããŠã¿ãŠãã ããã)
ã¡ãªã¿ã«ããã®ãããªãçãäžã§åã£ãŠã©ã¡ããã«çµã£ãŠè¡ããã¿ã€ãã®ã¢ã«ãŽãªãºã ã«ã¯äºåæ¢çŽ¢æ³ãšããååãã€ããŠããŸããå¿çšæ å ±æè¡è 詊éšã§ãé »åºã®ããŒãã§ãã®ã§éŠŽæã¿ã®ããæ¹ãå€ããšæããŸãã
1-2. ã€ãŸããã¢ã«ãŽãªãºã ãšã¯
äžã®å¹Žéœ¢åœãŠã²ãŒã ãšããåé¡ã§ã¯ãçžæã®å¹Žéœ¢ãåœãŠããæ¹æ³ã»æé ããäºåæ¢çŽ¢æ³ã«åºã¥ããŠå°ããŸããããã®ããã«ã¢ã«ãŽãªãºã ãšã¯ã
åé¡ãè§£ãããã®æ¹æ³ã»æé
ã®ããšã§ããããŠãã¢ã«ãŽãªãºã ãšèããšãã³ã³ãã¥ãŒã¿äžã§å®è£ ãããããã°ã©ã ãã®ããšãæãæµ®ãã¹ãæ¹ãå€ããšæããŸãããå¿ ãããã³ã³ãã¥ãŒã¿ãšé¢ä¿ãããå¿ èŠã¯ãªããæ¥åžžçæŽ»ã§ãå€ã ç»å ŽããŸããäŸãã°ãã£ã³ãã«ãããŠãã³ããçµã¿ç«ãŠããšãã®çµç«æé æžã瀺ããã®ãã¢ã«ãŽãªãºã ã®äžçš®ã§ããä»ã«ãã³ã³ããã®ä»äºã§ã客ããã«ãé£ããæž¡ãå Žé¢ã«ãããŠæž¡ãçŽå¹£ãã³ã€ã³ã®ææ°ãæå°ã«ããããã«ã¯ã
- ãŸã 10000 åæãæž¡ããã ãæž¡ã
- æ®ãã 5000 åæãæž¡ããã ãæž¡ã
- æ®ãã 1000 åæãæž¡ããã ãæž¡ã
- æ®ãã 500 åçãæž¡ããã ãæž¡ã
- æ®ãã 100 åçãæž¡ããã ãæž¡ã
- æ®ãã 50 åçãæž¡ããã ãæž¡ã
- æ®ãã 10 åçãæž¡ããã ãæž¡ã
- æ®ãã 5 åçãæž¡ããã ãæž¡ã
- æ®ãã 1 åçãæž¡ããã ãæž¡ã
ãšããã°ããã§ããããã®ãããªæé ãç«æŽŸãªã¢ã«ãŽãªãºã ã§ãããšãããŸãã
ãã®ããã«ã¢ã«ãŽãªãºã ãšã¯ãããŸã§åé¡ãè§£ãããã®æ¹æ³ã»æé ã®ããšã§ãã£ãŠããã®æé ãå®çŸããææ®µã«ã€ããŠã¯åããŸãããåççã«ã¯äººæã§å®è¡ã§ãããã®ã§ãã
ããããªããçŸå®äžçã®å€§ããªåé¡ã解決ããå Žåã«ã¯ã人æã§ã¯å®è¡éåºŠãæ£ç¢ºãã«ãããŠéçããããŸãããã®ããéåžžãã¢ã«ãŽãªãºã ã¯ã³ã³ãã¥ãŒã¿ããã°ã©ã ãšããŠå®è£ ããŠèšç®å®è¡ããããšã«ãªããŸãã
1-3. ã¢ã«ãŽãªãºã ã®ããããšãã
ã¢ã«ãŽãªãºã ã®ããããšããã¯ãããæ±ºãŸã£ãåé¡ã«å¯ŸããŠ
- æ³å®å ã§ããã°ãã©ããªå Žåã«å¯ŸããŠã
- åãããæ¹ã§
çããå°ããããšã§ããã€ãŸã 1 ã€ã®ããã°ã©ã ã§ããããå ŽåãåŠçã§ãããšããããšã§ã (æ³å®å ã§ããã°ã§ã)ãä»ã®äžã®äžã¯æ¢ã«ããããã·ã¹ãã ãæº¢ããŠããŸããã«ãŒããã䜿ãã°çŸåšå°ãã©ãã§ãã£ãŠãç®çå°ãŸã§ã®çµè·¯ã瀺ããŠãããŸãããéè¡å£åº§ã¯é éé¡ãšåŒåºé¡ããããã§ãã£ãŠãæ£ãããéãåŒãåºãããšãã§ããŸãããããã£ãã·ã¹ãã ã¯ã¢ã«ãŽãªãºã ã«ãã£ãŠæ¯ããããŠããŸãã
ã¢ã«ãŽãªãºã ã®ãã 1 ã€ã®ããããšãããšããŠãã³ã³ãã¥ãŒã¿ããã°ã©ã ãšããŠå®è£ ããããšã«ããã人æã§ã¯å°åºèª¿ã¹åããªãåé¡ã解決ã§ããããšãæããããŸããçŸå®äžçã§çŽé¢ããå€ãã®åé¡ã¯ãçãã¯åççã«ã¯ãããããããããã人æã§ã¯ããããªãããšãããã®ã§ããäŸãã°ãç·ŽéŠ¬é§ ã 2018 幎 3 æ 18 æ¥ 11:34 ã«åºçºããŠãæéã§ç¥ä¿çºé§ ã«ãã©ãçãæ¹æ³ãšããã®ã¯ãåççã«ã¯ããã¯ãã§ãããããããã人æã§ã¯ãããšã¯ããããŸãããäžæ¹ã§ããã¯ãã³ã³ãã¥ãŒã¿ãªãäžç¬ã§èšç®ã§ããŸãããããããã¢ããªããããŸãã
ãã®ãããªãåççã«ã¯ããã¯ãã®çãããèŠã€ãåºãã®ãã¢ã«ãŽãªãºã ã§ãã
2. ãããã³ã°åé¡ã«åŠã¶ããããã³ã°æ³
幎霢åœãŠã²ãŒã ã«ç¶ããŠæ¬¡ã®åé¡ãèããŠã¿ãããšæããŸãããããã³ã°ã¢ããªãšåŒã°ããææŽ»ã»å©æŽ»ãµãŒãã¹ãæµè¡ããŠããæšä»ããããã³ã°ãšããèšèãèããããšã®ããæ¹ã¯éåžžã«å€ããšæããŸãããããã³ã°ã¢ããªã¯ãŠãŒã¶åŽããèŠãŠãé¢çœããµãŒãã¹ã§ãããéå¶åŽããèŠãŠãèããããšã®å€ã楜ãã顿ã§ããäžççã«ã "Online Dating" ãšããããŒã¯ãŒãã§çãã«ç ç©¶ãããŠããããŒãã§ãã
- ãŠãŒã¶ 1 人 1 人ã«åããããªç°æ§ãã©ããã£ãŠã¬ã³ã¡ã³ããããïŒ
- ç·æ§ãŠãŒã¶ãšå¥³æ§ãŠãŒã¶ã®é¡ã®å¥œã¿ã®çžæ§ãã©ããã£ãŠæšå®ãããïŒ
- ç·æ§ãŠãŒã¶ãšå¥³æ§ãŠãŒã¶ã®æ§æ Œã®çžæ§ãã©ããã£ãŠæšå®ãããïŒ
- ç¹å®ã®å人ã«ããããããéäžããããªãããã«ããã«ã¯ã©ããããïŒ
å€å žçãªèŒžéåé¡ããã仿µè¡ãã®æ©æ¢°åŠç¿ææ³ãããã£ãŒãã©ãŒãã³ã°æè¡ãŸã§ãå¹ åºããã¯ããã¯ãç·åå¡ããŠæãç²æã®ããé¢çœã顿ã ãšèšããã§ãããã
ããŠãããã§ã¯ãããã³ã°ã顿ã«ããæ¬¡ã®ãããªåé¡ãèããŠã¿ãŸããã:
å·Šäžå³ã®ããã«ç·å¥³éã®åãã¢ã«ã€ããŠãããããã¢ã«ãªã£ãããäºãã©ãã ãå¬ãããããæ°å€åãããŠããç¶æ ãèããŸãããããããã¢ãªã³ã°ããŠåãã¢ã®å©åŸã®ç·åãæå€§ã«ãªãããã«ããåé¡ã§ãã
ã
ãã®å³ã®å Žå㯠(1, 2), (2, 3), (3, 1) ããã¢ãªã³ã°ããŠåŸãããå©åŸ 13 ãæå€§ã§ã (ä»ã®çµã¿åãããè²ã 詊ããŠã¿ãŠãã ãã)ãå¿ ããããããããã®ç·ã»å¥³ã«ãšã£ãŠäžçªçæ³ã®çžæãšãã¢ã«ãªã£ãŠããããã§ã¯ãªãããšã«æ³šæããŸããããäŸãã°ç· 1 ã«ãšã£ãŠã¯å¥³ 3 ãäžçªããã®ã§ããããããçµã³ã€ããŠããŸããšãæ®ãã®ãã¢ãã©ãçµã³ä»ããŠãå šäœã®å©åŸã¯å°ãããªã£ãŠããŸããŸãã
ãã®ããã«äºéšãããã³ã°åé¡ãšããã®ã¯åºæ¬çã«å šäœæé©ãç®æãèãæ¹ã§ãããããã³ã°ã¢ããªã®äŸã§èšãã°ãå人æé©ãè¿œãæ±ãããããšäººæ°ã®ç·å¥³ã«ããããããæ®ºå°ããŠããŸããããéå¶åŽãšããŠã¯äºéšãããã³ã°åé¡çãªææ³ãåãå ¥ããããšã§å šäœæé©ãªæ¹åæ§ã«åŒã£åŒµã£ãŠããããšãéèŠã«ãªããšèããããŸãã
äºéšãããã³ã°ã¯ãç·å¥³éã®ãããã³ã°åé¡ã«éããã
- ã€ã³ã¿ãŒãããåºååéã§ããŠãŒã¶ã®èå³ã«åãåºåãåºã (ããŠãŒã¶ããšãåºåã)
- åŸæ¥å¡ã·ããå²åœåé¡ã§ãåŸæ¥å¡å šå¡ã®äžæºã®å°ãªãå²åœããã (ãåŸæ¥å¡ããšãã·ããã)
- ãã©ãã¯é éèšç»åé¡ã§ãã©ã®è·ç©ãã©ã®ãã©ãã¯ã«å²åœãŠãããæé©åãã (ãè·ç©ããšããã©ãã¯ã)
- 茞éåé¡ã§ãã©ã®å·¥å Žããã©ã®åºèãžã©ã®åéã®è£œåã茞éããããæé©åãã (ãå·¥å Žããšãåºèã)
- ç®±æ ¹é§ äŒã§ãããŒã ã®ç·åã¿ã€ã ãæå°ãšãªãããã«éžæãååºã«å²åœãŠã (ãéžæããšãåºã)
ãšãã£ãæ§ã ãªå Žé¢ã§å¿çšãã§ããŸããå ·äœçãªã¢ã«ãŽãªãºã ãªã©è©³ããã¯
ãèªãã§ããã ããããšæããŸãã
3. è«é£ç®ããºã«ã«åŠã¶ãæ·±ãåªå æ¢çŽ¢æ³ (DFS)
è«é£ç®ã¯ãçç®ã®ãã¡ã®ããã€ãã®æ°å€ã â¡ ãæåã«çœ®ãæããããŠããŸã£ããã®ãäžããããå ã®çç®ã埩å ããããºã«ã§ããã«ãŒã«ãšããŠã¯ã
- åãæåã«ã¯åãæ°åãå ¥ããç°ãªãæåã«ã¯ç°ãªãæ°åãå ¥ã
- â¡ ãã¹ã«ã¯ã©ããªæ°åãå ¥ã£ãŠããã (ä»ã®æåãšæ°åã被ã£ãŠããã)
ãšãªã£ãŠããŸãã
ã
è«é£ç®ããºã«ãè§£ããã¯ããã¯ã¯ãã¡ããè²ã ããã®ã§ããããã®ãããã®åé¡ã¯ã³ã³ãã¥ãŒã¿ã«ãã£ãŠåä»»ãã«æ¢çŽ¢ãè¡ãããšã§ç°¡åã«è§£ãããšãã§ããŸãããã®ããã«èšããšãæãªããã®ããºã«æå¥œå®¶ãããã¡ã«å«ããããŠããŸãã®ã§ãããã³ã³ãã¥ãŒã¿ãçšããŠããºã«ãè§£ãå¶ã¿ã«ããæ§ã ãªå·¥å€«ãåããæ¥œãã¿ããããŸããå·Šäžã®ãïŒïŒïŒãã®è«é£ç®ããæ·±ãåªå æ¢çŽ¢æ³ (DFS)ãã§è§£ããšãããªæãã§ãã
ã
ãã®ããã«ãæ·±ãåªå æ¢çŽ¢æ³ (DFS) ã¯
- ããšããããä»®å®ããŠçªãé²ããããšããè¡ãè©°ããŸã§ç¹°ãè¿ã
- è¡ãè©°ã£ããäžæ©æ»ã£ãŠã次ã®éžæè¢ã詊ã
ãšããã®ãç¹°ãè¿ãæ¢çŽ¢ã¢ã«ãŽãªãºã ã§ããåºæ¬çã«ã¯åä»»ãã®å šæ¢çŽ¢ã¢ã«ãŽãªãºã ãªã®ã§ãããæ¢çŽ¢é åºã工倫ããããšã§åçãªæ§èœå·®ãåºãããšãçãããªãã§ã (äŸãã°ãè«é£ç®ãäœãã¢ã«ãŽãªãºã ããåç §)ãæ·±ãåªå æ¢çŽ¢ã¯æ§ã ãªã¢ã«ãŽãªãºã ã®åºæ¬ãšãªãã¢ã«ãŽãªãºã ã§ãå¿çšç¯å²ãåºãã§ã:
- æ°ç¬ãè§£ãã (æ°ç¬ã¯ã人éçã«ã¯æ¢çŽ¢ã§ã¯ãªãçè©°ãã§è§£ããã®ã§ã¯ãããŸãã...)
- ããªãŒã»ã«ãè§£ãã
- Ponanza ãªã©ã®ã³ã³ãã¥ãŒã¿å°æ£ãœããã§ã䜿ãããŠãããããªã²ãŒã æšæ¢çŽ¢
- makefile ã®ä»çµã¿ã¯ããããžã«ã«ãœãŒãã§æ ¹æ¬çã«ã¯ DFS
- ã¡ã¢ããªãã DFS ããã°åçèšç»æ³ (DP) ã«ããªã
- ãããã¯ãŒã¯ãããŒã¢ã«ãŽãªãºã ã®ãµãã«ãŒãã³ã§ããã
ãªããäžã§ã®æ·±ãåªå æ¢çŽ¢æ³ã®èª¬æã§ã¯ããã°ã©ãäžã®æ¢çŽ¢ããšããèšãæ¹ãããªãã£ãã®ã§ãããæ·±ãåªå æ¢çŽ¢ (DFS) ãæ¬¡ã®ç¯ã®å¹ åªå æ¢çŽ¢ (BFS) ããã°ã©ãäžã®æ¢çŽ¢ãšèãããšèŠéãããããªããŸããé¢å¿ã®ããæ¹ã¯æ¯é
- DFS (æ·±ãåªå æ¢çŽ¢) è¶ å ¥éïŒ ã ã°ã©ãã»ã¢ã«ãŽãªãºã ã®äžçãžã®å ¥å£ ããåç·šã
- DFS (æ·±ãåªå æ¢çŽ¢) è¶ å ¥éïŒ ã ã°ã©ãã»ã¢ã«ãŽãªãºã ã®äžçãžã®å ¥å£ ããåŸç·šã
ãèªãã§ããã ããããšæããŸãã
4. è¿·è·¯ã«åŠã¶ãå¹ åªå æ¢çŽ¢æ³ (BFS)
以äžã®ãããªè¿·è·¯ã§ãã¹ã¿ãŒã (S) ãããŽãŒã« (G) ãŸã§è¡ãããã§ãããã ãè¶è²ãã¹ã«ã¯å ¥ããŸãããããã€ãèããããè¡ãæ¹ã®ãã¡ãæçã®ãã®ã¯ã©ã®ããã«æ±ããããã§ããããã
ãŸããã¹ã¿ãŒããã 1 æã§è¡ããå Žæã«ãïŒããšæžããŸãã
ç¶ããŠããïŒãã®ãã¹ãã 1 æã§è¡ããå Žæã«ãïŒããšæžããŸããããã¯ã¹ã¿ãŒããã 2 æã§è¡ããå Žæã§ããããŸãã
ç¶ããŠããïŒãã®ãã¹ãã 1 æã§è¡ããå Žæã«ãïŒããšæžããŠ...
ãããç¹°ãè¿ããŠãããšãG ã®ãã¹ã¯ãïŒïŒããšãªããŸããã
ãããŸã§æ¥ãããããšã¯æ°åãããã®ãŒãããã«ããŠæççµè·¯ã埩å ã§ããŸã:
ãã®ããã«å¹ åªå æ¢çŽ¢ (BFS) ããæ·±ãåªå æ¢çŽ¢ (DFS) ãšåæ§ã«åºæ¬çã«ã¯åä»»ãã®å šæ¢çŽ¢ã¢ã«ãŽãªãºã ã§ãããããªã«ããéæããããã®æå°æé ãç¥ãããããšããå Žé¢ã§æŽ»èºããããšãå€ãã§ãã以äžã®ãããªå¿çšããããŸã:
-
ã«ãŒããã¯ãã¥ãŒãã®æå°ææ°ãç¥ã®æ°åã
- å¿ ã 20 æä»¥å ã§æããããããšãæè¿å®å šè§£æãããïŒ(God's Number is 20 åç §)
- è§£æã®ããŒã¹ã¯ BFS ãæ¹è¯ãã IDA$^{*}$ ã ãšæãããŸã
-
ããããžã«ã«ãœãŒã
- DFS ã®ç« ã§ãå¿çšäŸãšããŠæãã makefile ã®ä»çµã¿
- DFS ã§ãã§ããŸãããBFS ã§ãã§ããŸã
-
æççµè·¯åé¡
- ã«ãŒããã«ã代衚ããããããªæççµè·¯åé¡ã¯ Dijkstra æ³ãå®çªã§ãããç¹æ®ãªå Žåã«ã¯ BFS ã®æ¹ããã广çã«äœ¿ããŸã
ãããŠå¹ åªå æ¢çŽ¢ (BFS) ãæ·±ãåªå æ¢çŽ¢ (DFS) ãšåæ§ã«ãã°ã©ãäžã®æ¢çŽ¢ãšèãããšèŠéãããããªããŸããé¢å¿ã®ããæ¹ã¯æ¯é
ãèªãã§ããã ããããšæããŸãã
5. é³å£°èªèãã¿ãŒã³ãããåé¡ã«åŠã¶ãåçèšç»æ³ (DP)
åçèšç»æ³ã¯ãšã«ããå®çšçãªã¢ã«ãŽãªãºã ã§ãïŒ
ã¹ã±ãžã¥ãŒãªã³ã°åé¡ãæççµè·¯åé¡ãããããµãã¯åé¡ããããã¿ãŒã³ãããåé¡ãŸã§ãå®äžçã®æ¥µããŠå€ãã®çŸå Žã§æŽ»èºããã¢ã«ãŽãªãºã ã§ããDP ã®äœ¿ããæ¹ã¯å€åœ©éããŠç޹ä»ããããªãã®ã§ãããã§ã¯å
žåçå¿çšäŸã® 1 ã€ã§ãããã¿ãŒã³ãããã³ã°åé¡ãç¹ã«æå°ã³ã¹ã匟æ§ãããã³ã°åé¡ãåãæããŸãã
æå°ã³ã¹ã匟æ§ãããã³ã°åé¡ãšã¯ãäžå³ã®ããã« 2 ã€ã®ç³»å $A = (a_0, a_1, \dots, a_{m-1})$, $B = (b_0, b_1, \dots, b_{n-1})$ ãäžããããŠãããããã©ã®çšåºŠã䌌ãŠãããããæž¬ãåé¡ã§ããé¡äŒŒåºŠã®æž¬ãæ¹ãšããŠã¯ãã㢠$(a_i, b_j)$ ããããããããšãã®ã³ã¹ã㯠$c(i, j)$ ã§äžããããŠãå·Šããé çªã«æé©ãªãããã³ã°ãæ§æããŠãããŸãããããã³ã°ãæé©åãããšãã®ã³ã¹ãã®ç·åã®æå°å€ããé¡äŒŒåºŠããšããŸãã
泚æç¹ãšããŠã2. ãããã³ã°åé¡ãã§æãããããã³ã°åé¡ãšã®éãã¯ããå·Šããé çªã«è©°ããããã«ãããã³ã°ãæ§æããªããšãããªããŠããã¢å士ã亀åããŠã¯ãããªãããšããå¶çŽãããããšã§ãã
ã
ãã®ãã¬ãŒã ã¯ãŒã¯ã«é¡äŒŒããèãæ¹ãå ·äœçã«é©çšå¯èœãªå Žé¢ãšããŠä»¥äžãèããããŸã:
-
diff ã³ãã³ã
- ããããç·šéè·é¢
-
ã¹ãã«ãã§ãã«ãŒ
- çŽãããåèªããã©ã®åèªã«è¿ãããæšæž¬
-
ãã€ãªã€ã³ãã©ããã£ã¯ã¹
- ä»ç±ãå¿çšäŸã§ãã2 ã€ã® DNA ã®éã®é¡äŒŒåºŠã枬ããŸã
-
空éèªèã»ç»åèªè
- è¿å¹Žã¯ãã£ãŒãã©ãŒãã³ã°ãçãã ã DP ãããã³ã°ãæå¹ãªã±ãŒã¹ãå€ãã§ã (ãç»åèªèãåç §)
-
é³å£°èªè
- æªç¥ã®é³å£°æ³¢åœ¢ãäœã®åèªã衚ããŠããããæšæž¬
- ãé³å£°èªèã»ç»åèªèã«çšãããã匟æ§ãããã³ã°ã®ã¢ã«ãŽãªãºã ã£ãŠäžäœããåç §
ã
ããã§ã¯å ·äœçãªã¢ã«ãŽãªãºã ãèšè¿°ããŠãããŸããå°ãçç³»å¯ãã®è©±ã§é£ãããªããŸãã髿 ¡æ°åŠã§åŠã¶ã挞ååŒãã«éŠŽæã¿ã®ããæ¹ã§ããã°ãç¡çãªãçè§£ã§ãããšæããŸããé£ããæããå Žåã«ã¯ãå ã«
ãèªãã§ããã ããããšæããŸãããããèªãã åŸã§ããã°èªç¶ãªãã®ã«æãããšæããŸãã
ãŸã DP ããŒãã«ã®å®çŸ©ã以äžã®ããã«ããŸã:
${\rm dp}[i][j]$ := $A$ ã®ãã¡æåã® $i$ åãŸã§ãšã$B$ ã®ãã¡æåã® $j$ åãŸã§ã«ã€ããŠã®åŒŸæ§ãããã³ã°ã®æå°ã³ã¹ã
ãããŠã${\rm dp}[i][j]$ ãç®åºããæŒžååŒãç«ãŠãããšãèãããšã以äžã®ããã«ãªããŸã:
ïŒDP挞ååŒïŒ
$${\rm dp}[i][j] = \min({\rm dp}[i-1][j-1], {\rm dp}[i][j-1], {\rm dp}[i-1][j]) + c(i-1, j-1)$$
ïŒDPåææ¡ä»¶ïŒ
$${\rm dp}[0][0] = 0$$
ïŒæ±ããé¡äŒŒåºŠïŒ
$${\rm dp}[m][n]$$
ããšã¯ããã«åŸã£ãŠçŽ çŽã«å®è£ ããã°ããã§ããå®è£ ãªã©å«ã㊠DP ã詳现ã«åŠã³ããæ¹ã¯ãã®èšäºãèªãã§ããã ããããšæããŸãã
6. ãã£ãŒãã©ãŒãã³ã°ã«åŠã¶ãåŸé éäžæ³
ä»ã¯ã©ããžè¡ã£ãŠããã£ãŒãã©ãŒãã³ã°ã®è©±é¡ã§æº¢ãè¿ã£ãŠããŸããå§åç㪠AI ããŒã ã«æ²žãç«ã€äžãããšãããã AI ãšããçšèªãå ¥ããææ¡æžã¯éããããããšãã£ã話ãé »ç¹ã«è³ã«ããŸãã
ããã£ãŒãã©ãŒãã³ã°ããšããèšèãããè³ã«ãããå ·äœçãªããšãããããããªãæ¹åãã«ãå®éã®ããžãã¹çŸå Žã§ç»å Žãããããç»ååŠçããèªç¶èšèªåŠçããžã®å¿çšã念é ã«ãããå ¥éã¹ã©ã€ãè³æãå·çããŠã¿ãŸãããæ¯èŒçææ°ã«è¿ã話é¡ãçã蟌ãã§ããŸãã
ãã£ãŒãã©ãŒãã³ã°ãéæ³ã®ãããªããšãããŠããã€ã¡ãŒãžã®ããæ¹ãå€ããããããŸããããå€ãã®å Žåãææ³èªäœã¯ããåçŽãªãåŸé éäžæ³ãã§ããåŸé éäžæ³ã¯ãã£ãããšèšã£ãŠããŸãã°ã颿°ã®æå°å€ãæ±ããäžè¬çãªãã¯ããšã§ãèšãã¹ããã®ã§èãæ¹ã¯åçŽã§ãã颿° $L(w)$ ãæå°åããããšãã«
- åæå€ $w_0$ ãçšæãã
- æ¯ã¹ããã $t$ ããšã« $w_{t+1} = w_{t} - \epsilon \frac{\partial L}{\partial w}$ ã«åŸã£ãŠ $w$ ãæŽæ°ããŠãã
ãšããã ãã§ãã
$$w_{t+1} = w_{t} - \epsilon \frac{\partial L}{\partial w}$$
ã®æå³ã¯åçŽæå¿«ã§ã$L$ ãå°ãããªãæ¹åã« $w$ ãåããããšããã€ã¡ãŒãžã§ããã©ã®ãããåããã®ãã $\epsilon$ ãšããå€ã§èª¿ç¯ããŠããŠåŠç¿çãšåŒã³ãŸããåŠç¿çã®ãã¥ãŒãã³ã°ã¯åŠç¿ã®æåŠã倧ããåããéèŠãªèŠçŽ ã«ãªããŸãã
ããŠãåŸé éäžæ³ã«ãããŠé¢æ° $L$ ãæ§ã ãªãã®ã«ããããšã§æ§ã ãªåŠç¿ãè¡ãããšãã§ããŸããäžè¬çãªèãæ¹ãšããŠã¯ãã£ãŒãã©ãŒãã³ã°ã«éããã颿° $L$ ã¯ãªãããã®åœ¢åŒã§ãäºæž¬çµæãšæ£è§£ãšã®ãºã¬ã®å€§ãããã衚ããã®ã§æå€±é¢æ°ãšåŒã°ããŸãããè€éãªãã¥ãŒã©ã«ãããã¯ãŒã¯ã¢ãã«ã«ãã£ãŠè¡šãããæå€±é¢æ°ãå°ãããªãããã«åŸé éäžæ³ãé©çšããããšããã®ããæšä»è³ã«ãããã£ãŒãã©ãŒãã³ã°ã®äžèº«ã§ããããšãå€ãã§ãããã£ãŒãã©ãŒãã³ã°ã«ãããŠæå€±é¢æ° $L$ ãå ·äœçã«ã©ã®ããã«èšèšãããã«ã€ããŠã¯ãäžã®ã¹ã©ã€ããèŠãŠããã ããããšæããŸãã
7. ã¢ã«ãŽãªãºã ã®äœãé£ããã: èšç®éã«ã€ããŠ
ãããŸã§æ§ã ãªåé¡ãèŠãŠæ¥ãŸããããå€ãã®è«žåé¡ã«å¯ŸããŠã¯ã
ãç¡å°œèµã®èšç®å®è¡æéãããããã°ç¢ºå®ã«çããæ±ãŸãããããªã¢ã«ãŽãªãºã ãããšããããå°ãããšã¯ç°¡åïŒïŒïŒ
ã§ãããå šæ¢çŽ¢ããšåŒã°ããçš®é¡ã®æ§ã ãªæ¢çŽ¢æè¡ã身ã«ã€ãããšå€§æµã®åé¡ã«å¯ŸããŠã¯å šæ¢çŽ¢ã¢ã«ãŽãªãºã ããããšäœããããã«ãªããŸããå¿çšæ å ±æè¡è 詊éšã®ã¢ã«ãŽãªãºã ã®èšåã§ãå šæ¢çŽ¢ããã®è©±é¡ã極ããŠå€ãã®ã¯ããã¯ãå šæ¢çŽ¢ããã¹ãŠã®åºç€ã«ãªãããã§ããé£ããã®ã¯ãåçŽãªå šæ¢çŽ¢ããæ¹è¯ããŠ
ãçŸå®çãªå¶éæéå ã«çããæ±ãŸãããããªã¢ã«ãŽãªãºã ããå°ãããšã¯é£ããããšãå€ãïŒïŒïŒ
ã§ããå°æ£ã®å¿ åæ³ãæ±ããã¢ã«ãŽãªãºã (ãã²ãŒã ãè§£ãïŒïŒ ã å°æ£ã®å¿ åæ³ãæ±ããã¢ã«ãŽãªãºã ãããåç §) ããèšç®ã«ãã®ãããæéã®ãããåçŽãªã¢ã«ãŽãªãºã ã§ãããªããæ å ±ç³»ã®ããã°ã©ãã³ã°ã«æ £ãã人ãªãæ¯èŒçç°¡åã«å®è£ ã§ããã§ããããããã§ããã®ãããããšããã®ã¯èšèã®è¿«åãå šç¶è¶³ããªããŠãå®å®ãèªçããŠããä»ãŸã§ã®æéã 5000 å åç¹°ãè¿ããŠãçµãããªããããªæéã§ãã
- 䌌ãäŸã®åç»: ããã«ã·ã®ã®æ°ãæ¹ã ããããããšãã£ããïŒ ã¿ããªã§æ°ããŠã¿ããïŒ
(éåžžã«è©±é¡ã«ãªã£ãåç»ã§ããç§åŠæªæ¥é€šãªã©ã§ãå±ç€ºãããŠããŸãããYouTube ã«ãããŸãã®ã§ãã®ã¿ã€ãã«ã§æ€çŽ¢ããŠã¿ãã ãã)
(ãã¹ãŠåç»ããåŒçš)
ã€ãŸãã¢ã«ãŽãªãºã ã«ã¯å§åçãªãŸã§ã®ãè¯ãæªãããããã®ã§ããã¢ã«ãŽãªãºã ã®ç ç©¶ãšã¯ãæ§ã ãªåé¡ã«å¯ŸããŠãå°ãã§ãæ©ãçããæ±ããããšã®ã§ããè¯ãã¢ã«ãŽãªãºã ãèŠã€ãããšãããã®ã§ããã¢ã«ãŽãªãºã ã®è¯ããæž¬ãå ·äœçãªææšãšããŠãèšç®éãªãŒããŒããšåŒã°ãããã®ããããŸããèšç®éã«ã€ããŠã¯
ãåèã«ããŠããã ããããšæããŸãã
8. åèè³æ
ã¢ã«ãŽãªãºã ã®äžçãžãšå ¥ã£ãŠããããã®æžç±ãã¡ã玹ä»ããŠãããŸãã
8-1. äžè¬ã®æ¹ã«ãããããããæžç±
ãŸãã¯äžè¬ã®æ¹ãèªãããããªãã¢ã«ãŽãªãºã ã®äžçã«è¶³ãèžã¿å ¥ããããã®æžç±ãã¡ãæããŸãã
æ§ã ãªã¢ã«ãŽãªãºã ãå³è§£ããŠãããããã解説ããæ¬ã§ããæ°åŠçã«ãã£ããæžãããæžç±ããããªãèªãã®ãé£ãããšæããæ¹åãã§ããå察ã«ã¢ã«ãŽãªãºã ã®åããæ°åŠçã«ãã£ãããšçè§£ãããæ¹ã«ã¯ãéã«ãããã«ããæãããããããŸãããã¢ã«ãŽãªãºã ã®çè§£ã®ä»æ¹ã¯å人差ãéåžžã«å€§ããã®ã§ãèªåã«åã£ãåŠã³æ¹ãèŠåºãã®ã倧åã ãšæããŸãã
åããã¢ã«ãŽãªãºã ã®ããããããå³è§£ããããšã詊ã¿ãæžç±ã§ããã€ã©ã¹ããè±å¯ã§ãã¢ã«ãŽãªãºã ã®æ°åŠçèšè¿°ãèŠãŠãããããããªãå Žåã«ã¯åŸ æã®æžç±ãšèšããŸãã
ã¢ã«ãŽãªãºã ãäžçãå€ããïŒ
çŸåšã®ç§ãã¡ã®ç掻ã®ãªãã«ã¯ãã¢ã«ãŽãªãºã çæè¡é©åœã«ãã£ãŠããããããæ©æµã«æº¢ããããã€ã¹ã«æº¢ããŠããŸããäœæ°ãªã䜿çšããŠãã Google æ€çŽ¢ãšã³ãžã³ããäžçäžã®ã»ãã¥ãªãã£ãæ¯ããŠããæå·ããã¢ã«ãŽãªãºã é©åœã«ãã£ãŠããããããŸããããããã£ãäºæãæ¥œããæãããé¢çœãæžç±ã§ãã
ãäžçã§ãã£ãšã匷åãª9ã®ã¢ã«ãŽãªãºã ãã«æ¯ã¹ããšãã¢ã«ãŽãªãºã ãã®ãã®ã®è§£èª¬ã®å°è±¡ãèããã®ã®ãã¢ã«ãŽãªãºã ãã©ã®ããã«äžçãå€ããŠããã®ããæãåããé¢çœãèªã¿ç©ã§ãã
8-2. ã¢ã«ãŽãªãºã ã®æç§æž
ã¢ã«ãŽãªãºã ãæ¬æ Œçã«åŠã¶ããã«ã¯ãå³è§£ããã ãã§ã¯ç©è¶³ããªãã§ããããæ°åŠçã«ãã£ãããšåŠã¹ãæžç±ãã¡ã§ãã
ã¢ã«ãŽãªãºã ãæ°åŠçã«ãã£ããå匷ããããã®æžç±ãšããŠã¯ããšãŠãå¹³æãã€ç°¡æœã«æžãããŠããŸããçã«ãããããã説æãšã¯ããã©ãèšè¿°ã§äœãšãäŒããããã«ãã説æãšããããã¯ããäžèšã§äŒãããããªç°¡æœãªèª¬æãã ãšæããŸãããã®æžç±ã¯ãã®ãããªçã«ãããããã説æãäœçŸãããã®ã ãšèšããŸãã
ã¢ã«ãŽãªãºã ã®äžççæç§æžã® 1 ã€ã§ããããã°ã©ãã³ã°ã³ã³ãã¹ãæ»ç¥æ¬ãšããŠåé«ãè»æ¬ãåºçãããŠããã¯ãã®æ¬ã§å匷ããæ¥æ¬äººã¯å°ãªããªããŸããããçŸåšãªãè²è€ªããªã䟡å€ã®ããæ¬ã§ããæ§ã ãªã¢ã«ãŽãªãºã ã®è©³çްãåŠã¶ã ãã§ãªããå®äžçã«ãããŠã¢ã«ãŽãªãºã ãã©ã®ããã«äœ¿ãã¹ããã«çŠç¹ãåœãŠã貎éãªäžåã§ãã
åããã¢ã«ãŽãªãºã ã®äžççæç§æžã§ããã¢ã«ãŽãªãºã ãã¶ã€ã³ãã¢ã«ãŽãªãºã ã®äœ¿ãæ¹ã«çŠç¹ãåœãŠãæ¬ã ãšãããšãã¢ã«ãŽãªãºã ã€ã³ãããã¯ã·ã§ã³ã¯ã¢ã«ãŽãªãºã ã®åçã«çŠç¹ãåœãŠãæ¬ã ãšèšããŸããçŽèгçã«ã¯æ£ãããšæãããããªæ§ã ãªã¢ã«ãŽãªãºã ã®æ£åœæ§ããã£ã¡ããšè°è«ãããŠããŸããããããããšããã£ãããšåŠãã§ããããšã¯ãèªåã§æªç¥ã®åé¡ã«å¯Ÿããã¢ã«ãŽãªãºã ãéçºããŠããäžã§å€§å€éèŠã«ãªããŸãã
8-3. ã¢ã«ãŽãªãºã ã®ãå®è£ ããå«ããŠåŠã¹ãæžç±ãã¡
ããããããã°ã©ãã³ã°ã³ã³ãã¹ãã®æ»ç¥æ¬ãšåŒã¹ãæžç±ãã¡ãæããŸãã
- ããã°ã©ãã³ã°ã³ã³ãã¹ããã£ã¬ã³ãžãã㯠(éç§°ãè»æ¬)
ããã°ã©ãã³ã°ã³ã³ãã¹ãçã®ãã€ãã«ãè»æ¬ã§ãïŒ
6 幎åã«æ¥æ¬äººäžçã©ã³ã«ãŒéã«ãã£ãŠå·çãããŠä»¥æ¥ã誰ããæã«ãããã€ãã«ãšãªããŸãããçŸåšã§ã¯ç«¶æããã°ã©ãã³ã°çšåèæžãšããåãè¶
ããŠãäžççãªã¢ã«ãŽãªãºã ã®æç§æžã® 1 ã€ãšèšããç«ã¡äœçœ®ãŸã§ã«ãªã£ãŠããŸãã倧ããªç¹é·ãšããŠãæŽç·Žããã C++ ã«ããå®è£
ãèŒã£ãŠããããšãæããããã§ããããè¡éããã
ã£ãšçµã£ãŠããã®ã§ãã¹ããŒãæããã£ãŠçœå¿«ãªåé¢ã説æãèªã¿è§£ãã®ãé£ãããšãã声ãå€ã
èããŸããããããªããè»æ¬ã«æžããŠããå
容ã¯ãèªã¿è§£ãããšããã§ãããªãã°ãéåžžã«æ¿å¯ãªãã®ãšæããããŸãã
- ããã°ã©ãã³ã°ã³ã³ãã¹ãæ»ç¥ã®ããã®ã¢ã«ãŽãªãºã ãšããŒã¿æ§é (éç§°ãèºææ¬)
è»æ¬ãé£ãããšæããæ¹ã®ããã®ããã°ã©ãã³ã°ã³ã³ãã¹ãæžç±ã§ããéç§°èºææ¬ãšåŒã°ããŠããŸãã察象局ã¯ã¢ã«ãŽãªãºã åŠç¿ã®å ¥éãçµããåäžçŽè åãã§ãããããå±€ã®äººã«ãšã£ãŠèªã¿ãããæžç±ãšèšãããã§ããæ²èŒãããŠããäŸé¡ãã¡ã¯ãã¹ãŠèªåã§ãœãŒã¹ã³ãŒããå®è£ ããŠãAOJ äžã§ãžã£ããžã§ããããã«ãªã£ãŠããŸãã
- æåŒ·æéã¢ã«ãŽãªãºããŒé€æè¬åº§ãããã°ã©ãã³ã°ã³ã³ãã¹ãTopCoderæ»ç¥ã¬ã€ã (éç§°ãããŒã¿ãŒæ¬)
仿µè¡ãã® AtCoder 瀟é·ã«ããç«¶æããã°ã©ãã³ã°å ¥éçšæžç±ã§ããè»æ¬ã¯å¯Ÿè±¡è å±€ãäžäžçŽè åãã§é£ãããšèšãããŠããŸãããããŒã¿ãŒæ¬ã¯ç«¶æããã°ã©ãã³ã°ãå§ããã°ããã®äººã«ç®ç·ãåãããçã®å ¥éæžã§ããäžå¯§ãªãããããã解説ã売ãã§ãC++ ã ãã§ãªã Java ã C# ã«ããå®è£ ãèŒã£ãŠããã®ãç¹é·ã§ã (çŸåšãªã Python ããã£ãæ¹ãå¬ãããããªã®ã§ç¶å ±æåŸ )ããã ãäžå¯§ãªåé¢ãããéãã®ã匱ç¹ã§ããããããèªãŸãªããšèºææ¬ã»è»æ¬ã«é²ããªãããšæã£ãŠããŸããšæ°ãé ããªãã®ã§ããã£ãšæ°è»œã«èªããšã匷ããªãããã®è¯ããã³ããæ²¢å±±æžããŠãããæ¬ã§ãã
Google, Microsoft, Facebook, Amazon, Apple ãªã©ã§ã¯éžèéçšã§å®éã«ã³ãŒãã£ã³ã°ãè¡ãããšã¯ãã£ããæåã«ãªããŸãããåœå ã§ããéžèéçšã« AtCoder ã·ã¹ãã ãçšããŠã³ãŒãã£ã³ã°è©Šéšã課ãäŒæ¥ãæ¥å¢ããŠããŸãããããã®ããã°ã©ãã³ã°è©Šéšã«åæ ŒããŠæ¡çšãããããã®æ»ç¥æ¬ãšããŠçµ¶å€§ãªäººæ°ãèªããã¹ãã»ã©ãŒæžãšãªã£ãŠããŸãããªãæ°çãããã®ã§ããæ¥æ¬èªèš³ã«èª€æ€ãå€ã泚æãå¿ èŠã§ãã
ãšãŠãé¢çœãã§ãïŒ
ã¢ã«ãŽãªãºã ãäœç³»çã«è§£èª¬ããããããå
·äœçãªæ¥œããããºã«ã®ãããªåé¡ãã¡ãè§£ããŠããããšã§ãèªç¶ã«æ¥œããã¢ã«ãŽãªãºã ã®äœ¿ãæ¹ããã¢ã«ãŽãªãºã ã³ãŒãã£ã³ã°æè¡ã身ã«çãããã«ãªã£ãŠããŸãã
8-4. ååéããšã®ã¢ã«ãŽãªãºã ç³»æžç±
çµåãæé©åã®äžççæç§æžã§ããå°ãé£ããã§ãããã°ã©ãçè«ã颿£æ°åŠã«é¢é£ããã¢ã«ãŽãªãºã ã®è©±é¡ãè±å¯ã«éããããŠãããåŠã¶èŠçŽ ã¯éåžžã«å€ãã§ãã
çµåãæé©åã«é¢ãããµãŒãã€ã¯ã2003 幎ãŸã§ã®åã«ã€ããŠã¯ããäžåã§ã§ãããšèšãããã»ã©ãã°ã©ãçè«ã颿£æ°åŠã«é¢ããã¢ã«ãŽãªãºã ãé倧æããæ¬ã§ãã1881 ããŒãžã«ãåã¶äžççåèã¯ãçµåãæé©ååéã«ãããäžççç ç©¶è Alexander Schrijver ã«ãã£ãŠæžãããŸããã
æååãé«éã«åŠçããã¢ã«ãŽãªãºã ã«ã€ããŠã®æžç±ã§ãã
èšç®å¹Ÿäœåéã«é¢ããæžç±ã§ãã
æŽæ°è«ãæ°åãªã©ãããããæ°åŠã²ãŒãšåŒã°ããåéã«é¢ããæžç±ã§ãã
- ç³åãã²ãŒã ã®æ°åŠ: ã²ãŒã ãšä»£æ°ã®äžæè°ãªé¢ä¿
- çµåãã²ãŒã çè«å ¥é ïŒåå©ã®æ¹çšåŒïŒ
ã²ãŒã åéã«é¢ããæžç±ã§ãã
å ·äœçãªåé¡ã«æãäžã§è§£ããªãåé¡ (NP-hard, NP-complete, #P-complete) ãç¥ãããšã¯å€§åã§ãããã®æ¬ãå匷ãããšãè§£ããªãåé¡ãç¥èŠããã¹ãã«ã磚ãããŸãã
- 深局åŠç¿ (æ©æ¢°åŠç¿ãããã§ãã·ã§ãã«ã·ãªãŒãº)
- æ©æ¢°åŠç¿ã¹ã¿ãŒãã¢ããã·ãªãŒãº ãããªããããæ·±å±€åŠç¿å ¥é
深局åŠç¿ã«é¢ããŠãããŸãšããããæžç±ãã¡ã§ã
8-5. ã€ã³ã¿ãŒãããäžã®è³æãªã©
ã¢ã«ãŽãªãºã 奜ãã®éãããã°ã©ãã³ã°ã³ã³ãã¹ãçéã§ã¯æ å ±å ±æãéåžžã«æŽ»çºã§ãçãå匷ããããšãçãã«çºä¿¡ããŠããŸãããã®ããç¡æã§èªãããšã®ã§ããè³æãéåžžã«å å®ããŠããŸããããã§ã¯ãã®äžäŸã瀺ããŸãã
- AtCoder ã«ç»é²ãããæ¬¡ã«ããããš ïœ ããã ãè§£ãã°ååéããïŒéå»åç²Ÿéž 10 å ïœ
- AtCoder çïŒè»æ¬ (åçŽç·š)
- AtCoder çïŒè»æ¬ (äžçŽç·š)
- AtCoder çïŒè»æ¬ (äžçŽç·š)
- AtCoder çïŒè»æ¬ (çºå±çãããã¯ç·š)
ã¢ã«ãŽãªãºã ãå®è£ ããªããæ¥œããåŠã¹ããµã€ã AtCoder ã®å§ãæ¹ãããã®ããèŸŒã¿æ¹ãŸã§ãèšèŒããŸããã
- åçš®ã¢ã«ãŽãªãºã ã® C++ ã«ããå®è£ (ååãã)
- spaghetti-source/algorithm (ååãã)
éç§° spaghetti-sourceãç«¶æããã°ã©ã以å€ã«ãæåãªã©ã€ãã©ãªéã§ããæ§ã ãªã¢ã«ãŽãªãºã ã C++ ã§å®è£ ãããŠããŸãã
- ç«¶æããçãªã¢ã«ãŽãªãºã ã®ã¹ã©ã€ãã®ãŸãšã (kroton ãã)
ä»ãŸã§ã«å ¬éãããè¯è³ªãªã¹ã©ã€ããã¡ãéããŠããŸãã
- coursera è¬åº§: Machine Learningã(Andrew Ng å ç)
- Deep Learning Papers Reading Roadmapã(floodsung ãã)
éåžžã«è©å€ã®ãããæ©æ¢°åŠç¿ã»æ·±å±€åŠç¿ã®å ¥éè³æãã¡ã§ãã
9. ãããã« ã ãã¢ã«ãŽãªãºã ããšã¯çµå±äœã ã
æ¬èšäºã§ã¯ã幎霢åœãŠã²ãŒã ããäºéšãããã³ã°ããè«é£ç®ããºã«ããè¿·è·¯ã®æçè·¯ãããã¿ãŒã³ãããã³ã°ãããã£ãŒãã©ãŒãã³ã°ããšãã£ãåé¡ãèããŠæ¥ãŸããããã¢ã«ãŽãªãºã ãšã¯ãããã®åé¡ã®è§£ãèŠã€ããããã®æé ã®ããšã§ããã¢ã«ãŽãªãºã ã®ããããšããã¯ãäŸãã°å¹Žéœ¢åœãŠã²ãŒã ã§ã¯çžæã®å¹Žéœ¢ãäœæ³ã§ãã£ãŠãåœãŠãããŸãããè«é£ç®ããºã«ã§ã¯æ°åã®é 眮ãå€ãã£ãŠãè§£ããŸãããè¿·è·¯ã®æçè·¯ã§ã¯è¿·è·¯ã®åœ¢ç¶ãå€ãã£ãŠãè§£ããŸããã¢ã«ãŽãªãºã ãåŠã¶æçŸ©ãšããŠã¯ä»¥äžã®ãã®ãæããããã§ããã:
äžçãå€ãã
åã¯ãã¢ã«ãŽãªãºã ããåŠãã§ãããäžã®äžã®è«žåé¡ãšå¯Ÿå³ããäžã§ã®äžç芳ã«é©åœãèµ·ããã®ãèŠããŠããŸããã¢ã«ãŽãªãºã ãåŠã¶åã¯ãåé¡ã解決ããããšã¯ãå ·äœçãªè§£ãæç€ºãããããšã ãšç¡æèã«æã£ãŠããŸããããããã¢ã«ãŽãªãºã ãåŠãã§ããã¯ãå ·äœçãªè§£ãéœã«æžãäžããªããŠããåé¡ã®è§£ãæ§æããæé ãäžããã°ããããšããèŠæ¹ãã§ããããã«ãªããåé¡è§£æ±ºææ®µã倧ããæ¡ãã£ãããã«æããŸãã
äŒæ¥åºå€ããªãã§æžã
æ¬èšäºã§ã¯ãã¢ã«ãŽãªãºã ã®æ§èœå·®ãã«ã€ããŠã¯æ·±ãè§Šããªãã£ãã§ãããåãåé¡ãè§£ãããšã®ã§ããã¢ã«ãŽãªãºã ã§ãå®è¡æéã»å®è¡ã¡ã¢ãªéã«è«å€§ãªå·®ãåºãããšããã°ãã°ã§ããã¢ã«ãŽãªãºã ã®æ§èœå·®ãéèŠãªäºäŸãšããŠã
- è»œãæ°æã¡ã§LinkedListã䜿ã£ããäŒåºãã矜ç®ã«ãªã£ã話
- 100äžåéãããã°ã©ã ãæžã
ãåèã«ãªããŸãã
ãã°ãçã¿ã«ããå®è£ ãé«éã«ã§ããããã«ãªã
å€ãã®æ¹ã«ãšã£ãŠãã®å¹æãæãéèŠãããããŸãããç¹ã«ç«¶æããã°ã©ãã³ã°ãéããŠã¢ã«ãŽãªãºã ãåŠãã 人ã¯ãå®è£ ããšã«ããéãæ£ç¢ºã§ããåã«ã¢ã«ãŽãªãºã ã®ç¥èããã£ãŠã³ãŒãã£ã³ã°æ £ãããŠããããå®è£ ãéããšããã ãã§ã¯ãªããããžãã¯ãã·ã³ãã«ã«ããèœåãèªç¶ãšåãããããã¹ãããªãšããã³ãŒãã£ã³ã°ãã§ããããã«ãªããŸãããããããšèªç¶ã«ãã°ãåã蟌ã¿ã«ãããªãããããã°ã«èŠããæéãæ Œæ®µã«çããªããŸããæè¿è©±é¡ã®å°±è·ã»è»¢è·ãµãŒãã¹ AtCoder Jobs ã¯ããã°ã©ãã³ã°ã³ã³ãã¹ããéããå¿åè ã®èœåã©ã³ã¯ä»ããè¡ã£ãŠããŸãããå¿åè ãã¡ã®ã¢ã«ãŽãªãºã ãšãã¹ããŒããšããŠã®æŽ»èºã®å Žã¯éãããŠããŠãããå®è£ ãã·ã³ãã«ã§æ£ç¢ºã§éãããããã°ã¹ãã«ãé«ãããšãã£ãããšãéå®ãããããã«æããŸãã
ã
ãªããã¢ã«ãŽãªãºã ãšã¯äœããæ°åŠçã«ãã¡ããšå®çŸ©ãããªãã°ã
- ãããããåé¡ããšã¯äœã
- ãããŠãã¢ã«ãŽãªãºã ããšã¯äœã (ãã¥ãŒãªã³ã°ãã·ã³ãçšããŠå®çŸ©)
ãšãã£ãã¹ããããèžãã§ããã®ãäžè¬çã§ãããæ¬èšäºã§ã¯ãå ·äœçãªé¢çœãåé¡ãã¡ãè§£ãæé ã瀺ãããšã§ãé°å²æ°ã§ã¢ã«ãŽãªãºã ãçè§£ãããããšãç®æšã«ããŸããããã¥ãŒãªã³ã°ãã·ã³ãçšããŠãã¡ããšçè§£ãããæ¹ã«ã¯ãåèæžç±ã«ãæãããComputers and Intractability: A Guide to the Theory of Np-Completenessããåèã«ãªããšæããŸãã
ãã¢ã«ãŽãªãºã ããšããèšèã«å¯ŸããŠæãã€ã¡ãŒãžãæ±ããŠããæ¹ã¯å€ããããããŸããããããå®éã«ã¯ã¢ã«ãŽãªãºã ã¯ãšãŠã身è¿ã§å®çšçã§æ¥œãããã®ã§ãããŸãæè¿ã§ã¯ AtCoder ã AOJ ãã¯ãããã¢ã«ãŽãªãºã ãå®éã«æãåãããŠåŠã¶ããã®ç°å¢ãæŽã£ãŠããããšãŠãå匷ããããç¶æ ã«ãªã£ãŠããŸããæ¬èšäºããã£ããã«ã¢ã«ãŽãªãºã ã®äžçã«é¢å¿ãæ±ããã¢ã«ãŽãªãºã ã®äžçãžãšèžã¿èŸŒãã§è¡ãæ¹ãå¢ãããªãã°ãšãŠãå¬ããæ°æã¡ã§ãã£ã±ãã§ãã










