**Paikselt taastatav kood** (ka *Locally Recoverable Code*, *Locally Repairable Code,* *LRC*) on kodeerimisteoorias kooditüüp, kus koodisõna iga sümbol on esitatav funktsioonina mingist väiksest osast ülejäänud sümbolitest.

Paikselt taastatavaid koode (edaspidi lühendatud PTK) kasutatakse andmesalvestuses, eriti pilv- ja hajussalvestuses. Kui osa andmebaasi sisust ei ole kättesaadav, siis PTK-d võimaldavad puuduva info ülejäänud andmete põhjal tõhusalt taastada. Seetõttu kasutatakse neid selleks, et suurendada salvestussüsteemide veataluvust.

Definitsioon
------------

Paikselt taastatav kood on üks kustutuskoodi liik. PTK-d loodi, kuna klassikaliste kustutuskoodide puhul (mille hulka kuuluvad nt Reed-Solomoni koodid) on vaja ühe sümboli taastamiseks nii palju teisi sümboleid, et taastamise protsess muutub ebatõhusaks ja aeglaseks. Paiksuse (*locality*) ja paikselt taastatavate koodide eesmärk on vähendada ühe sümboli taastamiseks vajaminevate sümbolite arvu.

PTK-sid kirjeldatakse üldiselt kujul *(n, k, r)*-PTK, kus *n* tähistab koodi pikkust, *k* tähistab koodi mõõdet ja *r* tähistab koodisõnade paiksust.

### Paikselt taastatava koodi definitsioon

Öeldakse, et koodil on paiksus *r*, kui tema iga koodisõna puhul on võimalik mistahes sümbolit taastada, kasutades *r* sümbolit ülejäänud koodisõnast. Teisisõnu, koodisõna iga sümbol peab olema esitatav funktsioonina mingist väiksest osast ülejäänud sümbolitest. Formaalsem koodi paiksuse kirjeldus on järgmine: Olgu {\displaystyle C\subset Q^{n}} kood ja olgu {\displaystyle x\in C} koodisõna, mis koosneb sümbolitest. Kui iga sümboli {\displaystyle x\_{i}} puhul, kus {\displaystyle i} kuulub hulka {\displaystyle [n]={1,2,...n}}, leidub selline {\displaystyle r} elemendist koosnev hulk {\displaystyle R\_{i}\subset [n]\setminus {i},|R\_{i}|\leq r} , nii et hulka {\displaystyle R\_{i}} kuuluvatel indeksitel asuvate elementide põhjal on võimalik taastada element {\displaystyle x\_{i}}, siis {\displaystyle C} on {\displaystyle r}-paikne.

Indeksite hulka, millel asuvatest elementidest on võimalik otsitav element taastada, nimetatakse elemendi taastehulgaks (*recovery set*).

### *t*-paikselt taastatava koodi definitsioon

Paikselt taastavatel koodidel võib olla üks või mitu taastehulka. Taastehulkade arvu rõhutamiseks võib PTK-sid tähistada kujul *t*-PTK ehk *(n, k, r, t)*-PTK.

 

Taastehulkade arv defineeritakse järgmiselt: Tähistagu {\displaystyle C\_{I}} koodi {\displaystyle C} koordinaatide alamhulka {\displaystyle I\subset [n]}. Olgu {\displaystyle a\in \mathbb {F} \_{q}} puhul defineeritud koodisõnade hulk {\displaystyle C(i,a)=\left\{x\in C:x\_{i}=a\right\},i\in [n]}. Öeldakse, et koodil {\displaystyle C} on {\displaystyle t} ühisosata taastehulka, kui iga {\displaystyle i\in [n]} jaoks leidub {\displaystyle t} paarikaupa ühisosata alamhulka {\displaystyle R\_{i,1},...R\_{i,t}\subset [n]} nii, et iga {\displaystyle j=1,...t} puhul kehtib võrdus



C

R

i
,
j

(
i
,
a
)
∩

C

R

i
,
j

(
i
,

a
′

)
=
∅
,

a
≠

a
′

.

{\displaystyle C\_{R\_{i,j}}(i,a)\cap C\_{R\_{i,j}}(i,a')=\emptyset ,\qquad a\neq a'.}

{\displaystyle C_{R_{i,j}}(i,a)\cap C_{R_{i,j}}(i,a')=\emptyset ,\qquad a\neq a'.}PTK-de kasutamisel andmesalvestussüsteemides kehtib põhimõte, et mida rohkem on taastehulki, seda parem on andmete kättesaadavus, sest siis saab korraga anda rohkematele kasutajatele juurdepääsu samadele andmetele.

Tõestused parameetrite kohta
----------------------------

Paikselt taastatavate koodide parameetrite kohta on tõestatud erinevaid tõkkeid.

### Miinimumkauguse tõkked

Gopalani jt artiklis ning Papailiopoulose ja Dimakise artiklis tõestatakse järgmine tõke ühe taastehulgaga *(n, k, d)*-PTK-de kohta, kus paiksus on *r* ja d on koodi miinimumkaugus:


d
≤
k
−
n
−

⌈

k
r

⌉

+
2.

{\displaystyle d\leq k-n-\left\lceil {\frac {k}{r}}\right\rceil +2.}

{\displaystyle d\leq k-n-\left\lceil {\frac {k}{r}}\right\rceil +2.}Koode, mis saavutavad selle tõkke võrdusega, peetakse optimaalseteks PTK-deks, nt püramiidkoodid. See tõke on ühtlasi Singletoni tõkke üldistus: Singletoni tõkke saab kätte siis, kui ülaltoodud avaldises võtta {\displaystyle r=k}. Rawati jt artiklis ning Wangi jt artiklis on tõestatud järgmine tõke koodi miinimumkauguse kohta:



d

m
i
n

(
C
)
≤
n
−
k
−

⌈

t
(
k
−
1
)
+
1

t
(
r
−
1
)
+
1

⌉

+
2.

{\displaystyle d\_{min}(C)\leq n-k-\left\lceil {\frac {t(k-1)+1}{t(r-1)+1}}\right\rceil +2.}

{\displaystyle d_{min}(C)\leq n-k-\left\lceil {\frac {t(k-1)+1}{t(r-1)+1}}\right\rceil +2.}Tegemist on eelmise tõkke üldistusega juhtudele, kus koodisõna igal sümbolil on üks või rohkem taastehulka. Tamo jt artiklis on veel tõestatud järgmine miinimumkauguse ülemine tõke, kus {\displaystyle t} tähistab taastehulkade arvu ja {\displaystyle r} tähistab taastehulkade elementide arvu:


d
≤
n
−

∑

i
=
0

t

⌊

k
−
1

r

i

⌋

.

{\displaystyle d\leq n-\sum \_{i=0}^{t}\left\lfloor {\frac {k-1}{r^{i}}}\right\rfloor .}

{\displaystyle d\leq n-\sum _{i=0}^{t}\left\lfloor {\frac {k-1}{r^{i}}}\right\rfloor .}
### Kooditeguri tõkked

Gopalan jt ning Papailioulos ja Dimakis on tõestanud ühe taastehulgaga *(n,k,r)*-PTK-de kooditeguri kohta järgmise tulemuse:


k
n

≤

r

r
+
1

.

{\displaystyle {\frac {k}{n}}\leq {\frac {r}{r+1}}.}

{\displaystyle {\frac {k}{n}}\leq {\frac {r}{r+1}}.}Ühe või rohkema (ühisosata) taastehulgaga koodide kohta on Tamo jt artiklis tõestatud järgmine kooditeguri ülemine tõke, kus {\displaystyle t} on koodi taastehulkade arv ja {\displaystyle r} on koodi paiksus:


k
n

≤

1

∏

j
=
1

t

(
1
+

1

j
r

)

.

{\displaystyle {\frac {k}{n}}\leq {\frac {1}{\prod \_{j=1}^{t}(1+{\frac {1}{jr}})}}.}

{\displaystyle {\frac {k}{n}}\leq {\frac {1}{\prod _{j=1}^{t}(1+{\frac {1}{jr}})}}.}Lisaks miinimumkauguse ja kooditeguri tõketele on tõestatud, et mida väiksem on koodi paiksus, seda madalam on veataluvus.

Optimaalsete paikselt taastatavate koodide konstruktsioonid
-----------------------------------------------------------

Nagu eelpool mainitud, peetakse optimaalseteks PTK-deks neid koode, mille puhul kehtib võrdus {\textstyle d=n-k-\left\lceil {\frac {k}{r}}\right\rceil +2.} 

Silberstein jt on kirjeldanud konstruktsiooni optimaalsete {\displaystyle (r,\delta ,\alpha )}-PTK-de jaoks, mis põhineb Gabidulini koodidel (Gabidulini koodid on MRD-koodid). Konstruktsioonis kasutatakse paikse grupi (*local group*) mõistet. Nimelt, töös kirjeldatav andmetalletussüsteem koosneb {\displaystyle n} tipust, millest igaüks sisaldab mingi arvu sümboleid. Ühe tipu sümbolid saab taastada, kasutades ülimalt {\displaystyle r} teist tippu nn paikse grupi seast, mille suurus on {\displaystyle r+\delta -1<n}. Selliste koodide kohta on artiklis tõestatud järgmine tõke, kus {\displaystyle \delta \geq 2} ja {\displaystyle r} on paiksuse parameetrid, {\displaystyle \alpha } on tipu sümbolite arv ning {\displaystyle \mathrm {M} } on koodi {\displaystyle C} mõõde:



d

m
i
n

(
C
)
≤
n
−

⌈

M

α

⌉

+
1
−

(

⌈

M

r
α

⌉

−
1

)

(
δ
−
1
)
.

{\displaystyle d\_{min}(C)\leq n-\left\lceil {\frac {\mathrm {M} }{\alpha }}\right\rceil +1-\left(\left\lceil {\frac {\mathrm {M} }{r\alpha }}\right\rceil -1\right)(\delta -1).}

{\displaystyle d_{min}(C)\leq n-\left\lceil {\frac {\mathrm {M} }{\alpha }}\right\rceil +1-\left(\left\lceil {\frac {\mathrm {M} }{r\alpha }}\right\rceil -1\right)(\delta -1).}Teine konstruktsioon on kirjeldatud Tamo jt artiklis. See konstruktsioon põhineb MDS-koodidel ja Reed-Solomoni koodidel. Töös on tõestatud ka optimaalsuse tingimust kinnitav võrdus {\textstyle d=n-k-\left\lceil {\frac {k}{r}}\right\rceil +2.}

Prakashi jt artiklis on kirjeldatud konstruktsioon ühe taastehulgaga optimaalsete PTK-de jaoks. Kirjeldatud konstruktsioonis on tehtud oluline edasiminek võrreldes eelnevate konstruktsioonidega: koodi tähestiku suurus ehk on võrreldav koodi pikkusega *n*. See-eest, koodi pikkus on piiratud täpse väärtuseni{\textstyle \left\lceil {\frac {k}{r}}\right\rceil (r+1).} 

Koodi pikkuse piirangust saadakse mööda Tamo ja Bargi artiklis. Artiklis on toodud ühe taastehulgaga optimaalsete PTK-de konstruktsioon, mis põhineb Reed-Solomoni koodide üldistusel. Selliselt konstrueeritud koodide kohta tõestatakse artiklis iga {\displaystyle r} korral, {\displaystyle 1<r<k}, miinimumkauguse tõke {\textstyle d=n-k-\left\lceil {\frac {k}{r}}\right\rceil +2,} mis tõestab konstruktsiooni optimaalsust. Antud juhul on koodi tähestiku suurus võrreldav koodi pikkusega {\displaystyle n}, ilma et koodi pikkusele oleks seatud piiranguid.

Edasiarendused
--------------

### Maksimaalse taastatavusega paikselt taastatavad koodid

Maksimaalse taastatavusega paikselt taastatavad koodid on sellised koodid, mis suudavad parandada samaaegselt kõik vead, mida on informatsiooniteoreetiliselt võimalik parandada, arvestades paiksusega. Selliseid koode kasutatakse nt Microsofti pilvsalvestussüsteemis Microsoft Azure.

### Kvantpaikselt taastatavad koodid

Louis Golowichi jt artiklis tutvustatakse kvantpaiksuse kontseptsiooni ja defineeritakse kvant-PTK mõiste. Mainitakse, et kvant-PTK võiks leida rakendust kvantandmesalvestuses ning kirjeldatakse kvant-PTK-de konstruktsioone, parameetrite tõkkeid ja muid omadusi.

### Paikse veatuvastusega paikselt taastatavad koodid

Carlos Munuera artiklis on kirjeldatud koodimudelit, mis ühendab paikse taastatavuse paikse veatuvastusega. Eesmärgiks on tuvastada olukordi, kus paiksel taastamisel kasutatavate elementide väärtused on vigased ja seetõttu tuleb taastamise tulemus vigane.

Viited
------

1. 1 2 3 4 5 6 7 8  Tamo, Itzhak; Barg, Alexander; Frolov, Alexey (juuni 2016). "Bounds on the Parameters of Locally Recoverable Codes" (PDF). *IEEE Transactions on Information Theory*. **62** (6). arXiv:1506.07196.
2. 1 2  Guruswami, Venkatesan; Jin, Lingfei; Xing, Chaoping (oktoober 2020). "Constructions of maximally recoverable local reconstruction codes via function fields" (PDF). *IEEE Transactions on Information Theory*. **66** (10). arXiv:1808.04539v1.
3. 1 2  Rawat, Ankit Singh; Papailiopoulos, Dimitris S.; Dimakis, Alexandros G.; Vishwanath, Sriram (august 2016). "Locality and Availability in Distributed Storage". *IEEE Transactions on Information Theory*. **62** (8). DOI:10.1109/TIT.2016.2524510.
4. 1 2 3  Tamo, Itzhak; Barg, Alexander (2014). "Bounds on Locally Recoverable Codes with Multiple Recovering Sets" (PDF). *2014 IEEE International Symposium on Information Theory*. arXiv:1402.0916v1.
5. 1 2 3 4 5  Gopalan, Parikshit; Huang, Cheng; Simitci, Huseyin; Yekhanin, Sergey (november 2012). "On the Locality of Codeword Symbols" (PDF). *IEEE Transactions on Information Theory*. **58** (11). arXiv:1106.3625v1.
6. 1 2  Papailiopoulos, Dimitris S.; Dimakis, Alexandros G. (oktoober 2014). "Locally Repairable Codes" (PDF). *IEEE Transactions on Information Theory*. **60** (10). arXiv:1206.3804v2.
7. ↑  Wang, Anyu; Zhang, Zhifang (november 2014). "Repair Locality With Multiple Erasure Tolerance" (PDF). *IEEE Transactions on Information Theory*. **60** (11). arXiv:1306.4774v1.
8. ↑  Silberstein, Natalia; Rawat, Ankit Singh; Koyluoglu, O. Ozan; Vishwanath, Sriram (2013). "Optimal locally repairable codes via rank-metric codes". *2013 IEEE International Symposium on Information Theory*. DOI:10.1109/ISIT.2013.6620541.
9. ↑  Tamo, Itzhak; Papailiopoulos, Dimitris S.; Dimakis, Alexandros G. (detsember 2016). "Optimal Locally Repairable Codes and Connections to Matroid Theory". *IEEE Transactions on Information Theory*. **62** (12). DOI:10.1109/TIT.2016.2555813.
10. 1 2  Prakash, N.; Kamath, Govinda M.; Lalitha, V.; Vijay Kumar, P. (2012). "Optimal linear codes with a local-error-correction property" (PDF). *2012 IEEE International Symposium on Information Theory Proceedings*. arXiv:1202.2414v1.
11. 1 2  Tamo, Itzhak; Barg, Alexander (august 2014). "A family of optimal locally recoverable codes" (PDF). *IEEE Transactions on Information Theory*. **60** (8). arXiv:1311.3284v2.
12. ↑  Gopi, Sivakanth (16. jaanuar 2018). "Maximally Recoverable Local Reconstruction Codes". *microsoft.com*. Vaadatud 13. jaanuaril 2024.
13. ↑  Golowich, Louis; Guruswami, Venkatesan (november 2023). "Quantum Locally Recoverable Codes" (PDF). *IEEE Transactions on Information Theory*. **60** (8). arXiv:2311.08653.
14. ↑  Munuera, Carlos (detsember 2018). "Locally Recoverable codes with local error detection" (PDF). arXiv:1812.00834v1