Vecin distinct minim
Descarcă JSON complet · Verificare independentă · Laborator
# Vecinul distinct minim: experiment exact
Rulare: 2026-10-01T18:49:39.313Z. Checkpoint: checkpoint/ecc-distinct-20261001 @ 4fbd68f40c036fa91175091a30df64f299cce5f6.
400 de ținte distincte în interiorul fiecărei curbe; P0=T=dG. D=max(|dx|,|dy|) pe coordonate canonice. T și infinitul sunt excluse. Toate egalitățile la minim sunt păstrate. Ordinele sunt verificate prin numărarea punctelor curbei și prima revenire a generatorului; p și n sunt testate prin diviziune până la rădăcină. Toate cele patru grupuri au cofactor 1.
| p | n | G | ținte | vecini minimi | ținte cu egalități | R_min | Pearson(R,min j) | predicții exacte |
|---:|---:|---|---:|---:|---:|---|---:|---:|
| 10007 | 10008 | (5,566) | 100 | 102 | 2 | 5–107 | -0.0331 | 0/60 |
| 1051 | 1093 | (3,385) | 100 | 104 | 4 | 1–31 | 0.0360 | 0/60 |
| 5197 | 5209 | (3,125) | 100 | 102 | 2 | 3–94 | -0.0804 | 0/60 |
| 10477 | 10639 | (3,731) | 100 | 103 | 3 | 8–101 | -0.0417 | 0/60 |
n=1093, 5209 și 10639 sunt prime și reprezintă testele de scalare. Ordinele istorice 17, 167 și 29 rămân teste de corectitudine. Coeficientul Pearson este descriptiv, calculat pe minimum j dacă există egalități; nu este formulă, test de independență sau dovadă de imposibilitate.
## Costuri măsurate (ms, o singură rulare)
| p / n | pregătire curbă | generare ținte | vecini | indici | verificare | predictor |
|---|---:|---:|---:|---:|---:|---:|
| 10007 / 10008 | 24.409 | 2.570 | 815.997 | 928.960 | 5.018 | 0.765 |
| 1051 / 1093 | 2.244 | 1.783 | 91.116 | 102.581 | 2.439 | 0.431 |
| 5197 / 5209 | 6.091 | 1.677 | 427.685 | 483.647 | 2.962 | 0.100 |
| 10477 / 10639 | 19.246 | 1.345 | 828.612 | 950.785 | 2.999 | 0.123 |
Timp total: 4762.6 ms; buget 300 s, p≤20000. v24.21.0, win32. Căutarea pornește din T și execută n adunări per țintă. A doua parcurgere completă determină j pentru punctele reținute; costul ei este taxat separat. Verificarea folosește multiplicare scalară și T+jG=Q. Nu este o competiție între algoritmi optimizați. Nu s-a executat căutare pe secp256k1.
## Comparații concrete
Pentru egalități de vecini, comparația folosește cel mai mic j pozitiv. JSON păstrează toate valorile j, toate perechile cu |ΔR|≤1 și diferența circulară min(|Δj|,n−|Δj|). Aceasta din urmă nu înlocuiește numărul de salturi înainte.
- p=10007, n=10008: aceeași rază R=54, d=9301/2673, j=9757/175, |Δj|=9582. Exemplu cu j apropiate: d=5108/7220, R=54/54, j=5721/5722, |Δj|=1.
- p=1051, n=1093: aceeași rază R=13, d=985/331, j=82/1063, |Δj|=981. Exemplu cu j apropiate: d=200/245, R=19/20, j=729/729, |Δj|=0.
- p=5197, n=5209: aceeași rază R=18, d=5086/1982, j=5053/457, |Δj|=4596. Exemplu cu j apropiate: d=785/2701, R=43/43, j=1723/1723, |Δj|=0.
- p=10477, n=10639: aceeași rază R=35, d=3210/3377, j=1076/10452, |Δj|=9376. Exemplu cu j apropiate: d=6082/2861, R=62/63, j=10471/10475, |Δj|=4.
## Predictor fixat înainte de validare
Frozen before run: train first 40; predict minimum positive j from training target with closest R_min, tie earliest training row. Inputs only R_min and 40 training (radius,j) records. Test remaining 60. Exact success means predicted j equals minimum positive j among ALL tied nearest points.
R_min este furnizat de căutarea exhaustivă: testul măsoară doar dacă raza deja cunoscută prezice j. Predictorul primește numai raza și 40 de perechi (rază,j) de antrenare, fără scalarul țintei de validare, fără indicele răspunsului și fără tabelul ciclului. Cele 60 de ținte de validare sunt distincte de antrenare. Se evaluează egalitatea exactă cu minimum j, nu o toleranță. Modelul se antrenează separat pe fiecare curbă; transferul între curbe nu a fost testat.
- p=10007: 0/60 (0%). Contraexemplu din validare: d=7400, R=53, prezis 7198, real 2585.
- p=1051: 0/60 (0%). Contraexemplu din validare: d=809, R=12, prezis 1010, real 466.
- p=5197: 0/60 (0%). Contraexemplu din validare: d=3245, R=15, prezis 1871, real 4891.
- p=10477: 0/60 (0%). Contraexemplu din validare: d=8062, R=69, prezis 9621, real 2161.
Regula testată eșuează pe toate cele patru curbe. Aceeași rază poate corespunde unor indici foarte diferiți, dar apar și indici apropiați. Datele nu justifică o formulă exactă din rază și nu exclud orice ipoteză viitoare bazată pe mai multe informații. Orice regulă nouă necesită o nouă validare pe ținte neutilizate.
## Precalcul și memorie
| p | câmpuri încercate | intrări rădăcini alocate cumulativ | payload maxim tabele rădăcini, bytes | intrări ciclu reținute |
|---:|---:|---:|---:|---:|
| 10007 | 1 | 20014 | 50035 | 0 |
| 1051 | 9 | 18530 | 5255 | 0 |
| 5197 | 23 | 234406 | 25985 | 0 |
| 10477 | 53 | 1085406 | 52385 | 0 |
Tabelele temporare sunt Int32Array(p) și Uint8Array(p), exact 5p bytes de payload per câmp. GC poate reține alocări vechi. Predictorul are 40 de intrări, payload numeric 640 bytes, fără overhead JS. Harta indicilor conține doar vecinii la minim. Maxim observat la limitele etapelor: RSS 72728576 bytes, heapUsed 9004712 bytes, arrayBuffers 2851018 bytes. Acestea includ motorul, rezultate și garbage collector; nu sunt vârfuri garantate sau memorie izolată a algoritmului. Snapshot-uri per curbă în JSON.
## Reproducere și verificare
```text
node static/ecc-neighbour-lab/nearest-run.cjs
.venv/Scripts/python.exe deploy/verify_ecc_nearest.py
node static/ecc-neighbour-lab/nearest-report.cjs
node static/ecc-neighbour-lab/research-test.cjs
```
Oracle-ul Python independent a verificat 400 de minime complete și toate cele 411 puncte/indici/diferențe, plus selecția țintelor și predicțiile. Tabelul ciclului din verificator este exclusiv un oracle ulterior; nu este disponibil predictorului și nu intră în timpii experimentului. Costul verificatorului este raportat separat în nearest-verification.json.
[Descarcă JSON complet](nearest-results.json) · [Verificare independentă](nearest-verification.json)