【数学建模】商人随从过河的一般模型

题目

三名商人各带一个随从乘船渡河,一只小船只能容纳二人,由他们自已划行,随从们密约,在河的任一岸,一旦随从的人数比商人多就杀人越货。但是如果乘船渡河的大权掌握在商人们手中,商人们怎样才能安全渡河呢?又若四名商人各带一个随从过河,商人如何才能安全渡河?一般地,有 n n n名商人带 n n n个随从过河,船每次能渡 k k k人过河,试讨论商人能安全过河时, n n n k k k应满足什么条件?

模型假设

  • 小船总能正常工作,且过河过程中不会出现意外情况;
  • 随从总是听从商人的安排;
  • 小船返回时,必须有至少一人操作。

模型建立

S i = { a , b } S_i = \{a,b\} Si={a,b}为执行第 k k k次决策后出发岸的状态,其中 a , b a,b a,b分别表示商人和随从的人数, 0 ≤ a ≤ n , 0 ≤ b ≤ n 0\leq a\leq n, 0\leq b\leq n 0an,0bn。容易知道在执行第 i i i次决策后,目的岸的状态为 S i ′ = { n − a , n − b } , S 0 ′ = { 0 , 0 } S'_i = \{n-a, n-b\},S'_0 = \{0,0\} Si={na,nb},S0={0,0}。则对状态的约束为
{ a ≥ b n − a ≥ n − b (1) \left\{\begin{aligned} a &\geq b \\ n-a &\geq n-b \end{aligned}\right. \tag{1} {anabnb(1)

{ S i = { n , b }   ∣   b = 1 , 2 , 3 } ∪ { S i = { 0 , b }   ∣   b = 1 , 2 , 3 } (2) \{S_i=\{n,b\}\ |\ b = 1,2,3\} \cup \{S_i=\{0,b\}\ |\ b = 1,2,3\} \tag{2} {Si={n,b}  b=1,2,3}{Si={0,b}  b=1,2,3}(2)
(1)式表示在任意岸边,商人数量必须大于随从数量,解得 { S i = { a , b }   ∣   a = b } \{S_i=\{a,b\}\ |\ a=b\} {Si={a,b}  a=b}。(2)式表明某一岸上只有随从而没有商人,随从无法越货。因此所有允许的状态集为
S = { S i = { n , b }   ∣   b = 1 , 2 , 3 } ∪ { S i = { 0 , b }   ∣   b = 1 , 2 , 3 } ∪ { S i = { a , b }   ∣   a = b } (3) \mathscr{S} = \{S_i=\{n,b\}\ |\ b = 1,2,3\} \cup \{S_i=\{0,b\}\ |\ b = 1,2,3\} \cup \{S_i=\{a,b\}\ |\ a=b\} \tag{3} S={Si={n,b}  b=1,2,3}{Si={0,b}  b=1,2,3}{Si={a,b}  a=b}(3)
特别地,初始时状态 S 0 = { n , n } S_0 = \{n, n\} S0={n,n},所有人过河完成的终止状态为 S 2 N + 1 = { 0 , 0 } S_{2N+1} = \{0,0\} S2N+1={0,0}

我们定义从出发岸到目的岸的第 2 m − 1 ( m > 0 ) 2m-1(m>0) 2m1(m>0)次策略为 f 2 m − 1 : S → S f_{2m-1}: \mathscr{S}\to\mathscr{S} f2m1:SS,从目的岸返回出发岸的策略为 g 2 m : S → S g_{2m}:\mathscr{S}\to\mathscr{S} g2m:SS,分为为一映射。我们的问题是找到一组策略使
f 2 N + 1 g 2 N … f 3 g 2 f 1 ( S 0 ) = { 0 , 0 } f_{2N+1}g_{2N}\dots f_3 g_2 f_1(S_0) = \{0,0\} f2N+1g2Nf3g2f1(S0)={0,0}
由此我们可以建立一个二维的状态转移表,在这个状态表中,设 S 2 l = { a , b } ( l > 0 ) S_{2l}=\{a,b\}(l>0) S2l={a,b}(l>0),又设 S 2 l + 1 = { a ′ , b ′ } S_{2l + 1} = \{a',b'\} S2l+1={a,b},即 f 2 l + 1 ( S 2 l ) = { a ′ , b ′ } f_{2l+1}(S_{2l}) = \{a',b'\} f2l+1(S2l)={a,b},有 a ′ ≤ a , b ′ ≤ b a' \leq a, b' \leq b aa,bb,因此策略 f 2 m − 1 f_{2m-1} f2m1将导致状态在状态表中向左、下或左下方移动;再设 S 2 l + 2 = { a ′ ′ , b ′ ′ } S_{2l+2}=\{a'',b''\} S2l+2={a′′,b′′},即 g 2 l + 2 ( S 2 l + 1 ) = { a ′ ′ , b ′ ′ } g_{2l+2}(S_{2l+1}) = \{a'',b''\} g2l+2(S2l+1)={a′′,b′′},有 a ′ ′ ≥ a ′ , b ′ ′ ≥ b ’ a''\geq a', b''\geq b’ a′′a,b′′b,因此策略 g 2 m g_{2m} g2m将导致状态在状态表中向右、上或右上方移动。

模型求解

n = 3 , k = 2 n=3,k=2 n=3,k=2时,通过简单的遍历我们可以得到 { 3 , 3 } → { 3 , 1 } → { 3 , 2 } → { 3 , 0 } → { 3 , 1 } → { 1 , 1 } → { 2 , 2 } → { 0 , 2 } → { 0 , 3 } → { 0 , 1 } → { 0 , 2 } → { 0 , 0 } \{3,3\} \to \{3,1\} \to \{3,2\} \to \{3,0\} \to \{3,1\} \to \{1,1\} \to \{2,2\} \to \{0,2\} \to \{0,3\} \to \{0,1\} \to \{0,2\} \to \{0,0\} {3,3}{3,1}{3,2}{3,0}{3,1}{1,1}{2,2}{0,2}{0,3}{0,1}{0,2}{0,0}是一组可行的策略。而 n = 4 , k = 2 n=4,k=2 n=4,k=2不存在任何可行的过河策略。

对于任意 n , k n,k n,k,我们定义三个允许的状态集 S 1 = { S i = { n , b }   ∣   b = 1 , 2 , 3 } , S 2 = { S i = { 0 , b }   ∣   b = 1 , 2 , 3 } , S 3 = { S i = { a , b }   ∣   a = b } \mathscr{S}_1 = \{S_i=\{n,b\}\ |\ b = 1,2,3\}, \mathscr{S}_2 = \{S_i=\{0,b\}\ |\ b = 1,2,3\}, \mathscr{S}_3 = \{S_i=\{a,b\}\ |\ a=b\} S1={Si={n,b}  b=1,2,3},S2={Si={0,b}  b=1,2,3},S3={Si={a,b}  a=b}.

k ≥ 4 k\geq 4 k4,因为 S 0 ∈ S 3 , S 2 N − 1 ∈ S 3 S_0 \in \mathscr{S}_3, S_{2N-1} \in \mathscr{S}_3 S0S3,S2N1S3,容易证明存在映射 f 2 m − 1 : S 3 → S 3 , g 2 m : S 3 → S 3 f_{2m-1}: \mathscr{S}_3\to\mathscr{S}_3,g_{2m}: \mathscr{S}_3\to\mathscr{S}_3 f2m1:S3S3,g2m:S3S3使所有人过河,即从初始状态表开始,状态总能在对角线上移动,最终到达终点。而 k = 1 k=1 k=1无意义。下面讨论 1 < k < 4 1<k<4 1<k<4的情况,即 k ∈ { 2 , 3 } k \in \{2,3\} k{2,3}

首先,容易证明,总有映射 f 2 m − 1 : S 1 → S 1 , g 2 m : S 1 → S 1 f_{2m-1}: \mathscr{S}_1\to\mathscr{S}_1,g_{2m}: \mathscr{S}_1\to\mathscr{S}_1 f2m1:S1S1,g2m:S1S1 f 2 m − 1 : S 2 → S 2 , g 2 m : S 2 → S 2 f_{2m-1}: \mathscr{S}_2\to\mathscr{S}_2,g_{2m}: \mathscr{S}_2\to\mathscr{S}_2 f2m1:S2S2,g2m:S2S2,即 S 1 \mathscr{S}_1 S1之间可以进行转换, S 2 \mathscr{S}_2 S2亦是如此。

又因为初始状态 S 0 = { n , n } S_0=\{n,n\} S0={n,n}而终止状态 S 2 N + 1 = { 0 , 0 } S_{2N+1}=\{0,0\} S2N+1={0,0},因此,若 n ≤ k n\leq k nk,则 S 2 l = { n , 0 } → S 2 l + 1 = { 0 , 0 } S_{2l}=\{n,0\} \to S_{2l+1} = \{0,0\} S2l={n,0}S2l+1={0,0} S 2 l = { n , 3 } → S 2 l + 1 = { 0 , 3 } S_{2l}=\{n,3\} \to S_{2l+1} = \{0,3\} S2l={n,3}S2l+1={0,3}是可行的。即从 S 1 \mathscr{S}_1 S1转换到 S 2 \mathscr{S}_2 S2。可以完成过河。

n > k n > k n>k 有过河策略,则由状态转移的方向决定了必有某 l > 0 l>0 l>0使得 S 2 l − 2 ∈ S 1 , f 2 l − 1 ( S 2 l − 2 ) = S 2 l − 1 ∈ S 3 S_{2l-2} \in \mathscr{S}_1, f_{2l-1}(S_{2l-2}) = S_{2l-1} \in \mathscr{S}_3 S2l2S1,f2l1(S2l2)=S2l1S3,且 g 2 l ( S 2 l − 1 ) = S 2 l ∈ S 3 g_{2l}(S_{2l-1}) = S_{2l} \in \mathscr{S}_3 g2l(S2l1)=S2lS3(因为 g 2 l ( S 2 l − 1 ) ∈ S 1 g_{2l}(S_{2l-1}) \in \mathscr{S}_1 g2l(S2l1)S1是循环的)。设此时 S 2 l − 1 = { x , x } S_{2l-1} = \{x,x\} S2l1={x,x},则 k ≥ n − x k \geq n - x knx,即 n ≤ k + x n \leq k + x nk+x。由于 k ∈ { 2 , 3 } k \in \{2,3\} k{2,3},有 g 2 l ( S 2 l − 1 ) = S ( 2 l ) = { x + 1 , x + 1 } , f 2 l + 1 ( S 2 l ) = S 2 l + 1 ∈ S 3 ∪ S 2 g_{2l}(S_{2l-1}) = S(2l) = \{x+1, x+1\},f_{2l+1}(S_{2l}) = S_{2l+1} \in \mathscr{S}_3\cup \mathscr{S}_2 g2l(S2l1)=S(2l)={x+1,x+1},f2l+1(S2l)=S2l+1S3S2.

同样,由状态转移的方向可知存在某 l ′ > l l'>l l>l使得 S 2 l ′ ∈ S 3 , f 2 l ′ + 1 ( S 2 l ′ ) ∈ S 2 S_{2l'}\in \mathscr{S}_3,f_{2l'+1}(S_{2l'}) \in \mathscr{S}_2 S2lS3,f2l+1(S2l)S2(否则状态一直循环),因此 k ≥ x + 1 k \geq x+1 kx+1,结合上一个条件,两式相加得 n ≤ 2 k − 1 n \leq 2k - 1 n2k1

我们也可以讨论在船上是否也需要保证商人数量大于随从数量的情况,但容易证明若某次船上出现随从数大于商人数后,必然导致对岸在下一状态中随从数大于商人数:对岸的允许状态只有商人数等于随从数或无商人。

综上所述, k ≥ 4 k\geq 4 k4 n ≤ 2 k − 1 ( k = 2 , 3 ) n \leq 2k - 1(k = 2,3) n2k1(k=2,3)时存在过河方案;而 k = 1 k = 1 k=1 n > 2 k − 1 ( k = 2 , 3 ) n > 2k - 1(k = 2,3) n>2k1(k=2,3)时不存在过河方案。

回到题目 n = 3 , k = 2 n=3,k=2 n=3,k=2满足条件,存在过河方案,而 n = 4 , k = 2 n=4,k=2 n=4,k=2不满足条件,因此不存在过河方案。

过河数学建模问题涉及n个商人和n个随从同时过河的情况。首先,我们需要确定问题的目标和限制条件。 问题目标: 使得所有商人和所有随从都安全地过河,且所需的总时间最短。 问题限制条件: 1. 在任何时候,商人随从的数量必须相等。即商人随从必须配对过河。 2. 每次过河,船的容量最多为2。即每次最多可有2个人(商人随从)同时坐船过河。 3. 在任何时候,如果商人的数量小于随从的数量,商人会被随从攻击。反之,如果随从的数量小于商人的数量,随从会被商人攻击。 建模思路: 1. 首先,我们考虑n=1的情况。只有1个商人和1个随从需要过河。他们都可以安全地渡河,总时间为1。 2. 接下来,我们考虑n=2的情况。有2个商人和2个随从需要过河。这种情况下只存在两种渡河方案: a. 商人1和商人2过河商人1返回,随从1和随从2过河商人2返回。 b. 商人1和随从1过河商人1返回,商人1和随从2过河商人1返回。 总时间为4。 3. 对于n>2的情况,我们可以应用递归的思想。假设我们知道n-1个商人和n-1个随从过河所需的最短时间。我们可以考虑以下两种情况: a. 商人1和商人2过河商人1返回,随从n和随从n-1过河商人2返回,商人1和商人n-1过河。 b. 商人1和随从1过河商人1返回,商人1和随从n过河商人1返回,商人1和商人n-1过河。 总时间为2加上n-1个商人和n-1个随从过河所需的最短时间。 综上所述,我们可以通过递归的方式,逐步推导出求解n个商人和n个随从过河问题所需的时间。其中,初始条件为n=1时,总时间为1。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值