木制激光切割Jeandel Rao瓷砖

木制激光切割Jeandel-Rao瓷砖

2018年9月7日|猫:鼠尾草,猛击spkg,数学,découpe激光器|查看评论

我一直在研究Jeandel-Rao瓷砖最近.

/文件/2018/article2_T0_tiles.svg

会议之前模型集与非周期序在英国达勒姆举行(9月2018年3月7日),我认为在会议。因此,我首先决定使用一些约定来表示上述瓷砖作为拓扑闭盘,基本上使用中整数的表示基数1:

/文件/2018/T0_shapes.svg

利用这些形状,我创建了一个33 x 19的补丁。贴片每侧3cm仅在激光切割机(1m x 60)的容量范围内,就需要99cm x 57cm厘米):

/文件/2018/33x19_A_scale3.svg

在LaBRI的David Renault的帮助下,我们Coh@位、FabLab我们用激光切割了两块3毫米厚的胶合板,总共1282块王牌。这就是结果:

/文件/2018/laser_cut_8x8.jpg

可以按如下方式重新创建33 x 19平铺(请注意,我正在使用笛卡尔坐标,所以第一个列表数据[0]实际上是第一次柱从下到上):

鼠尾草: 数据 = [[10, 4, 6, 1, , , 7, 0, 9, 7, 2, 6, 1, , 8, 7, 0, 9, 7],
....:  [4, 5, 6, 1, 8, 10, 4, 0, 9, , 8, 7, 0, 9, 7, 5, 0, 9, ],
....:  [, 7, 6, 1, 7, 2, 5, 0, 9, 8, 7, 5, 0, 9, , 7, 0, 9, 10],
....:  [10, 4, 6, 1, , 8, 7, 0, 9, 7, 5, 6, 1, 8, 10, 4, 0, 9, ],
....:  [2, 5, 6, 1, 8, 7, 5, 0, 9, , 7, 6, 1, 7, 2, 5, 0, 9, 8],
....:  [8, 7, 6, 1, 7, 5, 6, 1, 8, 10, 4, 6, 1, , 8, 7, 0, 9, 7],
....:  [7, 5, 6, 1, , 7, 6, 1, 7, 2, 5, 6, 1, 8, 7, 5, 0, 9, ],
....:  [, 7, 6, 1, 10, 4, 6, 1, , 8, 7, 6, 1, 7, 5, 6, 1, 8, 10],
....:  [10, 4, 6, 1, , , 7, 0, 9, 7, 5, 6, 1, , 7, 6, 1, 7, 2],
....:  [2, 5, 6, 1, 8, 10, 4, 0, 9, , 7, 6, 1, 10, 4, 6, 1, , 8],
....:  [8, 7, 6, 1, 7, 5, 5, 0, 9, 10, 4, 6, 1, , , 7, 0, 9, 7],
....:  [7, 5, 6, 1, , 7, 6, 1, 10, 4, 5, 6, 1, 8, 10, 4, 0, 9, ],
....:  [, 7, 6, 1, 10, 4, 6, 1, , , 7, 6, 1, 7, 2, 5, 0, 9, 8],
....:  [10, 4, 6, 1, , , 7, 0, 9, 10, 4, 6, 1, , 8, 7, 0, 9, 7],
....:  [4, 5, 6, 1, 8, 10, 4, 0, 9, , , 7, 0, 9, 7, 5, 0, 9, ],
....:  [, 7, 6, 1, 7, 2, 5, 0, 9, 8, 10, 4, 0, 9, , 7, 0, 9, 10],
....:  [10, 4, 6, 1, , 8, 7, 0, 9, 7, 5, 5, 0, 9, 10, 4, 0, 9, ],
....:  [2, 5, 6, 1, 8, 7, 5, 0, 9, , 7, 6, 1, 10, 4, 5, 0, 9, 8],
....:  [8, 7, 6, 1, 7, 5, 6, 1, 8, 10, 4, 6, 1, , , 7, 0, 9, 7],
....:  [7, 5, 6, 1, , 7, 6, 1, 7, 2, 5, 6, 1, 8, 10, 4, 0, 9, ],
....:  [, 7, 6, 1, 10, 4, 6, 1, , 8, 7, 6, 1, 7, 2, 5, 0, 9, 8],
....:  [10, 4, 6, 1, , , 7, 0, 9, 7, 2, 6, 1, , 8, 7, 0, 9, 7],
....:  [4, 5, 6, 1, 8, 10, 4, 0, 9, , 8, 7, 0, 9, 7, 5, 0, 9, ],
....:  [, 7, 6, 1, 7, 2, 5, 0, 9, 8, 7, 5, 0, 9, , 7, 0, 9, 10],
....:  [10, 4, 6, 1, , 8, 7, 0, 9, 7, 5, 6, 1, 8, 10, 4, 0, 9, ],
....:  [, , 7, 0, 9, 7, 5, 0, 9, , 7, 6, 1, 7, 2, 5, 0, 9, 8],
....:  [8, 10, 4, 0, 9, , 7, 0, 9, 10, 4, 6, 1, , 8, 7, 0, 9, 7],
....:  [7, 5, 5, 0, 9, 10, 4, 0, 9, , , 7, 0, 9, 7, 5, 0, 9, ],
....:  [, 7, 6, 1, 10, 4, 5, 0, 9, 8, 10, 4, 0, 9, , 7, 0, 9, 10],
....:  [10, 4, 6, 1, , , 7, 0, 9, 7, 5, 5, 0, 9, 10, 4, 0, 9, ],
....:  [2, 5, 6, 1, 8, 10, 4, 0, 9, , 7, 6, 1, 10, 4, 5, 0, 9, 8],
....:  [8, 7, 6, 1, 7, 5, 5, 0, 9, 10, 4, 6, 1, , , 7, 0, 9, 7],
....:  [7, 5, 6, 1, , 7, 6, 1, 10, 4, 5, 6, 1, 8, 10, 4, 0, 9, ]]

上述补丁是在1000个随机生成的补丁中选择的最接近Jeandel-Rao瓷砖(或至少在我在预印本中描述的最小子移位中):

鼠尾草:  收藏 进口 计数器
鼠尾草: c(c) = 计数器(压扁(数据))
鼠尾草: 平铺_计数 = [c(c)[] 对于  在里面 范围(11)]

渐近频率:

鼠尾草: φ = 黄金比率.n个()
鼠尾草: 林伟 = [2*φ + 6, 2*φ + 6, 18*φ + 10, 2*φ + 6, 8*φ + 2,
....:      5*φ + 4, 2*φ + 6, 12/5*φ + 14/5, 8*φ + 2,
....:      2*φ + 6, 8*φ + 2]
鼠尾草: 完美的比例 = 矢量([1/ 对于  在里面 林伟])

每种类型的瓷砖数量与预期频率的比较:

鼠尾草: 页眉(_R) = ['互动程序id', “渐近频率”, '预期副本数',
....:               '33x19补丁中的拷贝数']
鼠尾草:  = [范围(11), 完美的比例, 矢量(完美的比例)*33*19, 平铺_计数]
鼠尾草: 桌子(=, 页眉(_R)=页眉(_R))
  瓦片 身份证件   渐进的 频率   预期  属于 副本   编号 副本 在里面 这个 33x19像素 补丁
+---------+----------------------+-----------------------+------------------------------+
  0         0.108271182329550      67.8860313206280        67
  1         0.108271182329550      67.8860313206280        65
  2         0.0255593590340479     16.0257181143480        16
           0.108271182329550      67.8860313206280        71
  4         0.0669152706817991     41.9558747174880        42
  5         0.0827118232955023     51.8603132062800        51
  6         0.108271182329550      67.8860313206280        65
  7         0.149627093977301      93.8161879237680        95
  8         0.0669152706817991     41.9558747174880        44
  9         0.108271182329550      67.8860313206280        67
  10        0.0669152706817991     41.9558747174880        44

我在会议上带来了(33\times19=641)瓷砖,并向前7个人找到一个(7乘以7)平铺的机会来保持他们使用了49块瓷砖。49是一个好数字,因为最低瓦片的频率(id为2)约为2%,允许在中至少有一个每个磁贴的副本49块瓦片的子集允许解决方案。

一个自然要问的问题是,有多少这样的瓷砖(7乘以7)是否存在?带票#25125这是今年春天在Sage 8.3中合并的可以与Knuth舞蹈链接并行枚举和计数解决方案算法。安装Sage选装包后板球(鼠尾草-pip(点阵)安装slabbe),可以计算出有152244个解。

鼠尾草:  板球 进口 WangTile集合
鼠尾草: 瓷砖 = [(2,4,2,1), (2,2,2,0), (1,1,,1), (1,2,,2), (,1,,),
....: (0,1,,1), (0,0,0,1), (,1,0,2), (0,2,1,2), (1,2,1,4), (,,1,2)]
鼠尾草: T0类 = WangTile集合(瓷砖)
鼠尾草: T0_溶剂 = T0类.解算器(7,7)
鼠尾草: %时间 T0_溶剂.解决方案数量(ncpus公司=8)
中央处理器 : 用户 16 毫秒, 系统: 82.3 毫秒, 全部的: 98.3 毫秒
墙壁 时间: 388 毫秒
152244

还可以获取所有解决方案的列表并打印其中一个:

鼠尾草: %时间 L(左) = T0_溶剂.所有解决方案(_S)(); 打印(伦恩(L(左)))
152244
中央处理器 : 用户 6.46 , 系统: 344 毫秒, 全部的: 6.8 
墙壁 时间: 6.82 
鼠尾草: L(左)[0]
A类  平铺 属于  7 x个 7 矩形
鼠尾草: L(左)[0].桌子()  #警告:输出为笛卡尔坐标
[[1, 8, 10, 4, 5, 0, 9],
 [1, 7, 2, 5, 6, 1, 8],
 [1, , 8, 7, 6, 1, 7],
 [0, 9, 7, 5, 6, 1, ],
 [0, 9, , 7, 6, 1, 8],
 [1, 8, 10, 4, 6, 1, 7],
 [1, 7, 2, 2, 6, 1, ]]

这是49个不同瓷砖组的数量,可采用7x7解决方案:

鼠尾草:  收藏 进口 计数器
鼠尾草: 定义 count_tiles(计数_文件)(平铺):
....:     C类 = 计数器(压扁(平铺.桌子()))
....:     返回 元组(C类.得到(,0) 对于  在里面 范围(11))
鼠尾草: 低频率 = 地图(count_tiles(计数_文件), L(左))
鼠尾草: 频率_计数 = 计数器(Lfreq公司)
鼠尾草: 伦恩(频率_计数)
83258

同一套49块瓷砖的其他解决方案数量:

鼠尾草: 计数器(频率_计数.())
计数器({1: 49076, 2: 19849, : 6313, 4: 3664, 6: 1410, 5: 1341, 7: 705, 8:
293, 9: 159, 14: 116, 10: 104, 12: 97, 18: 44, 11: 26, 15: 24, 13: 10, 17: 8,
22: 6, 32: 6, 16: , 28: 2, 19: 1, 21: 1})

解决方案的数量是如何增长的k个从0到9:

鼠尾草: [T0类.解算器(k个,k个).解决方案数量() 对于 k个 在里面 范围(10)]
[0, 11, 85, 444, 1723, 9172, 50638, 152244, 262019, 1641695]

不幸的是,大多数这些\(k\次k\)解决方案都不能扩展到整个平面的平铺。实际上我能够描述的最小非周期子移位的语言根据一些人的说法,这是Jeandel-Rao瓷砖的一个适当子集启发式,类似于:

[1, 11, 49, 108, 184, 268, 367, 483]

我还没有为这个计算分享我的(丑陋的)代码,因为我宁愿分享时机成熟时尽快清理代码。因此,在152244人中,只有483人(0.32%)它们可以延长为平面的均匀循环平铺。

博客评论由Disqus餐厅