2012-07-06 74 views
8

我需要实施扫雷计算器。我已经开始实施基于规则的代理。 我已经实施了一些规则。我有一个启发式功能,用于为当前单元格(有关周围单元格的信息)选择最佳匹配规则。因此,对于每个选定的细胞,它可以决定让8个环境细胞打开它们,标记它们或不做任何事情。我的意思是。此时,代理人将输入一些显示的细胞并决定如何处理周围的细胞(目前,代理人不知道,如何确定要处理的细胞)。AI扫雷计划

我的问题是,执行什么算法来决定要处理哪个单元?

假设,对于第一步行动,代理将根据第一步的某些规则显示角落单元格(或其他角色单元格)。之后要做什么?

我知道我需要实施某种搜索。我知道很多搜索算法(BFS,DFS,A-STAR和其他),这不是问题,我只是不明白我在这里如何使用这些搜索。

我需要在人工智能原理中实现它:一种现代的方法。

回答

8

BFS,DFS和A *在这里可能不合适。如果您在完全了解世界的情况下尝试制定行动方案,那么这些算法就很好。在扫雷中,你没有这种知识。

相反,我会建议尝试使用本书第三部分的一些逻辑推理技术,特别是使用SAT或第10章中的技术。这将使您得出关于哪些地雷使用“以下八个方格之一是一个矿,下面八个方格中的两个是矿。“在每一步执行此操作将帮助您确定地雷的位置,或者在继续之前认识到您必须猜测。

希望这会有所帮助!

+0

我已经在规则中实现了一些这些技术,我实现了某些方法:treatCell(i_CellToTreat),它匹配最佳规则并执行它。我只是不知道按照何种顺序处理已展开的细胞,以及下一步要选择处理哪些细胞,目前它只是在整个透明细胞集合中进行迭代并对其进行处理。它在小型电路板上工作得很好,但我需要实现一些更好的算法。 – Nikita 2012-07-07 00:01:47