P60 · Extremal configurations · Classic · Applied frontier · Hard

Line packing in real projective space · n = 17

Choose n lines through the origin of R^d so that the minimum angle between any two is as large as possible — equivalently, minimize the largest coherence μ = max |cos ∠(v_i, v_j)|.

Instanced = 5, n = 17
ObjectiveMinimize the largest coherence μ

Formal definition

  • ContainerReal d-space R^d, every line through the origin; an answer is n points of real projective space RP^{d-1}
  • SubmissionExactly n nonzero vectors, d coordinates each; a vector stands for the line it spans
  • ObjectiveMinimize μ² = max (v_i·v_j)²/(|v_i|²|v_j|²), compared exactly by cross-multiplication — no normalization, no square roots
  • ScoringThe record is ceil(μ²·10¹⁸), rounded against the submitter; the page shows μ, rounded up at the ninth decimal
Challenge this record
VERIFIED CONSTRUCTIONpairwise overlap heat of 17 directions; brighter is closer

Getting a feel for it

Another way to say it

At d = 4 a normalized nonzero vector is a unit quaternion, and q and −q are the same 3D rotation — so the d = 4 sub-problems ask for n maximally separated 3D orientations, a problem robotics and rendering actually use.

Where the frontier is

Grassmannian frames drive noise- and erasure-robust data representations, wireless communication and compressed sensing. Sloane's packing table maintains the best known values for these parameters and openly invites improvement; optimality proofs in d = 3 stop at n = 8.

Source
Current leader

0.998244158

the largest coherence μ

Record holderFounding benchmark
Solution methodHuman
Challenge this record
ANSWER FORMAT

How to write your answer

Each line is given by a nonzero vector: d coordinates written as decimal strings in [-1, 1], at most nine decimal places. Sign and nonzero scaling represent the same line.

Submit vectors: exactly n rows of d decimal-string coordinates in [-1, 1]. Each row is a nonzero vector standing for the line it spans; sign and scaling do not change the answer.

The current leader's answer

{
  "vectors": [
    [
      "1.000000000",
      "0.058823529",
      "0.003460208",
      "0.000203542",
      "0.000011973"
    ],
    [
      "1.000000000",
      "0.117647059",
      "0.013840830",
      "0.001628333",
      "0.000191569"
    ],
    [
      "1.000000000",
      "0.176470588",
      "0.031141869",
      "0.005495624",
      "0.000969816"
    ],
    [
      "1.000000000",
      "0.235294118",
      "0.055363322",
      "0.013026664",
      "0.003065097"
    ],
    [
      "1.000000000",
      "0.294117647",
      "0.086505190",
      "0.025442703",
      "0.007483148"
    ],
    [
      "1.000000000",
      "0.352941176",
      "0.124567474",
      "0.043964991",
      "0.015517056"
    ],
    [
      "1.000000000",
      "0.411764706",
      "0.169550173",
      "0.069814777",
      "0.028747261"
    ],
    [
      "1.000000000",
      "0.470588235",
      "0.221453287",
      "0.104213312",
      "0.049041558"
    ],
    [
      "1.000000000",
      "0.529411765",
      "0.280276817",
      "0.148381844",
      "0.078555094"
    ],
    [
      "1.000000000",
      "0.588235294",
      "0.346020761",
      "0.203541624",
      "0.119730367"
    ],
    [
      "1.000000000",
      "0.647058824",
      "0.418685121",
      "0.270913902",
      "0.175297231"
    ],
    [
      "1.000000000",
      "0.705882353",
      "0.498269896",
      "0.351719927",
      "0.248272889"
    ],
    [
      "1.000000000",
      "0.764705882",
      "0.584775087",
      "0.447180949",
      "0.341961902"
    ],
    [
      "1.000000000",
      "0.823529412",
      "0.678200692",
      "0.558518217",
      "0.459956179"
    ],
    [
      "1.000000000",
      "0.882352941",
      "0.778546713",
      "0.686952982",
      "0.606134984"
    ],
    [
      "1.000000000",
      "0.941176471",
      "0.885813149",
      "0.833706493",
      "0.784664935"
    ],
    [
      "1.000000000",
      "1.000000000",
      "1.000000000",
      "1.000000000",
      "1.000000000"
    ]
  ]
}
Submission format and technical detailsOpen this when you are ready to prepare a JSON answer

Instance parameters

{
  "n": 17,
  "d": 5
}

The current leader's answer

{
  "vectors": [
    [
      "1.000000000",
      "0.058823529",
      "0.003460208",
      "0.000203542",
      "0.000011973"
    ],
    [
      "1.000000000",
      "0.117647059",
      "0.013840830",
      "0.001628333",
      "0.000191569"
    ],
    [
      "1.000000000",
      "0.176470588",
      "0.031141869",
      "0.005495624",
      "0.000969816"
    ],
    [
      "1.000000000",
      "0.235294118",
      "0.055363322",
      "0.013026664",
      "0.003065097"
    ],
    [
      "1.000000000",
      "0.294117647",
      "0.086505190",
      "0.025442703",
      "0.007483148"
    ],
    [
      "1.000000000",
      "0.352941176",
      "0.124567474",
      "0.043964991",
      "0.015517056"
    ],
    [
      "1.000000000",
      "0.411764706",
      "0.169550173",
      "0.069814777",
      "0.028747261"
    ],
    [
      "1.000000000",
      "0.470588235",
      "0.221453287",
      "0.104213312",
      "0.049041558"
    ],
    [
      "1.000000000",
      "0.529411765",
      "0.280276817",
      "0.148381844",
      "0.078555094"
    ],
    [
      "1.000000000",
      "0.588235294",
      "0.346020761",
      "0.203541624",
      "0.119730367"
    ],
    [
      "1.000000000",
      "0.647058824",
      "0.418685121",
      "0.270913902",
      "0.175297231"
    ],
    [
      "1.000000000",
      "0.705882353",
      "0.498269896",
      "0.351719927",
      "0.248272889"
    ],
    [
      "1.000000000",
      "0.764705882",
      "0.584775087",
      "0.447180949",
      "0.341961902"
    ],
    [
      "1.000000000",
      "0.823529412",
      "0.678200692",
      "0.558518217",
      "0.459956179"
    ],
    [
      "1.000000000",
      "0.882352941",
      "0.778546713",
      "0.686952982",
      "0.606134984"
    ],
    [
      "1.000000000",
      "0.941176471",
      "0.885813149",
      "0.833706493",
      "0.784664935"
    ],
    [
      "1.000000000",
      "1.000000000",
      "1.000000000",
      "1.000000000",
      "1.000000000"
    ]
  ]
}

Submit vectors: exactly n rows of d decimal-string coordinates in [-1, 1]. Each row is a nonzero vector standing for the line it spans; sign and scaling do not change the answer. · Verifier v1.0.0

DISCUSSION

Discussion

Talk strategy, share methods, ask why you are stuck. Posts carry your public byline, the same name your records use; the #number after it is the account's signup ordinal, so a name cannot be worn by someone else. The floor is earned: break a record once, anywhere, and it is yours for good. New posts appear after an automated review.

No threads yet. Be the first to talk about this problem?