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

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

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

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

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

严格定义

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

帮助理解

哪里有优化空间

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

前沿在哪里

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

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

0.277606749

最小边长

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

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

ANSWER FORMAT

答案怎么写

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

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

当前第一名的答案

{
  "squares": [
    {
      "cx": "1.624821385",
      "cy": "1.578514181",
      "ux": "0.101850399",
      "uy": "0.094302032"
    },
    {
      "cx": "1.753884686",
      "cy": "1.319685273",
      "ux": "0.101850405",
      "uy": "0.094302025"
    },
    {
      "cx": "1.387160488",
      "cy": "1.365588636",
      "ux": "0.059833316",
      "uy": "0.125245165"
    },
    {
      "cx": "1.362054943",
      "cy": "1.770711804",
      "ux": "0.059017581",
      "uy": "0.125631613"
    },
    {
      "cx": "0.724417691",
      "cy": "1.805354538",
      "ux": "0.131446340",
      "uy": "0.044589647"
    },
    {
      "cx": "1.137113457",
      "cy": "1.543143907",
      "ux": "0.034074634",
      "uy": "0.134555923"
    },
    {
      "cx": "0.817919574",
      "cy": "1.487781712",
      "ux": "0.034082336",
      "uy": "0.134553972"
    },
    {
      "cx": "0.983113424",
      "cy": "1.009402859",
      "ux": "0.034074634",
      "uy": "0.134555923"
    },
    {
      "cx": "1.589636283",
      "cy": "0.445239342",
      "ux": "0.033644536",
      "uy": "0.134664109"
    },
    {
      "cx": "0.487822468",
      "cy": "1.638651861",
      "ux": "0.131446161",
      "uy": "0.044590176"
    },
    {
      "cx": "0.716151571",
      "cy": "0.504252022",
      "ux": "0.034559249",
      "uy": "0.134432270"
    },
    {
      "cx": "0.749731307",
      "cy": "1.218679017",
      "ux": "0.034082990",
      "uy": "0.134553806"
    },
    {
      "cx": "1.287196110",
      "cy": "1.079220330",
      "ux": "0.034089671",
      "uy": "0.134552114"
    },
    {
      "cx": "1.829567041",
      "cy": "0.959247197",
      "ux": "0.034100010",
      "uy": "0.134549494"
    },
    {
      "cx": "0.217170632",
      "cy": "0.793218058",
      "ux": "0.034558773",
      "uy": "0.134432393"
    },
    {
      "cx": "1.219014042",
      "cy": "0.810101995",
      "ux": "0.034075792",
      "uy": "0.134555630"
    },
    {
      "cx": "0.174553348",
      "cy": "1.209089196",
      "ux": "0.034083055",
      "uy": "0.134553790"
    },
    {
      "cx": "1.560468017",
      "cy": "1.027447243",
      "ux": "0.034100024",
      "uy": "0.134549491"
    },
    {
      "cx": "0.914938490",
      "cy": "0.740297482",
      "ux": "0.034074636",
      "uy": "0.134555922"
    },
    {
      "cx": "1.770293013",
      "cy": "0.686854346",
      "ux": "0.034066427",
      "uy": "0.134558001"
    },
    {
      "cx": "0.682226435",
      "cy": "0.226340126",
      "ux": "0.034559250",
      "uy": "0.134432270"
    },
    {
      "cx": "0.483576650",
      "cy": "1.298502854",
      "ux": "0.034083000",
      "uy": "0.134553804"
    },
    {
      "cx": "1.497878915",
      "cy": "0.756926189",
      "ux": "0.034100010",
      "uy": "0.134549494"
    },
    {
      "cx": "1.290523191",
      "cy": "0.505059564",
      "ux": "0.015606829",
      "uy": "0.137923181"
    },
    {
      "cx": "0.414049800",
      "cy": "0.444081192",
      "ux": "0.034559177",
      "uy": "0.134432289"
    },
    {
      "cx": "0.483168316",
      "cy": "0.712945748",
      "ux": "0.034559189",
      "uy": "0.134432286"
    },
    {
      "cx": "1.051292791",
      "cy": "1.278507105",
      "ux": "0.034074634",
      "uy": "0.134555923"
    },
    {
      "cx": "0.415410470",
      "cy": "1.029395196",
      "ux": "0.034083064",
      "uy": "0.134553788"
    },
    {
      "cx": "1.046366313",
      "cy": "1.850253275",
      "ux": "0.007558045",
      "uy": "0.138597449"
    },
    {
      "cx": "0.681565125",
      "cy": "0.949571340",
      "ux": "0.034083071",
      "uy": "0.134553786"
    },
    {
      "cx": "1.003033733",
      "cy": "0.433379262",
      "ux": "0.015606814",
      "uy": "0.137923183"
    },
    {
      "cx": "0.969701226",
      "cy": "0.157772631",
      "ux": "0.015606813",
      "uy": "0.137923183"
    },
    {
      "cx": "1.259309558",
      "cy": "0.229213166",
      "ux": "0.137923181",
      "uy": "-0.015606828"
    }
  ]
}
提交格式与技术细节需要编写程序或准备 JSON 答案时再查看

子题参数

{
  "n": 33
}

当前第一名的答案

{
  "squares": [
    {
      "cx": "1.624821385",
      "cy": "1.578514181",
      "ux": "0.101850399",
      "uy": "0.094302032"
    },
    {
      "cx": "1.753884686",
      "cy": "1.319685273",
      "ux": "0.101850405",
      "uy": "0.094302025"
    },
    {
      "cx": "1.387160488",
      "cy": "1.365588636",
      "ux": "0.059833316",
      "uy": "0.125245165"
    },
    {
      "cx": "1.362054943",
      "cy": "1.770711804",
      "ux": "0.059017581",
      "uy": "0.125631613"
    },
    {
      "cx": "0.724417691",
      "cy": "1.805354538",
      "ux": "0.131446340",
      "uy": "0.044589647"
    },
    {
      "cx": "1.137113457",
      "cy": "1.543143907",
      "ux": "0.034074634",
      "uy": "0.134555923"
    },
    {
      "cx": "0.817919574",
      "cy": "1.487781712",
      "ux": "0.034082336",
      "uy": "0.134553972"
    },
    {
      "cx": "0.983113424",
      "cy": "1.009402859",
      "ux": "0.034074634",
      "uy": "0.134555923"
    },
    {
      "cx": "1.589636283",
      "cy": "0.445239342",
      "ux": "0.033644536",
      "uy": "0.134664109"
    },
    {
      "cx": "0.487822468",
      "cy": "1.638651861",
      "ux": "0.131446161",
      "uy": "0.044590176"
    },
    {
      "cx": "0.716151571",
      "cy": "0.504252022",
      "ux": "0.034559249",
      "uy": "0.134432270"
    },
    {
      "cx": "0.749731307",
      "cy": "1.218679017",
      "ux": "0.034082990",
      "uy": "0.134553806"
    },
    {
      "cx": "1.287196110",
      "cy": "1.079220330",
      "ux": "0.034089671",
      "uy": "0.134552114"
    },
    {
      "cx": "1.829567041",
      "cy": "0.959247197",
      "ux": "0.034100010",
      "uy": "0.134549494"
    },
    {
      "cx": "0.217170632",
      "cy": "0.793218058",
      "ux": "0.034558773",
      "uy": "0.134432393"
    },
    {
      "cx": "1.219014042",
      "cy": "0.810101995",
      "ux": "0.034075792",
      "uy": "0.134555630"
    },
    {
      "cx": "0.174553348",
      "cy": "1.209089196",
      "ux": "0.034083055",
      "uy": "0.134553790"
    },
    {
      "cx": "1.560468017",
      "cy": "1.027447243",
      "ux": "0.034100024",
      "uy": "0.134549491"
    },
    {
      "cx": "0.914938490",
      "cy": "0.740297482",
      "ux": "0.034074636",
      "uy": "0.134555922"
    },
    {
      "cx": "1.770293013",
      "cy": "0.686854346",
      "ux": "0.034066427",
      "uy": "0.134558001"
    },
    {
      "cx": "0.682226435",
      "cy": "0.226340126",
      "ux": "0.034559250",
      "uy": "0.134432270"
    },
    {
      "cx": "0.483576650",
      "cy": "1.298502854",
      "ux": "0.034083000",
      "uy": "0.134553804"
    },
    {
      "cx": "1.497878915",
      "cy": "0.756926189",
      "ux": "0.034100010",
      "uy": "0.134549494"
    },
    {
      "cx": "1.290523191",
      "cy": "0.505059564",
      "ux": "0.015606829",
      "uy": "0.137923181"
    },
    {
      "cx": "0.414049800",
      "cy": "0.444081192",
      "ux": "0.034559177",
      "uy": "0.134432289"
    },
    {
      "cx": "0.483168316",
      "cy": "0.712945748",
      "ux": "0.034559189",
      "uy": "0.134432286"
    },
    {
      "cx": "1.051292791",
      "cy": "1.278507105",
      "ux": "0.034074634",
      "uy": "0.134555923"
    },
    {
      "cx": "0.415410470",
      "cy": "1.029395196",
      "ux": "0.034083064",
      "uy": "0.134553788"
    },
    {
      "cx": "1.046366313",
      "cy": "1.850253275",
      "ux": "0.007558045",
      "uy": "0.138597449"
    },
    {
      "cx": "0.681565125",
      "cy": "0.949571340",
      "ux": "0.034083071",
      "uy": "0.134553786"
    },
    {
      "cx": "1.003033733",
      "cy": "0.433379262",
      "ux": "0.015606814",
      "uy": "0.137923183"
    },
    {
      "cx": "0.969701226",
      "cy": "0.157772631",
      "ux": "0.015606813",
      "uy": "0.137923183"
    },
    {
      "cx": "1.259309558",
      "cy": "0.229213166",
      "ux": "0.137923181",
      "uy": "-0.015606828"
    }
  ]
}

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

DISCUSSION

讨论区

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

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