欧拉笑着对拉格朗日说:“你知道学习的本质是什么吗?”
拉格朗日不解欧拉的意思。
欧拉说:“就是遍历。”
拉格朗日在想人的学习当然是按部就班来的,但欧拉的意思没那么简单,也或许是更简单到一般人不敢如此去想。
拉格朗日说:“就是看书需要一页一页来?”
欧拉对拉格朗日说:“你指的是人的看书学习,而我指的是本质。”
拉格朗日不解的说:“你说的意思也有动物?或者是婴儿?还是机器人?”
欧拉说:“为了让你理解这个意思,告诉你这时一种自动化算法,你可以理解城机器人,当然人也好,动物也好,婴儿也好,也是这个意思。”
拉格朗日明白了欧拉的意思,想了想,先是点点头,然后再摇摇头说:“我觉得,人的学习还不止于此,你说的遍历,不就是面面都要俱到,而不加以选择吗?”
欧拉说:“对了,我想说的就是这个意思。”
拉格朗日说:“要是有这样一种学习的运算程序,听起来很笨拙。”
欧拉赶紧摇摇头说:“不是的,就是要以这种看似本办法的办法来学习。当然了与人的区别是不要重复,机器可以准确记忆一个东西,而人脑不行,所以遍历的时候不要走回头路就行。”
拉格朗日说:“人的学习分对错,有用和没用,不能一概都去学习。”
欧拉说:“当然了,不管正确与否,起码是要都看过一边才行。”
拉格朗日说:“当然遍历的排序也是一个问题,因为你提到不要走回头路的问题了。”
欧拉说:“没错,我们进下来需要的,正是如何去遍历的问题,不同的结构,遍历的方式不同,我们知道遍历是不可避免的,那就需要认真的研究什么样的情况下怎样去遍历,才是一个真正的问题了。”
欧拉发现,自己在解决很多实际问题的时候,都会需要遍历的理论。
对欧拉来说,遍历最麻烦的事情就是走回头路。
很多问题的解决,只有在少走回头路的时候才能顺利解决。
解决七桥问题之后,欧拉开始研究把很多遍历问题,转化成图论里的最短遍历路径问题。
对欧拉来说,最简单的路径遍历,就是二叉树遍历。
但不是所有图都可以转化成二叉树遍历问题,容易造成浪费。
求欧拉回路的思路:
循环的找到出发点。
从某个节点开始,然后查出一个从这个出发回到这个点的环路径。
这种方法不保证每个边都被遍历。
如果有某个点的边没有被遍历就让这个点为起点,这条边为起始边,把它和当前的环衔接上。这样直至所有的边都被遍历。
这样,整个图就被连接到一起了。
具体步骤:
1,如果此时与该点无相连的点,那么就加入路径中。
2,如果该点有相连的点,那么就加入队列之中,遍历这些点,直到没有相连的点。
3,处理当前的点,删除走过的这条边,并在其相邻的点上进行同样的操作,并把删除的点加入到路径中去。
4,这个其实是个递归过程。
这是最短的最合理的方式了。