【问题标题】:How to solve the Rope Bridge problem with an algorithm?如何用算法解决绳桥问题?
【发布时间】:2010-04-23 05:02:02
【问题描述】:

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

我的直觉是 DFS,但我应该如何定义状态? (也就是说,如果 DFS 甚至是要走的路。)

Rope Bridge

【问题讨论】:

    标签: algorithm


    【解决方案1】:

    这个任务应该不用电脑就能解决。

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

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

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

    【讨论】:

    • 手电筒长度???我猜你的意思是桥的长度或手电筒运行时间。
    • 他的意思是手电筒中剩余的时间长度(或者你说的手电筒运行时间)。
    • 谢谢帕维尔。您对状态的解释“每个状态都包含信息,每个人在哪一边,以及剩余的手电筒持续时间”对我有很大帮助。我想我明天会尝试编程这个有趣的。
    【解决方案2】:

    你可能想看看EWD 1255

    【讨论】:

    • TheMachineCharmer,感谢您提供的链接,我发现它读起来很有趣。不过,如果我理解 Dijkstra 教授的意思,那么绳桥问题中就没有“阿尔法”。也许有,我只是没看到?
    • 我刚刚发布了一些相关且内容丰富的内容。使它成为c-wiki。 :D
    猜你喜欢
    • 1970-01-01
    • 2020-05-30
    • 2011-03-20
    • 1970-01-01
    • 2020-03-27
    • 2011-02-15
    • 2021-01-03
    • 2021-06-19
    • 1970-01-01
    相关资源
    最近更新 更多