P05 · 装箱与覆盖 · 经典问题 · 难

可倾斜等正方形装入圆 · n = 31

文献中也称squares in circlespacking unit squares in a circle

在半径 1 的圆内放 n 个可任意旋转的正方形,边长完全相同、互不重叠,使共同边长尽可能大。

子题n = 31
目标最大化 最小边长

严格定义

  • 容器半径 1 的圆,圆心在 (1, 1),两个坐标都在 0 到 2 之间
  • 提交每个正方形写 {cx, cy, ux, uy}:中心加一条半边向量,另一条固定取 (−uy, ux)
  • 约束每个正方形的角度完全自由;全部落在容器内;两两内部不重叠,贴边接触允许。计分只看最小的那个正方形,所以边长不一致占不到便宜
  • 目标让共同边长尽可能大。内部以其平方精确比较
放大来摆,然后提交
2y0
0x2
已验证构造31 个正方形

帮助理解

哪里有优化空间

圆形容器没有角:正方形的直边贴不住弧形边界,最优解几乎总是倾斜的,正方形彼此以角相抵。

前沿在哪里

n = 4 已证明;n ≤ 35 的其余已知最好值取自 Friedman 的 squares-in-circles 汇总(1997 年起多人贡献),全部未证明;n = 36–40 没有任何公开记录,从零开始。

查看来源
可倾斜等正方形装入圆 n = 31 的当前纪录构型,0.283470011
当前第一名

0.283470011

最小边长

已追平已知最好
答案来源Haowei Lin
解题方式公开参考构造
挑战这个纪录 提交证明 / 思路 在讨论区分享证明或思路,审核采纳后可获得证明分。
纪录保持者的求解笔记暂无求解笔记(点击展开)

纪录保持者还没有分享求解过程。

ANSWER FORMAT

答案怎么写

容器是半径 1 的圆,圆心在 (1, 1),所以坐标范围是 0 到 2。坐标和向量用同一个单位,直接写成小数,例如 "0.4",最多九位小数。

每个正方形提交 {cx,cy,ux,uy}:中心加一条半边向量,另一条半边向量固定取 (-uy,ux)。每个数写成十进制字符串,例如 "0.4";角度完全自由,计分取最小正方形的边长,所以把它们写得一样大最划算。边长本身几乎总是无理数,写不成有限小数,所以你写的是那条半边向量,边长由它精确定出。

当前第一名的答案

{
  "squares": [
    {
      "cx": "0.614006544",
      "cy": "0.288904478",
      "ux": "0.114111335",
      "uy": "0.084067921"
    },
    {
      "cx": "1.586322435",
      "cy": "1.611990961",
      "ux": "0.097576165",
      "uy": "0.102799338"
    },
    {
      "cx": "1.300121872",
      "cy": "0.226803123",
      "ux": "0.122195117",
      "uy": "0.071813407"
    },
    {
      "cx": "1.241029690",
      "cy": "1.488376234",
      "ux": "0.072900092",
      "uy": "0.121549943"
    },
    {
      "cx": "0.359611594",
      "cy": "0.471302045",
      "ux": "0.122346386",
      "uy": "0.071555391"
    },
    {
      "cx": "0.863758476",
      "cy": "0.451045102",
      "ux": "0.122195102",
      "uy": "0.071813433"
    },
    {
      "cx": "0.740762139",
      "cy": "1.756900296",
      "ux": "0.072900101",
      "uy": "0.121549938"
    },
    {
      "cx": "0.985736002",
      "cy": "1.614034874",
      "ux": "0.072900078",
      "uy": "0.121549951"
    },
    {
      "cx": "0.740551148",
      "cy": "1.095778250",
      "ux": "0.072772815",
      "uy": "0.121626187"
    },
    {
      "cx": "0.195455310",
      "cy": "1.091976459",
      "ux": "0.072900117",
      "uy": "0.121549928"
    },
    {
      "cx": "0.843177842",
      "cy": "0.767860176",
      "ux": "0.122346394",
      "uy": "0.071555377"
    },
    {
      "cx": "1.172437793",
      "cy": "0.485472609",
      "ux": "0.122195112",
      "uy": "0.071813415"
    },
    {
      "cx": "0.989347403",
      "cy": "0.195940706",
      "ux": "0.122195134",
      "uy": "0.071813377"
    },
    {
      "cx": "0.253810780",
      "cy": "1.387635516",
      "ux": "0.072900116",
      "uy": "0.121549929"
    },
    {
      "cx": "0.461638442",
      "cy": "0.873219774",
      "ux": "0.122346408",
      "uy": "0.071555352"
    },
    {
      "cx": "0.598400729",
      "cy": "0.624700289",
      "ux": "0.122346391",
      "uy": "0.071555382"
    },
    {
      "cx": "1.416912175",
      "cy": "0.629148892",
      "ux": "0.122195118",
      "uy": "0.071813405"
    },
    {
      "cx": "1.542500993",
      "cy": "0.374044613",
      "ux": "0.122195116",
      "uy": "0.071813409"
    },
    {
      "cx": "0.445668755",
      "cy": "1.603225847",
      "ux": "0.072900116",
      "uy": "0.121549929"
    },
    {
      "cx": "0.688852320",
      "cy": "1.457375426",
      "ux": "0.072900116",
      "uy": "0.121549929"
    },
    {
      "cx": "0.933716073",
      "cy": "1.314326477",
      "ux": "0.072900116",
      "uy": "0.121549928"
    },
    {
      "cx": "0.217630372",
      "cy": "0.721188117",
      "ux": "0.124252846",
      "uy": "0.068191218"
    },
    {
      "cx": "1.151883963",
      "cy": "0.802305387",
      "ux": "0.122195119",
      "uy": "0.071813404"
    },
    {
      "cx": "0.497073474",
      "cy": "1.241737630",
      "ux": "0.072900110",
      "uy": "0.121549932"
    },
    {
      "cx": "1.305664433",
      "cy": "1.791116881",
      "ux": "0.051081817",
      "uy": "0.132209909"
    },
    {
      "cx": "1.228457981",
      "cy": "1.142817417",
      "ux": "0.140529172",
      "uy": "0.018448950"
    },
    {
      "cx": "1.823417832",
      "cy": "0.981403341",
      "ux": "0.140529172",
      "uy": "0.018448950"
    },
    {
      "cx": "1.499540030",
      "cy": "1.256456493",
      "ux": "0.140529172",
      "uy": "0.018448949"
    },
    {
      "cx": "1.740109327",
      "cy": "0.684465622",
      "ux": "0.140529173",
      "uy": "0.018448948"
    },
    {
      "cx": "1.536450631",
      "cy": "0.975301377",
      "ux": "0.140529173",
      "uy": "0.018448946"
    },
    {
      "cx": "1.784769711",
      "cy": "1.262330357",
      "ux": "0.140529172",
      "uy": "0.018448950"
    }
  ]
}
提交格式与技术细节需要编写程序或准备 JSON 答案时再查看

子题参数

{
  "n": 31
}

当前第一名的答案

{
  "squares": [
    {
      "cx": "0.614006544",
      "cy": "0.288904478",
      "ux": "0.114111335",
      "uy": "0.084067921"
    },
    {
      "cx": "1.586322435",
      "cy": "1.611990961",
      "ux": "0.097576165",
      "uy": "0.102799338"
    },
    {
      "cx": "1.300121872",
      "cy": "0.226803123",
      "ux": "0.122195117",
      "uy": "0.071813407"
    },
    {
      "cx": "1.241029690",
      "cy": "1.488376234",
      "ux": "0.072900092",
      "uy": "0.121549943"
    },
    {
      "cx": "0.359611594",
      "cy": "0.471302045",
      "ux": "0.122346386",
      "uy": "0.071555391"
    },
    {
      "cx": "0.863758476",
      "cy": "0.451045102",
      "ux": "0.122195102",
      "uy": "0.071813433"
    },
    {
      "cx": "0.740762139",
      "cy": "1.756900296",
      "ux": "0.072900101",
      "uy": "0.121549938"
    },
    {
      "cx": "0.985736002",
      "cy": "1.614034874",
      "ux": "0.072900078",
      "uy": "0.121549951"
    },
    {
      "cx": "0.740551148",
      "cy": "1.095778250",
      "ux": "0.072772815",
      "uy": "0.121626187"
    },
    {
      "cx": "0.195455310",
      "cy": "1.091976459",
      "ux": "0.072900117",
      "uy": "0.121549928"
    },
    {
      "cx": "0.843177842",
      "cy": "0.767860176",
      "ux": "0.122346394",
      "uy": "0.071555377"
    },
    {
      "cx": "1.172437793",
      "cy": "0.485472609",
      "ux": "0.122195112",
      "uy": "0.071813415"
    },
    {
      "cx": "0.989347403",
      "cy": "0.195940706",
      "ux": "0.122195134",
      "uy": "0.071813377"
    },
    {
      "cx": "0.253810780",
      "cy": "1.387635516",
      "ux": "0.072900116",
      "uy": "0.121549929"
    },
    {
      "cx": "0.461638442",
      "cy": "0.873219774",
      "ux": "0.122346408",
      "uy": "0.071555352"
    },
    {
      "cx": "0.598400729",
      "cy": "0.624700289",
      "ux": "0.122346391",
      "uy": "0.071555382"
    },
    {
      "cx": "1.416912175",
      "cy": "0.629148892",
      "ux": "0.122195118",
      "uy": "0.071813405"
    },
    {
      "cx": "1.542500993",
      "cy": "0.374044613",
      "ux": "0.122195116",
      "uy": "0.071813409"
    },
    {
      "cx": "0.445668755",
      "cy": "1.603225847",
      "ux": "0.072900116",
      "uy": "0.121549929"
    },
    {
      "cx": "0.688852320",
      "cy": "1.457375426",
      "ux": "0.072900116",
      "uy": "0.121549929"
    },
    {
      "cx": "0.933716073",
      "cy": "1.314326477",
      "ux": "0.072900116",
      "uy": "0.121549928"
    },
    {
      "cx": "0.217630372",
      "cy": "0.721188117",
      "ux": "0.124252846",
      "uy": "0.068191218"
    },
    {
      "cx": "1.151883963",
      "cy": "0.802305387",
      "ux": "0.122195119",
      "uy": "0.071813404"
    },
    {
      "cx": "0.497073474",
      "cy": "1.241737630",
      "ux": "0.072900110",
      "uy": "0.121549932"
    },
    {
      "cx": "1.305664433",
      "cy": "1.791116881",
      "ux": "0.051081817",
      "uy": "0.132209909"
    },
    {
      "cx": "1.228457981",
      "cy": "1.142817417",
      "ux": "0.140529172",
      "uy": "0.018448950"
    },
    {
      "cx": "1.823417832",
      "cy": "0.981403341",
      "ux": "0.140529172",
      "uy": "0.018448950"
    },
    {
      "cx": "1.499540030",
      "cy": "1.256456493",
      "ux": "0.140529172",
      "uy": "0.018448949"
    },
    {
      "cx": "1.740109327",
      "cy": "0.684465622",
      "ux": "0.140529173",
      "uy": "0.018448948"
    },
    {
      "cx": "1.536450631",
      "cy": "0.975301377",
      "ux": "0.140529173",
      "uy": "0.018448946"
    },
    {
      "cx": "1.784769711",
      "cy": "1.262330357",
      "ux": "0.140529172",
      "uy": "0.018448950"
    }
  ]
}

每个正方形提交 {cx,cy,ux,uy}:中心加一条半边向量,另一条半边向量固定取 (-uy,ux)。每个数写成十进制字符串,例如 "0.4";角度完全自由,计分取最小正方形的边长,所以把它们写得一样大最划算。边长本身几乎总是无理数,写不成有限小数,所以你写的是那条半边向量,边长由它精确定出。 · 验证器 v1.0.0

DISCUSSION

讨论区

聊思路、贴方法、问为什么卡住。所有登录用户都可以发帖;发言公开署名,与纪录使用同一个名字,署名后的 #编号是账号注册序号,冒不了名。新发言经自动审核后公开。

还没有帖子。第一个聊聊这道题的思路?