四盘汉诺塔的与或图

来源:互联网 发布:spss clementine mac 编辑:程序博客网 时间:2024/05/16 10:38

      汉诺塔问题是学编程语言常接触到的一个递归的问题,其实对于递归,除了二叉树的遍历我常使用之外,其他的时候真的是很少想到递归。不过这种思想还是蛮有用的。复习《人工智能》的与或图部分时,看到了三盘Hanoi的与或图,是这样的:


用一个三元组来表示三个盘子所在的柱子,从做到右依次为cba,完成这个工作需要三部:首先将ab都放到2上,把c放到3上,再把ab从2上挪到3上。其中,ab从1挪到2上又得分几部完成:把a放到3上,把b从1放到2上,再把a从3上挪到2上。而把ab从2挪到3上又要分三部完成。这样,把任务分成小任务,而这些小任务可以很容易的完成,小任务完成了就意味着大任务也完成了。

现在的问题是画出4盘Hanoi的与或图,同样,可以先把abc三个盘挪到2上,把d挪到3上,再把abc从2上挪到3上。把abc从1挪到2上就变为3盘hanoi塔的问题了,把abc从2挪到3也是。那我就用四元组画出这个与或图了。


画这个图还是蛮累的,而且还得一边画一边念念有词的,呵呵,欢迎大家挑错啊!