为什么A *算法的å¯å‘å¼ä¸å¯æŽ¥å—?

时间:2013-12-13 06:49:27

标签: algorithm search artificial-intelligence a-star heuristics

我正在edx.org通过CS 188å‘公众开放。现在我必须为A *æœç´¢å¼€å‘一个å¯å‘å¼ç®—法æ¥åƒæŽ‰æ‰€æœ‰çš„颗粒,如下所示: Pacman

我确信å¯è¡Œçš„å¯å‘å¼ï¼ˆå› ä¸ºå¯æŽ¥å—和一致)是这样的:

  • å°†å为hçš„å¯å‘å¼ç´¯åŠ å™¨åˆå§‹åŒ–为0
  • åˆå§‹åŒ–pos为pacman的当å‰ä½ç½®
  • 虽然ä¸åƒé¢—粒:
    • 使用astaræœç´¢ï¼ˆæ›¼å“ˆé¡¿è·ç¦»ä½œä¸ºå¯å‘å¼ï¼‰ä»Žpos获å–最近的颗粒
    • å°†è·ç¦»æ·»åŠ åˆ°h
    • 从颗粒中å–出颗粒
    • å°†pos设置为颗粒的ä½ç½®

我还缓存先å‰è®¡ç®—çš„è·ç¦»ï¼Œå› æ­¤å¦‚果在å¦ä¸€ä¸ªçŠ¶æ€è®¡ç®—之å‰å·²ç»å®Œæˆï¼Œåˆ™ä¸è¿›è¡Œå¯»æ‰¾æœ€è¿‘的沉淀的astaræœç´¢ã€‚它能够éžå¸¸å¿«é€Ÿåœ°è§£å†³é—®é¢˜ï¼Œå¹¶ä¸”结果是最佳的。

当我在自动编程器中使用此算法时,它未通过å¯æŽ¥å—性测试。

别担心,我ä¸æ˜¯è¦æ±‚解决问题,åªæ˜¯ä¸ºä»€ä¹ˆæˆ‘ç›®å‰çš„解决方案ä¸è¢«å…许?当我在脑海中的图片中看到这个例å­æ—¶ï¼Œå¯å‘å¼ç®—法永远ä¸ä¼šè¿‡é«˜ä¼°è®¡æˆæœ¬ã€‚

所以,如果有人能够ç†è§£è¿™ä¸€ç‚¹ï¼Œå¹¶æœ‰ä»»ä½•æƒ³æ³•ï¼Œæ‚¨çš„æ„è§éžå¸¸æ„Ÿè°¢ï¼

2 个答案:

答案 0 :(得分:11)

A *çš„å¯å‘å¼éœ€è¦æ供一个ä¸è¶…过最佳æˆæœ¬çš„数字。你的å¯å‘å¼ç®—法是一ç§çœ‹ä¼¼åˆç†çš„贪婪解决方案,并ä¸èƒ½ä¿è¯è¿™ä¸€ç‚¹ã€‚å‡è®¾æœ‰ä¸€è¡Œè¯ä¸¸ï¼Œè€Œä¸”这个è¯å“çš„pac-man略微å离中心。最便宜的解决方案是找出最接近线的末端,将所有颗粒åƒåˆ°è¯¥çº¿çš„末端,然åŽæ²¿å¦ä¸€ä¸ªæ–¹å‘移动以åƒæŽ‰æ‰€æœ‰å…¶ä»–颗粒而ä¸å¿…在线的较长åŠéƒ¨åˆ†å转。

你的贪婪å¯å‘å¼é¦–先移动到最é è¿‘太空人的那个颗粒,这å¯èƒ½ä¸æ˜¯è·ç¦»æœ€çŸ­çš„一侧,所以在这ç§æƒ…况下它å¯èƒ½ä¸ä¼šè¿”回ä¸è¶…过最优æˆæœ¬çš„æˆæœ¬ - 它会返回æˆæœ¬ä¸€ç§å¯èƒ½ä¸æ˜¯æœ€ä½³çš„å¯èƒ½è§£å†³æ–¹æ¡ˆã€‚

答案 1 :(得分:1)

以下是设置适用于您的问题的å¯å‘å¼æ–¹æ³•ã€‚首先,如果您的目标是以最å°è·ç¦»é£Ÿç”¨æ‰€æœ‰é¢—粒,那么您的解决方案太贪婪,无法实现å¯è¡Œçš„解决方案。以下是é‡æ–°è®¾è®¡å¯å‘å¼çš„方法: -

目标:以最å°è·¯å¾„长度食用所有颗粒。

å¯å‘å¼ä¼°ç®—:

1>使用A *独立计算从当å‰ä½ç½®åˆ°é¢—粒的所有最短路径。

2>æˆæœ¬å‡½æ•°:(所有未访问的颗粒与当å‰æœ€çŸ­è·¯å¾„的总和)* 2 +从起始状æ€çš„总è·ç¦»ã€‚

æˆæœ¬å‡½æ•°æ˜¯ä¸Šé™ã€‚

注æ„:å¯ä»¥æœ‰æ›´æœ‰æ•ˆçš„方法æ¥è®¡ç®—æ¯ä¸ªçŠ¶æ€ä¸‹æœªåƒé¢—粒的最短路径。需è¦ä¸€äº›ç ”究。