P60 · Extremal configurations · Classic · Applied frontier · Hard

Line packing in real projective space · n = 19

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 = 19
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 19 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.998598502

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.052631579",
      "0.002770083",
      "0.000145794",
      "0.000007673"
    ],
    [
      "1.000000000",
      "0.105263158",
      "0.011080332",
      "0.001166351",
      "0.000122774"
    ],
    [
      "1.000000000",
      "0.157894737",
      "0.024930748",
      "0.003936434",
      "0.000621542"
    ],
    [
      "1.000000000",
      "0.210526316",
      "0.044321330",
      "0.009330806",
      "0.001964380"
    ],
    [
      "1.000000000",
      "0.263157895",
      "0.069252078",
      "0.018224231",
      "0.004795850"
    ],
    [
      "1.000000000",
      "0.315789474",
      "0.099722992",
      "0.031491471",
      "0.009944675"
    ],
    [
      "1.000000000",
      "0.368421053",
      "0.135734072",
      "0.050007290",
      "0.018423738"
    ],
    [
      "1.000000000",
      "0.421052632",
      "0.177285319",
      "0.074646450",
      "0.031430084"
    ],
    [
      "1.000000000",
      "0.473684211",
      "0.224376731",
      "0.106283715",
      "0.050344918"
    ],
    [
      "1.000000000",
      "0.526315789",
      "0.277008310",
      "0.145793847",
      "0.076733604"
    ],
    [
      "1.000000000",
      "0.578947368",
      "0.335180055",
      "0.194051611",
      "0.112345670"
    ],
    [
      "1.000000000",
      "0.631578947",
      "0.398891967",
      "0.251931768",
      "0.159114801"
    ],
    [
      "1.000000000",
      "0.684210526",
      "0.468144044",
      "0.320309083",
      "0.219158846"
    ],
    [
      "1.000000000",
      "0.736842105",
      "0.542936288",
      "0.400058318",
      "0.294779813"
    ],
    [
      "1.000000000",
      "0.789473684",
      "0.623268698",
      "0.492054235",
      "0.388463870"
    ],
    [
      "1.000000000",
      "0.842105263",
      "0.709141274",
      "0.597171599",
      "0.502881347"
    ],
    [
      "1.000000000",
      "0.894736842",
      "0.800554017",
      "0.716285173",
      "0.640886734"
    ],
    [
      "1.000000000",
      "0.947368421",
      "0.897506925",
      "0.850269719",
      "0.805518681"
    ],
    [
      "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": 19,
  "d": 5
}

The current leader's answer

{
  "vectors": [
    [
      "1.000000000",
      "0.052631579",
      "0.002770083",
      "0.000145794",
      "0.000007673"
    ],
    [
      "1.000000000",
      "0.105263158",
      "0.011080332",
      "0.001166351",
      "0.000122774"
    ],
    [
      "1.000000000",
      "0.157894737",
      "0.024930748",
      "0.003936434",
      "0.000621542"
    ],
    [
      "1.000000000",
      "0.210526316",
      "0.044321330",
      "0.009330806",
      "0.001964380"
    ],
    [
      "1.000000000",
      "0.263157895",
      "0.069252078",
      "0.018224231",
      "0.004795850"
    ],
    [
      "1.000000000",
      "0.315789474",
      "0.099722992",
      "0.031491471",
      "0.009944675"
    ],
    [
      "1.000000000",
      "0.368421053",
      "0.135734072",
      "0.050007290",
      "0.018423738"
    ],
    [
      "1.000000000",
      "0.421052632",
      "0.177285319",
      "0.074646450",
      "0.031430084"
    ],
    [
      "1.000000000",
      "0.473684211",
      "0.224376731",
      "0.106283715",
      "0.050344918"
    ],
    [
      "1.000000000",
      "0.526315789",
      "0.277008310",
      "0.145793847",
      "0.076733604"
    ],
    [
      "1.000000000",
      "0.578947368",
      "0.335180055",
      "0.194051611",
      "0.112345670"
    ],
    [
      "1.000000000",
      "0.631578947",
      "0.398891967",
      "0.251931768",
      "0.159114801"
    ],
    [
      "1.000000000",
      "0.684210526",
      "0.468144044",
      "0.320309083",
      "0.219158846"
    ],
    [
      "1.000000000",
      "0.736842105",
      "0.542936288",
      "0.400058318",
      "0.294779813"
    ],
    [
      "1.000000000",
      "0.789473684",
      "0.623268698",
      "0.492054235",
      "0.388463870"
    ],
    [
      "1.000000000",
      "0.842105263",
      "0.709141274",
      "0.597171599",
      "0.502881347"
    ],
    [
      "1.000000000",
      "0.894736842",
      "0.800554017",
      "0.716285173",
      "0.640886734"
    ],
    [
      "1.000000000",
      "0.947368421",
      "0.897506925",
      "0.850269719",
      "0.805518681"
    ],
    [
      "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?