Muzvikamu zvakapfuura (
Mukuita, sparse arrays kazhinji akakura zvekuti hapana chikonzero chekutora ndangariro nezvinhu zvakafanana. Naizvozvo, zvine musoro kushandisa sparse arrays nenzira yekuti ndangariro dzisatambiswe pakuchengetedza zvakafanana hunhu.
Mune mimwe mitauro yekuronga, mitsetse mishoma inosanganisirwa mumutauro wacho,
Globals vakwikwidzi vakanaka vekushandisa sparse arrays nekuti:
- Ivo vanochengeta hunhu hwemamwe manode chete uye havachengete kukosha kweasina kutsanangurwa;
- Iyo interface yekuwana kukosha kwenode yakafanana zvakanyanya nekuti vangani mitauro yekuronga inoshandisa kuwana kune multidimensional array element.
Set ^a(1, 2, 3)=5 Write ^a(1, 2, 3)
- Global inzvimbo yakaderera-chikamu chekuchengetedza data, saka ine yakatanhamara yekumhanyisa maitiro (kubva kumazana ezviuru kusvika kumakumi emamiriyoni ekutengeserana pasekondi, zvichienderana nehardware, ona pazasi).
1 )
Sezvo iyo yepasirese iri chimiro chinoramba chiripo, zvine musoro kugadzira sparse arrays pavari kana ichizivikanwa pachine nguva kuti huwandu hwe RAM hauzokwane.
Imwe yezvivakwa zve sparse array mashandisirwo ndeyekudzosera imwe default kukosha kana mukana waitwa kune isina kutsanangurwa sero.
Izvi zvinogona kuitwa uchishandisa basa
SET a = $GET(^a(x,y,z), defValue)
Ndeapi mabasa anoda sparse arrays uye pasi rose angabatsira sei?
Adjacency (kubatanidzwa) matrix
Zviripachena, iyo yakakura girafu, iyo yakawanda zero ichave iri mumatrix. Kana, semuenzaniso, tikatora girafu yesocial network toiratidza muchimiro chechimiro chakafanana, ipapo inenge iine zero, i.e. ichava shoma shoma.
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
....
Mumuenzaniso uyu, tinoponesa pasi rose ^m yekubatanidza matrix, pamwe nehuwandu hwemipendero pane imwe neimwe node (ndiani ishamwari naye uye nhamba yeshamwari).
Kana nhamba yezvinhu zviri mugirafu isingadarike mamiriyoni makumi maviri nemapfumbamwe (nhamba iyi inotorwa sechigadzirwa che29 *
Manipulations ane bit tambo anoitwa nebasa
; установка бита
SET $BIT(rowID, positionID) = 1
; получение бита
Write $BIT(rowID, positionID)
State muchina shanduko tafura
Sezvo girafu yeshanduko yeinogumira otomatiki iri girafu rakajairwa, saka tafura yeshanduko yeinogumira automaton ndiyo yakafanana matrix yepedyo yakurukurwa pamusoro.
Cellular automata
Iyo inonyanya kuzivikanwa cellular automaton ndeye
Stephen Wolfram anotenda kuti cellular automata ndeye
Izvo zvave zvichiratidzwa kuti chero algorithm inoitwa pakombuta inogona kuitwa uchishandisa cellular automaton. Cellular automata inoshandiswa kuenzanisa nharaunda dzakasimba uye masisitimu, kugadzirisa algorithmic matambudziko uye nezvimwe zvinangwa.
Kana isu tiine munda wakakura uye isu tinofanirwa kurekodha ese epakati nyika ye cellular automaton, saka zvine musoro kushandisa pasi rose.
Cartography
Chinhu chekutanga chinouya mupfungwa dzangu kana zvasvika pakushandisa sparse arrays kuita mepu mabasa.
Sezvo mutemo, kune nzvimbo yakawanda isina chinhu pamepu. Kana mepu ichimiririrwa semapikisi makuru, ipapo 71% yemapikisi ePasi ichagarwa negungwa. Sparse array. Uye kana ukashandisa mabasa emaoko evanhu chete, ipapo nzvimbo isina chinhu ichave inopfuura 95%.
Ehe, hapana anochengeta mamepu ari muchimiro cheraster arrays; inomiririra vector inoshandiswa.
Asi chii chinonzi vector mepu? Iyi imhando yefuremu uye mapolylines uye mapolygoni ane mapoinzi.
Chaizvoizvo dhatabhesi yemapoinzi uye kubatana pakati pavo.
Imwe yeanonyanya kushuvira mepu mishoni ndeye Gaia Telescope mishoni yekumisikidza nyeredzi yedu. Nekudimikira, gwara redu renzou, sechadenga chese, inoramba iine nhurikidzwa: nzvimbo huru dzekusava nechinhu umo mune madiki madiki - nyeredzi. Empty space is 99,999999 …….%. Kuchengeta mepu yegirazi redu, dhatabhesi repasi rose rakasarudzwa - Caché.
Ini handizive chimiro chaicho chepasi rose muchirongwa ichi, ndinogona kufunga kuti chimwe chinhu chakafanana ne:
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
...
Apo b, l, d vari
Iyo inochinjika chimiro chepasi rose inobvumidza iwe kuchengetedza chero anodiwa maitiro enyeredzi nemapuraneti, sezvo mabhesi epasirese ari hurongwa-shoma.
Kuchengeta mepu yezvakasikwa zvedu, Caché yakasarudzwa kwete nekuda kwekushanduka kwayo chete, asiwo nekugona kwayo kuchengetedza rwizi rwe data nekukasira, ukuwo ichigadzira index globals yekutsvaga nekukurumidza.
Kana tikadzokera kuNyika, ipapo mapurojekiti emifananidzo akagadzirwa papasi rose
Munguva pfupi yapfuura
Kuitwa kwenzvimbo indekisi papasi rose muOpenStreetMap XAPI
Mifananidzo yakatorwa kubva
Nyika yese yakakamurwa kuita masikweya, ipapo sub-squares, uye sub-squares kuita sub-sub-squares, zvichingodaro. Kazhinji, tinowana chimiro chehierarchical chekuchengetedza izvo zvinogadzirwa pasi rose.
Chero nguva, tinogona kukumbira ipapo ipapo yatinoda skweya kana kuibvisa, uye ese madiki-square anodzoserwa kana kucheneswa.
Chirongwa chakafanana chepasi rose chinogona kuitwa nenzira dzinoverengeka.
Sarudzo 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ВторойТочки
...
Sarudzo 2:
Set ^m('abacdabcdabacdabcda', 1) = idПервойТочки
Set ^m('abacdabcdabacdabcda', 2) = idВторойТочки
...
Muzviitiko zvese izvi, hazvina kunetsa kushandisa COS/M kukumbira mapoinzi ari muskweya yechero nhanho. Zvichave zviri nyore kuchenesa mativi enzvimbo pane chero nhanho mune yekutanga sarudzo, asi izvi hazviwanzo kudikanwa.
Muenzaniso weimwe yezasi nhanho masikweya:
Uye heano akati wandei epasi rose kubva kuXAPI purojekiti: inomiririra index pane globals:
global ^nzira aishandiswa kuchengeta mapoinzi
Rough classification yekushandiswa kwe sparse arrays pane zvepasi rose.
- Isu tinochengeta kurongeka kwezvimwe zvinhu uye nyika dzazvo (mepu, cellular automata)
- Tinochengeta matrices mashoma.
Panyaya 2) kana uchikumbira kurongeka chaiko uko chinhu chisina kupihwa kukosha, isu tinofanirwa kuwana kukosha kweiyo default sparse array element.
Mabhonasi atinogashira kana tichichengeta multidimensional matrices mupasi rose
Kurumidza bvisa uye/kana sarudza zvimedu zvemuchadenga zvakapetwa mitsara, ndege, cubes, nezvimwe. Panyaya dzinoshandiswa nhamba dzakakwana, kukwanisa kubvisa nekukasira kubvisa uye/kana kutora machunks enzvimbo anowanza mitsetse, ndege, machubhu, nezvimwe zvinogona kubatsira.
team
Nhamba yacho inoratidza matatu-dimensional array mupasi rose ^a nemhando dzakasiyana dzekudzima.
Kuti usarudze zvidimbu zvenzvimbo uchishandisa ma index anozivikanwa, unogona kushandisa murairo
Kusarudza matrix column muColumn variable:
; Зададим трёхмерный разреженный массив 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
Mhedziso:
Column(0)=1
Column(2)=1
Chii chinonakidza nezve Column kusiyanisa ndechekuti isu zvakare tine sparse array, iyo inofanirwawo kuwanikwa kuburikidza
Kusarudza zvidimbu zvepakati zvinogonawo kuitwa kuburikidza nepurogiramu duku uchishandisa basa
mhedziso
Nguva dzazvino dzinoisa mabasa matsva ekuda. Magirafu anogona kuumbwa nemabhiriyoni emavertices, mepu dzakagadzirwa nemabhiriyoni emapoinzi, uye vamwe vangatoda kumhanyisa chadenga chavo pacellular automata (
Kana iyo vhoriyamu yedata kubva kune sparse arrays isingachakwanise kukwana mu RAM, asi iwe unofanirwa kushanda navo, saka zvakakosha kufunga nezve mukana wekuita mapurojekiti akafanana paglobals neCOS.
Ndinokutendai nekuteerera kwenyu! Isu takamirira mibvunzo yako uye zvishuwo mumhinduro.
Disclaimer: Ichi chinyorwa uye zvandinotaura kwazviri maonero angu uye hazvina hukama nenzvimbo yepamutemo yeInterSystems Corporation.
Source: www.habr.com