Global yo se trezò-nepe pou estoke done. Etalaj ra. Pati 3

Global yo se trezò-nepe pou estoke done. Etalaj ra. Pati 3Nan pati anvan yo (1, 2) nou te pale de global kòm pye bwa, nan yon sèl sa a nou pral gade nan global kòm etalaj sparse.

Sparse Array se yon kalite etalaj kote pi fò nan valè yo pran menm valè a.

Nan pratik, etalaj rar yo souvan tèlman gwo ke pa gen okenn pwen nan okipe memwa ak eleman ki idantik. Se poutèt sa, li fè sans pou aplike etalaj ra nan yon fason ke memwa pa gaspiye sou estoke valè ki idantik.
Nan kèk langaj pwogramasyon, etalaj ra yo enkli nan lang nan tèt li, pou egzanp nan J, Matleb. Lòt langaj pwogramasyon gen bibliyotèk espesyal ki pèmèt ou aplike yo. Pou C++ - Pwòp elatriye

Global yo se bon kandida pou mete ann aplikasyon etalaj sparse paske:

  1. Yo estoke valè yo nan sèlman sèten nœuds epi yo pa estoke valè yo nan nœuds ki pa defini;
  2. Koòdone pou jwenn aksè nan valè yon ne se trè menm jan ak konbyen lang pwogramasyon aplike aksè nan yon eleman etalaj miltidimansyonèl.
    Set ^a(1, 2, 3)=5
    Write ^a(1, 2, 3)

  3. Global se yon estrikti jistis ba-nivo pou estoke done, Se poutèt sa li gen karakteristik vitès eksepsyonèl (soti nan dè santèn de milye a dè dizèn de milyon tranzaksyon pou chak segonn, tou depann de pyès ki nan konpitè, gade anba a). 1)

Depi mondyal la se yon estrikti ki pèsistan, li fè sans pou kreye etalaj sparse sou yo lè li konnen davans ke kantite RAM pa pral ase.

Youn nan pwopriyete yo nan enplemantasyon etalaj sparse se retounen kèk valè default si yo fè yon aksè nan yon selil ki pa defini.

Sa a ka aplike lè l sèvi avèk fonksyon an $GET nan COS. Egzanp sa a konsidere yon etalaj 3 dimansyon.

SET a = $GET(^a(x,y,z), defValue)

Ki travay ki mande pou etalaj ra ak ki jan global yo ka ede?

Adjasans (koneksyon) matris

Matris sa yo yo itilize pou reprezante graf:

Global yo se trezò-nepe pou estoke done. Etalaj ra. Pati 3

Li evidan, pi gwo graf la, plis zewo pral genyen nan matris la. Si, pou egzanp, nou pran yon graf rezo sosyal epi prezante li nan fòm lan nan yon matris menm jan an, Lè sa a, li pral prèske antyèman konpoze de zewo, i.e. pral yon etalaj rar.

Set ^m(id1, id2) = 1 
Set ^m(id1, id3) = 1 
Set ^m(id1, id4) = 1 
Set ^m(id1) = 3 
Set ^m(id2, id4) = 1 
Set ^m(id2, id5) = 1 
Set ^m(id2) = 2
....

Nan egzanp sa a, nou sove globalman ^m matris koneksyon, osi byen ke kantite bor nan chak ne (ki moun ki zanmi ak ki moun ak kantite zanmi).

Si kantite eleman nan graf la pa plis pase 29 milyon (yo konsidere nimewo sa a kòm pwodwi 8 * gwosè maksimòm liy), se sa ki, yon fason menm plis ekonomik nan magazen matris sa yo se ti strings, depi aplikasyon yo optimize gwo twou vid ki genyen nan yon fason espesyal.

Manipilasyon ak ti fil yo fèt pa fonksyon an $ BIT.

; установка бита
SET $BIT(rowID, positionID) = 1
; получение бита
Write $BIT(rowID, positionID)

Eta machin tranzisyon tab

Piske graf tranzisyon yon otomat fini se yon graf òdinè, alò tab tranzisyon otomat fini an se menm matris adjasans ki te diskite pi wo a.

Otomat selilè

Global yo se trezò-nepe pou estoke done. Etalaj ra. Pati 3

Otomatik selilè ki pi popilè a se jwèt "Lavi", ki, akòz règ li yo (lè yon selil gen anpil vwazen, li mouri) se yon etalaj rar.

Stephen Wolfram kwè ke otomat selilè yo nouvo domèn syans. An 2002, li te pibliye yon liv 1280 paj, A New Kind of Science, kote li te diskite an jeneral ke pwogrè nan otomat selilè yo pa izole, men yo andire epi yo gen gwo enplikasyon pou tout domèn syans.

Li te pwouve ke nenpòt algorithm ègzèkutabl sou yon òdinatè ka aplike lè l sèvi avèk yon otomat selilè. Yo itilize otomat selilè pou modèl anviwònman ak sistèm dinamik, pou rezoud pwoblèm algoritmik ak pou lòt rezon.

Si nou gen yon gwo jaden epi nou bezwen anrejistre tout eta yo entèmedyè nan yon otomat selilè, Lè sa a, li fè sans yo sèvi ak globals.

Katografi

Premye bagay ki vin nan lide m 'lè li rive lè l sèvi avèk etalaj sparse se travay kat.

Kòm yon règ, gen yon anpil nan espas vid sou kat yo. Si kat la reprezante kòm gwo piksèl, Lè sa a, 71% nan piksèl Latè a pral okipe pa oseyan an. Etalaj sparse. Men, si ou aplike sèlman travay nan men moun, Lè sa a, espas vid la pral plis pase 95%.

Natirèlman, pa gen moun ki estoke kat nan fòm ranje raster yo itilize yon reprezantasyon vektè.
Men, kisa kat vektè yo ye? Sa a se yon kalite ankadreman ak poliliy ak poligòn ki fòme ak pwen.
Esansyèlman yon baz done nan pwen ak koneksyon ant yo.

Youn nan misyon kat ki pi anbisye se misyon Teleskòp Gaia pou kat galaksi nou an. Senbolikman pale, galaksi nou an, tankou linivè a tout antye, se yon etalaj kontinyèl rar: espas gwo nan vid kote gen ti pwen ra - zetwal. Espas vid se 99,999999…….%. Pou estoke kat jeyografik galaksi nou an, yo te chwazi yon baz done mondyal - Caché.

Mwen pa konnen estrikti egzak global yo nan pwojè sa a, mwen ka asime ke li se yon bagay ki sanble ak:

Set ^galaxy(b, l, d) = 1; Номер звезды по каталогу, если есть
Set ^galaxy(b, l, d, "name") = "Sun"
Set ^galaxy(b, l, d, "type") = "normal" ; варианты blackhole, quazar, red_dwarf и т.д.
Set ^galaxy(b, l, d, "weight") = 14E50
Set ^galaxy(b, l, d, "planetes") = 7
Set ^galaxy(b, l, d, "planetes", 1) = "Mercury"
Set ^galaxy(b, l, d, "planetes", 1, weight) = 1E20
...

Kote b, l, d kowòdone galaktik latitid, lonjitid ak distans ak Solèy la.

Estrikti fleksib nan global pèmèt ou sove nenpòt karakteristik ki nesesè nan zetwal ak planèt, depi baz yo sou global yo se konplo mwens.

Pou estoke kat linivè nou an, yo te chwazi Caché pa sèlman pou fleksibilite li, men tou pou kapasite li nan estoke yon kouran done trè vit, pandan y ap kreye global endèks pou rechèch rapid.

Si nou retounen sou Latè, Lè sa a, pwojè katografik yo te kreye sou global OpenStreetMap XAPI ak yon fouchèt nan OpenStreetMap - FOSM.

Dènyèman sou Hackathon Caché endèks jeospasyo yo te aplike jeospasyal. Nou ap tann yon atik nan men otè yo ak detay aplikasyon an.

Aplikasyon de endis espasyal sou yon global nan OpenStreetMap XAPI

Foto yo pran nan prezantasyon sa a.

Se glòb la tout antye divize an kare, Lè sa a, sub-kare, ak sub-kare nan sub-sou-kare, ak sou sa. An jeneral, nou jwenn yon estrikti yerarchize pou estoke ki global yo kreye.

Global yo se trezò-nepe pou estoke done. Etalaj ra. Pati 3

A nenpòt ki moman, nou ka prèske imedyatman mande kare vle a oswa netwaye li, epi tout sub-kare yo pral retounen oswa netwaye tou.

Yon konplo menm jan an sou global ka aplike nan plizyè fason.

Opsyon 1:

Set ^m(a, b, a, c, d, a, b,c, d, a, b, a, c, d, a, b,c, d, a, 1) = idПервойТочки
Set ^m(a, b, a, c, d, a, b,c, d, a, b, a, c, d, a, b,c, d, a, 2) = idВторойТочки
...

Opsyon 2:

Set ^m('abacdabcdabacdabcda', 1) = idПервойТочки
Set ^m('abacdabcdabacdabcda', 2) = idВторойТочки
...

Nan de ka yo, li pa difisil pou itilize COS/M pou mande pwen ki sitiye nan yon kare nan nenpòt nivo. Li pral yon ti jan pi fasil netwaye moso kare nan espas nan nenpòt nivo nan opsyon an premye, men sa a se raman nesesè.

Yon egzanp youn nan kare nivo ki pi ba yo:

Global yo se trezò-nepe pou estoke done. Etalaj ra. Pati 3

Epi isit la se plizyè global ki soti nan pwojè XAPI: reprezantasyon yon endèks sou global:

Global yo se trezò-nepe pou estoke done. Etalaj ra. Pati 3

Global ^fason itilize nan magazen pwen poliliy (wout, ti rivyè, elatriye) ak poligòn (zòn fèmen: bilding, forè, elatriye).

Klasifikasyon ki graj itilizasyon etalaj sparse sou global yo.

  1. Nou estoke kowòdone sèten objè ak eta yo (kat, otomat selilè)
  2. Nou estoke matris sparse.

Pou ka 2) lè w ap mande yon kowòdone espesifik kote eleman an pa bay yon valè, nou dwe jwenn valè eleman etalaj defo sparse la.

Bonis ke nou resevwa lè estoke matris miltidimansyon nan globals

Byen vit retire ak/oswa chwazi moso espas ki miltip ranje, avyon, kib, elatriye. Pou ka kote yo itilize endèks nonb antye relatif yo, kapasite pou retire ak/oswa pran ti moso espas ki miltip ranje, avyon, kib, elatriye ka itil.

ekip Touye nou ka efase swa yon sèl eleman oswa yon ranje, oswa menm yon avyon antye. Mèsi a pwopriyete yo nan global, sa rive trè vit - dè milye de fwa pi vit pase eleman-pa-eleman retire.

Figi a montre yon etalaj ki genyen twa dimansyon nan yon global ^a ak diferan kalite sipresyon.

Global yo se trezò-nepe pou estoke done. Etalaj ra. Pati 3

Pou chwazi moso nan espas lè l sèvi avèk endis li te ye, ou ka itilize kòmandman an Vin fè yon sèl.

Chwazi yon kolòn matris nan varyab Kolòn:

; Зададим трёхмерный разреженный массив 3x3x3
Set ^a(0,0,0)=1,^a(2,2,0)=1,^a(2,0,1)=1,^a(0,2,1)=1,^a(2,2,2)=1,^a(2,1,2)=1
Merge Column = ^a(2,2)
; Выведем переменную Column
Zwrite Column

Konklizyon:

Column(0)=1
Column(2)=1

Ki sa ki enteresan sou varyab la Kolòn se ke nou menm tou nou gen yon etalaj rar, ki dwe tou jwenn aksè nan $GET, depi valè default yo pa estoke nan li.

Chwazi moso espas kapab tou fèt atravè yon ti pwogram lè l sèvi avèk fonksyon an $Lòd. Sa a se espesyalman pratik sou espas ki gen endis yo pa quantized (katografi).

Konklizyon

Tan aktyèl yo poze nouvo travay anbisye. Grafik yo ka fòme ak dè milya de somè, kat yo te fòme ak dè milya de pwen, epi kèk ka menm vle kouri pwòp linivè yo sou otomat selilè (1, 2).

Lè volim done ki soti nan etalaj sparse pa ka anfòm nan RAM ankò, men ou bezwen travay avèk yo, Lè sa a, li vo konsidere posiblite pou aplike pwojè menm jan an sou global ak COS.

Mèsi pou atansyon ou! Nou ap tann kesyon ou yo ak volonte ou nan kòmantè yo.

Avètisman: Atik sa a ak kòmantè mwen yo sou li yo se opinyon mwen epi yo pa gen okenn relasyon ak pozisyon ofisyèl la nan InterSystems Corporation.

Sous: www.habr.com

Add nouvo kòmantè