Ama-Global ayingcebo-izinkemba zokugcina idatha. Amalungu afanayo amancane. Ingxenye 3

Ama-Global ayingcebo-izinkemba zokugcina idatha. Amalungu afanayo amancane. Ingxenye 3Ezingxenyeni ezedlule (1, 2) sikhulume ngama-globals njengezihlahla, kulokhu sizobheka ama-globals njengama-sarse array.

I-Sparse Array kuwuhlobo lwamalungu afanayo lapho iningi lamanani lithatha inani elifanayo.

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, isibonelo ku-J, MATLAB. Ezinye izilimi zokuhlela zinemitapo yolwazi ekhethekile ekuvumela ukuthi uyisebenzise. Okwe-C++ - Okwakho nabanye.

Ama-Globals angamakhandidethi amahle okusebenzisa ama-sarse array ngoba:

  1. Zigcina amanani ama-node athile kuphela futhi azigcini amanani angachazwanga;
  2. 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)

  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 $GET e-COS. Lesi sibonelo sicubungula uhlu lwe-3-dimensional.

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

Yimiphi imisebenzi edinga ama-array ambalwa futhi ama-globals angasiza kanjani?

I-Adjacency (ukuxhumana) matrix

Amatrices anjalo esetshenziselwa ukumela amagrafu:

Ama-Global ayingcebo-izinkemba zokugcina idatha. Amalungu afanayo amancane. Ingxenye 3

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 * usayizi womugqa ophezulu), okungukuthi, indlela yokonga nakakhulu yokugcina ama-matrices anjalo izintambo ezincane, njengoba ukuqaliswa kwabo kuthuthukisa izikhala ezinkulu ngendlela ekhethekile.

Ukukhohlisa ngeyunithi yezinhlamvu ezincane kwenziwa umsebenzi $BIT.

; установка бита
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

Ama-Global ayingcebo-izinkemba zokugcina idatha. Amalungu afanayo amancane. Ingxenye 3

I-automaton yamaselula edume kakhulu umdlalo "Impilo", okuthi, ngenxa yemithetho yayo (lapho iseli linomakhelwane abaningi, liyafa) liwuhlu oluncane.

UStephen Wolfram ukholelwa ukuthi i-automata yamaselula umkhakha omusha wesayensi. Ngo-2002, washicilela incwadi enamakhasi ayi-1280, A New Kind of Science, lapho ephikisa kabanzi ngokuthi intuthuko ku-automata yamaselula ayihlukanisiwe, kodwa iyakhuthazela futhi inemiphumela emihle kuzo zonke izindawo zesayensi.

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 i-galactic ihlanganisa i-latitude, i-longitude kanye nebanga ukuya eLangeni.

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 I-OpenStreetMap XAPI kanye nemfoloko ye-OpenStreetMap - I-FOSM.

Muva nje I-hackathon Cache izinkomba ze-geospatial zasetshenziswa I-Geospatial. Silindele i-athikili evela kubabhali enemininingwane yokusetshenziswa.

Ukusetshenziswa kwezinkomba zendawo emhlabeni jikelele ku-OpenStreetMap XAPI

Izithombe ezithathwe ku lesi sethulo.

Imbulunga yonke ihlukaniswe izikwele, bese kuba yizikwele, kanye nezikwele ezincane zibe izikwele ezingaphansi, njalonjalo. Ngokuvamile, sithola ukwakheka kwe-hierarchical yokugcina okudalwa ama-globals.

Ama-Global ayingcebo-izinkemba zokugcina idatha. Amalungu afanayo amancane. Ingxenye 3

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:

Ama-Global ayingcebo-izinkemba zokugcina idatha. Amalungu afanayo amancane. Ingxenye 3

Futhi nansi ama-globals ambalwa avela kuphrojekthi ye-XAPI: ukumelwa kwenkomba kuma-globals:

Ama-Global ayingcebo-izinkemba zokugcina idatha. Amalungu afanayo amancane. Ingxenye 3

global ^indlela esetshenziswa ukugcina amaphuzu ama-polylines (imigwaqo, imifula emincane, njll.) namapholigoni (izindawo ezivaliwe: izakhiwo, amahlathi, njll.).

Ukuhlukaniswa okungalungile kokusetshenziswa kwama-arrays ayi-sparse kuma-globals.

  1. Sigcina izixhumanisi zezinto ezithile nezimo zazo (imephu, i-automata yamaselula)
  2. 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 Kill singasusa noma isici esisodwa noma umugqa, noma indiza yonke. Ngenxa yezakhiwo zomhlaba, lokhu kwenzeka ngokushesha okukhulu - izinkulungwane zezikhathi ngokushesha kunokususwa kwe-elementi ngayinye.

Isibalo sibonisa amalungu afanayo anezinhlangothi ezintathu emhlabeni jikelele ^a kanye nezinhlobo ezahlukene zokususwa.

Ama-Global ayingcebo-izinkemba zokugcina idatha. Amalungu afanayo amancane. Ingxenye 3

Ukuze ukhethe izingcezu zesikhala usebenzisa izinkomba ezaziwayo, ungasebenzisa umyalo Hlanganisa.

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. $GET, njengoba amanani azenzakalelayo awagcinwa kuyo.

Ukukhetha izingcezu zesikhala nakho kungenziwa ngohlelo oluncane kusetshenziswa umsebenzi $Oda. Lokhu kulula kakhulu ezikhaleni izinkomba zazo ezingabalwanga (i-cartography).

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 (1, 2).

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

Engeza amazwana