商人的痛苦保命之旅——不会数学真的会死篇

文章介绍了数学建模中的经典问题——商人过河,讲解了解题思路,包括关注的状态量、数学关系式,以及两种解题方法:穷举法和图解法。窮举法通过遍历所有可能的渡河方案,而图解法则类似于棋盘法,在限制条件下遍历路径。文章还讨论了问题的变种和推广,指出当基数增大时,移动规则不变,但更清晰的解决方案可能出现。
摘要由CSDN通过智能技术生成

7/15 数学建模培训笔记 记录一个感兴趣的例题和题目的讲到的解答方法以及想到的变种问题

【商人过河】 有三个商人和三名随从在河的一边,随从们商量好只要在河的某岸随从人数超过商人,就一起杀掉商人。一条船上最多同时乘坐两人。问应当如何安排过河策略,以让所有商人存活。(PS:随从多半练过武,类似民间侍卫,出其不意袭击的话其实一个随从杀掉三个商人也未必很难,假如商人没有随身携带武器并且习过武 咳咳)

这好像是数学建模里一个经典问题,我们老师直播时放在第三道例题来讲。思路如下:

1、选定需要关心的“量”,或者“状态”,用数学符号表示它们。这一点非常重要,因为如果我们选择了无关紧要的量或者选择的东西之前存在较多重合关系、包含关系,将大大增加问题的繁琐度。

2、根据这些选中的东西之间的逻辑上的联系写出数学关系式,不一定是严格的数学式子,还可以是图像、不等式、集合以及其它我们大一还没有接触到的表达形式。

PPT如下

从老师的建模

来看,有一个很明显的利于计算的特点是:所有涉及到的状态量都包含“k",也就是和渡河的次数挂钩,并且渡河的来与回和-1奇偶性挂钩。这样我们便不用每次渡河使用新的字母来表示各种量,编程时利用循环遍历也可也i非常方便的利用角标k完成相应的计算。并且,这个建模用了一个看似比较抽象的集合——决策,这是我第一次见到这种设未知量的方法(太菜了哈哈哈)。

这么一大片列下来,看起来有点复杂,手算肯定麻烦。因此要用到编程。老师提供的第一种方法是穷举法,编程上机。就是创建出所有相关的量,把所有的可能方案遍历一遍,每次遍历都要满足两个等式:河两岸的商人数量大于等于随从数量,然后筛选出合格的方案。这个也比较麻烦,还占用较多计算资源。

第二种方法:图解法。这个方法和高中数学概率小题里的“棋盘法”有点像,都是在网格图上存在一些点和特殊的走法规则(例如只能左下一格或者向右平移一格),然后计算有哪些移动方式可以从起点到达终点。

PPT如下

这个方法变成编程问题可以储存为二维数组里的1和0,有点的地方为1,数组位置序号类比坐标,然后让计算机戴着镣铐跳舞,在上述移动规则下遍历情况,看看有什么样的步骤能够成功。

变种。当商人或随从的基数大了之后,移动的规则并没有改变,遍历起来的代码也会比前者更清晰、套路更明确、计算量更小。这种问题也可以推广到其它带有较多限制条件的问题上,限制的越多”点“越少、移动的规矩更严,但总体思路是一样的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值