此问题可视为一个多步决策问题,每一步就是一次渡河,每次渡河就是一次状态转移。
用三维变量(x,y,z)表示状态:
x ------商人数, y------随从数
x,y的取值范围:{0,1,2,3}
z ------船位置
z的取值范围:{0,1}
0始发岸,1对岸
那么安全状态可表示为
x=0,3, y=0,1,2,3 或 x=1,2, y=x
过河的状态转移过程:
(3,3,0) |
(3,2,0) |
(3,1,0) |
(2,2,0) |
(3,0,0) |
(0,3,0) |
(0,2,0) |
(1,1,0) |
(0,1,0) |
(3,2,1) |
(3,1,1) |
(2,2,1) |
(3,0,1) |
(0,3,1) |
(0,2,1) |
(1,1,1) |
(0,1,1) |
(0,0,1) |
这样问题要求由(3,3,1)变到(0,0,0)的一条道路。根据题意,状态转移时要满足一定的规则:
1. Z从0变为1与从1变为0交替进行;
2. 当Z从0变为1时,即船从此岸到对岸,此岸人数减少1或2个;
即(x,y,0)→(u,v,1)时,
u≤x, v≤y, u+v=x+y-1 oru+v=x+y-2
3. 当Z从1变为0时,即船从对岸到此岸,此岸人数增加1或2个;
即(x,y,1)→(u,v,0)时,
u≥x, v≥y,u+v=x+y+1 oru+v=x+y+2
4. 不重复已出现过的状态,如
(3,3,1)→(3,1,0)→(3,3,1);