新别墅Acm解决方案策略

时间:2012-02-06 14:12:10

标签: c++ algorithm graph graph-algorithm

我正在尝试解决此ACM问题The New Villa

我并没有弄清楚如何解决这个问题肯定是它的图形问题,但门和房间有切换到其他房间非常混乱,以制定一个通用的解决方案。有些人可以帮我定义这个问题的策略。 如果你知道任何一个,那么我想要一些ACM问题的讨论论坛,请分享。

由于 A.S

1 个答案:

答案 0 :(得分:2)

这似乎是各州的寻路问题。

您可以使用大小为n的二进制向量+一个标识符来表示每个顶点 - 您当前所在的房间[n是房间数量。]

G=(V,E)其中V = {all binary vectors of size n and a recored for which room you are in}E = {(u,v) | you can switch from binary vector u to v by clicking a button in the room you are in, or move to adjacent lights on room }

现在您只需要在可能的路径上运行搜索算法。

可能的搜索算法:

  1. BFS - 编程最简单,但运行时间最慢
  2. bi - directional BFS - 因为只有一个目标节点, 双向搜索将在这里工作,预计会很多 比BFS更快
  3. A* - 找到admissible heurstic function并运行 告知A *这个问题。其余部分更难编程 - 但如果你找到一个好的heurisitc,它很可能表现得更好。
  4. (*)以上所有都是完整 [会找到解决方案,如果存在的话]和最优 [会找到最短的解决方案,如果存在的话] < / p>

    (*)此解决方案以房间数量的指数时间运行,但在合理时间内问题中指示的d <= 10应该结束。