Mathematica实战范例:[2]动态哈密尔顿回路
1、首先让我们看一看一个正十二面体, 这是哈密尔顿发明的一个环球游戏, 每个棱角代表一个城市, 每个城市只能走过一次, 怎么样才能经过上面每一个城市当且仅当一次, 最后回到起点.
![Mathematica实战范例:[2]动态哈密尔顿回路](https://exp-picture.cdn.bcebos.com/23fd63c5cf672b5faff9f0223314f4d0b4032714.jpg)
2、现在我们来看正十二面体的平面图来.
![Mathematica实战范例:[2]动态哈密尔顿回路](https://exp-picture.cdn.bcebos.com/340e4eb8b43ea8dbdef50f86189c2cf7deb21614.jpg)
3、那如何在这个图上来一趟环球旅行, 经过每一个点各一次, 会后回到原点呢? 其实软件内部已经有了求解此类问题的命令 FindHamiltonianCycle , 直接运行即可.
![Mathematica实战范例:[2]动态哈密尔顿回路](https://exp-picture.cdn.bcebos.com/125ed0ecd3d969756a7b192dd243040149fe0914.jpg)
4、下面我们来看一看如何动态的演示整个步骤, 定义一些变量, 求出整个需要多少 20 步.
![Mathematica实战范例:[2]动态哈密尔顿回路](https://exp-picture.cdn.bcebos.com/bf6e59704618dfda4e84ce3289214f5792567714.jpg)
5、如何能显示旅游的路径呢, 这里还要用到另一个函数 PathGraph, 取出前面几个步骤, 我们运行如下所示:
![Mathematica实战范例:[2]动态哈密尔顿回路](https://exp-picture.cdn.bcebos.com/e2aefe781431dfb68cd3a2d212cf02532e636314.jpg)
6、Ok, 最后把所有的步骤整理, 设置 n 为动态变量, 设置起点为 1 .
![Mathematica实战范例:[2]动态哈密尔顿回路](https://exp-picture.cdn.bcebos.com/3fc72e486143d7d4878ef15f7da75f0f832b5014.jpg)
![Mathematica实战范例:[2]动态哈密尔顿回路](https://exp-picture.cdn.bcebos.com/d9e638334884cde39693a35af07f860e7d754214.jpg)
7、如果想把 2D 换到 3D, 也没问题的.
![Mathematica实战范例:[2]动态哈密尔顿回路](https://exp-picture.cdn.bcebos.com/bbf95c406afec314f205605acac1b727ad539c14.jpg)