一、实验目的会定义图的抽象数据类型熟悉图的基本结构掌握程序中的用户头文件、实现文件和主文件之间的相 互关系及各自的作用熟悉对图的一些基本操作和具体的函数定义 4.掌握在实际问题中运用所学知识解决实际问题的方法和步骤。二、编程环境 Python语言三、实验内容描述 有一农夫带着一条狼、一只羊和一筐菜想从河的左岸乘船到右岸。但由于船太小农夫每次只能带一样东西过河而且如果没有农夫看管则狼会吃羊,羊会吃菜
【数据结构与算法】狼、羊、菜和农夫过河:使用图的广度优先遍历实现Java 农夫需要把狼、羊、菜和自己运到河对岸去,只有农夫能够划船,而且船比较小。除农夫之外每次只能运一种东西。还有一个棘手问题,就是如果没有农夫看着,羊会偷吃菜,狼会吃羊。请考虑一种方法,让农夫能够安全地安排这些东西和他自己过河。解题思路学了图论的广度优先遍历算法后,我们可以使用广度优先遍历的思想来完成这道题。 首先定义如何表达农夫
一个农夫在河边要过河,但是他带着一匹狼、一只羊和一颗白菜。他需要用船将这三样东西运至对岸,然而,这艘船的空间有限,只容得下他自己和另一样东西(或狼或羊或白菜)。若他不在场看管的话,狼就会吃羊,羊就会去吃白菜。此人如何才能过河。
原创
精选
2015-02-28 11:04:42
10000+阅读
1评论
人狼羊菜问题是计算机领域中的经典问题。之所以经典,一方面这是编译原理等课程中的一个建模及编码问题,另一方面也经常被作为智力题用在面试中。本文讨论的是怎么建模、编码的问题。问题描述:一个农夫有一条船,和狼、羊、菜,农夫要把这3样东西运到河到另一边,农夫每次最多只能通过这个船运一样东西,要防止狼吃羊、羊吃白菜(即不能在没有农夫在的情况下同时在同一岸边),该怎么过?该问题的解决分为2个阶段,第一阶段是对
转载
2023-06-27 11:24:55
180阅读
问题描述农夫需要把狼、羊、菜和自己运到河对岸去,只有农夫能够划船,而且船比较小,除农夫之外每次只能运一种东西,还有一个棘手问题,就是如果没有农夫看着,羊会偷吃菜,狼会吃羊。请考虑一种方法,让农夫能够安全地安排这些东西和他自己过河。分析问题很简单,但如何用计算机求解呢。农夫渡河从本质上是一种状态的改变。有农夫、狼、羊、菜四个个体,任何时刻每个个体的状态只有一种,每个个体有两种状态(没有过河、已经过河
转载
2023-08-25 15:18:32
193阅读
题目描述:农夫需要把狼、羊、菜和自己运到河对岸去,只有农夫能够划船,而且船比较小,除农夫之外每次只能运一种东西,还有一个棘手问题,就是如果没有农夫看着,羊会偷吃菜,狼会吃羊。请考虑一种方法,让农夫能够安全地安排这些东西和他自己过河。想这个问题一连想了好几天,本人没有系统的学过算法,有些概念也不是很清楚,只因解决问题为目标。尝试过图论解决,但用floyed算法只能算出最短路径值,如何输出过程,一直没
【引言】这两天读司守奎《建模算法与应用》读到一个非常有意思的问题,就是小学时我们都玩过的一道奥赛题,狼羊菜渡河问题。【问题??】某人带狼、羊和蔬菜渡河,一小船除需要人划外,每次只能载一物过河。而当人不在场时,狼会吃羊,羊会吃菜。问此人应如何渡河?【最开始思路】小学奥赛题是怎么解的来着...,放弃那种想法,还真的想不到,看看答案,觉得好神奇,居然可以跟我们学过的图论相关联。【思路】我们用一个四维向量
农夫需要把狼、羊、菜和自己运到河对岸去(不知道为啥要运狼,别问我),只有农夫能够划船,而且船比较小,除农夫之外每次只能运一种东西,还有一个棘手的问题,就是如果没有农夫看着,羊会偷吃菜,狼会吃羊。请考虑一种方法,让农夫能够安全地安排这些东西和他自己过河。算法设计思路这是一个很简单的问题,在狼、羊和菜这个食物链上,关键是中间的羊,因为狼不吃菜,所以要安全过河,农夫的第一件事就是带羊走,拆开这个食物链。
注:本系列博文是依据Algorithmic Puzzles学习笔记,每一小节包含5个谜题,在博客最后仅给出提示,具体答案见下一期博客谜题1:狼羊菜过河问题描述:一个人在河边,带着一匹狼、一只羊和一颗卷心菜。他需要用船将这三样东西运至对岸,然而,这艘船的空间有限,只容得下他自己和另外一样东西。若他不在场的话,狼就会去吃羊,羊就会去吃菜,问此人如何才能把这三个乘客都送至对岸?谜题2:手套选择问题描述:
题目农夫带着狼, 羊, 白菜过河
如果农夫没有在旁边看着它们, 狼就会吃羊, 羊会吃白菜
但是小船一次只能载一人一物
请用程序打印出农夫带它们过河的流程分析a岸 过河 b岸
1 人 狼 羊 菜 人 羊 --->
2 狼 菜
解:第一 :由于状态变量有4个,每个状态变量都有2种取值,因此有以下16种可能的状态用四元组s=(f,w,s,v)表示问题状态,其中,f,w,s和v分别表示农夫,狼,羊和青菜是否在左岸,它们都可以取1或0,取1表示在左岸,取0表示在右岸。第二:用所定义的问题状态表示方式,把所有可能的问题状态表示出来,包括问题的初始状态和目标状态。由于状态变量有4个,每个状态变量都有2种取值,因此有以下16种可能的
转载
2023-07-18 13:33:38
58阅读
文章目录初识状态转移模型:人狼羊菜渡河问题状态转移模型的结论状态转移模型的应用:n人过桥问题 直接讲理论不太容易懂,所以我们通过一个例子来具体讲解一下这个模型 初识状态转移模型:人狼羊菜渡河问题人狼羊菜问题应该是很经典的状态转移模型的例题了,题目内容:有个人带着一只狼,一头羊,和一筐菜准备渡河,但是船只能容纳除了人以外的一种生物,无人看守时,狼吃羊,羊吃菜,问怎么渡河,并且每次渡河时,人必须在
【题目】 一位农夫带着一只狼,一只羊和一些菜过河。河边只有一条船,由于船太小,只能装下农夫和他的一样东西。在无人看管的情况下,狼要吃羊,羊要吃菜,请问农夫如何才能用最快的方法将这三样东西平安过河。【问题分析】总论: 农夫、狼、羊、菜可以用一个四元组来表示,他们要么在河这边,要么在河那边,只有两种状态,所以最适合用布尔代数来进行
【数据结构与算法】狼、羊、菜和农夫过河:使用图的广度优先遍历实现Java
农夫需要把狼、羊、菜和自己运到河对岸去,只有农夫能够划船,而且船比较小。除农夫之外每次只能运一种东西。还有一个棘手问题,就是如果没有农夫看着,羊会偷吃菜,狼会吃羊。请考虑一种方法,让农夫能够安全地安排这些东西和他自己过河。解题思路学了图论的广度优先遍历算法后,我们可以使用广度优先遍历的思想来完成这道题。
首先定义如何表达农夫
转载
2023-06-01 10:47:18
119阅读
问题:一个农夫带着一匹狼、一只羊、一颗白菜要过河,只有一条船而且农夫每次最多只能带一个动物或物品过河,并且当农夫不在的时候狼会吃羊,羊会吃白菜,列出所有安全将所有动物和物品带过河的方案。思路分析:显然这不是一个最优解的问题,最容易想到的方法就是遍历了,设法用遍历列举出所有可能出现的情况,根据条件选取出其中所有正确的解路径。把每个状态看作一个节点的话,那么节点的子节点可以设计为4个,分别对应的情况是
/*
*功能:解决狼羊人过河问题
*作者:王文堃
*作者邮箱:wenkun_wang@163.com
*创建时间:2016/4/5
*/
/*
问题描述:有一个人带着一匹狼、一头羊和白菜要过河
已知人每次过河只能带一样东西,狼和羊不能单独在一起
羊和菜不能单独在一起,求人过河的方案有几种?
问题抽象:分别用m、w、g、c来表示人(men)、狼(wolf)、羊(goat)、菜(cabbage)
这篇文章开始正式《algorithm puzzles》一书中的解谜之旅了! 狼羊菜过河: 谜题:一个人在河边,带着一匹狼、一只羊、一颗卷心菜。他需要用船将这三样东西运至对岸,然而,这艘船空间有限,只容得下他自己和另一样东西(狼、羊或卷心菜)。若他不在场看管的话,狼就会吃掉羊,羊就会吃掉卷心菜。此人如何才能把这三个“乘客
题目:用谓词表示法求解农夫、狼、山羊、白菜问题。农夫、狼、山羊、白菜全部放在一条河的左岸,现在要把他们全部送到河的右岸去,农夫有一条船,过河时,除农夫外船上至多能载狼、山羊、白菜中的一种。狼要吃山羊,山羊要吃白菜,除非农夫在那里。请完成以下问题:问题:用一阶谓词逻辑设计给出一个确保全部安全过河的规划,写出所用谓词的定义及本问题的求解过程。解题思路:步骤一:使用自然语言求解出问题答案;步骤二:将问题
原本我的队长就推荐我写一些自己的博客作为参考供笔记用,再加上昨天我发老师也鼓励我们要写博客,就借这个契机开始写我自己的博客吧。本篇我想就老师课后留的一个问题展开,该问题如下:有一个农夫,一头羊,一头狼,一捆菜在河的一头,问农夫有多少种方式将它们运到河对岸?这个问题还有一点限制,那就是:农夫不在时,狼会吃羊,羊会吃菜,形成了一条食物链。这个题中的元素有农夫、羊、狼、菜、河流、船。在这个问题里河流自始
基于深度优先搜索回溯法的人狼羊菜过河模型本文介绍一个农夫过河的小模型,算法 Python 实现,感觉还挺有趣的,因原为笔者课程作业论文改版而来,所以文章内容比起其他博客文章可能会比较严肃与严谨。期待与你的思维碰撞。摘要本文介绍了一种合理规划农夫携带狼、羊、菜安全过河问题。对问题合理分析,将人、狼、羊、菜四者的某时刻状态量化为一向量,基于此结构建立安全位置状态集合,与安全运输状态集合,存储运输过程中