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

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

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

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

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

严格定义

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

帮助理解

哪里有优化空间

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

前沿在哪里

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

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

0.279845051

最小边长

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

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

ANSWER FORMAT

答案怎么写

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

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

当前第一名的答案

{
  "squares": [
    {
      "cx": "1.701782276",
      "cy": "0.600294886",
      "ux": "0.139921414",
      "uy": "0.000557972"
    },
    {
      "cx": "0.583552046",
      "cy": "0.309434121",
      "ux": "0.139921414",
      "uy": "0.000558005"
    },
    {
      "cx": "1.824725430",
      "cy": "0.880632649",
      "ux": "0.139921414",
      "uy": "0.000557997"
    },
    {
      "cx": "1.175948427",
      "cy": "1.787395021",
      "ux": "0.096583384",
      "uy": "0.101242102"
    },
    {
      "cx": "1.814286462",
      "cy": "1.160438450",
      "ux": "0.139921414",
      "uy": "0.000557997"
    },
    {
      "cx": "0.463764927",
      "cy": "1.153522838",
      "ux": "0.139921417",
      "uy": "0.000557261"
    },
    {
      "cx": "1.442782845",
      "cy": "1.661682072",
      "ux": "0.096583387",
      "uy": "0.101242099"
    },
    {
      "cx": "0.582432275",
      "cy": "0.590225900",
      "ux": "0.139921414",
      "uy": "0.000558006"
    },
    {
      "cx": "1.264093728",
      "cy": "1.432045394",
      "ux": "0.090688523",
      "uy": "0.106554704"
    },
    {
      "cx": "1.532578447",
      "cy": "0.889983380",
      "ux": "0.139917979",
      "uy": "-0.001127989"
    },
    {
      "cx": "1.011921692",
      "cy": "1.233398665",
      "ux": "0.090694269",
      "uy": "0.106549814"
    },
    {
      "cx": "1.476696870",
      "cy": "1.250063404",
      "ux": "0.090693222",
      "uy": "0.106550706"
    },
    {
      "cx": "1.247115630",
      "cy": "1.077964989",
      "ux": "0.090693203",
      "uy": "0.106550721"
    },
    {
      "cx": "1.697130861",
      "cy": "1.486740391",
      "ux": "0.114725657",
      "uy": "0.080102041"
    },
    {
      "cx": "0.944414480",
      "cy": "1.560787514",
      "ux": "0.128101480",
      "uy": "0.056287869"
    },
    {
      "cx": "0.348352702",
      "cy": "1.476855178",
      "ux": "0.128104831",
      "uy": "0.056280241"
    },
    {
      "cx": "0.464873748",
      "cy": "0.873452816",
      "ux": "0.139921495",
      "uy": "0.000537095"
    },
    {
      "cx": "0.714516947",
      "cy": "1.388306145",
      "ux": "0.128089831",
      "uy": "0.056314371"
    },
    {
      "cx": "0.179093055",
      "cy": "0.872310100",
      "ux": "0.139921414",
      "uy": "0.000558006"
    },
    {
      "cx": "1.141528825",
      "cy": "0.740305581",
      "ux": "0.139921414",
      "uy": "0.000558014"
    },
    {
      "cx": "0.302573870",
      "cy": "0.592955098",
      "ux": "0.139921414",
      "uy": "0.000558006"
    },
    {
      "cx": "0.583674881",
      "cy": "1.636960125",
      "ux": "0.128104831",
      "uy": "0.056280241"
    },
    {
      "cx": "0.744268968",
      "cy": "1.018379302",
      "ux": "0.139921673",
      "uy": "0.000488617"
    },
    {
      "cx": "0.813734105",
      "cy": "1.809044725",
      "ux": "0.128104826",
      "uy": "0.056280253"
    },
    {
      "cx": "0.861687000",
      "cy": "0.738867734",
      "ux": "0.139921414",
      "uy": "0.000558009"
    },
    {
      "cx": "1.421907459",
      "cy": "0.607123011",
      "ux": "0.139921414",
      "uy": "0.000558013"
    },
    {
      "cx": "1.430018858",
      "cy": "0.318276067",
      "ux": "0.139921534",
      "uy": "0.000526980"
    },
    {
      "cx": "1.143783076",
      "cy": "0.180616266",
      "ux": "0.139921406",
      "uy": "0.000559815"
    },
    {
      "cx": "0.863923822",
      "cy": "0.179176232",
      "ux": "0.139921395",
      "uy": "0.000562744"
    },
    {
      "cx": "0.183921900",
      "cy": "1.152176836",
      "ux": "0.139921414",
      "uy": "0.000557996"
    },
    {
      "cx": "0.862803055",
      "cy": "0.459024050",
      "ux": "0.139921413",
      "uy": "0.000558015"
    },
    {
      "cx": "1.142644867",
      "cy": "0.460461814",
      "ux": "0.139921414",
      "uy": "0.000558015"
    }
  ]
}
提交格式与技术细节需要编写程序或准备 JSON 答案时再查看

子题参数

{
  "n": 32
}

当前第一名的答案

{
  "squares": [
    {
      "cx": "1.701782276",
      "cy": "0.600294886",
      "ux": "0.139921414",
      "uy": "0.000557972"
    },
    {
      "cx": "0.583552046",
      "cy": "0.309434121",
      "ux": "0.139921414",
      "uy": "0.000558005"
    },
    {
      "cx": "1.824725430",
      "cy": "0.880632649",
      "ux": "0.139921414",
      "uy": "0.000557997"
    },
    {
      "cx": "1.175948427",
      "cy": "1.787395021",
      "ux": "0.096583384",
      "uy": "0.101242102"
    },
    {
      "cx": "1.814286462",
      "cy": "1.160438450",
      "ux": "0.139921414",
      "uy": "0.000557997"
    },
    {
      "cx": "0.463764927",
      "cy": "1.153522838",
      "ux": "0.139921417",
      "uy": "0.000557261"
    },
    {
      "cx": "1.442782845",
      "cy": "1.661682072",
      "ux": "0.096583387",
      "uy": "0.101242099"
    },
    {
      "cx": "0.582432275",
      "cy": "0.590225900",
      "ux": "0.139921414",
      "uy": "0.000558006"
    },
    {
      "cx": "1.264093728",
      "cy": "1.432045394",
      "ux": "0.090688523",
      "uy": "0.106554704"
    },
    {
      "cx": "1.532578447",
      "cy": "0.889983380",
      "ux": "0.139917979",
      "uy": "-0.001127989"
    },
    {
      "cx": "1.011921692",
      "cy": "1.233398665",
      "ux": "0.090694269",
      "uy": "0.106549814"
    },
    {
      "cx": "1.476696870",
      "cy": "1.250063404",
      "ux": "0.090693222",
      "uy": "0.106550706"
    },
    {
      "cx": "1.247115630",
      "cy": "1.077964989",
      "ux": "0.090693203",
      "uy": "0.106550721"
    },
    {
      "cx": "1.697130861",
      "cy": "1.486740391",
      "ux": "0.114725657",
      "uy": "0.080102041"
    },
    {
      "cx": "0.944414480",
      "cy": "1.560787514",
      "ux": "0.128101480",
      "uy": "0.056287869"
    },
    {
      "cx": "0.348352702",
      "cy": "1.476855178",
      "ux": "0.128104831",
      "uy": "0.056280241"
    },
    {
      "cx": "0.464873748",
      "cy": "0.873452816",
      "ux": "0.139921495",
      "uy": "0.000537095"
    },
    {
      "cx": "0.714516947",
      "cy": "1.388306145",
      "ux": "0.128089831",
      "uy": "0.056314371"
    },
    {
      "cx": "0.179093055",
      "cy": "0.872310100",
      "ux": "0.139921414",
      "uy": "0.000558006"
    },
    {
      "cx": "1.141528825",
      "cy": "0.740305581",
      "ux": "0.139921414",
      "uy": "0.000558014"
    },
    {
      "cx": "0.302573870",
      "cy": "0.592955098",
      "ux": "0.139921414",
      "uy": "0.000558006"
    },
    {
      "cx": "0.583674881",
      "cy": "1.636960125",
      "ux": "0.128104831",
      "uy": "0.056280241"
    },
    {
      "cx": "0.744268968",
      "cy": "1.018379302",
      "ux": "0.139921673",
      "uy": "0.000488617"
    },
    {
      "cx": "0.813734105",
      "cy": "1.809044725",
      "ux": "0.128104826",
      "uy": "0.056280253"
    },
    {
      "cx": "0.861687000",
      "cy": "0.738867734",
      "ux": "0.139921414",
      "uy": "0.000558009"
    },
    {
      "cx": "1.421907459",
      "cy": "0.607123011",
      "ux": "0.139921414",
      "uy": "0.000558013"
    },
    {
      "cx": "1.430018858",
      "cy": "0.318276067",
      "ux": "0.139921534",
      "uy": "0.000526980"
    },
    {
      "cx": "1.143783076",
      "cy": "0.180616266",
      "ux": "0.139921406",
      "uy": "0.000559815"
    },
    {
      "cx": "0.863923822",
      "cy": "0.179176232",
      "ux": "0.139921395",
      "uy": "0.000562744"
    },
    {
      "cx": "0.183921900",
      "cy": "1.152176836",
      "ux": "0.139921414",
      "uy": "0.000557996"
    },
    {
      "cx": "0.862803055",
      "cy": "0.459024050",
      "ux": "0.139921413",
      "uy": "0.000558015"
    },
    {
      "cx": "1.142644867",
      "cy": "0.460461814",
      "ux": "0.139921414",
      "uy": "0.000558015"
    }
  ]
}

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

DISCUSSION

讨论区

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

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