algorithm - 如何用算法解决索桥问题?

标签 algorithm

我想知道这个索桥问题是否可以通过图形算法搜索来解决:

我的直觉是 DFS,但我应该如何定义状态? (也就是说,如果 DFS 甚至是可行的方法。)

Rope Bridge

最佳答案

这个任务应该在没有计算机的情况下解决。

但是,如果您概括这种情况,那么,我想,您可以使用图搜索来完成,但是您应该考虑图的大小。如果每个顶点都是“状态”,那么这个状态的数量估计为2N⋅L,其中N是人数,L是手电筒的长度。每个状态都包含信息,每个人在哪一边,剩余的手电筒持续时间。如果存在从初始状态到每个人都站在阵营一边的状态之一的路径,那么这条路径就是解决方案。

这是创建状态最明显的方法,但也许您可以用更有效的方式来实现(当前状态数,因此运行时间,是输入大小的指数)。

但是,对于像您提供的示例中那样小的尺寸,指数运行时间(带有图表)是可以接受的。如果您建议采用程序化解决方案而不是手动解决,面试官甚至可能会喜欢。

关于algorithm - 如何用算法解决索桥问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2696322/

相关文章:

c++ - Dijkstra算法题

字符串排列秩+数据结构

c++ - 查找 LCM 求和的最有效算法

c - C 中的邻接矩阵上的 Dijkstra

java - 创建将 n 个用户放入 k 个组的所有可能方法

c# - 如何获得霍夫曼码的长度

c# - 如何比较相同的属性值,而不管多个模型中的顺序或重复

algorithm - 包含给定节点集的最小连通子图

算法 - 以最少的移动次数为彩色矩形网格重新着色

java - 字符串算法的一个子串的Big-O分析。 O(n*logn) 简化了吗?