上一个 向上 下一步

计数哈密顿圈在产品图中

这是一个让我尽可能感兴趣的话题编写计算机程序。我一直对看似简单的问题会导致复杂的答案。这个主题甚至在我知道它有名字之前就引起了我的兴趣。实际上,这一切都是从哈密顿路径开始的。

一开始

这一切都是从我的一个想法开始的,关于一个可以在屏幕上画一条蛇。蛇会从一个盒子,然后自己伸展,直到不能再往前走它会再次收缩,寻找另一条路。屏幕快照可能如下所示:
*===============*#    +--+       ##    |  |       ##    +  +--+    ##    |     |    ##+-++-+## |     |       ## +-->  |       #*===============*

Fortran程序

过了一会儿,我写了一个FORTRAN程序,它会写下蛇在某个特定问题上的动作。这将生成如下输出:
nnnnwsssswnnnnwsSSswnnnnnnwnnn公司东南方wnn(网络名称)塞恩静电焊接
如此类推许多页面。。。
(安n个代表向北,w个对于西部,z(z)对于南方,以及e(电子)用于东部。)如果你想亲眼看看,在这里是一个C程序,它做同样的事情。

我很惊讶这么简单的程序能产生这么复杂的可以识别重复模式的输出。

在大学里

在大学里我学习了图论。我的盒子记住,可以用图表表示可以通过两个线图的乘积来构造。三乘五的方框相当于图的乘积P(P)和P5,它看起来像:
*--*--*--*--*P(P)5P(P)*     *--*--*--*--*|||||*     *--*--*--*--*|     |  |  |  |  |*     *--*--*--*--*P(P)x磅5
我还了解到,每一条蛇都会到达该图称为哈密顿路径,以哈密顿,谁首先描述了他们。

关于橡子原子

当我的一个室友得到橡子原子,我开始编写可以这个“蛇”,以及后来可以计数他们。就在那时,我发现用蛮力计数,随着图形点数的增加,所花费的时间越来越多增加。这迫使我使用机器语言。但也有,很快达到极限。我尝试的最大图表是P(P)7x磅7.这个节目几乎花了一整天的时间,右上角。(很久以后,我写了一篇模拟器橡子原子。)

使用PASCAL

当Turbo PASCAL可用时,我开始使用它编写更高级的计数程序。首先,我尝试了缓存算法,但没有多大成功。后来,我在更严格的禁产规定方面取得了更大的成功,这将防止“蛇”在还短的时候做出错误的决定。这些被证明是相当有效的,我可以计算出较大乘积图中的哈密顿路径。我写的最后一个程序是普通1.pas (转换为C:普通1.c).该程序从以下位置开始查找1510446条哈密顿路径P中的一个角7x磅7,在一分钟内DX2型.程序生成了以下输出:
7 7 1 1 1510446*4=60417840       0   20946       0   41669       0   884180   24648       0   51964       0   88418       020946       0   33696       0   52824       0   558680   51964       0   64324       0   87368       041669       0   52824       0   64060       0   626720   88418       0   87368       0  111712       088418 0 55868 0 62672 0 111712
(以及更多)

也是在那个时候,我试图确定总数哈密顿路径。对于上图,有13535280条哈密顿路径。查看文件7_7 .txt文件对于任意两点之间的路径数(对称轴),由程序生成处理.pas (或C:过程。c(c)),处理前一个程序的输出。

但是,我很快就达到了极限,因为路径的数量随着点数成指数增加。

关于哈密顿圈的报告

当我把这些结果展示给我的图表理论老师Frits Göbel时,他给了我一份报告,标题是:`关于Hamilton圈的个数在产品图中'(第289号备忘录,应用数学系,特温特大学,1979年10月)。在这份报告中,他给出了哈密顿循环数的公式单位:P4x磅n个设H(n)等于P中的哈密顿路径数4x磅n个,然后他发现:H(1)=0,H(2)=1,H(3)=2,H(4)=6,H(5)=14,对于所有大于5的n,H(n)=2H(n-1)+2H(n-2)-2H(n-3)+H(n-4)。

根据这份报告中提出的想法,我开发了一个程序(哈米尔帕斯)那个可以计算哈密顿路径的数量P(P)x磷n个,对于给定的以及任何n个.同样,也存在实际限制。的价值能够由于内存限制,不大于5。也是最大数量输出数字的位数在手之前固定。

使用C:一个更通用的程序

因为我想解决产品的更一般的情况任何带P的图的n个,并且还能够我写道,计算哈密尔顿路径、2因子和其他东西使用C的新程序(从头开始)。

后来,我听说通过找到转移矩阵(我的程序构造的)一个递归可以导出方程。所以,我实现了一个暴力算法计算特征多项式。

写论文

在再次向Frits Göbel展示我的结果后,他给我发了邮件文章作者哈里斯·邝(Harris Kwong),它处理了P(P)5x磅n个.这让我意识到我的成绩比其他人进步了很多,我决定写一篇关于我的成绩的论文。

在写论文的过程中,我对我的程序做了更多的工作,并发现了更多结果。论文被拒绝了,但我被拒绝了当裁判考虑我的结果时,鼓励我再次提交很有趣。

再次写这篇论文,给了我一些计算的新想法我找到的数字的递推方程我很快发现我需要整个任意长度的数字(Z)。实施一套高效的这方面的程序花了一些时间。在测试过程中,我发现更多结果。此程序可在中找到计数。c(c).

我提到的那篇论文已经发表在`Ars Combinatoria(组合艺术),第四十九卷,1998年8月在标题“关于图G x Pn个'. 摘自摘要:

该论文的早期版本,其结果省略,可用作压缩PostScript文件或作为PDF格式.

本文参考文献包括:

棋盘上的车路

通过中的一些帖子sci.马赫我遇到了与一辆车的路径数有关的问题可以在棋盘上从一个角落走到另一个角落不止一次访问田地。这个问题被称为中的国际象棋/车路径问题rec.puzzle公司常见问题解答。我再次扩展了我的程序以包括这个问题。更多信息详细信息请参见第页致力于解决这个问题。

整数序列百科全书

当我发现整数序列在线百科全书维护人尼尔·斯洛恩,我提交了一些序列.

重写程序

因为程序使用的变量名并不真正适合论文中使用的术语,我在新版本中进行了更改程序的。

跨越树木

当有人发布关于迷宫数量的问题时,其中迷宫是一个矩形迷宫,其中有任意两个“正方形”通过大小正好一个“路径”连接n个通过,诺亚姆·艾尔基斯回答道惊人的事实.

使用Maple

(1997年3月27日)两天前,我碰巧翻阅了一本书关于枫叶,决定再给枫叶一次机会。昨天,我找到了解决方案对于的数量P中的哈密顿圈8x磅n个.

使用枫叶(续)

今天,即8月12日,我将上述结果与找到了数字,发现方程式不正确。问题是我生成了错误的矩阵作为输入为枫叶。我已经纠正了这个问题,所以结果是现在纠正。

最新版本

的最新版本计数。c(c),包括与Maple的接口。

计数程序的结果

计数程序的结果显示在单独的页面.

理查德·盖伊

打开2009年2月3日,星期二,理查德·盖伊对一些递推方程和我使用计数程序向他提供一些序列。

罗伯特·斯托扬和沃尔克·斯特雷尔

2009年5月5日,星期二,我收到了阿特姆·M·卡拉瓦耶夫的电子邮件告诉我他最近发现复发对于P中的Hamilton循环数9xP(xP)2个基于论文矩形网格中哈密顿回路的计数通过罗伯特·斯托扬沃尔克·斯特雷尔.本文发表于1996年组合数学与组合计算这实际上比我的论文早了两年。

Artem M.Karavaev的更多结果

打开2011年4月7日星期四,我收到了Artem M.Karavaev的电子邮件告诉我更多结果发布日期:一个网站。我已将这些添加到结果页面.

组件尺寸限制

打开2011年9月15日星期四,我意识到对组件大小的限制也很容易实现限制。

节目制作人

2012年6月16日星期六,Anand Krishnamoorthi向我发送了他的计划计算哈密顿路径。更多详细信息.

报纸用实验数学解开难题(ArXiv公司)由姚玉坤多伦·泽尔伯格参考我的论文。在节的末尾枚举的人性化方法网格图的生成树作者写道:这实际上是我用来寻找递推方程的方法在我知道有人可以根据特征多项式.
主页