我正在研究解决蛇自我围困的问题。我认为如果使用广度优先搜索(BFS)来移动,可以大大降低被困住的风险。我的问题是,为了确保这一移动不会导致自己被困,我应该寻找多少个可能的空位(相连的)?
回答:
你需要查看的距离以判断是否被困,总是取决于蛇的大小和位置。要确保100%安全的唯一方法是提前搜索所有可能的移动,并避免那些会导致蛇被困住的移动。不过,你可能会发现使用深度优先搜索比广度优先搜索更有效,因为它能迅速找到死胡同(如果存在的话)。然后避免这些移动。在你的第二个例子中,深度优先搜索会很快发现向上移动是一个死胡同。