貪欲æ³ïŒã°ãªãŒãã£ã¢ã«ãŽãªãºã ïŒã®åãæ¢æ±ããŸãããïŒæ¥çãæåãè¶ããå®äžçã®äŸãéããŠãæé©ååé¡ãå¹ççã«è§£æ±ºããæ¹æ³ãåŠã³ãŸãã
貪欲æ³ïŒã°ããŒãã«ãªåé¡è§£æ±ºã®ããã®æé©åãæ¥µãã
ã³ã³ãã¥ãŒã¿ãŒãµã€ãšã³ã¹ãšãã®å ã®çµ¶ããé²åããäžçã«ãããŠãæé©åã¯åžžã«è¿œæ±ãããŠããŸããç§ãã¡ã¯ç¡æ°ã®åé¡ã«å¯ŸããŠãæãå¹ççã§ãã³ã¹ã广ãé«ãã圱é¿åã®ãã解決çãæ±ããŠããŸãããããéæããã®ã«åœ¹ç«ã€åŒ·åãªã¢ã«ãŽãªãºã ã®äžçš®ãã貪欲æ³ïŒã°ãªãŒãã£ã¢ã«ãŽãªãºã ïŒãã§ãããã®ããã°èšäºã§ã¯ã貪欲æ³ã®å æ¬çãªæ¢æ±ããã®åºæ¬ååãå®äžçã§ã®å¿çšããããŠã°ããŒãã«ãªæèã§å¹æçã«äœ¿çšããããã®èæ ®äºé ã«ã€ããŠè§£èª¬ããŸãã
貪欲æ³ïŒã°ãªãŒãã£ã¢ã«ãŽãªãºã ïŒãšã¯äœãïŒ
貪欲æ³ã¯ãåã¹ãããã§æåã®éžæãããããšã§ã倧åçæé©è§£ãèŠã€ããããšãæåŸ ããåé¡è§£æ±ºã¢ãããŒãã§ããã貪欲ããšããèšèã¯ãé·æçãªçµæãèæ ®ããã«å±æçã«æé©ãªéžæãè¡ããšããã¢ã«ãŽãªãºã ã®ç¹æ§ãæããŸãããã®ã¢ãããŒãã¯åžžã«çµ¶å¯Ÿçãªæåè§£ïŒå€§åçæé©è§£ïŒãä¿èšŒããããã§ã¯ãããŸããããå€ãã®å Žåãããªãè¯ãè§£ãæäŸãããããŠäœãããå¹ççã«ãããè¡ããŸãã
貪欲æ³ã®åºæ¬çãªç¹åŸŽã«ã¯ä»¥äžãå«ãŸããŸãïŒ
- æé©éšåæ§é (Optimal Substructure): åé¡ã®æé©è§£ãããã®éšååé¡ã®æé©è§£ããæ§æã§ããããšã
- è²ªæ¬²éžæç¹æ§ (Greedy Choice Property): 屿çã«æé©ãªïŒè²ªæ¬²ãªïŒéžæãããããšã§ã倧åçãªæé©è§£ã«å°éã§ããããšã
貪欲æ³ã¯ãäžé£ã®å¶çŽã®äžã§æè¯ã®å€ïŒäŸãã°ãæå°å€ãæå€§å€ïŒãèŠã€ããããšãç®çãšããæé©ååé¡ã«ç¹ã«é©ããŠããŸããåçèšç»æ³ã®ãããªä»ã®æé©åã¢ãããŒããããèšèšãå®è£ ãç°¡åãªããšãå€ãã§ããããã¹ãŠã®åé¡ã«é©ããŠããããã§ã¯ãããŸãããå®è£ åã«ãç¹å®ã®åââé¡ã«å¯ŸããŠè²ªæ¬²ãªã¢ãããŒããæå¹ã§ãããã©ãããè©äŸ¡ããããšãéèŠã§ãã
貪欲æ³ã®ä»çµã¿ïŒäžæ žãšãªãåå
貪欲æ³ã®äžæ žãšãªãååã¯äžé£ã®ã¹ãããããæããåã¹ãããã§ã¢ã«ãŽãªãºã ã¯ãéå»ã®éžæãåèãããåŸæ»ããããããããšãªãããã®ç¬éã«æåãšæãããéžæè¢ãéžã³ãŸããäžè¬çãªããã»ã¹ã¯æ¬¡ã®ããã«èŠçŽã§ããŸãïŒ
- åæå: åæç¶æ ãŸãã¯éšåçãªè§£ããéå§ããŸãã
- éžæ: 貪欲ãªåºæºã«åºã¥ããŠãå©çšå¯èœãªéžæè¢ã®äžããæåã®éžæè¢ãéžã³ãŸãããã®åºæºã¯åé¡ã«åºæã®ãã®ã§ãã
- å®è¡å¯èœæ§ã®ç¢ºèª: éžæãããéžæè¢ãå®è¡å¯èœã§ããããšãã€ãŸãå¶çŽã«éåããŠããªãããšã確èªããŸãã
- æŽæ°: éžæãããéžæè¢ãçŸåšã®è§£ã«çµã¿èŸŒã¿ãŸãã
- çµäº: å®å šãªè§£ãæ§ç¯ãããããå©çšå¯èœãªéžæè¢ããªããªããŸã§ãã¹ããã2ã4ãç¹°ãè¿ããŸãã
貪欲æ³ã®æåã¯ã貪欲ãªéžæã®èšèšã«ããã£ãŠããŸãããããæãé£ããåŽé¢ã§ããããšãå€ãã§ããéžæã¯å±æçã«æé©ã§ãªããã°ãªããããã€å€§åçãªæé©è§£ã«ã€ãªãããã®ã§ãªããã°ãªããŸããã貪欲ãªéžæãæé©è§£ã«ã€ãªããããšã®èšŒæã«ã¯ãåž°çŽæ³çãªè°è«ãå«ãŸããããšããããŸãã
貪欲æ³ã®äžè¬çãªå¿çšäŸ
貪欲æ³ã¯äžçäžã®ããŸããŸãªåéã§å©çšãããŠããŸãã以äžã«ããã€ãã®èåãªäŸãæããŸãïŒ
1. 硬貚ã®åé¡ (The Coin Change Problem)
åé¡: 硬貚ã®é¡é¢ã®éåãšç®æšéé¡ãäžãããããšãããã®éé¡ãæ§æããã®ã«å¿ èŠãªæå°ã®ç¡¬è²šææ°ãèŠã€ããŸãã
貪欲æ³ã®ã¢ãããŒã: å€ãã®ïŒãã¹ãŠã§ã¯ãããŸãããïŒé貚ã·ã¹ãã ã§ã¯ã貪欲æ³ãæ©èœããŸããæ®ãã®éé¡ä»¥äžã®æå€§ã®é¡é¢ã®ç¡¬è²šãéžã¶ããšããå§ããŸããéé¡ããŒãã«ãªããŸã§ãã®ããã»ã¹ãç¹°ãè¿ããŸãããã®æ¹æ³ã¯ãäžçäžã®å€ãã®éèã·ã¹ãã ã§æ¡çšãããŠããŸãã
äŸ: ããåœã«1ã5ã10ã25åäœã®ç¡¬è²šããããç®æšéé¡ã37åäœã ãšããŸãã貪欲æ³ã¯æ¬¡ã®ããã«éžæããŸãïŒ
- 25åäœç¡¬è²š1æ (37 - 25 = 12)
- 10åäœç¡¬è²š1æ (12 - 10 = 2)
- 1åäœç¡¬è²š2æ (2 - 1 - 1 = 0)
ãããã£ãŠãæå°ã®ç¡¬è²šææ°ã¯4æïŒ25 + 10 + 1 + 1ïŒã§ãã
éèŠãªæ³šæç¹: 硬貚ã®åé¡ã¯éèŠãªç¹ãæµ®ã圫ãã«ããŸãã貪欲æ³ã¯ããã¹ãŠã®ç¡¬è²šã®é¡é¢ã®çµã¿åããã«å¯ŸããŠåžžã«æ©èœããããã§ã¯*ãããŸãã*ãäŸãã°ãé¡é¢ã1ã3ã4ã§ãç®æšéé¡ã6ã®å Žåã貪欲æ³ã¯4ã1æãš1ã2æïŒèš3æïŒéžã³ãŸãããæé©ãªè§£ã¯3ã2æïŒèš2æïŒã§ãã
2. ããããµãã¯åé¡ (The Knapsack Problem)
åé¡: ããããã«éããšäŸ¡å€ãããåç©ã®éåãäžãããããšããæ±ºãããã容éã®ããããµãã¯ã«å ¥ããåç©ã®éšåéåãæ±ºå®ããããããµãã¯å ã®åç©ã®åèšäŸ¡å€ãæå€§åããŸãã
貪欲æ³ã®ã¢ãããŒã: ããã€ãã®è²ªæ¬²æ³ãååšããŸãããäžè¬çãªããããµãã¯åé¡ã«å¯ŸããŠæé©è§£ãä¿èšŒãããã®ã¯ãããŸããããããã®ã¢ãããŒãã«ã¯ä»¥äžã®ãããªãã®ããããŸãïŒ
- æã䟡å€ã®é«ãåç©ãæåã«éžã¶ã
- æãéãã®è»œãåç©ãæåã«éžã¶ã
- 䟡å€ãšéãã®æ¯çãæãé«ãåç©ãæåã«éžã¶ãããã¯äžè¬çã«æã广çãªè²ªæ¬²æŠç¥ã§ããã*åžžã«*æé©è§£ãããããããã§ã¯ãããŸããã
äŸ: æ¥æ¬ã®ééäŒç€Ÿããæ§ã ãªå Žæãžååã茞éããããã«ããããµãã¯ãå©çšããŠãããšããŸãã
- åç©A: äŸ¡å€ = 60, éã = 10
- åç©B: äŸ¡å€ = 100, éã = 20
- åç©C: äŸ¡å€ = 120, éã = 30
- ããããµãã¯ã®å®¹é: 50
䟡å€ãšéãã®æ¯çã«åºã¥ã貪欲æ³ã䜿çšãããšïŒ
- åç©A: æ¯ç = 6, äŸ¡å€ = 60, éã = 10
- åç©B: æ¯ç = 5, äŸ¡å€ = 100, éã = 20
- åç©C: æ¯ç = 4, äŸ¡å€ = 120, éã = 30
ã¢ã«ãŽãªãºã ã¯ãæãæ¯çãé«ããåèšã®éããããããµãã¯ã®å®¹éå ïŒ10 + 20 = 30ïŒã§ããåç©Aãšåç©BãéžæããŸããåèšäŸ¡å€ã¯160ã§ããããããããåç©Cãšåç©Aãéžã°ããŠããã°ãåèšäŸ¡å€ã¯180ãšãªãã貪欲æ³ã«ããè§£ãäžåããŸãã
3. ãã€ã¯ã¹ãã©æ³ (Dijkstra's Algorithm)
åé¡: éã¿ä»ãã°ã©ãã«ãããŠãå§ç¹ããŒãããä»ã®ãã¹ãŠã®ããŒããžã®æççµè·¯ãèŠã€ããŸãã
貪欲æ³ã®ã¢ãããŒã: ãã€ã¯ã¹ãã©æ³ã¯ãå§ç¹ããæ¢ç¥ã®è·é¢ãæãå°ããããŒããç¹°ãè¿ãéžæãããã®é£æ¥ããŒãã®è·é¢ãæŽæ°ããããšã§æ©èœããŸãããã®ããã»ã¹ã¯ããã¹ãŠã®ããŒãã蚪åãããããç®çã®ããŒãã«å°éãããŸã§ç¹°ãè¿ãããŸããäžçäžã®ããã²ãŒã·ã§ã³ã¢ããªã§åºã䜿çšãããŠãããGoogleãããã®ãããªäŒæ¥ãæçã«ãŒããèŠã€ããããã«äœ¿çšãããããã³ã°ã¢ã«ãŽãªãºã ã«ãããŠäžå¯æ¬ ã§ãã
4. ãããã³ç¬Šå·å (Huffman Coding)
åé¡: ããé »ç¹ã«åºçŸããæåã«ã¯çã笊å·ããããŸãåºçŸããªãæåã«ã¯é·ã笊å·ãå²ãåœãŠãããšã§ããŒã¿ãå§çž®ããŸãã
貪欲æ³ã®ã¢ãããŒã: ãããã³ç¬Šå·åã¯äºåæšãæ§ç¯ããŸããåã¹ãããã§ãæãé »åºŠã®å°ãã2ã€ã®ããŒããçµ±åããŸãããã®ã¢ã«ãŽãªãºã ã¯å€ãã®ããŒã¿å§çž®åœ¢åŒã§äœ¿çšãããŠããŸãã
5. 掻åéžæåé¡ (Activity Selection Problem)
åé¡: éå§æå»ãšçµäºæå»ãæã€æŽ»åã®éåãäžãããããšããéãªããªã掻åã®æå€§æ°ãéžæããŸãã
貪欲æ³ã®ã¢ãããŒã: 掻åãçµäºæå»ã§ãœãŒãããŸããæ¬¡ã«ãæåã®æŽ»åãéžæãããã®åŸãåã«éžæããæŽ»åãçµäºããåŸã«éå§ããæ¬¡ã®æŽ»åãç¹°ãè¿ãéžæããŸããããã¯äžçäžã®ã¹ã±ãžã¥ãŒãªã³ã°ã·ã¹ãã ã§èŠãããå®çšçãªäŸã§ãã
貪欲æ³ã®å©ç¹ã𿬠ç¹
å©ç¹:
- å¹çæ§: 貪欲æ³ã¯ããã®åçŽãªæ§é ãšåŸæ»ãã®ãªããããéåžžã«å¹ççã§ããããšãå€ãã§ãã
- åçŽã: çè§£ãèšèšãå®è£ ã容æã§ããããšãå€ãã§ãã
- ç¹å®ã®åé¡ãžã®é©åæ§: æé©éšåæ§é ãšè²ªæ¬²éžæç¹æ§ãæã€åé¡ã«ããé©ããŠããŸãã
æ¬ ç¹:
- åžžã«æé©ãšã¯éããªã: 貪欲æ³ã¯åžžã«åé¡ã®æé©è§£ãæäŸããããã§ã¯ãããŸããããããæå€§ã®å¶çŽã§ãã
- æ£åœæ§ã®æ€èšŒãå°é£: 貪欲æ³ã®æ£åœæ§ã蚌æããããšã¯ãè²ªæ¬²éžæç¹æ§ãå®èšŒããå¿ èŠããããããå°é£ãªå ŽåããããŸãã
- åé¡ã«ç¹åããŠãã: 貪欲ãªéžæãšãã®å®è£ ã¯åé¡ã«äŸåããããšãå€ãããã¹ãŠã®ã·ããªãªã«äžè¬åã§ããããã§ã¯ãããŸããã
ã°ããŒãã«ãªèæ ®äºé ãšå®äžçã§ã®å¿çš
貪欲æ³ã¯ãäžçäžã®ããŸããŸãªç£æ¥ã§æ°å€ãã®å¿çšããããŸãïŒ
- ãããã¯ãŒã¯ã«ãŒãã£ã³ã°: ãã€ã¯ã¹ãã©æ³ã¯ã°ããŒãã«ãããã¯ãŒã¯ã«ãããŠäžå¯æ¬ ã§ãããéä¿¡ãããã¯ãŒã¯ãä»ããããŒã¿ãããŒã®æé©åã«äœ¿çšãããŸãã
- ãªãœãŒã¹å²ãåœãŠ: äžçäžã®ããŸããŸãªäŒæ¥ã§ã垯åå¹ ãã¹ãã¬ãŒãžã¹ããŒã¹ãçç£èœåãªã©ã®ãªãœãŒã¹äœ¿çšãæé©åããŸãã
- ã¹ã±ãžã¥ãŒãªã³ã°ãšãªãã¬ãŒã·ã§ã³ãºãããžã¡ã³ã: AmazonãFedExã®ãããªå€ãã®ç©æµã»ãµãã©ã€ãã§ãŒã³äŒæ¥ã¯ãç¹ã«EUãåç±³ã§ã®äºæ¥ã«ãããŠãé éã®ã¹ã±ãžã¥ãŒãªã³ã°ãå庫æ¥åãã«ãŒãæé©åã®ããã«è²ªæ¬²æ³ã掻çšããŠããŸãã
- éèãšæè³: ããŒããã©ãªãªã®æé©åïŒåžžã«å³å¯ã«è²ªæ¬²æ³ãšã¯éããªãïŒãã¢ã«ãŽãªãºã ååŒæŠç¥ã§ã¯ãè¿ éãªæè³å€æãäžãããã«è²ªæ¬²æ³ã®ååãçµã¿èŸŒãŸããããšããããŸãã
- ããŒã¿å§çž®: ãããã³ç¬Šå·åã¯ãZIPãJPEGïŒç»åå§çž®çšïŒãªã©ã®ãã¡ã€ã«å§çž®åœ¢åŒã§ã®äœ¿çšã®ããã«ãäžçäžã§ããŒã¿ãå§çž®ããããã«åºã䜿çšãããŠããŸãã
- è£œé æ¥: 廿£ç©ãæå°éã«æããããã®ææã®åæãæé©åããŸãã
貪欲æ³ãã°ããŒãã«ãªæèã§é©çšããéã«ã¯ã以äžãèæ ®ããããšãéèŠã§ãïŒ
- çºæ¿ãšæé©å: ã°ããŒãã«éèã«ãããŠãçºæ¿ã¬ãŒããæé©åããããååŒã³ã¹ããåæžãããããããã®ã¢ã«ãŽãªãºã ãæ§ç¯ã§ããããã¯åœéçãªããžãã¹ã»ã¯ã¿ãŒå šäœã§é¢é£æ§ããããŸãã
- ããŒã«ãªãŒãŒã·ã§ã³: 亀éã€ã³ãã©ã®ã°ãã€ãããç°ãªãèŠå¶ã®æ çµã¿ãªã©ãå°åã®å¶çŽã«ã¢ã«ãŽãªãºã ãé©å¿ãããŸãã
- æåçæåæ§: ã¢ã«ãŽãªãºã ã®èšèšãšå¿çšã«åœ±é¿ãäžããå¯èœæ§ã®ããæåçèŠå ãæœåšçãªãã€ã¢ã¹ãèæ ®ããŸãã
貪欲æ³ã䜿çšããããã®ãã¹ããã©ã¯ãã£ã¹
貪欲æ³ã广çã«æŽ»çšããããã«ã¯ã以äžã®ãã¹ããã©ã¯ãã£ã¹ãèæ ®ããŠãã ããïŒ
- åé¡åæ: 貪欲æ³ãé©åãã©ããã倿ããããã«ãåé¡ã培åºçã«åæããŸããæé©éšåæ§é ãšè²ªæ¬²éžæç¹æ§ãæ¢ããŸãã
- 貪欲ãªéžæã®å®çŸ©: 貪欲ãªéžæãæ éã«å®çŸ©ããŸããéžæåºæºã¯æç¢ºã§å®è£ ã容æã§ãªããã°ãªããŸããã
- æ£åœæ§ã®èšŒæ: å¯èœã§ããã°ãããªãã®è²ªæ¬²æ³ãåžžã«æé©è§£ïŒãŸãã¯èš±å®¹ç¯å²å ã®è§£ïŒãçæããããšã蚌æããããšè©Šã¿ãŸããããã«ã¯ãã°ãã°åž°çŽæ³ãçšããããŸãã
- ãã¹ã: åºç¯å²ã®å ¥åããŒã¿ïŒãšããžã±ãŒã¹ãå«ãïŒã§ã¢ã«ãŽãªãºã ããã¹ããããã®å ç¢æ§ã確ä¿ããŸãã
- æ¯èŒ: 貪欲æ³ã®ããã©ãŒãã³ã¹ãä»ã®ã¢ãããŒãïŒäŸïŒåçèšç»æ³ãç·åœããæ³ïŒãšæ¯èŒãããã®å¹çæ§ãšè§£ã®è³ªãè©äŸ¡ããŸãã
- ã°ããŒãã«ãªé©å¿æ§: ããŸããŸãªã°ããŒãã«ãªæèã«é©å¿ã§ããã¢ã«ãŽãªãºã ãèšèšããŸããæåçãå°ççãã€ã³ãã©çãªéãã«çæããŠãã ããã
çµè«
貪欲æ³ã¯ãäžçäžã®æé©ååé¡ã«åãçµãããã®åŒ·åãªããŒã«ãæäŸããŸããåžžã«å®ç§ãªçããä¿èšŒããããã§ã¯ãããŸããããç¹ã«æéãéèŠãªå Žåã«ã¯ãå¹ççã§ãã°ãã°å¹æçãªè§£æ±ºçãæäŸããŸãããã®é·æãéçãé©åãªå¿çšãçè§£ããããšã¯ãã³ã³ãã¥ãŒã¿ãŒãµã€ãšã³ãã£ã¹ãããœãããŠã§ã¢ãšã³ãžãã¢ããŸãã¯åé¡è§£æ±ºã«é¢ãããã¹ãŠã®äººã«ãšã£ãŠäžå¯æ¬ ã§ãããã®ã¬ã€ãã§æŠèª¬ãããååãåãå ¥ããã°ããŒãã«ãªèŠç¹ãèæ ®ããããšã§ãããŸããŸãªåœéçãªé åã§è§£æ±ºçãæé©åããã°ããŒãã«ãªæ¥åã®å¹çãåäžãããããã«è²ªæ¬²æ³ã®åãæŽ»çšããããšãã§ããŸãã