river-crossing-puzzle

    1热度

    2回答

    我正在使用C#在传教士和食人族上做我的项目。我使用了两种搜索算法,即广度优先搜索和深度优先搜索。使用广度优先搜索,程序从根目录找到第12级的结果。但使用深度首次搜索,它无法找到解决方案,这挂我的电脑。我认为它在图表中进入一个循环。所以我的问题是,我不能使用Depth首先搜索来解决传教士和食人族的问题吗? 代码广度优先搜索是 public State getSolutionStatesBFS(Sta

    3热度

    4回答

    我试图通过clpfd解决'从Zurg'问题'逃脱。 https://web.engr.oregonstate.edu/~erwig/papers/Zurg_JFP04.pdf 玩具从左侧开始向右侧移动。这是我有: :-use_module(library(clpfd)). toy(buzz,5). toy(woody,10). toy(res,20). toy(hamm,25). %

    5热度

    2回答

    三个食人族和三个传教士必须过河。他们的船只能容纳两个人。如果食人族比传教士人数多,传教士就会陷入困境(我不会描述结果)。每个传教士和每个食人族都可以划船。六个人怎么能穿过这条河? 我找不到使用IDDFS(迭代加深深度优先搜索)和GreedyBFS(贪心最佳优先搜索)解决此问题的算法。关于如何解决这个问题的想法也会让我开心。 编辑: 我发现了一个算法IDDFS对维基: IDDFS(root, goa

    4热度

    5回答

    我正在努力解决经典传教士(M)和食人族(C)的问题,左岸的起始状态是3M和3C,目标状态是3M,右岸是3C。我已经完成了程序中的基本功能,并且需要实施BFS和DFS等搜索策略。 基本上我的代码是从互联网上学习的。到目前为止,我可以使用DFS方法成功运行该程序,但我尝试使用BFS运行它总是返回false。这是我第一个SWI-Prolog程序,我找不到我的代码在哪里。 这里是我的代码的一部分,希望你能

    0热度

    1回答

    它是传教士 - 食谱程序,发现错误在行法律(3,x).legal(0,x)。 % : mandc(state(3,3,left), [state(3,3,left)], Path)? mandc(state(0, 0, right), _, []). mandc(CurrentState, Visited, [Move | RestOfMoves]) :- newstate(Current

    1热度

    1回答

    所以首先我很抱歉问this question。但是“逃离Zurg”的文章帮助了我很多,我可以为狼山羊白菜问题写出自己的解决方案。我正在下面放置我的代码。我希望你能告诉我 如果我的代码是写在F#的真正精神和函数式编程 这是解决问题的最佳和良好的解决方案 open System (* The type direction determines which direction the hu

    2热度

    1回答

    我想解决农民,山羊,狼,白菜谜语使用广度优先技术,我遇到了一些问题。当我尝试收集树的第二级的所有有效组合时,它会失败。这里是相关的代码, extend([Node|Path], NewPaths) :- bagof([NewNode, Node|Path], (s(Node, NewNode), not(member(NewNode, [Node|Path]))),

    2热度

    2回答

    我试图在Prolog中编写程序来解决众所周知的狼山羊白菜拼图。鉴于一个想用狼,山羊和卷心菜过河的农民。船只同时举行两次,他不能与山羊或山羊一起离开狼。 我知道这里有Stackoverflow的工作解决方案。但我想在我的代码中找到用于学习目的的错误。这是我的代码。它导致了所谓的本地堆栈溢出,我想逻辑中有一个错误。由于我评论了每个区块,所以应该很容易理解。 % Helper function to c

    -1热度

    1回答

    我需要一些帮助,我们的教授给我们的数学任务。任何建议都会有帮助。 问题是: 有N个食人族和M missinaries。所有传教士都有一个强度属性,可以是1或任何正整数。强度表示他可以击退多少食人族。 基本上有两条河,有两条船,你必须把所有的人转移到另一边,而不让食人族吃传教士。 你会为此编写一个程序吗?转移分组算法是什么? 感谢预期, 马克。

    4热度

    1回答

    所以我被授予了一个任务来尝试在Prolog中解决这个问题,尽管老师只介绍了基础知识,而这实质上是Prolog中唯一的项目。我觉得我在想这件事,而且他只是期待第一次Prolog程序。 该问题列在下面,我应该如何解决这个问题? 编写一个解决下面的单词问题的Prolog程序。作为解决方案的一部分,它应该列出所有交叉路口,并首先列出划手。 汤姆,杰克,比尔和吉姆不得不穿过一条只能容纳两人的独木舟。 在从河