Ezingxenyeni ezedlule (
Empeleni, ama-arrays ayi- sparse avame ukuba mkhulu kangangokuthi asikho isidingo sokuthatha inkumbulo ngezinto ezifanayo. Ngakho-ke, kunengqondo ukusebenzisa amalungu afanayo amancane ngendlela yokuthi inkumbulo ingamoshi ekugcineni amanani afanayo.
Kwezinye izilimi zokuhlela, ama-sparse array afakiwe olimini ngokwalo,
Ama-Globals angamakhandidethi amahle okusebenzisa ama-sarse array ngoba:
- Zigcina amanani ama-node athile kuphela futhi azigcini amanani angachazwanga;
- Isixhumi esibonakalayo sokufinyelela inani le-node sifana kakhulu nokuthi zingaki izilimi zokuhlela ezisebenzisa ukufinyelela ku-elementi yamalungu afanayo amaningi.
Set ^a(1, 2, 3)=5 Write ^a(1, 2, 3)
- I-Global iyisakhiwo esisezingeni eliphansi sokugcina idatha, ngakho-ke inezici zejubane ezivelele (kusuka kumakhulu ezinkulungwane kuya ezigidini zemisebenzi ngomzuzwana, kuya ngehadiwe, bheka ngezansi).
1 )
Njengoba i-global iyisakhiwo esiqhubekayo, kunengqondo ukudala ama-arrays amancane kuwo uma kwaziwa kusengaphambili ukuthi inani le-RAM ngeke lanele.
Esinye sezici zokusetshenziswa kwe-array sparse ukubuyisela inani elizenzakalelayo uma ukufinyelela kwenziwa kuseli elingachazwanga.
Lokhu kungenziwa kusetshenziswa umsebenzi
SET a = $GET(^a(x,y,z), defValue)
Yimiphi imisebenzi edinga ama-array ambalwa futhi ama-globals angasiza kanjani?
I-Adjacency (ukuxhumana) matrix
Ngokusobala, uma igrafu iba nkulu, kuzoba noziro abaningi ku-matrix. Uma, ngokwesibonelo, sithatha igrafu yenethiwekhi yokuxhumana nabantu futhi silethule ngendlela ye-matrix efanayo, khona-ke izoba cishe ngokuphelele nama-zero, i.e. kuzoba uhlu oluncane.
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
....
Kulesi sibonelo, silondoloza umhlaba wonke ^m i-matrix yokuxhuma, kanye nenani lemiphetho endaweni ngayinye (ubani abangani nobani kanye nenani labangane).
Uma inani lama-elementi kugrafu lingekho ngaphezu kwezigidi ezingu-29 (le nombolo ithathwa njengomkhiqizo ka-8 *
Ukukhohlisa ngeyunithi yezinhlamvu ezincane kwenziwa umsebenzi
; установка бита
SET $BIT(rowID, positionID) = 1
; получение бита
Write $BIT(rowID, positionID)
Ithebula lokushintsha komshini wombuso
Njengoba igrafu yoguquko ye-automaton enomkhawulo iyigrafu evamile, khona-ke ithebula loshintsho le-automaton enomkhawulo liyi-matrix eseduze efanayo okukhulunywe ngayo ngenhla.
I-automata yeselula
I-automaton yamaselula edume kakhulu
UStephen Wolfram ukholelwa ukuthi i-automata yamaselula
Kufakazelwe ukuthi noma iyiphi i-algorithm esebenzisekayo kukhompyutha ingasetshenziswa kusetshenziswa i-automaton yeselula. I-Cellular automata isetshenziselwa ukwenza imodeli yezindawo nezinhlelo eziguquguqukayo, ukuxazulula izinkinga ze-algorithmic nezinye izinjongo.
Uma sinenkambu enkulu futhi sidinga ukurekhoda zonke izifundazwe ezimaphakathi ze-automaton yamaselula, khona-ke kunengqondo ukusebenzisa umhlaba jikelele.
I-Cartography
Into yokuqala efika emqondweni wami uma kuziwa ekusebenziseni ama- sparse array imisebenzi yokwenza imephu.
Njengomthetho, kunesikhala esiningi esingenalutho kumamephu. Uma imephu imelwe njengamaphikseli amakhulu, khona-ke u-71% wamaphikseli oMhlaba azobe ehlala ulwandle. Amalungu afanayo amancane. Futhi uma usebenzisa kuphela imisebenzi yezandla zomuntu, khona-ke indawo engenalutho izoba ngaphezu kwama-95%.
Kunjalo, akekho ogcina amamephu ngendlela yama-raster arrays; kusetshenziswa ukumelwa kwe-vector.
Kodwa ayini amamephu e-vector? Lolu uhlobo lohlaka kanye nama-polylines namapholigoni ahlanganisa amaphuzu.
Empeleni isizindalwazi samaphoyinti nokuxhumana phakathi kwawo.
Omunye wemisebenzi ebaluleke kakhulu yokwenza imephu i-Gaia Telescope mission yokwenza imephu yomthala wethu. Ngomqondo ongokomfanekiso, umthala wethu, njengawo wonke umkhathi, uwuhlu oluqhubekayo oluyizinhlayiya: izikhala ezinkulu ezingenalutho lapho kukhona amaphuzu amancane angavamile - izinkanyezi. Isikhala esingenalutho ngu-99,999999…….%. Ukuze kugcinwe imephu yomthala wethu, kwakhethwa isizindalwazi somhlaba wonke - i-Caché.
Angazi ukwakheka okuqondile kwama-globals kule phrojekthi, ngingacabanga ukuthi kuyinto efana nale:
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
...
Lapho u-b, l, d ekhona
Isakhiwo esivumelana nezimo samazwe omhlaba sikuvumela ukuthi ulondoloze noma yiziphi izici ezidingekayo zezinkanyezi namaplanethi, njengoba izisekelo zomhlaba wonke zinohlelo oluncane.
Ukugcina imephu yendawo yonke yethu, i-Caché ayikhethwanga nje kuphela ngenxa yokuguquguquka kwayo, kodwa futhi nekhono layo lokugcina ukusakazwa kwedatha ngokushesha okukhulu, ngesikhathi esifanayo idala inkomba yomhlaba wonke ukuze kuseshwe ngokushesha.
Uma sibuyela eMhlabeni, amaphrojekthi we-cartographic adalwe emhlabeni jikelele
Muva nje
Ukusetshenziswa kwezinkomba zendawo emhlabeni jikelele ku-OpenStreetMap XAPI
Izithombe ezithathwe ku
Imbulunga yonke ihlukaniswe izikwele, bese kuba yizikwele, kanye nezikwele ezincane zibe izikwele ezingaphansi, njalonjalo. Ngokuvamile, sithola ukwakheka kwe-hierarchical yokugcina okudalwa ama-globals.
Nganoma isiphi isikhathi, cishe singacela ngokushesha isikwele esisifunayo noma sisisuse, futhi zonke izikwele ezincane nazo zizobuyiswa noma zisulwe.
Uhlelo olufanayo kuma-globals lungenziwa ngezindlela eziningi.
Inketho ye-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ВторойТочки
...
Inketho ye-2:
Set ^m('abacdabcdabacdabcda', 1) = idПервойТочки
Set ^m('abacdabcdabacdabcda', 2) = idВторойТочки
...
Kuzo zombili izimo, akunzima ukusebenzisa i-COS/M ukucela amaphoyinti atholakala kusikwele sanoma iyiphi ileveli. Kuzoba lula ngandlela-thile ukuhlanza izingcezu zesikwele zesikhala kunoma yiliphi izinga kunketho yokuqala, kodwa lokhu akuvamile kudingekile.
Isibonelo sesinye sezikwele ezisezingeni eliphansi:
Futhi nansi ama-globals ambalwa avela kuphrojekthi ye-XAPI: ukumelwa kwenkomba kuma-globals:
global ^indlela esetshenziswa ukugcina amaphuzu
Ukuhlukaniswa okungalungile kokusetshenziswa kwama-arrays ayi-sparse kuma-globals.
- Sigcina izixhumanisi zezinto ezithile nezimo zazo (imephu, i-automata yamaselula)
- Sigcina omatikuletsheni abambalwa.
Odabeni 2) lapho ucela ukuxhumanisa okuthile lapho isici singabelwe ivelu, kufanele sithole inani lesici esizenzakalelayo sohlelo oluyinqayizivele.
Amabhonasi esiwatholayo lapho sigcina u-matrices we-multidimensional emhlabeni jikelele
Khipha ngokushesha futhi/noma ukhethe izingcezu zesikhala eziyizimpinda zemigqa, izindiza, amakhyubhu, njll. Ezimweni lapho kusetshenziswa khona izinombolo eziphelele, ikhono lokususa ngokushesha kanye/noma ukulanda izingcezu zesikhala eziyiziphinda-phinda zemigqa, izindiza, amakhyubhu, njll. lingase libe usizo.
iqembu
Isibalo sibonisa amalungu afanayo anezinhlangothi ezintathu emhlabeni jikelele ^a kanye nezinhlobo ezahlukene zokususwa.
Ukuze ukhethe izingcezu zesikhala usebenzisa izinkomba ezaziwayo, ungasebenzisa umyalo
Ukukhetha ikholomu ye-matrix kokuhluka Kwekholomu:
; Зададим трёхмерный разреженный массив 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
Isiphetho:
Column(0)=1
Column(2)=1
Okuthakazelisayo ngokuhlukahluka kwekholomu ukuthi siphinde sibe nohlu oluncane, okufanele futhi lufinyelelwe ngalo.
Ukukhetha izingcezu zesikhala nakho kungenziwa ngohlelo oluncane kusetshenziswa umsebenzi
isiphetho
Izikhathi zamanje zenza imisebenzi emisha yokuvelela. Amagrafu angenziwa ngezigidigidi zama-vertices, amamephu enziwe ngezigidigidi zamaphoyinti, futhi amanye angahle afune nokuqhuba owawo umkhathi nge-automata yamaselula (
Lapho ivolumu yedatha evela ku-sarse array ingasakwazi ukungena ku-RAM, kodwa udinga ukusebenzisana nabo, khona-ke kufanelekile ukucabangela ukuthi kungenzeka yini ukusebenzisa amaphrojekthi afanayo kuma-globals kanye ne-COS.
Ngiyabonga ukulalela kwenu! Silinde imibuzo yakho nezifiso zakho kumazwana.
Disclaimer: Lesi sihloko kanye nokuphawula kwami kuso kuwumbono wami futhi akuhlobene nesimo esisemthethweni se-InterSystems Corporation.
Source: www.habr.com