
ããŒã1.ç·åœ¢æ§é
é å
1ã€ã®ãªããžã§ã¯ããå¿ èŠãªå Žåã1ã€ã®ãªããžã§ã¯ããäœæããŸãã è€æ°ã®ãªããžã§ã¯ããå¿ èŠãªå Žåã¯ãããã€ãã®ãªãã·ã§ã³ããéžæã§ããŸãã ã³ãŒãã®æ°äººã次ã®ããã«æžããŠããã®ãèŠãŸããïŒ
// int score1 = 0; int score2 = 0; int score3 = 0; int score4 = 0; int score5 = 0;
ããã«ããã5ã€ã®ã¬ã³ãŒãã®å€ãåŸãããŸãã ãã®ã¡ãœããã¯ã50åãŸãã¯100åã®ãªããžã§ã¯ããå¿ èŠã«ãªããŸã§ããŸãæ©èœããŸãã åã ã®ãªããžã§ã¯ããäœæãã代ããã«ãé åã䜿çšã§ããŸãã
// const int NUM_HIGH_SCORES = 5; int highScore[NUM_HIGH_SCORES] = {0};
次ã®ããã«ã5ã€ã®èŠçŽ ã®ãããã¡ãŒãäœæãããŸãã

é åã®ã€ã³ããã¯ã¹ã¯ãŒãããå§ãŸãããšã«æ³šæããŠãã ããã é åã«5ã€ã®èŠçŽ ãããå Žåããããã®èŠçŽ ã®ã€ã³ããã¯ã¹ã¯0ã4ã«ãªããŸãã
åçŽãªé åã®æ¬ ç¹
äžå®æ°ã®ãªããžã§ã¯ããå¿ èŠãªå Žåãé åã¯éåžžã«é©ããŠããŸãã ããããå¥ã®èŠçŽ ãé åã«è¿œå ããå¿ èŠããããšããŸãã åçŽãªé åã§ã¯ããããè¡ãããšã¯ã§ããŸããã é åããèŠçŽ ãåé€ããå¿ èŠããããšããŸãããã åçŽãªé åã§ã¯ããããäžå¯èœã§ãã 1ã€ã®æ°éã®èŠçŽ ã«é¢é£ä»ããããŸãã ãµã€ãºãå€æŽã§ããé åãå¿ èŠã§ãã ãããã£ãŠãéžæããæ¹ãè¯ã...
åçé å
åçé åã¯ããµã€ãºãå€æŽã§ããé åã§ãã æšæºã©ã€ãã©ãªã®äž»èŠãªããã°ã©ãã³ã°èšèªã¯ãåçé åããµããŒãããŠããŸãã C ++ã§ã¯ãããã¯vectorã§ãã Javaã§ã¯ãããã¯ArrayListã§ã ã CïŒã§ã¯ãããã¯Listã§ãã ãããã¯ãã¹ãŠåçé åã§ãã ã³ã¢ã§ã¯ãåçé åã¯åçŽãªé åã§ããã2ã€ã®è¿œå ããŒã¿ãããã¯ããããŸãã åçŽãªé åã®å®éã®ãµã€ãºãšãåçŽãªé åã«å®éã«æ ŒçŽã§ããããŒã¿ã®éãæ ŒçŽããŸãã åçé åã¯æ¬¡ã®ããã«ãªããŸãã
// sometype *internalArray; unsigned int currentLength; unsigned int maxCapacity;
internalArrayèŠçŽ ã¯ãåçã«å²ãåœãŠããããããã¡ãæããŸãã æå¹ãªãããã¡é åã¯maxCapacityã«ä¿åãããŸã ã 䜿çšãããèŠçŽ ã®æ°ã¯currentLengthã§æå®ãããŸã ã
åçé åã«è¿œå ãã
ãªããžã§ã¯ããåçé åã«è¿œå ãããšãããã€ãã®ã¢ã¯ã·ã§ã³ãçºçããŸãã é åã¯ã©ã¹ã¯ãååãªã¹ããŒã¹ããããã©ããã確èªããŸãã currentLength <maxCapacityã®å Žåãé åã«è¿œå ããäœå°ããããŸãã ååãªã¹ããŒã¹ããªãå Žåããã倧ããªå éšé åãé 眮ããããã¹ãŠãæ°ããå éšé åã«ã³ããŒãããŸãã maxCapacityå€ã¯ãæ°ããæ¡åŒµå€ã«å¢å ããŸãã ååãªã¹ããŒã¹ãããå Žåãæ°ããèŠçŽ ãè¿œå ãããŸãã æ¿å ¥ãã€ã³ãã®åŸã®åèŠçŽ ã¯ãå éšé åã®é£æ¥ããå Žæã«ã³ããŒããå¿ èŠããããŸããã³ããŒãå®äºãããšããã€ãã¯æ°ãããªããžã§ã¯ãã§åãããã currentLengthã®å€ã1ã€å¢ããŸãã

æ¿å ¥ãã€ã³ãã®åŸã«åãªããžã§ã¯ãã移åããå¿ èŠããããããæåŸã«èŠçŽ ãè¿œå ããããšããå§ãããŸãã ãã®å ŽåããŒãèŠçŽ ã移åããå¿ èŠããããŸãïŒãã ããå éšé åã¯åŒãç¶ãæ¡åŒµããå¿ èŠããããŸãïŒã åçé åã¯ãèŠçŽ ãäžå€®ã§ã¯ãªãæåŸã«è¿œå ãããšãã«æé©ã«æ©èœããŸãã
ãªããžã§ã¯ããåçé åã«è¿œå ãããšãåãªããžã§ã¯ãã¯ã¡ã¢ãªå ã移åã§ããŸãã CãC ++ãªã©ã®èšèªã§ã¯ãåçé åã«è¿œå ãããšãé åãªããžã§ã¯ããžã®ãã¹ãŠã®ãã€ã³ã¿ãŒãç¡å¹ã«ãªããŸãã
åçé åããåé€ãã
ãªããžã§ã¯ããåé€ããå Žåãè¿œå ãããããäœæ¥ãå°ãªããŠæžã¿ãŸãã ãŸãããªããžã§ã¯ãèªäœãç Žæ£ãããŸãã 第äºã«ããã®ãã€ã³ãã®åŸã®åãªããžã§ã¯ãã¯1ã€ã®èŠçŽ ã ãã·ãããããŸãã æåŸã«ãcurrentLengthã¯1ã€æžå°ããŸãã

é åã®æ«å°Ÿã«è¿œå ããå Žåãšåæ§ã«ãé åã®æ«å°Ÿããåé€ããã®ãæé©ã§ããããã¯ããªããžã§ã¯ãããŒã移åããå¿ èŠãããããã§ãã ãŸããå éšé åã®ãµã€ãºãå°ããããŠãµã€ãºãå°ããããå¿ èŠããªãããšã泚ç®ã«å€ããŸãã åŸã§ãªããžã§ã¯ããè¿œå ããå Žåãå²ãåœãŠãããã¹ããŒã¹ã¯åããŸãŸã§ããå ŽåããããŸãã
åçé åãããªããžã§ã¯ããåé€ãããšãåé€ãããèŠçŽ ã®åŸã®ãã¹ãŠã®ã¡ã¢ãªããªãã»ãããããŸãã CãC ++ãªã©ã®èšèªã§ã¯ãåçé åããåé€ãããšãåé€ãããé åã®åŸã®ãã¹ãŠãžã®ãã€ã³ã¿ãŒãç¡å¹ã«ãªããŸãã
åçé åã®æ¬ ç¹
é åãéåžžã«å€§ãããå€ãã®å Žåããªããžã§ã¯ããè¿œå ããã³åé€ããå¿ èŠããããšããŸãã ããã«ããªããžã§ã¯ãã¯ä»ã®å Žæã«ã³ããŒãããããšãå€ããå€ãã®ãã€ã³ã¿ãŒãç¡å¹ã«ãªããŸãã åçé åã®éäžã§é »ç¹ã«å€æŽããå¿ èŠãããå Žåã¯ãããã«é©ããç·åœ¢ããŒã¿æ§é ã®ã¿ã€ãããããŸã...
ãªã³ã¯ãªã¹ã
é åã¯ã¡ã¢ãªã®é£ç¶ãããã¯ã§ãããåèŠçŽ ã¯æ¬¡ãã次ãžãšé 眮ãããŸãã ãªã³ã¯ãªã¹ãã¯ããªããžã§ã¯ãã®ãã§ãŒã³ã§ãã ãªã³ã¯ãªã¹ãã¯ãäž»èŠãªããã°ã©ãã³ã°èšèªã®æšæºã©ã€ãã©ãªã«ãååšããŸãã C ++ã§ã¯ããããã¯listãšåŒã°ããŸã ã Javaããã³CïŒã§ã¯ãããã¯LinkedListã§ãã ãªã³ã¯ãªã¹ãã¯ãäžé£ã®ããŒãã§æ§æãããŸãã åããŒãã¯æ¬¡ã®ããã«ãªããŸãã
// sometype data; Node* next;
ãã®ã¿ã€ãã®æ§é ãäœæããŸãã

åããŒãã¯æ¬¡ã®ãã®ã«æ¥ç¶ããŸãã
ãªã³ã¯ãªã¹ãã«è¿œå ãã
ãªã³ã¯ãªã¹ããžã®ãªããžã§ã¯ãã®è¿œå ã¯ãæ°ããããŒãã®äœæããå§ãŸããŸãã ããŒã¿ã¯ããŒãã®å éšã«ã³ããŒãããŸãã 次ã«ãæ¿å ¥ãã€ã³ãããããŸãã 次ã®ãªããžã§ã¯ããžã®æ°ããããŒãã®ãã€ã³ã¿ãŒã¯ããã®åŸã®æ¬¡ã®ããŒããæãããã«å€æŽãããŸãã æåŸã«ãæ°ããããŒãã®åã«ããããŒãã¯ãæ°ããããŒããæãããã«ãã€ã³ã¿ãŒãå€æŽããŸãã

ãªã³ã¯ãªã¹ãããåé€ãã
ãªã³ã¯ãªã¹ããããªããžã§ã¯ããåé€ããããšãããŒãã¯åé€ãããããŒãã®åã«ãªããŸãã åé€ããããªããžã§ã¯ãã®æ¬¡ã®ããŒããæãããã«å€æŽãããŸãã ãã®åŸãåé€ããããªããžã§ã¯ãã¯å®å šã«æ¶å»ã§ããŸãã

ãªã³ã¯ãªã¹ãã®å©ç¹
ãªã³ã¯ãªã¹ãã®æ倧ã®å©ç¹ã¯ããªã¹ããžã®ãªããžã§ã¯ãã®è¿œå ãšåé€ã§ãã ãªã¹ãã®äžå€®ãå€æŽããã®ã¯éåžžã«é«éã§ãã åçé åã¯çè«çã«åèŠçŽ ã®ãªãã»ãããåŒãèµ·ããå¯èœæ§ãããããªã³ã¯ãªã¹ãã¯ä»ã®ãã¹ãŠã®ãªããžã§ã¯ãããã®å Žæã«ä¿æããããšã«æ³šæããŠãã ããã
ãªã³ã¯ããããªã¹ãã®æ¬ ç¹
åçé åã¯ã¡ã¢ãªã®é£ç¶ãããã¯ã§ããããšãæãåºããŠãã ããã
é åã®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æšãããã³ä»ã®å€ãããããŸãã
ããªãŒçè«ã¯äŸ¿å©ã§ã¯ãããŸãããã¹ãã¬ãŒãžã¹ããŒã¹ãšã¢ã¯ã»ã¹é床ãšããæ·±å»ãªæ¬ é¥ã«æ©ãŸãããŠããŸãã ããªãŒãä¿åããæè¯ã®æ¹æ³ã¯äœã§ããïŒ æãç°¡åãªæ¹æ³ã¯ããªã³ã¯ããããªã¹ããäœæããããšã§ã;ããã¯ææªã§ããããšãå€æããŸããã ãã©ã³ã¹ã®åãããã€ããªããªãŒãæ§ç¯ããå¿ èŠããããšããŸãã 以äžã®ããŒã¿æ§é ããå§ããŸãã
// Node* left; Node* right; sometype data;
ç°¡åã§ãã ããã§ã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ã§ãããªã³ã¯ãªã¹ãã¯ãããŒã¿ãå ¥ã£ãŠããã°ããã§é åºãç¶æããå¿ èŠãããå Žåããã¢ã€ãã ãå®æçã«äžŠã¹æ¿ããã移åãããããå¿ èŠãããå Žåã«æé©ãªã³ã³ããã§ãã
ãããã«
é©åãªããŒã¿æ§é ãéžæãããšãã¢ã«ãŽãªãºã ã®é床ã«å€§ãã圱é¿ããŸããåºæ¬çãªããŒã¿æ§é ããã®é·æãšçæãç解ããããšã¯ãããããã¿ã¹ã¯ã«æãå¹ççãªæ§é ã䜿çšããã®ã«åœ¹ç«ã¡ãŸããæçµçã«ãããã詳现ã«ç 究ããããšããå§ãããŸããã³ã³ãã¥ãŒã¿ãµã€ãšã³ã¹ãå°æ»ãã倧åŠã§ãããã®ããŒã¿æ§é ãå®å šã«èª¿æ»ããã«ã¯ãéåžžæ°é±éããããŸããåºæ¬çãªããŒã¿æ§é ãç解ããé·æã®å€§åŠæ»åšãªãã«é©åãªããŒã¿æ§é ãéžæã§ããããšãé¡ã£ãŠããŸãã
ããã§èšäºã¯çµããã§ããèªãã§ãããŠããããšãã