|
[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
|