[A* ¾Ë°í¸®ÁòÀ» »ç¿ëÇÑ ±æÃ£±â]

- ¿ìÁ¾ÇÏ(deepseas(AT)sogang.ac.kr)

 


    - ¼Ò½ºÄÚµå [Down]

    - ÀÚ¹Ù Runtime [Down] : ¾ÖÇø´ÀÌ ½ÇÇàÀÌ ¾ÈµÉ °æ¿ì ¼³Ä¡, ¼³Ä¡ÈÄ ÀͽºÇ÷ξî Àç½ÇÇà

 

A* ¾Ë°í¸®ÁòÀÇ °³¿ä

A*(¿¡ÀÌ ½ºÅ¸) ¾Ë°í¸®ÁòÀº 1968³â¿¡ ¸¸µé¾îÁø °ÍÀ¸·Î, Ž»öÀ» ¼öÇàÇϴµ¥ ÀÖ¾î ¸Å¿ì È¿°úÀûÀÎ ¾Ë°í¸®ÁòÀÌ¸ç ´Ù¾çÇÑ Á¾·ùÀÇ ¹®Á¦µéÀ» ÇØ°áÇϴµ¥ »ç¿ëµÇ¾î ¿Ô´Ù. A* ¾Ë°í¸®ÁòÀº Ãâ¹ßÁöÁ¡¿¡¼­ ¸ñÇ¥ÁöÁ¡±îÁö °¡Àå ºñ¿ëÀÌ ³·Àº(º¸Åë °¡Àå ªÀº) °æ·Î¸¦ ã´Âµ¥, ´ÙÀ½°ú °°ÀÌ 'f = g + h' °è»ê°ªÀ» »ç¿ëÇÏ¿© ´ÙÀ½À¸·Î À̵¿ÇÒ °æ·Î¸¦ °áÁ¤ÇÑ´Ù.

g´Â goal(¸ñÇ¥)·Î¼­, ½ÃÀÛ³ëµå·ÎºÎÅÍ ÀÌ ³ëµå±îÁö ¿À´Â µ¥ µå´Â ºñ¿ëÀÌ´Ù. ½ÃÀÛ³ëµå¿¡¼­ ÀÌ À§Ä¡±îÁö ¿À´Â °æ·ÎµéÀº ¿©·¯ °³°¡ ÀÖÀ» ¼ö Àִµ¥, ÀÌ ³ëµå´Â ±× °æ·Îµé Áß Æ¯Á¤ÇÑ Çϳª¸¦ ÀǹÌÇÑ´Ù.

h´Â heuristic(ÈÞ¸®½ºÆ½)À¸·Î, ÀÌ ³ëµå¿¡¼­ ¸ñÇ¥±îÁö °¡´Âµ¥ µå´Â 'ÃßÁ¤µÈ' ºñ¿ëÀÌ´Ù. À̶§ h´Â ÈÞ¸®½ºÆ½À» ÀǹÌÇϸç, ÈÞ¸®½ºÆ½À̶õ '°æÇè¿¡ ±âÃÊÇÑ ÃßÃø'À» ¶æÇÑ´Ù. À̰ÍÀÌ 'ÃßÃøµÈ' ºñ¿ëÀÎ ÀÌÀ¯´Â ¸ñÇ¥±îÁöÀÇ ½ÇÁ¦ ºñ¿ëÀ» ¾ÆÁ÷Àº ¾ËÁö ¸øÇϱ⠶§¹®ÀÌ´Ù. ÈÞ¸®½ºÆ½À» °è»êÇϴµ¥ ¿©·¯ °¡Áö ¹æ¹ýÀÌ ÀÖÀ» ¼ö ÀÖÁö¸¸, ÀϹÝÀûÀ¸·Î ÇöÀç À§Ä¡¿¡¼­ ¸ñÇ¥±îÁöÀÇ ÀÏÁ÷¼± °Å¸®°ªÀ» »ç¿ëÇÑ´Ù.

f´Â fitness(ÀûÇÕµµ)·Î¼­, g¿Í hÀÇ ÇÕÀ̰í ÀÌ ³ëµå¸¦ °ÅÃÄ °¡´Â °æ·ÎÀÇ ºñ¿ë¿¡ ´ëÇÑ ÃÖ¼±ÀÇ ÃßÃøÀ» ÀǹÌÇÑ´Ù. f°ªÀÌ ³·À»¼ö·Ï ÀÌ °æ·Î°¡ ÃÖ´Ü °æ·ÎÀÏ °¡´É¼ºÀÌ Å©´Ù.

ÇöÀçÀ§Ä¡¿¡¼­ ´ÙÀ½ÀÇ ¾î¶² ³ëµå·Î À̵¿ÇÒ °ÍÀΰ¡¸¦ °áÁ¤ÇÏ´Â ¹æ¹ýÀº ´ÙÀ½°ú °°´Ù. ÇöÀçÀ§Ä¡¿¡ ¿¬°áµÈ ´ÙÀ½ ³ëµå°¡ ¿©·¯°³ÀÏ °æ¿ì, °¢°¢ÀÇ ´ÙÀ½ ³ëµå¸¶´Ù ½ÃÀÛÀ§Ä¡¿¡¼­ ´ÙÀ½ ³ëµå±îÁöÀÇ °Å¸®¿Í ±× ³ëµå¿¡¼­ ¸ñÇ¥±îÁöÀÇ ÃßÁ¤µÈ ÈÞ¸®½ºÆ½ °ªÀ» ´õÇÑ f°ªµéÀ» °è»êÇÏ¿©, f°ªÀÌ °¡Àå ÀÛÀº ³ëµåÂÊÀ¸·Î À̵¿ÇÏ´Â °ÍÀÌ ¸ñÇ¥±îÁöÀÇ °¡Àå ªÀº °æ·Î°¡ µÉ °¡´É¼ºÀÌ ³ô´Ù. ÀÌ·¸°Ô f°ªÀÌ °¡Àå ÀÛÀº ³ëµåµéÀ» ¼±ÅÃÇÏ¿© Ž»öÀ» ¼öÇàÇÏ´Ù ¸ñÇ¥³ëµå¿¡ µµÂøÇϸé Ž»öÀ» Á¾·áÇÑ´Ù.

 

A* ¾Ë°í¸®ÁòÀÇ ¿¹

¾Æ·¡ ±×¸²°ú °°ÀÌ A* ¾Ë°í¸®ÁòÀ» »ç¿ëÇÏ¿© Arad¿¡¼­ Bucharest±îÁöÀÇ °¡Àå ªÀº °æ·Î¸¦ ±¸ÇÏ´Â ¿¹¸¦ »ìÆìº¸ÀÚ

À§ÀÇ ±×¸²Àº °¢ µµ½ÃµéÀÇ À§Ä¡¸¦ ³ªÅ¸³½ ÁöµµÀÌ´Ù. °¢ µµ½Ã¸¦ ¿¬°áÇÏ´Â ¼±ÀÇ ¼ýÀÚ´Â µµ½Ã»çÀÌÀÇ °Å¸®¸¦ ¶æÇÑ´Ù. ¿À¸¥ÂÊ Ç¥´Â °¢ µµ½Ã¿¡¼­ºÎÅÍ Bucharest±îÁöÀÇ Á÷¼±°Å¸®¸¦ ³ªÅ¸³»´Âµ¥ ¿©±â¼­´Â ÈÞ¸®½ºÆ½ °ªÀ¸·Î ¾²À̰í ÀÖ´Ù.

óÀ½ Arad¿¡¼­ °¥ ¼ö ÀÖ´Â µµ½Ã´Â À§ÀÇ ±×¸²Ã³·³ Sibiu, Timisoara, Zerind ¼¼ µµ½Ã°¡ Àִµ¥, °¢°¢ 'f = g + h' ½ÄÀ» »ç¿ëÇÏ¿© f°ªÀ» ±¸Çغ¸ÀÚ. SibiuÀÇ °æ¿ì g´Â Arad¿¡¼­ Sibiu±îÁöÀÇ °Å¸®À̹ǷΠ140À̰í, h´Â Bucharest±îÁöÀÇ Á÷¼±°Å¸®¸¦ ÈÞ¸®½ºÆ½À¸·Î »ç¿ëÇϹǷΠǥ¿¡¼­¿Í °°ÀÌ 253ÀÌ´Ù. ±×·¯¹Ç·Î f = 140 + 253 = 393ÀÌ µÈ´Ù.

¸¶Âù°¡Áö·Î ³ª¸ÓÁö µµ½ÃÀÇ f°ªÀº °¢°¢ 447, 449°¡ µÇ´Âµ¥, ÀÌ Áß f°ª, Áï ÇöÀç±îÁöÀÇ °Å¸®¿Í ÇöÀçÀ§Ä¡¿¡¼­ ¸ñÇ¥±îÁöÀÇ °Å¸®°¡ °¡Àå ÀÛÀ» °Í °°Àº °ªÀÌ °¡Àå ÀÛÀº µµ½Ã´Â SibiuÀ̹ǷΠ±× ÂÊÀ¸·Î À̵¿À» ÇÏ´Â °ÍÀÌ °¡Àå À¯¸®ÇÒ °ÍÀÌ´Ù.

ÀÌ·¸°Ô f°ªÀÌ °¡Àå ÀÛÀº °æ·Î¸¦ µû¶ó Ž»öÀ» ¼öÇàÇϸé Bucharest±îÁöÀÇ °¡Àå ªÀº °æ·Î¸¦ ±¸ÇÒ ¼ö ÀÖ´Ù.

 

A* ¾Ë°í¸®ÁòÀ» »ç¿ëÇÑ ±æÃ£±â ¹æ¹ý

¿©·¯ °¡Áö Ž»ö ¾Ë°í¸®Áò Áß °¡Àå È¿À²ÀûÀÎ A* ¾Ë°í¸®ÁòÀº ¿©·¯ ¹®Á¦ÇذáÀ» À§ÇØ »ç¿ëµÇ´Âµ¥, ƯÈ÷ °ÔÀÓ¿¡¼­¿Í °°ÀÌ ¿©·¯ Àå¾Ö¹°ÀÌ ÀÖ´Â ¸Ê»ó¿¡¼­ ¸ñÇ¥À§Ä¡±îÁöÀÇ °æ·Î¸¦ ±¸Çϴµ¥ È¿°úÀûÀ¸·Î »ç¿ëµÇ¾î Áø´Ù.

±æÃ£±â ¹®Á¦¿¡¼­ ÇϳªÀÇ »óÅÂ(³ëµå)´Â °ÔÀÓ¼¼°è¿¡¼­ À¯´ÖÀÌ Â÷ÁöÇϰí Àִ ƯÁ¤ÇÑ À§Ä¡·Î ±¸¼ºµÇ¸ç, ÀÎÁ¢ÇÑ »óÅ´ À¯´ÖÀÌ Á÷Á¢ À̵¿ÇÒ ¼ö ÀÖ´Â ÀÎÁ¢ÇÑ À§Ä¡·Î ±¸¼ºµÈ´Ù. ÇöÀç »óÅ¿¡¼­ ¾ÆÁ÷ Á¶»çÇÏÁö ¾ÊÀº »óŵé Áß °¡Àå À¯¸ÁÇÑ »óŸ¦ Á¶»çÇÏ´Â °úÁ¤À» ¹Ýº¹ÇÑ´Ù. À̶§ ±× »óŰ¡ ¸ñÇ¥ÀÌ¸é ±æÃ£±â´Â ³¡³ª°í, ±×·¸Áö ¾ÊÀ¸¸é ±× »óÅÂÀÇ ÀÎÁ¢ÇÑ »óŸ¦ Á¶»çÇØ ³ª°£´Ù.

Á» ´õ ±¸Ã¼ÀûÀ¸·Î »ìÆìº¸¸é ´ÙÀ½°ú °°´Ù.

A* ¾Ë°í¸®ÁòÀº µÎ Á¾·ùÀÇ »óÅ ¸ñ·ÏÀ» °ü¸®ÇÑ´Ù. Çϳª´Â ¾ÆÁ÷ Á¶»çÇÏÁö ¾ÊÀº »óŵéÀ» ´ãÀº '¿­¸°¸ñ·Ï(Open List)'À̰í, ¶Ç Çϳª´Â ÀÌ¹Ì Á¶»çÇÑ »óŵéÀ» ´ãÀº '´ÝÈù¸ñ·Ï(Closed List)'ÀÌ´Ù. ¾Ë°í¸®ÁòÀÇ ½ÃÀÛ¿¡¼­ ´ÝÈù ¸ñ·ÏÀº ºñ¾î ÀÖÀ¸¸ç, ¿­¸° ¸ñ·ÏÀº ¿ÀÁ÷ ½ÃÀÛ »óÅÂ(À¯´ÖÀÇ Ã³À½ À§Ä¡)¸¸À» °¡Áö°í ÀÖ´Ù.

°¢°¢ÀÇ ¹Ýº¹¿¡¼­ ¾Ë°í¸®ÁòÀº ¿­¸° ¸ñ·ÏÀÇ »óŵé Áß °¡Àå À¯¸ÁÇÑ °ÍÀ» °¡Á®¿Â´Ù(À̶§ ¿­¸° ¸ñ·Ï¿¡¼­´Â Á¦°ÅµÈ´Ù). ±× »óŰ¡ ¸ñÇ¥°¡ ¾Æ´Ï¸é ÀÌ¿ôÇÑ À§Ä¡µé·Î È®ÀåÀ» ÇÑ´Ù. ÀÌ¿ô À§Ä¡µéÀÌ »õ·Î¿î °ÍÀÌ¸é ¿­¸° ¸ñ·Ï¿¡ ³Ö°í, ÀÌ¹Ì ¿­¸° ¸ñ·Ï¿¡ ÀÖ°í ±×°ÍÀÇ °æ·Î°¡ ÀÌÀü °Íº¸´Ù ºñ¿ëÀÌ ´õ ½Î¸é ±× À§Ä¡ÀÇ Á¤º¸¸¦ °»½ÅÇÑ´Ù.

¹Ý´ë·Î, ¸¸ÀÏ ±× À§Ä¡µéÀÌ ÀÌ¹Ì ´ÝÈù ¸ñ·Ï¿¡ ÀÖ´Â °ÍÀ̸é ÀÌ¹Ì Á¶»ç¸¦ ¸¶Ä£ °ÍÀ̹ǷΠ±×³É ¹«½ÃÇÑ´Ù. ¸ñÇ¥¿¡ µµ´ÞÇϱâ Àü¿¡ ¿­¸° ¸ñ·ÏÀÌ ºñÀÌ°Ô µÇ¸é ½ÃÀÛ À§Ä¡·ÎºÎÅÍ ¸ñÇ¥¿¡ µµ´ÞÇÏ´Â °æ·Î°¡ Á¸ÀçÇÏÁö ¾Ê´Â °ÍÀÌ´Ù.

 

A* ¾Ë°í¸®ÁòÀ» »ç¿ëÇÑ ±æÃ£±âÀÇ ¿¹

´ÙÀ½°ú °°ÀÌ Àå¾Ö¹°ÀÌ ÀÖ´Â ¸Ê»ó¿¡¼­ ½ÇÁ¦·Î A* ¾Ë°í¸®ÁòÀ» »ç¿ëÇÏ¿© ¸ñÇ¥±îÁöÀÇ °¡Àå ªÀº °æ·Î¸¦ ã´Â ¿¹¸¦ »ìÆìº¸ÀÚ. ÃÊ·Ï»öÀº ½ÃÀÛÀ§Ä¡, »¡°­»öÀº ¸ñÇ¥ À§Ä¡À̰í, ÆÄ¶õ»öÀº Àå¾Ö¹°·Î¼­ Áö³ª°¥ ¼ö ¾ø´Â À§Ä¡ÀÌ´Ù.

óÀ½ ½ÃÀÛÀ§Ä¡¿¡¼­ ÀÌ¿ô³ëµéµé·Î È®ÀåÇÏ¸ç °¢ ³ëµå¸¶´Ù f°ªÀ» °è»êÇÑ´Ù. »ç°¢Çü °¡¿îµ¥ÀÇ ±×¸²Àº ÀÌ »óÅ¿¡¼­ ÀÌÀü »óŸ¦ °¡¸£Å°´Â °ÍÀ¸·Î Á÷¼±¹æÇâÀÇ »óŰ¡ ¹Ù·Î ÀÌÀüÀÇ Áö³ª¿Ô´ø »óÅÂÀÌ´Ù. °¢ »óŸ¶´Ù ÀÌÀü »óÅÂÀÇ À§Ä¡Á¤º¸µµ ÀúÀåÇϰí ÀÖ¾î¾ß ÇÑ´Ù.

¿­¸° »óŵé Áß(³ì»öÅ׵θ®) f°ªÀÌ °¡Àå ÀÛÀº »óÅ·ΠÀ̵¿ÇÑ´Ù.

¾Æ·¡³ª À§³ª f°ªÀÌ ¶È°°À¸¹Ç·Î ¾î´ÀÂÊÀ¸·Î È®ÀåÇØµµ »ó°ü¾øÁö¸¸ ¿©±â¼± ¹ØÀ¸·Î À̵¿ÇÏ¿´´Ù. ±×·± ´ÙÀ½ ÀÎÁ¢ÇÑ »óŵéÀÇ f°ªÀ» °è»êÇÑ´Ù. À§ÀÇ ¼¼ »óÅ´ ÀÌ¹Ì ¿­¸°»óÅ¿¡ ÀÖÀ¸¹Ç·Î °ªÀÌ ¹Ù²î¾ú³ª¸¸ »ìÆìº¸°í, ¹ØÀÇ µÎ »óÅ´ »õ·Î¿î »óÅÂÀ̷̹Πf°ªÀ» °è»êÇÑ ÈÄ ¿­¸°»óÅ¿¡ Áý¾î³Ö´Â´Ù.

ÀÌ·± ¹æ½ÄÀ¸·Î f°ªÀÌ °¡Àå ÀÛÀº »óŵé·Î °è¼Ó È®ÀåÀ» ÇØ ³ª°£´Ù. ÆÄ¶õ»ö Å׵θ®´Â ´ÝÈù »óŸ¦ °¡¸£Å°´Â °ÍÀ¸·Î ÀÌ¹Ì Áö³ª¿Ô´ø »óŵéÀ» ÀǹÌÇÑ´Ù. ±×¸²°ú °°ÀÌ °á±¹ ¸ñÇ¥»óÅ¿¡ µµ´ÞÇÏ¿´´Ù.

¸ñÇ¥»óÅ¿¡ µµ´ÞÇÑ ´ÙÀ½¿¡´Â »óŸ¶´Ù ÀúÀåµÇ¾î ÀÖ´Â ÀÌÀü »óÅÂÀÇ °æ·Î¸¦ µû¶ó ½ÃÀÛÀ§Ä¡ºÎÅÍ ¸ñÇ¥À§Ä¡±îÁöÀÇ °æ·Î¸¦ ±¸ÇÑ´Ù. ÀÌ °æ·Î°¡ ¸ñÇ¥±îÁöÀÇ °¡Àå ªÀº °æ·Î°¡ µÇ°í ¾Ë°í¸®ÁòÀº Á¾·áµÈ´Ù.

 

[Âü°íÀÚ·á]

    - Game Programming Gems 1±Ç, Á¤º¸¹®È­»ç, p.340 ~ p.351
    - AI Game Programming Wisdom, Á¤º¸¹®È­»ç, p.189 ~ p.199
    - DirectX¸¦ ÀÌ¿ëÇÏ¿© °ÔÀÓ¸¸µé±â, Á¤¿îö, °¡³²»ç, p.297 ~ p.318
    - Artificial Intelligence A Modern Approach, Stuart Russell, Prentice Hall, p.92 ~ p.101
    - A* Pathfinding for Beginners, http://www.policyalmanac.org/games/aStarTutorial.htm

 

[1]