
ããŒã1.ç·åœ¢æ§é
é
å
1ã€ã®ãªããžã§ã¯ããå¿
èŠãªå Žåã1ã€ã®ãªããžã§ã¯ããäœæããŸãã è€æ°ã®ãªããžã§ã¯ããå¿
èŠãªå Žåã¯ãããã€ãã®ãªãã·ã§ã³ããéžæã§ããŸãã ã³ãŒãã®æ°äººã次ã®ããã«æžããŠããã®ãèŠãŸããïŒ
ããã«ããã5ã€ã®ã¬ã³ãŒãã®å€ãåŸãããŸãã ãã®ã¡ãœããã¯ã50åãŸãã¯100åã®ãªããžã§ã¯ããå¿
èŠã«ãªããŸã§ããŸãæ©èœããŸãã åã
ã®ãªããžã§ã¯ããäœæãã代ããã«ãé
åã䜿çšã§ããŸãã
次ã®ããã«ã5ã€ã®èŠçŽ ã®ãããã¡ãŒãäœæãããŸãã
é
åã®ã€ã³ããã¯ã¹ã¯ãŒãããå§ãŸãããšã«æ³šæããŠãã ããã é
åã«5ã€ã®èŠçŽ ãããå Žåããããã®èŠçŽ ã®ã€ã³ããã¯ã¹ã¯0ã4ã«ãªããŸãã
åçŽãªé
åã®æ¬ ç¹
äžå®æ°ã®ãªããžã§ã¯ããå¿
èŠãªå Žåãé
åã¯éåžžã«é©ããŠããŸãã ããããå¥ã®èŠçŽ ãé
åã«è¿œå ããå¿
èŠããããšããŸãã åçŽãªé
åã§ã¯ããããè¡ãããšã¯ã§ããŸããã é
åããèŠçŽ ãåé€ããå¿
èŠããããšããŸãããã åçŽãªé
åã§ã¯ããããäžå¯èœã§ãã 1ã€ã®æ°éã®èŠçŽ ã«é¢é£ä»ããããŸãã ãµã€ãºã倿Žã§ããé
åãå¿
èŠã§ãã ãããã£ãŠãéžæããæ¹ãè¯ã...
åçé
å
åçé
åã¯ããµã€ãºã倿Žã§ããé
åã§ãã æšæºã©ã€ãã©ãªã®äž»èŠãªããã°ã©ãã³ã°èšèªã¯ãåçé
åããµããŒãããŠããŸãã C ++ã§ã¯ãããã¯
vectorã§ãã Javaã§ã¯ãããã¯
ArrayListã§ã ã CïŒã§ã¯ãããã¯
Listã§ãã ãããã¯ãã¹ãŠåçé
åã§ãã ã³ã¢ã§ã¯ãåçé
åã¯åçŽãªé
åã§ããã2ã€ã®è¿œå ããŒã¿ãããã¯ããããŸãã åçŽãªé
åã®å®éã®ãµã€ãºãšãåçŽãªé
åã«å®éã«æ ŒçŽã§ããããŒã¿ã®éãæ ŒçŽããŸãã åçé
åã¯æ¬¡ã®ããã«ãªããŸãã
internalArrayèŠçŽ ã¯ãåçã«å²ãåœãŠããããããã¡ãæããŸãã æå¹ãªãããã¡é
åã¯
maxCapacityã«ä¿åãã
ãŸã ã 䜿çšãããèŠçŽ ã®æ°ã¯
currentLengthã§æå®ãã
ãŸã ã
åçé
åã«è¿œå ãã
ãªããžã§ã¯ããåçé
åã«è¿œå ãããšãããã€ãã®ã¢ã¯ã·ã§ã³ãçºçããŸãã é
åã¯ã©ã¹ã¯ãååãªã¹ããŒã¹ããããã©ããã確èªããŸãã
currentLength <maxCapacityã®å Žåãé
åã«è¿œå ããäœå°ããããŸãã ååãªã¹ããŒã¹ããªãå Žåããã倧ããªå
éšé
åãé
眮ããããã¹ãŠãæ°ããå
éšé
åã«ã³ããŒãããŸãã maxCapacityå€ã¯ãæ°ããæ¡åŒµå€ã«å¢å ããŸãã ååãªã¹ããŒã¹ãããå Žåãæ°ããèŠçŽ ã远å ãããŸãã æ¿å
¥ãã€ã³ãã®åŸã®åèŠçŽ ã¯ãå
éšé
åã®é£æ¥ããå Žæã«ã³ããŒããå¿
èŠããããŸããã³ããŒãå®äºãããšããã€ãã¯æ°ãããªããžã§ã¯ãã§åãããã
currentLengthã®å€ã1ã€å¢ããŸãã
æ¿å
¥ãã€ã³ãã®åŸã«åãªããžã§ã¯ããç§»åããå¿
èŠããããããæåŸã«èŠçŽ ã远å ããããšããå§ãããŸãã ãã®å ŽåããŒãèŠçŽ ãç§»åããå¿
èŠããããŸãïŒãã ããå
éšé
åã¯åŒãç¶ãæ¡åŒµããå¿
èŠããããŸãïŒã åçé
åã¯ãèŠçŽ ãäžå€®ã§ã¯ãªãæåŸã«è¿œå ãããšãã«æé©ã«æ©èœããŸãã
ãªããžã§ã¯ããåçé
åã«è¿œå ãããšãåãªããžã§ã¯ãã¯ã¡ã¢ãªå
ãç§»åã§ããŸãã CãC ++ãªã©ã®èšèªã§ã¯ãåçé
åã«è¿œå ãããšãé
åãªããžã§ã¯ããžã®ãã¹ãŠã®ãã€ã³ã¿ãŒãç¡å¹ã«ãªããŸãã
åçé
åããåé€ãã
ãªããžã§ã¯ããåé€ããå Žåã远å ãããããäœæ¥ãå°ãªããŠæžã¿ãŸãã ãŸãããªããžã§ã¯ãèªäœãç Žæ£ãããŸãã 第äºã«ããã®ãã€ã³ãã®åŸã®åãªããžã§ã¯ãã¯1ã€ã®èŠçŽ ã ãã·ãããããŸãã æåŸã«ãcurrentLengthã¯1ã€æžå°ããŸãã
é
åã®æ«å°Ÿã«è¿œå ããå Žåãšåæ§ã«ãé
åã®æ«å°Ÿããåé€ããã®ãæé©ã§ããããã¯ããªããžã§ã¯ãããŒãç§»åããå¿
èŠãããããã§ãã ãŸããå
éšé
åã®ãµã€ãºãå°ããããŠãµã€ãºãå°ããããå¿
èŠããªãããšã泚ç®ã«å€ããŸãã åŸã§ãªããžã§ã¯ãã远å ããå Žåãå²ãåœãŠãããã¹ããŒã¹ã¯åããŸãŸã§ããå ŽåããããŸãã
åçé
åãããªããžã§ã¯ããåé€ãããšãåé€ãããèŠçŽ ã®åŸã®ãã¹ãŠã®ã¡ã¢ãªããªãã»ãããããŸãã CãC ++ãªã©ã®èšèªã§ã¯ãåçé
åããåé€ãããšãåé€ãããé
åã®åŸã®ãã¹ãŠãžã®ãã€ã³ã¿ãŒãç¡å¹ã«ãªããŸãã
åçé
åã®æ¬ ç¹
é
åãéåžžã«å€§ãããå€ãã®å Žåããªããžã§ã¯ãã远å ããã³åé€ããå¿
èŠããããšããŸãã ããã«ããªããžã§ã¯ãã¯ä»ã®å Žæã«ã³ããŒãããããšãå€ããå€ãã®ãã€ã³ã¿ãŒãç¡å¹ã«ãªããŸãã åçé
åã®éäžã§é »ç¹ã«å€æŽããå¿
èŠãããå Žåã¯ãããã«é©ããç·åœ¢ããŒã¿æ§é ã®ã¿ã€ãããããŸã...
ãªã³ã¯ãªã¹ã
é
åã¯ã¡ã¢ãªã®é£ç¶ãããã¯ã§ãããåèŠçŽ ã¯æ¬¡ããæ¬¡ãžãšé
眮ãããŸãã ãªã³ã¯ãªã¹ãã¯ããªããžã§ã¯ãã®ãã§ãŒã³ã§ãã ãªã³ã¯ãªã¹ãã¯ãäž»èŠãªããã°ã©ãã³ã°èšèªã®æšæºã©ã€ãã©ãªã«ãååšããŸãã C ++ã§ã¯ããããã¯
listãšåŒã°ã
ãŸã ã Javaããã³CïŒã§ã¯ãããã¯
LinkedListã§ãã ãªã³ã¯ãªã¹ãã¯ãäžé£ã®ããŒãã§æ§æãããŸãã åããŒãã¯æ¬¡ã®ããã«ãªããŸãã
ãã®ã¿ã€ãã®æ§é ãäœæããŸãã
åããŒãã¯æ¬¡ã®ãã®ã«æ¥ç¶ããŸãã
ãªã³ã¯ãªã¹ãã«è¿œå ãã
ãªã³ã¯ãªã¹ããžã®ãªããžã§ã¯ãã®è¿œå ã¯ãæ°ããããŒãã®äœæããå§ãŸããŸãã ããŒã¿ã¯ããŒãã®å
éšã«ã³ããŒãããŸãã æ¬¡ã«ãæ¿å
¥ãã€ã³ãããããŸãã æ¬¡ã®ãªããžã§ã¯ããžã®æ°ããããŒãã®ãã€ã³ã¿ãŒã¯ããã®åŸã®æ¬¡ã®ããŒããæãããã«å€æŽãããŸãã æåŸã«ãæ°ããããŒãã®åã«ããããŒãã¯ãæ°ããããŒããæãããã«ãã€ã³ã¿ãŒã倿ŽããŸãã
ãªã³ã¯ãªã¹ãããåé€ãã
ãªã³ã¯ãªã¹ããããªããžã§ã¯ããåé€ããããšãããŒãã¯åé€ãããããŒãã®åã«ãªããŸãã åé€ããããªããžã§ã¯ãã®æ¬¡ã®ããŒããæãããã«å€æŽãããŸãã ãã®åŸãåé€ããããªããžã§ã¯ãã¯å®å
šã«æ¶å»ã§ããŸãã
ãªã³ã¯ãªã¹ãã®å©ç¹
ãªã³ã¯ãªã¹ãã®æå€§ã®å©ç¹ã¯ããªã¹ããžã®ãªããžã§ã¯ãã®è¿œå ãšåé€ã§ãã ãªã¹ãã®äžå€®ã倿Žããã®ã¯éåžžã«é«éã§ãã åçé
åã¯çè«çã«åèŠçŽ ã®ãªãã»ãããåŒãèµ·ããå¯èœæ§ãããããªã³ã¯ãªã¹ãã¯ä»ã®ãã¹ãŠã®ãªããžã§ã¯ãããã®å Žæã«ä¿æããããšã«æ³šæããŠãã ããã
ãªã³ã¯ããããªã¹ãã®æ¬ ç¹
åçé
åã¯ã¡ã¢ãªã®é£ç¶ãããã¯ã§ããããšãæãåºããŠãã ããã
é
åã®500çªç®ã®èŠçŽ ãååŸããå¿
èŠãããå Žåã¯ã500åã®ãå Žæããå
ã«èŠãŠãã ããã ãªã³ã¯ãªã¹ãã§ã¯ãã¡ã¢ãªãé£éãããŸãã 500çªç®ã®èŠçŽ ãèŠã€ããå¿
èŠãããå Žåã¯ããã§ãŒã³ã®å
é ããéå§ãããã®ãã€ã³ã¿ã次ã®èŠçŽ ã«ç§»åããæ¬¡ã«æ¬¡ã®èŠçŽ ã«ç§»åãããªã©ã500åç¹°ãè¿ãå¿
èŠããããŸãã
ãªã³ã¯ãªã¹ããžã®ã©ã³ãã ã¢ã¯ã»ã¹ã¯éåžžã«é
ãã§ãã
ãªã³ã¯ãªã¹ãã®å¥ã®éå€§ãªæ¬ ç¹ã¯ç¹ã«æããã§ã¯ãããŸããã åããŒãã«ã¯å°ãäœåãªã¹ããŒã¹ãå¿
èŠã§ãã 圌ã¯ã©ã®ãããã®ã¹ããŒã¹ãå¿
èŠã§ããïŒ ãã€ã³ã¿ã®ãµã€ãºã ããå¿
èŠã ãšæããããããŸããããããã¯å®å
šã«çå®ã§ã¯ãããŸããã ãªããžã§ã¯ããåçã«äœæããå Žåãåžžã«å°ããªããŒãžã³ããããŸãã C ++ãªã©ã®äžéšã®ããã°ã©ãã³ã°èšèªã¯ãã¡ã¢ãªããŒãžã§åäœããŸãã éåžžãããŒãžã¯4ãããã€ãããããŸãã 远å ããã³å逿Œç®åã䜿çšãããšã1ãã€ãã®ã¿ã䜿çšããå¿
èŠãããå Žåã§ããã¡ã¢ãªã®ããŒãžå
šäœãå²ãåœãŠãããŸãã
JavaãšCïŒã§ã¯ããã¹ãŠãå°ãç°ãªã£ãŠé
眮ãããå°ããªãªããžã§ã¯ãçšã®ç¹å¥ãªã«ãŒã«ããããŸãã ãããã®èšèªã¯4ãããã€ãã®ã¡ã¢ãªããŒãžå
šäœãå¿
èŠãšããŸããããããã§ãããããªããŒãžã³ããããŸãã æšæºã©ã€ãã©ãªã䜿çšããå Žåã2çªç®ã®æ¬ ç¹ãå¿é
ããå¿
èŠã¯ãããŸããã ç¡é§ãªã¹ããŒã¹ãæå°éã«æããããã«æžãããŠããŸãã
ãããã«
ããã3ã€ã®ã¿ã€ãïŒé
åãåçé
åãããã³ãªã³ã¯ãªã¹ãïŒã¯ãããè€éãªããŒã¿ã³ã³ãããŒã®ã»ãŒãã¹ãŠã®åºç€ã圢æããŸãã 倧åŠã§å匷ãããšããããŒã¿æ§é ã®ç ç©¶ã«ãããæåã®ã¿ã¹ã¯ã®1ã€ã¯ãåçé
åãšãªã³ã¯ãªã¹ãã®ã¯ã©ã¹ã®ç¬èªã®å®è£
ã§ãã
ãããã®æ§é ã¯ããã°ã©ãã³ã°ã®åºæ¬ã§ãã ã©ããªèšèªãå匷ããŠããããã䜿ã£ãŠããŒã¿ãæäœããŸãã
ããŒã2.ãšã³ããã€ã³ããæã€ç·åœ¢ããŒã¿æ§é
ã¹ã¿ãã¯
ããããã®çŽããããšæ³åããŠãã ããã
1æã®ã·ãŒããã¹ã¿ãã¯ã«å
¥ããŸãã ããã§ããããã·ãŒãã«ã®ã¿ã¢ã¯ã»ã¹ã§ããŸãã
å¥ã®ã·ãŒããã¹ã¿ãã¯ã«å
¥ããŸãã åã®ã·ãŒãã¯é衚瀺ã«ãªããã¢ã¯ã»ã¹ã§ããªããªããŸããããããã·ãŒãã䜿çšã§ããŸãã ãããã·ãŒãã宿ããããã¹ã¿ãã¯ãããããåé€ããŠãäžã®ã·ãŒãã«ã¢ã¯ã»ã¹ã§ããããã«ããŸãã
ãããã¹ã¿ãã¯ã®èãæ¹ã§ãã ã¹ã¿ãã¯ã¯LIFOæ§é ã§ãã ããã¯åŸå
¥ãå
åºãã®ç¥ã§ãã ã¹ã¿ãã¯ã«è¿œå ããã³ã¹ã¿ãã¯ããåé€ãããšãæåŸã«è¿œå ãããã¢ã€ãã ãæåã«åé€ãããŸãã
ã¹ã¿ãã¯ã«å¿
èŠãªæäœã¯ãããã·ã¥ãããããããã³ãããã®3ã€ã ãã§ãã
ããã·ã¥ã¯ããªããžã§ã¯ããã¹ã¿ãã¯ã«ããã·ã¥ããŸãã ãããã¯ãã¹ã¿ãã¯ãããªããžã§ã¯ããåé€ããŸãã Topã¯ãã¹ã¿ãã¯äžã®ææ°ã®ãªããžã§ã¯ããæäŸããŸãã ã»ãšãã©ã®èšèªã®ãããã®ã³ã³ããã¯ãæšæºã©ã€ãã©ãªã®äžéšã§ãã C ++ã§ã¯ããããã¯
stackãšåŒã°ã
ãŸã ã Javaããã³CïŒã§ã¯ãããã¯
ã¹ã¿ãã¯ã§ãã ïŒã¯ããååã®å¯äžã®éãã¯å€§æåã§ããïŒã¹ã¿ãã¯ã®å
éšã¯ãå€ãã®å Žåãåçé
åãšããŠå®è£
ãããŸãã ãã®ããŒã¿æ§é ããæãåºããšãåçé
åã§ã®æéã®æäœã¯ãèŠçŽ ã®è¿œå ãšåé€ã§ãã ã¹ã¿ãã¯ã¯åžžã«æåŸã«è¿œå ããã³åé€ãããããéåžžãã¹ã¿ãã¯äžã®ãªããžã§ã¯ãã®ããã·ã¥ããã³ãããã¯éåžžã«é«éã§ãã
ãã¥ãŒ
ããªããäœãã®ããã«äžŠãã§ãããšæ³åããŠãã ããã
åã«äžŠãã§ããæåã®äººãåºããããã®åŸåœŒã¯å»ããŸãã ãã®åŸããããæäŸããã2çªç®ã䞊ãã§ããŸãã ä»ã®äººã
ãåã«ãªã£ãŠããã®ç«¯ã«ç«ã£ãŠããŸãã ããã¯ããã¥ãŒã®ããŒã¿æ§é ã®èãæ¹ã§ãã
ãã¥ãŒã¯FIFOæ§é ã§ãïŒå
å
¥ãå
åºãããå
å
¥ãå
åºããïŒã
ãã¥ãŒã«è¿œå ããã³ãã¥ãŒããåé€ãããšãæåã«è¿œå ãããã¢ã€ãã ãæåã«ååŸãããŸãã ãã¥ãŒã«å¿
èŠãªæäœã¯ãPush_BackãPop_FrontãFrontãããã³Backã ãã§ãã Push_Backã¯ãã¢ã€ãã ããã¥ãŒã®æåŸã«è¿œå ããŸãã Pop_Frontã¯ããã¥ãŒã®å
é ããèŠçŽ ãåé€ããŸãã ããã³ããšããã¯ã䜿çšãããšããã¥ãŒã®äž¡ç«¯ã«ã¢ã¯ã»ã¹ã§ããŸãã
å€ãã®å Žåãããã°ã©ãã¯ãã¥ãŒã®äž¡ç«¯ããèŠçŽ ã远å ãŸãã¯åé€ããå¿
èŠããããŸãã ãã®ãããªæ§é ã¯ã䞡端ãã¥ãŒã䞡端ãã¥ãŒãšåŒã°ããŸãã ãã®å ŽåãPush_FrontãšPop_Backã®æäœãããã«è¿œå ãããŸãã ãããã®ã³ã³ããã¯ãã»ãšãã©ã®äž»èŠèšèªã«ãå«ãŸããŠããŸãã C ++ã§ã¯ããããã¯
queueããã³
dequeã§ãã Javaã¯ããã¥ãŒãšåæ¹åãã¥ãŒã®ã€ã³ã¿ãŒãã§ãŒã¹ãå®çŸ©ãããããã
LinkedListãä»ããŠå®è£
ããŸãã CïŒã«ã¯
Queueã¯ã©ã¹ããããŸãããDequeã¯ã©ã¹ã¯ãããŸããã
ãã¥ãŒãšäž¡é¢ãã¥ãŒã®å
éšã¯éåžžã«è€éã«ãªãå¯èœæ§ããããŸãã ãªããžã§ã¯ãã¯ã©ã¡ãã®ç«¯ããã§ãè¡ãæ¥ã§ããã®ã§ãå
åŽã®ã³ã³ããã¯ãã¥ãŒãæåãšæåŸãã倧ãããããçããããã§ããªããã°ãªããŸããã å€ãã®å®è£
ã¯ãã¡ã¢ãªã®è€æ°ã®ããŒãžã䜿çšããŸãã ã©ã¡ããã®ç«¯ãçŸåšã®ããŒãžãè¶
ããŠå€§ãããªããšã远å ã®ããŒãžã远å ãããŸãã ããŒãžãäžèŠã«ãªã£ãå Žåãåé€ãããŸãã Javaã¯æ¬¡ã®æ¹æ³ã䜿çšããŸãããªã³ã¯ãªã¹ãã«ã¯ã¡ã¢ãªããŒãžã§ã¯ãªããå°ãäœåãªã¡ã¢ãªãå¿
èŠã§ããããã®èšèªã§ã¯ãã®å®è£
ã¯éåžžã«ããŸãæ©èœããŸãã
åªå
ãã¥ãŒ
ããã¯ããã¥ãŒã®éåžžã«äžè¬çãªããªãšãŒã·ã§ã³ã§ãã åªå
ãã¥ãŒã¯ãéåžžã®ãã¥ãŒã«éåžžã«äŒŒãŠããŸãã
ããã°ã©ã ã¯ãæåŸããèŠçŽ ã远å ããæåããèŠçŽ ãæœåºããŸãã éãã¯ããã¥ãŒã®ç¹å®ã®èŠçŽ ã«åªå
é äœãä»ããããšãã§ããããšã§ãã æãéèŠãªèŠçŽ ã¯ãã¹ãŠFIFOé ã«åŠçãããŸãã æ¬¡ã«ãFIFOã®é åºã§ãåªå
床ã®äœãèŠçŽ ãåŠçãããŸãã ãããã£ãŠãåªå
床ãæãäœãèŠçŽ ãFIFOé ã«åŠçããããŸã§ç¹°ãè¿ããŸãã
ãã¥ãŒã®æ®ãã®éšåãããé«ãåªå
åºŠã§æ°ããã¢ã€ãã ã远å ãããšãããã«ãã¥ãŒã®äžçªäžã«ç§»åããŸãã C ++ã§ã¯ããã®æ§é ã¯
priority_queueãšåŒã°ã
ãŸã ã Javaã§ã¯ãããã¯
PriorityQueueã§ãã CïŒæšæºã©ã€ãã©ãªã«ã¯åªå
ãã¥ãŒã¯ãããŸããã åªå
ãã¥ãŒã¯ãçµç¹ã®ããªã³ã¿ãŒã®æåã«äžŠã¶ã ãã§ãªãã䟿å©ã§ãã ãããã¯ãæ€çŽ¢æé A *ãªã©ã®ã¢ã«ãŽãªãºã ã®äŸ¿å©ãªå®è£
ã«äœ¿çšã§ããŸãã æãå¯èœæ§ã®é«ãçµæã«ã¯ãããé«ãåªå
é äœãããäœãå¯èœæ§-äœãåªå
é äœãäžããããšãã§ããŸãã A *æ€çŽ¢ããœãŒãããã³æŽçããããã®ç¬èªã®ã·ã¹ãã ãäœæã§ããŸãããçµã¿èŸŒã¿ã®åªå
床ãã¥ãŒã䜿çšããæ¹ãã¯ããã«ç°¡åã§ãã
ãããã«
ã¹ã¿ãã¯ããã¥ãŒãåæ¹åãã¥ãŒãããã³åªå
床ãã¥ãŒã¯ãä»ã®ããŒã¿æ§é ã«åºã¥ããŠå®è£
ã§ããŸãã ãããã¯åºæ¬çãªããŒã¿æ§é ã§ã¯ãããŸãããããã䜿çšãããŸãã æéããŒã¿èŠçŽ ã®ã¿ã§äœæ¥ããå¿
èŠãããå Žåã«éåžžã«å¹æçã§ãããäžéèŠçŽ ã¯éèŠã§ã¯ãããŸããã
ããŒã3.ããªãŒãšããŒãã
ããªãŒã®ããŒã¿æ§é
ããŒã¿ããªãŒã¯å€ãã®å Žåã«éåžžã«åœ¹ç«ã¡ãŸãã ãããªã²ãŒã ã®éçºã§ã¯ãããªãŒæ§é ã䜿çšããŠã¹ããŒã¹ã现ååããéçºè
ã¯ã²ãŒã ã¯ãŒã«ãã®åãªããžã§ã¯ãããã§ãã¯ããããšãªããè¿ãã®ãªããžã§ã¯ãããã°ããèŠã€ããããšãã§ããŸãã ããªãŒæ§é ã¯ã³ã³ãã¥ãŒã¿ãµã€ãšã³ã¹ã®åºæ¬ã§ãããå®éã«ã¯ãã»ãšãã©ã®æšæºã©ã€ãã©ãªã¯ããªãŒããŒã¹ã®ã³ã³ãããçŽæ¥å®è£
ããŠããŸããã ãã®çç±ã詳ãã説æããŸãã
ã·ã³ãã«ãªããªãŒ
æšã¯âŠæšã§ãã å®éã®ããªãŒã«ã¯ã«ãŒãããã©ã³ããããããã©ã³ãã®ç«¯ã«ã¯èããããŸãã
ããªãŒããŒã¿æ§é ã¯ã«ãŒãããŒãããå§ãŸããŸãã åããŒãã¯åããŒãã«åå²ã§ããŸãã ããŒãã«åããªãå ŽåããªãŒãããŒããšåŒã°ããŸãã è€æ°ã®æšãããå Žåãããã¯ãã©ã¬ã¹ããšåŒã°ããŸãã ãããããªãŒã®äŸã§ãã å®éã®ããªãŒãšã¯ç°ãªãããããã¯äžããäžã«æé·ããŸããéåžžãã«ãŒãããŒãã¯äžããæç»ãããèã¯äžããæç»ãããŸãã
æåã®è³ªåã®1ã€ã¯ãåããŒããåãããã€æã€ããšãã§ããããšããããšã§ãã
å€ãã®ããªãŒã«ã¯ã2ã€ä»¥äžã®åããŒãããããŸãã ãããã¯äºåæšãšåŒã°ããŸãã äžèšã®äŸã¯ããã€ããªããªãŒã瀺ããŠããŸãã éåžžãåã¯å·Šå³ã®åããŒããšåŒã°ããŸãã ã²ãŒã ã§äžè¬çãªå¥ã®ããªãŒã¿ã€ãã¯ã4ã€ã®åããŒããæã€ããªãŒã§ãã ã°ãªãããã«ããŒããããã«äœ¿çšã§ããã¯ã¢ããããªãŒããªãŒã§ã¯ãéåžžãããŒã¿ãŒããŒãã¯éããæ¹åã«ååãä»ããããŸãïŒNorthWestïŒå西ïŒãŸãã¯NWãNorthEastïŒåæ±ïŒãŸãã¯NEãSouthWestïŒå西ïŒãŸãã¯SWåæ±ïŒåæ±ïŒãŸãã¯SEã
ããªãŒã¯å€ãã®ã¢ã«ãŽãªãºã ã§äœ¿çšãããŠããŸãïŒãã§ã«ãã€ããªããªãŒã«ã€ããŠèª¬æããŸããïŒã ãã©ã³ã¹ã®åããããªãŒãšã¢ã³ãã©ã³ã¹ã®ããªãŒããããŸãã èµ€é»æšãAVLæšãããã³ä»ã®å€ãããããŸãã
ããªãŒçè«ã¯äŸ¿å©ã§ã¯ãããŸãããã¹ãã¬ãŒãžã¹ããŒã¹ãšã¢ã¯ã»ã¹é床ãšããæ·±å»ãªæ¬ é¥ã«æ©ãŸãããŠããŸãã ããªãŒãä¿åããæè¯ã®æ¹æ³ã¯äœã§ããïŒ æãç°¡åãªæ¹æ³ã¯ããªã³ã¯ããããªã¹ããäœæããããšã§ã;ããã¯ææªã§ããããšã倿ããŸããã ãã©ã³ã¹ã®åãããã€ããªããªãŒãæ§ç¯ããå¿
èŠããããšããŸãã 以äžã®ããŒã¿æ§é ããå§ããŸãã
ç°¡åã§ãã ããã§ã1024åã®èŠçŽ ãæ ŒçŽããå¿
èŠããããšæ³åããŠãã ããã æ¬¡ã«ã1024åã®ããŒãã®å Žåã2048åã®ãã€ã³ã¿ãŒãä¿åããå¿
èŠããããŸãã
ããã¯æ£åžžã§ããã€ã³ã¿ã¯å°ãããå°ãã®ã¹ããŒã¹ã§ã§ããŸãã
ãªããžã§ã¯ããé
眮ãããã³ã«ã远å ã®ãªãœãŒã¹ã®ããäžéšã䜿çšãããããšãèŠããŠãããããããŸããã 远å ã®ãªãœãŒã¹ã®æ£ç¢ºãªéã¯ã䜿çšããŠããèšèªã®ã©ã€ãã©ãªã«ãã£ãŠç°ãªããŸãã å€ãã®äžè¬çãªã³ã³ãã€ã©ãšããŒã«ã§ã¯ãããŒã¿ãæ ŒçŽããããã®ã»ãã®æ°ãã€ããããããã°ãç°¡çŽ åããããã®æ°ãããã€ããŸã§ãããŸããŸãªãªãã·ã§ã³ã䜿çšã§ããŸãã å²ãåœãŠã«å°ãªããšã4 KBã®ã¡ã¢ãªãå¿
èŠãªã·ã¹ãã ã§äœæ¥ããŸããã ãã®å Žåã1024èŠçŽ ã«ã¯çŽ4 MBã®ã¡ã¢ãªãå¿
èŠã§ãã éåžžãç¶æ³ã¯ããã»ã©æªããããŸããããå€ãã®å°ããªãªããžã§ã¯ããæ ŒçŽããããã®è¿œå ã³ã¹ãã¯éåžžã«æ¥éã«å¢å ããŠããŸãã
2çªç®ã®åé¡ã¯é床ã§ãã ãªããžã§ã¯ããã¡ã¢ãªå
ã«é£æ¥ããŠããå Žåãããã奜ããªããã»ããµã ææ°ã®ããã»ããµã«ã¯ãéåžžã«é«éãªã¡ã¢ãªïŒãã£ãã·ã¥ïŒããããã»ãšãã©ã®ããŒã¿ã§éåžžã«ããŸãæ©èœããŸãã ããã°ã©ã ãåäžã®ããŒã¿ãå¿
èŠãšããå Žåããã£ãã·ã¥ã¯ãã®èŠçŽ ãšãã®é£ã®èŠçŽ ãããŒãããŸãã ããŒã¿ãéåžžã«é«éãªã¡ã¢ãªã«ããŒããããªãå ŽåïŒããã¯ããã£ãã·ã¥ãã¹ããšåŒã°ããŸãïŒãããã°ã©ã ã¯äœæ¥ãäžæåæ¢ããããŒã¿ã®ããŒããåŸ
æ©ããŸãã æãæçœãªåœ¢åŒã§ã¯ãããªãŒã®åèŠçŽ ãç¬èªã®ã¡ã¢ãªã«æ ŒçŽãããŠããå Žåããããã®èŠçŽ ã®1ã€ãä»ã®èŠçŽ ã®é£ã«ããããã§ã¯ãããŸããã ããªãŒããã©ããŒã¹ããããã³ã«ãããã°ã©ã ã¯äžæåæ¢ããŸãã
ããªãŒã®äœæããã®ãããªåé¡ã«çŽæ¥é¢é£ããŠããå ŽåãããªãŒã®ããã«æ©èœããããŒã¿æ§é ãéžæããå¿
èŠããããŸãããæ¬ ç¹ã¯ãããŸããã ãããŠããã®æ§é ã¯åŒã°ããŠããŸã...
æ
æ··ä¹±ãããããã«ã2çš®é¡ã®ããŒãããããšèšããŸãã
1ã€ã¯ã¡ã¢ãªå
ã®ããŒãã§ãã ããã¯ããªããžã§ã¯ããæ ŒçŽãããã¡ã¢ãªã®å€§ããªãããã¯ã§ãã ãã ããå¥ã®ããŒãã«ã€ããŠèª¬æããŸãã
ããŒãããŒã¿æ§é ã¯ãæ¬è³ªçã«ããªãŒãšåãã§ãã ã«ãŒãããŒããåããŒãã«åããŒããªã©ããããŸãã ããŒãã¯å¶éã远å ããããããœãŒãã¯åžžã«ç¹å®ã®é åºã§å®è¡ããå¿
èŠããããŸãã ãœãŒã颿°ãå¿
èŠã§ã-éåžžã¯ãããå°ãããæŒç®åã§ãã
ããŒãã«ãªããžã§ã¯ãã远å ãŸãã¯åé€ãããšãæ§é ã¯ããèªäœããœãŒãããŠãå®å
šãªãããªãŒã«ãªããŸããããªãŒã®åã¬ãã«ã¯ããã¹ãŠãçåŽã«ã·ãããããæåŸã®è¡ã®ã¿ãé€ããŠåããããŸãã ããã«ãããã¹ãã¬ãŒãžé åãšããŒãæ€çŽ¢ãéåžžã«å¹ççã«æäŸã§ããŸãã
ããŒãã¯ãåçŽãªé
åãŸãã¯åçãªé
åã«æ ŒçŽã§ããŸããã€ãŸããé
眮ã«äœ¿çšãããã¹ããŒã¹ã¯ã»ãšãã©ãããŸããã C ++ã«ã¯ãç¬èªã®éçºè
ã³ã³ããã«ããŒããå®è£
ã§ããpush_heapïŒïŒãpop_heapïŒïŒãªã©ã®é¢æ°ããããŸãã æšæºã®Javaããã³CïŒã©ã€ãã©ãªã«ã¯ãåæ§ã®æ©èœã¯ãããŸããã åãæ
å ±ãæã€ããªãŒãšæã次ã«ç€ºããŸãã
æšæºã©ã€ãã©ãªã«ãªãçç±
ãããã¯ãã·ã³ãã«ã§åºæ¬çãªéåžžã«äŸ¿å©ãªããŒã¿æ§é ã§ãã å€ãã®äººã
ã¯ãæšæºã©ã€ãã©ãªã«ååšãã¹ãã ãšèããŠããŸãã
æ°ç§ã§ãæ€çŽ¢ãšã³ãžã³ã§äœåãã®ããªãŒå®è£
ãèŠã€ããããšãã§ããŸããæšã¯éåžžã«æçšã§åºæ¬çã§ãããããè¯ãã³ã³ãããããããšãããããŸããããªãŒã®å©ç¹ïŒå®å®æ§ãšåœ¢ç¶ïŒãšããŒãã®å©ç¹ïŒã¹ããŒã¹ãšé床ïŒãåãããããè€éãªããŒã¿æ§é ããããŸããããé«åºŠãªããŒã¿æ§é ã¯ãéåžžãããŒã¿ããŒãã«ãšã«ãã¯ã¢ããããŒãã«ã®çµã¿åããã§ãã 2ã€ã®ããŒãã«ãçµã¿åãããããšã§ãè¿
éãªã¢ã¯ã»ã¹ãè¿
éãªå€æŽãå¯èœã«ãªããã¿ã€ããªç¶æ³ã§ãã«ãŒãºãªç¶æ³ã§ãæç¢ºã«çŸããŸããèŠçŽ ã远å ããã³åé€ãããšãã«èŠçŽ ã転éããå¿
èŠããªããäžèŠãªã¡ã¢ãªãæ¶è²»ãããé·æé䜿çšããŠãã¡ã¢ãªãæçåããŸããããããã«
ãããªãŒãããŒã¿æ§é ã«ã€ããŠç¥ã£ãŠããããšãéèŠã§ããããã¯ãä»äºã§ã¯é »ç¹ã«äœ¿çšããå¿
èŠãããããã§ãããŸãããããã®ããŒã¿æ§é ã¯ãçŽæ¥å®è£
ããããšãã«äžå©ãªç¹ãããããšãç¥ãããšãéèŠã§ããç¬èªã®ããªãŒæ§é ãå®è£
ã§ããŸãããããã³ã³ãã¯ããªåãããããšãç¥ã£ãŠãã ãããæšæºã©ã€ãã©ãªã§å®éã«äœ¿çšãããŠããªãã®ã«ããªããããã«ã€ããŠè©±ããã®ã§ããïŒæ¬¡ã®ãããã¯ã§å
éšæ§é ãšããŠäœ¿çšãããŸããããŒã4.éç·åœ¢ããŒã¿æ§é ã
ãããã®ããŒã¿æ§é ã¯ãé
åããªã¹ããšã¯ç°ãªããŸããé
åã¯é 次ã³ã³ãããŒã§ãããããã®èŠçŽ ã¯é çªã«é
眮ãããŸããç¹å®ã®é åºã§è€æ°ã®ã¢ã€ãã ã远å ãããšããããã¯ãã®é åºã®ãŸãŸã«ãªããŸããéç·åœ¢ããŒã¿æ§é ã¯ãå¿
ããã远å ãããé åºã®ãŸãŸã«ãªããšã¯éããŸãããã¢ã€ãã ã远å ãŸãã¯åé€ãããšãä»ã®ã¢ã€ãã ã®é åºãå€ããå ŽåããããŸããå
éšã§ã¯ãåã®éšåã§èª¬æããããªãŒãšããŒãã§æ§æãããŠããŸãããã®ãããªããŒã¿æ§é ã«ã¯å€ãã®ããªãšãŒã·ã§ã³ããããŸããæãåºæ¬çãªã®ã¯ãããŒã¿ãã£ã¯ã·ã§ããªãšãé åºä»ãããã³ç¡ç§©åºãªã»ããã§ããããŒã¿èŸæž
éåžžã®èŸæžã¯ãäžé£ã®åèªïŒããŒïŒãšå®çŸ©ïŒå€ïŒã§æ§æãããŸããããŒã¯ã¢ã«ãã¡ãããé ã«ãªã£ãŠãããããã©ã®ã¢ã€ãã ã§ãéåžžã«ãã°ããèŠã€ããããšãã§ããŸããèŸæžããœãŒããããŠããªãå Žåããã®äžã®åèªãèŠã€ããããšã¯éåžžã«å°é£ã§ãããèŸæžå
ã®é
ç®ãäžŠã¹æ¿ããã«ã¯ãæ¯èŒãŸãã¯ããã·ã¥ã®2ã€ã®äž»ãªæ¹æ³ããããŸããåŸæ¥ã®æ¯èŒã«ããã·ãŒã±ã³ã¹ã¯ãéåžžãããçŽæçã§ããããã¯ããã¹ãŠãã¢ã«ãã¡ãããé ãŸãã¯çªå·é ã«ãœãŒããããŠããçŽã®èŸæžé ã®ããã«èŠããŸãããã®æ¹æ³ã§ã¢ã€ãã ããœãŒãããå Žåãæ¯èŒé¢æ°ãå¿
èŠã«ãªãå ŽåããããŸããéåžžããã®é¢æ°ã¯ããã©ã«ãã§ã¯ãå°ãªããæŒç®åã§ãïŒããšãã°<bïŒãã¢ã€ãã ããœãŒããã2çªç®ã®æ¹æ³ã¯ãããã·ã¥ã䜿çšããããšã§ããããã·ã¥ã¯ãåã«ããŒã¿ãããã¯ãåäžã®æ°å€ã«å€æããæ¹æ³ã§ããããšãã°ãæååãblueãã®ããã·ã¥ã¯0xa66b370dã§ãæååãredãã®ããã·ã¥ã¯0x3a72d292ã§ããããŒã¿ãã£ã¯ã·ã§ããªãããã·ã¥ã䜿çšããå Žåãéåžžã¯ãœãŒããããŠããªããšèŠãªãããŸããå®éãããã¯äŸç¶ãšããŠã人ã«ãšã£ãŠäŸ¿å©ãªåºæºã§ã¯ãªããããã·ã¥ã§ãœãŒããããŠããŸããããŒã¿ãã£ã¯ã·ã§ããªãåæ§ã«æ©èœããŸããèŸæžã®äœ¿çšãšåŸæ¥ã®ãœãŒããšããã·ã¥ãœãŒãã®é床ã«ã¯ããããªéãããããŸããéãã¯éåžžã«å°ãããããç¡èŠã§ããŸããC ++ã«ã¯ãã³ã³ãããã¡ããªmap / mutimapãŸãã¯unordered_map / unordered_multimapããããŸãã Javaã§ã¯ããã¡ããªãŒã¯HashMapãšåŒã°ããŸããTreeMapã®ãã®LinkedHashMapã CïŒã§ã¯ãããã¯DictionaryãŸãã¯SortedDictionaryã§ããããããã«ç¬èªã®å®è£
æ©èœããããŸããããšãã°ãããã·ã¥ãŸãã¯æ¯èŒã«ãããœãŒããéè€ã®ä»®å®ããããŸãããäžè¬çã«ã¯æŠå¿µã¯åãã§ããåæšæºã©ã€ãã©ãªã«ã¯ãé åºä»ããããããŒãžã§ã³ïŒæ¯èŒãæå®ãããŠããïŒãšé åºä»ããããŠããªãããŒãžã§ã³ïŒããã·ã¥é¢æ°ã䜿çšãããïŒãããããšã«æ³šæããŠãã ãããããŒã¿ãã£ã¯ã·ã§ããªã«ã¢ã€ãã ã远å ããåŸãå€ã倿Žã§ããŸãããããŒã¯å€æŽã§ããŸãããçŽã®èŸæžã®é¡æšã«æ»ããŸããããæ¬ã®äžã§åèªãåãããã«åèªã®å®çŸ©ã倿Žã§ããŸããåèªã®ã¹ãã«ã倿Žããå Žåãæåã®ã¹ãã«ãåé€ããŠãæ°ããã¹ãã«ã§åèªãåæ¿å
¥ããå¿
èŠããããŸããæç§æžã§äœåã®è©³çްã調ã¹ãããšãã§ããŸããèŸæžã¯ããŒã¿ãæ€çŽ¢ãããšãã¯éåžžã«é«éã§ãå€ã远å ãŸãã¯åé€ãããšãã¯éåžžã«é
ããªãå¯èœæ§ãããããšãç¥ãã ãã§ååã§ããé åºä»ãããã³é åºãªãã»ãã
é åºä»ãã»ããã¯èŸæžãšã»ãŒåãã§ããããŒãšå€ã®ä»£ããã«ãããŒã®ã¿ããããŸããåèªãšå®çŸ©ãå«ãåŸæ¥ã®èŸæžã®ä»£ããã«ãåèªã®ã¿ããããŸããå€ãã¯ã远å ããŒã¿ãªãã§åèªã®ã¿ãä¿åããå¿
èŠãããå Žåã«äŸ¿å©ã§ãã C ++ã§ã¯ãæ§é ã®ãã¡ããªãŒã¯set / multisetãŸãã¯unordered_set / unordered_multisetãšåŒã°ããŸãã Javaã§ã¯ãHashSetãTreeSetããŸãã¯LinkedHashSetã§ãã CïŒã§ã¯ããããã¯HashSetããã³SortedSetãšåŒã°ããŸããèŸæžãšåæ§ã«ãé åºä»ããããããŒãžã§ã³ïŒæ¯èŒãæå®ãããŠããå ŽåïŒãšé åºä»ããããŠããªãããŒãžã§ã³ïŒããã·ã¥é¢æ°ã䜿çšãããŠããå ŽåïŒããããŸããããŒã远å ããåŸã倿Žããããšãã§ããŸããã代ããã«ãå€ããªããžã§ã¯ããåé€ããŠæ°ãããªããžã§ã¯ããæ¿å
¥ããå¿
èŠããããŸããå€ãã®å ŽåãããŒã¿ãã£ã¯ã·ã§ããªãšåãæ¹æ³ã§å®è£
ãããå€ã®ã¿ãä¿åããŸãããããã¯åãæ¹æ³ã§å®è£
ããããããåãç¹æ§ãæã¡ãŸããå€ã¯éåžžã«é«éã«æ€çŽ¢ãããã»ããå
ã§æ€åºãããŸãããèŠçŽ ã远å ããã³åé€ãããšãã®åäœã¯é
ããªããŸãããããã«
ããŒã¿ãã£ã¯ã·ã§ããªã®ã³ã³ããã®ã¯ã©ã¹ãé åºä»ãã»ãããšé åºãªãã»ããã¯ãè¿
éãªããŒã¿ååŸã«éåžžã«åœ¹ç«ã¡ãŸããå€ãã®å Žåããããã¯ããªãŒãŸãã¯ããã·ã¥ããŒãã«ãšããŠå®è£
ãããŸãããããã¯ãã®ç¹ã§éåžžã«å¹æçã§ããäžåºŠããŒã¿ãäœæããå¿
èŠããããé »ç¹ã«åç
§ããå Žåã«äœ¿çšããŸããèŠçŽ ã®è¿œå ãåé€ã«ã¯ããŸã广çã§ã¯ãããŸãããã³ã³ããã«å€æŽãå ãããšãã³ã³ããå
ã§ã·ãããŸãã¯äžŠã¹æ¿ããçºçããå¯èœæ§ããããŸãããã®äœ¿çšãã¿ãŒã³ã«åŸãå¿
èŠãããå Žåã¯ãé åºä»ãããããªã³ã¯ãªã¹ããéžæããããšããå§ãããŸããããŒã5.ããŒã¿æ§é ã®æ£ããéžæã
åã®ããŒãã§ã¯ãæãäžè¬çã«äœ¿çšãããããŒã¿æ§é ããªã¹ãããŸãããç°¡åã«ç¹°ãè¿ããŸããç·åœ¢æ§é ãååšããŸãïŒé
åãåçé
åãããã³é¢é£ããé
åããããã¯ãé
眮ãããé åºã®ãŸãŸã§ãããããç·åœ¢ã§ããé
åã¯ã©ã³ãã ã¢ã¯ã»ã¹ã§éåžžã«é«éã§ãæåŸã«è¿œå ãããåé€ãããããéã®ããã©ãŒãã³ã¹ãæ¯èŒçè¯å¥œã§ãããªã³ã¯ãªã¹ãã¯ãé »ç¹ã«è¿œå ãåé€ãè¡ããããããéåžžã«åªããŠããŸãããšã³ããã€ã³ããæã€ç·åœ¢ããŒã¿æ§é ããããŸãïŒã¹ã¿ãã¯ãšãã¥ãŒã®ãã¡ããªãŒãã©ã¡ãããå®äžçã®å¯Ÿå¿ç©ãšã»ãŒåãããã«æ©èœããŸããã¹ã¿ãã¯ãããšãã°ãã¬ãŒãã®ã¹ã¿ãã¯ãããŒã¿ã¹ã¿ãã¯ã§ã¯ãäœããæŒãäžããããšãã§ããæäžéšã®èŠçŽ ã«ã¢ã¯ã»ã¹ããŠããã®èŠçŽ ãæŒãããšãã§ããŸããè¡ãšäººã®è¡ã¯ãè¡ã®æ«å°Ÿã«è¿œå ããŠè¡ã®å
é ããåé€ããããšã§æ©èœããŸããæ¬¡ã«ãéç·åœ¢ããŒã¿æ§é ããããŸããããŒã¿èŸæžãé åºä»ããããç¡ç§©åºãªã»ããã§ãããããã¯ãã¹ãŠå
éšçã«éç·åœ¢ã§ããã远å ããé åºã¯ãåºæ¬çã«ããããæ»ãé åºãšã¯é¢ä¿ãããŸãããããŒã¿èŸæžã¯ãå®éã®çŽã®èŸæžãšã»ãŒåãããã«æ©èœããŸãã圌ã«ã¯éµïŒç§ãã¡ãæ¢ããŠããèšèïŒãšæå³ïŒèšèã®å®çŸ©ïŒããããŸããé åºä»ãã»ããã¯ãããŒãå«ããå€ãå«ãŸãªãããŒã¿ãã£ã¯ã·ã§ããªãšãŸã£ããåãã§ããããœãŒããããŸããé åºä»ããããŠããªãã»ããã¯ããªããžã§ã¯ãã®åãªããããã°ãã§ããååã¯å°ãçŽããããã§ãããªããªãå®éã«ã¯ãããã¯æ³šæãããŠããããã§ãããã æ³šæããæ¹æ³ã¯äººã«ãšã£ãŠäžäŸ¿ã§ãããããã®æ§é ã¯ãã¹ãŠãè¿
éãªæ€çŽ¢ã«æé©ã§ããæ£ããéžæã®å¹æ
ã»ãšãã©ã®å Žåãããã°ã©ãã¯ããŒã¿ã»ãããç¹°ãè¿ãåŠçããå¿
èŠããããŸããéåžžãã»ãããé
眮ãããé åºã¯æ°ã«ããŸãããæåããå§ããŠåèŠçŽ ã«ã¢ã¯ã»ã¹ããã ãã§ãããã®éåžžã«äžè¬çãªç¶æ³ã§ã¯ãããŒã¿æ§é ã®éžæã¯ããã»ã©éèŠã§ã¯ãããŸãããçãããå Žåã¯ãéåžžãåçé
åãæè¯ã®éžæã§ããæ¯èŒçäžç«ã§ãããªãããä»»æã®ããªã¥ãŒã ã«æ¡åŒµã§ããŸããããã«ãããåŸã§å¥ã®ããŒã¿æ§é ã«ç°¡åã«çœ®ãæããããšãã§ããŸããããããæã«ã¯æ§é ãéåžžã«éèŠã§ããã²ãŒã ã§æãäžè¬çãªã¿ã¹ã¯ã®1ã€ã¯ãã¹ãèŠã€ããããšã§ãããã€ã³ãAãããã€ã³ãBãžã®ã«ãŒããèŠã€ããå¿
èŠããããŸããæãäžè¬çãªãã¹æ€çŽ¢ã¢ã«ãŽãªãºã ã®1ã€ã¯A *ã§ãã A *ã¢ã«ãŽãªãºã ã«ã¯ãéšåãã¹ãå«ãããŒã¿æ§é ããããŸããæ§é ã¯ãæãå¯èœæ§ã®é«ãéšåãã¹ãã³ã³ããã®åã«ããããã«ãœãŒããããŸãããã®ãã¹ãè©äŸ¡ãããçµäºããŠããªãå Žåãã¢ã«ãŽãªãºã ã¯ãã®éšåãã¹ãããã€ãã®å€§ããªéšåãã¹ã«å€æããã³ã³ããã«è¿œå ããŸãããã®ã³ã³ãããšããŠåçé
åã䜿çšããã®ã¯ãããã€ãã®çç±ã§é©åã§ã¯ãããŸããããŸããåçé
åã®å
é ããèŠçŽ ãåé€ããããšã¯ãå®è¡å¯èœãªæãé
ãæäœã®1ã€ã§ãã第äºã«ã远å ãããã³ã«åçé
åãåãœãŒãããã®ãé
ããªããŸããäžèšããèŠããŠããããã«ããã®ã¿ã€ãã®ã¢ã¯ã»ã¹ã«æé©åãããããŒã¿æ§é ããããŸããæåããåé€ããæåŸãã远å ããæé©ãªãã¹ã«åºã¥ããŠèªåãœãŒããå®è¡ãããŸããA *ãã¹ã³ã³ããã®çæ³çãªéžæã¯åªå
床ãã¥ãŒã§ãããèšèªã«çµã¿èŸŒãŸããå®å
šãªãããã°ãæäŸããŸãããã¿ãŒã³ã®éžæ
ããŒã¿æ§é ã®éžæã¯ãäž»ã«äœ¿çšãã¿ãŒã³ã«äŸåããŸããåçé
å-ããã©ã«ãã®éžæ
çãããå Žåã¯ãåçé
åã䜿çšããŠãã ãããC ++ã§ã¯ãããã¯vectorã§ããJavaã§ã¯ãããã¯ArrayListãšåŒã°ããŸããCïŒã§ã¯ãããã¯Listã§ããäžè¬ã«ãåçé
åãå¿
èŠã§ããã»ãšãã©ã®æäœã§é«éã§ãããä»ã®ãã¹ãŠã®ãŠãŒã¶ãŒã§ãé«éã§ããå¥ã®ããŒã¿æ§é ãå¿
èŠã§ããããšãããã£ãå Žåãããããç§»åããã®ãæãç°¡åã§ããã¹ã¿ãã¯ã¯çæ¹ã ãã§ã
çæ¹ã ããã远å ãšåé€ã䜿çšããå Žåã¯ãã¹ã¿ãã¯ãéžæããŸãããã®ã¹ã¿ã㯠C ++ã§ã¹ã¿ã㯠JavaãCïŒã€ã³ãç©ã¿éããããããŒã¿æ§é ã䜿çšããå€ãã®ã¢ã«ãŽãªãºã ããããŸããæåã«æãæµ®ãã¶ã®ã¯ã2ã¹ã¿ãã¯èšç®æ©ã§ããããã€ã¿ã¯ãŒãªã©ã®æ°å€ã¿ã¹ã¯ã¯ãã¹ã¿ãã¯ã䜿çšããŠè§£æ±ºã§ããŸãããã ããããããã²ãŒã ã§ãããã®ã¢ã«ãŽãªãºã ã䜿çšããããšã¯ãªãã§ãããããã ããå€ãã®å Žåãã²ãŒã ããŒã«ã¯ããŒã¿ã®è§£æãè¡ããããŒãµãŒã¯ã¹ã¿ãã¯ãããããŒã¿æ§é ãç©æ¥µçã«äœ¿çšããŠãèŠçŽ ãã¢ã®æ£ããçµã¿åãããä¿èšŒããŸããããŸããŸãªAIã¿ã€ããæ±ãå Žåãã¹ã¿ãã¯ãããããŒã¿æ§é ã¯ããã·ã¥ããŠã³ãªãŒãããã³ãšåŒã°ãããã·ã³ãã¡ããªãŒã«ãšã£ãŠéåžžã«äŸ¿å©ã§ããåŸ
ã¡è¡åã®ãã¡ããªãŒ-æåã«æ¥ã人ãæåã«åºã人ã
䞡端ã®ã¿ã远å ããã³åé€ããå Žåã¯ããã¥ãŒãŸãã¯åæ¹åãã¥ãŒã䜿çšããŸããC ++ã§ã¯ããã¥ãŒãŸãã¯dequeã§ããJavaã§ã¯ãQueueãŸãã¯Dequeã€ã³ã¿ãŒãã§ãŒã¹ã䜿çšã§ããŸããã©ã¡ããLinkedListã䜿çšããŠå®è£
ãããŸããCïŒã«ã¯Queueã¯ã©ã¹ããããŸãããçµã¿èŸŒã¿ã®Dequeã¯ãããŸãããéèŠãªã€ãã³ããæåã«çºçãããããããã以å€ã¯ãã¹ãŠé çªã«çºçããããå Žåã¯ãåªå
床ãã¥ãŒãéžæããŸããC ++ã§ã¯priority_queueãJavaã§ã¯PriorityQueueã§ããCïŒã§ã¯ãèªåã§å®è£
ããå¿
èŠããããŸããéç·åœ¢æ§é -ã¯ã€ãã¯æ€çŽ¢ã
èŠçŽ ã®å®å®ããã°ã«ãŒããäœæããåºæ¬çã«ä»»æã®æ€çŽ¢ãå®è¡ããå Žåãéç·åœ¢æ§é ã®ãããããéžæããå¿
èŠããããŸããããŒã¿ãã¢ãä¿åãããã®ãããã°ãåå¥ã®ããŒã¿ãå«ããã®ããããŸãããããã®ããã€ãã¯äŸ¿å©ãªåœ¢åŒã§ãœãŒããããä»ã¯ã³ã³ãã¥ãŒã¿ãŒã«ãšã£ãŠäŸ¿å©ãªé åºã§ãœãŒããããŸãããããã®ãã¹ãŠã®çµã¿åããã®ãªã¹ããäœæããããšãããšãå¥ã®èšäºãæžãå¿
èŠããããŸãïŒãŸãã¯åã®éšåãå床èªãããšãã§ããŸãïŒããªã³ã¯ãªã¹ã-é »ç¹ã«å€æŽãä¿æ
ã³ã³ããã®äžå€®ãé »ç¹ã«å€æŽãããªã¹ããé çªã«èµ°æ»ããå¿
èŠãããå Žåã¯ããªã³ã¯ãªã¹ãã䜿çšããŸãã C ++ã§ã¯ãlistãšåŒã°ããŸãã Javaããã³CïŒã§ã¯ãããã¯LinkedListã§ãããªã³ã¯ãªã¹ãã¯ãããŒã¿ãå
¥ã£ãŠããã°ããã§é åºãç¶æããå¿
èŠãããå Žåããã¢ã€ãã ã宿çã«äžŠã¹æ¿ãããç§»åãããããå¿
èŠãããå Žåã«æé©ãªã³ã³ããã§ãããããã«
é©åãªããŒã¿æ§é ãéžæãããšãã¢ã«ãŽãªãºã ã®é床ã«å€§ãã圱é¿ããŸããåºæ¬çãªããŒã¿æ§é ããã®é·æãšçæãçè§£ããããšã¯ãããããã¿ã¹ã¯ã«æãå¹ççãªæ§é ã䜿çšããã®ã«åœ¹ç«ã¡ãŸããæçµçã«ãããã詳现ã«ç ç©¶ããããšããå§ãããŸããã³ã³ãã¥ãŒã¿ãµã€ãšã³ã¹ãå°æ»ãã倧åŠã§ãããã®ããŒã¿æ§é ãå®å
šã«èª¿æ»ããã«ã¯ãéåžžæ°é±éããããŸããåºæ¬çãªããŒã¿æ§é ãçè§£ããé·æã®å€§åŠæ»åšãªãã«é©åãªããŒã¿æ§é ãéžæã§ããããšãé¡ã£ãŠããŸããããã§èšäºã¯çµããã§ããèªãã§ãããŠããããšãã