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

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

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

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

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

严格定义

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

帮助理解

哪里有优化空间

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

前沿在哪里

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

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

0.275549211

最小边长

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

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

ANSWER FORMAT

答案怎么写

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

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

当前第一名的答案

{
  "squares": [
    {
      "cx": "1.788987030",
      "cy": "0.721583403",
      "ux": "0.026187863",
      "uy": "0.135262848"
    },
    {
      "cx": "0.977536701",
      "cy": "1.745578752",
      "ux": "0.025612183",
      "uy": "0.135373033"
    },
    {
      "cx": "1.605240862",
      "cy": "0.462051189",
      "ux": "0.025301326",
      "uy": "0.135431477"
    },
    {
      "cx": "0.818133069",
      "cy": "0.757162525",
      "ux": "0.025612431",
      "uy": "0.135372987"
    },
    {
      "cx": "0.935351712",
      "cy": "1.467144202",
      "ux": "0.025800121",
      "uy": "0.135337341"
    },
    {
      "cx": "0.211121689",
      "cy": "1.278079856",
      "ux": "0.025857141",
      "uy": "0.135326459"
    },
    {
      "cx": "0.697992938",
      "cy": "1.750303466",
      "ux": "0.025612197",
      "uy": "0.135373031"
    },
    {
      "cx": "1.524634429",
      "cy": "1.613720034",
      "ux": "0.025113739",
      "uy": "0.135466388"
    },
    {
      "cx": "1.474640118",
      "cy": "1.342172859",
      "ux": "0.024927064",
      "uy": "0.135500862"
    },
    {
      "cx": "1.569232919",
      "cy": "1.044425136",
      "ux": "0.011294463",
      "uy": "0.137310878"
    },
    {
      "cx": "1.842629871",
      "cy": "1.006361741",
      "ux": "0.011247495",
      "uy": "0.137314733"
    },
    {
      "cx": "1.515522796",
      "cy": "0.759864999",
      "ux": "0.025985834",
      "uy": "0.135301805"
    },
    {
      "cx": "1.333966016",
      "cy": "0.513558174",
      "ux": "0.025683498",
      "uy": "0.135359522"
    },
    {
      "cx": "0.464370106",
      "cy": "0.392315809",
      "ux": "0.025612380",
      "uy": "0.135372996"
    },
    {
      "cx": "1.283235825",
      "cy": "0.241919805",
      "ux": "0.025249050",
      "uy": "0.135441233"
    },
    {
      "cx": "0.982281349",
      "cy": "0.165230324",
      "ux": "0.025612416",
      "uy": "0.135372990"
    },
    {
      "cx": "1.226232417",
      "cy": "1.521263791",
      "ux": "0.025612434",
      "uy": "0.135372986"
    },
    {
      "cx": "1.174877254",
      "cy": "1.250542386",
      "ux": "0.025612432",
      "uy": "0.135372986"
    },
    {
      "cx": "0.482753782",
      "cy": "1.230150799",
      "ux": "0.025612199",
      "uy": "0.135373030"
    },
    {
      "cx": "1.089411074",
      "cy": "0.705836998",
      "ux": "0.025612426",
      "uy": "0.135372988"
    },
    {
      "cx": "0.515521804",
      "cy": "0.663075897",
      "ux": "0.025612199",
      "uy": "0.135373031"
    },
    {
      "cx": "1.037973326",
      "cy": "0.435131207",
      "ux": "0.025612415",
      "uy": "0.135372990"
    },
    {
      "cx": "1.267128951",
      "cy": "1.793963954",
      "ux": "0.025612433",
      "uy": "0.135372986"
    },
    {
      "cx": "0.656640622",
      "cy": "1.477689553",
      "ux": "0.025612199",
      "uy": "0.135373031"
    },
    {
      "cx": "0.184469999",
      "cy": "1.002630500",
      "ux": "0.025852758",
      "uy": "0.135327296"
    },
    {
      "cx": "1.000672496",
      "cy": "1.003063998",
      "ux": "0.025612430",
      "uy": "0.135372987"
    },
    {
      "cx": "1.271419454",
      "cy": "0.951838951",
      "ux": "0.025612432",
      "uy": "0.135372986"
    },
    {
      "cx": "0.762760133",
      "cy": "0.487201270",
      "ux": "0.025612422",
      "uy": "0.135372988"
    },
    {
      "cx": "0.385886119",
      "cy": "1.528915553",
      "ux": "0.025612211",
      "uy": "0.135373028"
    },
    {
      "cx": "0.753506840",
      "cy": "1.178925160",
      "ux": "0.025612198",
      "uy": "0.135373031"
    },
    {
      "cx": "0.457766881",
      "cy": "0.954440611",
      "ux": "0.025612198",
      "uy": "0.135373031"
    },
    {
      "cx": "0.244076279",
      "cy": "0.710665888",
      "ux": "0.025612863",
      "uy": "0.135372905"
    },
    {
      "cx": "1.749388530",
      "cy": "1.304809278",
      "ux": "0.023648792",
      "uy": "0.135729793"
    },
    {
      "cx": "0.711535292",
      "cy": "0.216455200",
      "ux": "0.025612414",
      "uy": "0.135372990"
    }
  ]
}
提交格式与技术细节需要编写程序或准备 JSON 答案时再查看

子题参数

{
  "n": 34
}

当前第一名的答案

{
  "squares": [
    {
      "cx": "1.788987030",
      "cy": "0.721583403",
      "ux": "0.026187863",
      "uy": "0.135262848"
    },
    {
      "cx": "0.977536701",
      "cy": "1.745578752",
      "ux": "0.025612183",
      "uy": "0.135373033"
    },
    {
      "cx": "1.605240862",
      "cy": "0.462051189",
      "ux": "0.025301326",
      "uy": "0.135431477"
    },
    {
      "cx": "0.818133069",
      "cy": "0.757162525",
      "ux": "0.025612431",
      "uy": "0.135372987"
    },
    {
      "cx": "0.935351712",
      "cy": "1.467144202",
      "ux": "0.025800121",
      "uy": "0.135337341"
    },
    {
      "cx": "0.211121689",
      "cy": "1.278079856",
      "ux": "0.025857141",
      "uy": "0.135326459"
    },
    {
      "cx": "0.697992938",
      "cy": "1.750303466",
      "ux": "0.025612197",
      "uy": "0.135373031"
    },
    {
      "cx": "1.524634429",
      "cy": "1.613720034",
      "ux": "0.025113739",
      "uy": "0.135466388"
    },
    {
      "cx": "1.474640118",
      "cy": "1.342172859",
      "ux": "0.024927064",
      "uy": "0.135500862"
    },
    {
      "cx": "1.569232919",
      "cy": "1.044425136",
      "ux": "0.011294463",
      "uy": "0.137310878"
    },
    {
      "cx": "1.842629871",
      "cy": "1.006361741",
      "ux": "0.011247495",
      "uy": "0.137314733"
    },
    {
      "cx": "1.515522796",
      "cy": "0.759864999",
      "ux": "0.025985834",
      "uy": "0.135301805"
    },
    {
      "cx": "1.333966016",
      "cy": "0.513558174",
      "ux": "0.025683498",
      "uy": "0.135359522"
    },
    {
      "cx": "0.464370106",
      "cy": "0.392315809",
      "ux": "0.025612380",
      "uy": "0.135372996"
    },
    {
      "cx": "1.283235825",
      "cy": "0.241919805",
      "ux": "0.025249050",
      "uy": "0.135441233"
    },
    {
      "cx": "0.982281349",
      "cy": "0.165230324",
      "ux": "0.025612416",
      "uy": "0.135372990"
    },
    {
      "cx": "1.226232417",
      "cy": "1.521263791",
      "ux": "0.025612434",
      "uy": "0.135372986"
    },
    {
      "cx": "1.174877254",
      "cy": "1.250542386",
      "ux": "0.025612432",
      "uy": "0.135372986"
    },
    {
      "cx": "0.482753782",
      "cy": "1.230150799",
      "ux": "0.025612199",
      "uy": "0.135373030"
    },
    {
      "cx": "1.089411074",
      "cy": "0.705836998",
      "ux": "0.025612426",
      "uy": "0.135372988"
    },
    {
      "cx": "0.515521804",
      "cy": "0.663075897",
      "ux": "0.025612199",
      "uy": "0.135373031"
    },
    {
      "cx": "1.037973326",
      "cy": "0.435131207",
      "ux": "0.025612415",
      "uy": "0.135372990"
    },
    {
      "cx": "1.267128951",
      "cy": "1.793963954",
      "ux": "0.025612433",
      "uy": "0.135372986"
    },
    {
      "cx": "0.656640622",
      "cy": "1.477689553",
      "ux": "0.025612199",
      "uy": "0.135373031"
    },
    {
      "cx": "0.184469999",
      "cy": "1.002630500",
      "ux": "0.025852758",
      "uy": "0.135327296"
    },
    {
      "cx": "1.000672496",
      "cy": "1.003063998",
      "ux": "0.025612430",
      "uy": "0.135372987"
    },
    {
      "cx": "1.271419454",
      "cy": "0.951838951",
      "ux": "0.025612432",
      "uy": "0.135372986"
    },
    {
      "cx": "0.762760133",
      "cy": "0.487201270",
      "ux": "0.025612422",
      "uy": "0.135372988"
    },
    {
      "cx": "0.385886119",
      "cy": "1.528915553",
      "ux": "0.025612211",
      "uy": "0.135373028"
    },
    {
      "cx": "0.753506840",
      "cy": "1.178925160",
      "ux": "0.025612198",
      "uy": "0.135373031"
    },
    {
      "cx": "0.457766881",
      "cy": "0.954440611",
      "ux": "0.025612198",
      "uy": "0.135373031"
    },
    {
      "cx": "0.244076279",
      "cy": "0.710665888",
      "ux": "0.025612863",
      "uy": "0.135372905"
    },
    {
      "cx": "1.749388530",
      "cy": "1.304809278",
      "ux": "0.023648792",
      "uy": "0.135729793"
    },
    {
      "cx": "0.711535292",
      "cy": "0.216455200",
      "ux": "0.025612414",
      "uy": "0.135372990"
    }
  ]
}

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

DISCUSSION

讨论区

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

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