学会在一张复杂的图上找出最好的一条路,往往可以帮我们解决许多问题。比如,一个人带了一只狼、一只羊和一筐白菜,要过一条河。可是船太小,一次只能带一样东西过河。如果他不在,狼要吃羊,羊要吃白菜。问他应该怎样摆渡?
这个问题,就可以转化成为图78上找出一条道路的问题。
为了简便起见,我们用R、L、Y和B表示人、狼、羊和白菜。R、L、Y、B最初都在河的这边,用RLYB表示。如果人把羊带到对岸,留在河这边的狼和白菜用LB表示,并且把RLYB画一个箭头指向LB。O表示河这岸什么也没有了。
从图78可以看出两种解决方案:
RLYB→LB→RLB→B→RYB→Y→RY→Q;
RLYB→LB→RLB→L→RLY→Y→RY→O。
用话来说,前一个方案是:
1,把羊带到对岸(这岸剩下LB);
2,人回到这边(这岸变成RLB);
3,把狼带到对岸(这岸剩下B);
4,把羊带回来(这岸变成RYB);
5,把白菜带到对岸(这岸剩下Y);
6,空人回到这岸(这岸变成RY);
7,把羊带到对岸(这岸成为O)。