Problemă conexă
Standard Lanțul de adunare-scădere (ASC) pentru un număr întreg $k$ defineşte ordinea operaţiilor de adunare/scădere (dublare) astfel încât $k$ se ajunge in sfarsit, incepand cu $1$.
Acest lucru este util în special în calcularea ECC $k\cdot P$ prin adunări/scăderi și dubleri de puncte EC.
Scopul este de a găsi ASC cât mai scurt posibil, astfel încât să fie utilizat un număr minim de operații de adunare/scădere/dublare.
De exemplu., $(1,2,4,8,16,32,31)$ este un ASC pentru $31$ (cu multe adunări/dubleri și o scădere finală).
Cu toate acestea, pare a fi o problemă dificilă să găsiți cel mai scurt ASC.
Problema mea
În ASC-urile standard, complexitatea dublării este considerat a fi echivalent cu adunarea/scăderea, prin urmare lungimea ASC poate fi măsura complexității.
În scenariul meu, însă, dublarea este „gratis”.
Acest lucru duce la o generalizare (să-i spunem ASC²), în care lanțul nu conține numere întregi, ci mai degrabă clase de echivalenţă de $\{k, 2k, 2^2k, 2^3k \ldots\} =: [k]$ pentru $k$ număr întreg impar.
Adică, exemplul anterior poate fi scris foarte scurt ca $([1],[31])$ de cand $31 = -1 + 2^5\cdot 1$.
Scopul este clar să găsiți cel mai scurt ASC².
Întrebări)
- Există/sugerați vreo (euristică) metodă pentru găsirea unui ASC² "bun".?
- Cum ar putea scurte ASC² fie generate, astfel încât lor optimitatea este garantat?
- Btw există orice literatură despre asta?
Motivația
Implementând aritmetica peste numere întregi criptate (bit-cu-bit), ASC² ar fi utilă pentru multiplicarea scalară (adică, multiplicarea unui întreg criptat cu un întreg text simplu).
Într-o astfel de reprezentare, dublarea unui text cifrat este într-adevăr ieftină: este doar adăugarea unei criptări triviale de zero la poziția cea mai puțin semnificativă.
Pe de altă parte, adăugarea este foarte costisitoare (din moment ce folosește FHE), prin urmare, merită să găsiți cel mai bun ASC² posibil.