Tha cruinneagan nan claidheamhan ulaidh airson dàta a stòradh. Arrays gann. Pàirt 3

Tha cruinneagan nan claidheamhan ulaidh airson dàta a stòradh. Arrays gann. Pàirt 3Anns na pàirtean roimhe (1, 2) bhruidhinn sinn air cruinneagan mar chraobhan, anns an fhear seo seallaidh sinn ri cruinne-cè mar arrays gann.

Array gann 'S e seòrsa de raon anns a bheil a' mhòr-chuid de na luachan a' gabhail an aon luach.

Ann an cleachdadh, tha arrays gann gu tric cho mòr is nach eil feum air cuimhne a chumail leis na h-aon eileamaidean. Mar sin, tha e ciallach arrays gann a chuir an gnìomh ann an dòigh nach tèid cuimhne a chaitheamh air a bhith a’ stòradh luachan co-ionann.
Ann an cuid de chànanan prògramaidh, tha arrays gann air an toirt a-steach don chànan fhèin, mar eisimpleir ann an J, MATLAB. Tha leabharlannan sònraichte aig cànanan prògramaidh eile a leigeas leat an cur an gnìomh. Airson C++ - Sealbh agus feadhainn eile.

Tha cruinnean nan tagraichean math airson a bhith a’ cur an gnìomh arrays gann air sgàth:

  1. Bidh iad a’ stòradh luachan dìreach nodan sònraichte agus chan eil iad a’ stòradh luachan feadhainn neo-mhìnichte;
  2. Tha an eadar-aghaidh airson faighinn gu luach nód gu math coltach ris an àireamh de chànanan prògramaidh a tha a’ cur an gnìomh ruigsinneachd air eileamaid raon ioma-thaobhach.
    Set ^a(1, 2, 3)=5
    Write ^a(1, 2, 3)

  3. Tha Global na structar ìre ìosal airson stòradh dàta, agus mar sin tha feartan astair air leth aige (bho na ceudan mhìltean gu na deichean de mhilleanan de ghnothaichean gach diog, a rèir a’ bhathar-chruaidh, faic gu h-ìosal). 1)

Leis gur e structar seasmhach a th’ anns a’ chruinne-cè, tha e ciallach arrays gann a chruthachadh orra nuair a tha fios ro-làimh nach bi an uiread de RAM gu leòr.

Is e aon de na feartan a th’ aig buileachadh raon gann cuid de luach bunaiteach a thilleadh ma thèid slighe a-steach gu cealla neo-mhìnichte.

Faodar seo a chur an gnìomh a 'cleachdadh an gnìomh $GET ann an COS. Tha an eisimpleir seo a’ beachdachadh air sreath 3-mheudach.

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

Dè na gnìomhan a dh’ fheumas arrays gann agus ciamar as urrainn do chruinne-cè cuideachadh a thoirt a-mach?

Matrix faisg air làimh (ceangalachd).

Matrices mar sin air a chleachdadh airson grafaichean a riochdachadh:

Tha cruinneagan nan claidheamhan ulaidh airson dàta a stòradh. Arrays gann. Pàirt 3

Gu follaiseach, mar as motha a tha an graf, is ann as motha de neamhan a bhios anns a’ mhaitrix. Ma ghabhas sinn, mar eisimpleir, graf lìonra sòisealta agus a thaisbeanadh ann an cruth matrix coltach ris, bidh e cha mhòr gu tur air a dhèanamh suas de neamhan, i.e. bidh e na raon gann.

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
....

San eisimpleir seo, bidh sinn a’ sàbhaladh air feadh na cruinne ^m matrix ceangail, a bharrachd air an àireamh de oirean aig gach nód (cò na caraidean leis cò agus an àireamh de charaidean).

Mura h-eil an àireamh de eileamaidean sa ghraf nas àirde na 29 millean (thèid an àireamh seo a ghabhail mar thoradh 8 * meud loidhne as àirde).

Bithear a’ dèanamh làimhseachadh le sreangan beaga leis a’ ghnìomh $ BIT.

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

Clàr gluasaid inneal stàite

Leis gur e graf àbhaisteach a th’ ann an graf gluasaid automaton crìochnaichte, an uairsin is e clàr gluasaid an automaton crìochnaichte an aon mhaitrix faisg air làimh a chaidh a dheasbad gu h-àrd.

Automata ceallach

Tha cruinneagan nan claidheamhan ulaidh airson dàta a stòradh. Arrays gann. Pàirt 3

Is e an automaton ceallach as ainmeile geama "Life", a tha, air sgàth a riaghailtean (nuair a tha mòran nàbaidhean aig cealla, bidh e a 'bàsachadh) na raon gann.

Tha Stephen Wolfram den bheachd gu bheil automata cealla raon ùr saidheans. Ann an 2002, dh’fhoillsich e leabhar 1280 duilleag, A New Kind of Science, anns a bheil e ag argamaid gu farsaing nach eil adhartasan ann an automata ceallach iomallach, ach gu bheil iad maireannach agus gu bheil buaidh mhòr aca air gach raon de shaidheans.

Chaidh a dhearbhadh gum faodar algairim sam bith a ghabhas coileanadh air coimpiutair a chuir an gnìomh le bhith a ’cleachdadh automaton ceallach. Bithear a’ cleachdadh automata ceallach gus àrainneachdan agus siostaman fiùghantach a mhodaladh, gus fuasgladh fhaighinn air duilgheadasan algorithmach agus airson adhbharan eile.

Ma tha raon mòr againn agus feumaidh sinn a h-uile stàite eadar-mheadhanach de automaton cealla a chlàradh, tha e ciallach cruinnean a chleachdadh.

Cartography

Is e a’ chiad rud a thig nam inntinn nuair a thig e gu bhith a’ cleachdadh arrays gann a bhith a’ mapadh ghnìomhan.

Mar riaghailt, tha tòrr àite falamh air mapaichean. Ma tha am mapa air a riochdachadh mar piogsail mòra, bidh an cuan air a ghabhail thairis air 71% de piogsail na Talmhainn. Raon gann. Agus mura cuir thu a-steach ach obraichean làmhan daonna, bidh an àite falamh nas àirde na 95%.

Gu dearbh, chan eil duine a 'stòradh mhapaichean ann an cruth arrays raster; tha riochdachadh vectar air a chleachdadh.
Ach dè a th’ ann am mapaichean vector? Is e seo seòrsa de fhrèam agus polylines agus polygons anns a bheil puingean.
Gu bunaiteach stòr-dàta de phuingean agus de cheanglaichean eatorra.

Is e aon de na miseanan mapaidh as adhartaiche misean Gaia Telescope gus ar galaxy a mhapadh. Gu fìrinneach, tha ar galaxy, mar an cruinne-cè gu lèir, na raon gann leantainneach: àiteachan mòra falamh anns a bheil puingean beaga tearc - rionnagan. Is e àite falamh 99,999999 …….%. Gus am mapa den galaxy againn a stòradh, chaidh stòr-dàta cruinne a thaghadh - Caché.

Chan eil mi eòlach air an dearbh structar a tha aig cruinneagan sa phròiseact seo, is urrainn dhomh gabhail ris gu bheil e rudeigin coltach ri:

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
...

Far a bheil b, l, d bidh galactic a’ co-òrdanachadh domhan-leud, domhan-leud agus astar chun na grèine.

Leigidh structar sùbailte cruinne leat feartan riatanach sam bith de rionnagan is planaidean a shàbhaladh, leis gu bheil na bunaitean air cruinnean gun sgeama.

Gus mapa den chruinne-cè againn a stòradh, chaidh Caché a thaghadh chan ann a-mhàin airson a shùbailteachd, ach cuideachd airson a chomas sruth dàta a stòradh gu math luath, agus aig an aon àm a ’cruthachadh cruinnean clàr-amais airson rannsachaidhean luath.

Ma thilleas sinn chun Talamh, chaidh pròiseactan cartografach a chruthachadh air cruinnean OpenStreetMap XAPI agus forc de OpenStreetMap - FOSM.

O chionn ghoirid air adhart hackathon tasgadan chaidh clàran-amais geospatial a chuir an gnìomh Geospatial. Tha sinn a’ feitheamh ri artaigil bho na h-ùghdaran le mion-fhiosrachadh buileachaidh.

Cur an gnìomh clàran-amais spàsail air cruinne ann an OpenStreetMap XAPI

Dealbhan air an togail bho an taisbeanadh seo.

Tha an cruinne gu lèir air a roinn ann an ceàrnagan, an uairsin fo-cheàrnagan, agus fo-cheàrnagan gu fo-cheàrnagan, agus mar sin air adhart. San fharsaingeachd, gheibh sinn structar rangachd airson a bhith a’ stòradh dè na cruinnean a tha air an cruthachadh.

Tha cruinneagan nan claidheamhan ulaidh airson dàta a stòradh. Arrays gann. Pàirt 3

Aig àm sam bith, is urrainn dhuinn cha mhòr sa bhad an ceàrnag a tha thu ag iarraidh iarraidh no a ghlanadh, agus thèid a h-uile fo-cheàrnag a thilleadh no a ghlanadh cuideachd.

Faodar sgeama coltach ris air cruinnean a chuir an gnìomh ann an grunn dhòighean.

Roghainn 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ВторойТочки
...

Roghainn 2:

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

Anns gach suidheachadh, chan eil e doirbh COS/M a chleachdadh gus puingean iarraidh ann an ceàrnag de ìre sam bith. Bidh e beagan nas fhasa pìosan ceàrnagach de rùm a ghlanadh aig ìre sam bith anns a 'chiad roghainn, ach is ann ainneamh a tha seo riatanach.

Eisimpleir de aon de na ceàrnagan aig ìre ìosal:

Tha cruinneagan nan claidheamhan ulaidh airson dàta a stòradh. Arrays gann. Pàirt 3

Agus seo grunn chruinnean bhon phròiseact XAPI: riochdachadh clàr-amais air cruinnean:

Tha cruinneagan nan claidheamhan ulaidh airson dàta a stòradh. Arrays gann. Pàirt 3

cruinne ^ slighe air a chleachdadh airson puingean a stòradh polylines (rathaidean, aibhnichean beaga, msaa) agus poileagan (sgìrean dùinte: togalaichean, coilltean, msaa).

Seòrsachadh garbh air cleachdadh arrays gann air cruinnean.

  1. Bidh sinn a’ stòradh co-chomharran nithean sònraichte agus na stàitean aca (mapadh, automata ceallach)
  2. Bidh sinn a 'stòradh matrics gann.

Airson cùis 2) nuair a dh’ iarras sinn co-chomharran sònraichte far nach eil luach air a shònrachadh don eileamaid, feumaidh sinn luach na h-eileamaid àbhaisteach gann fhaighinn.

Bònasan a gheibh sinn nuair a bhios sinn a’ stòradh matrices ioma-thaobhach ann an cruinne-cè

Thoir air falbh gu sgiobalta agus / no tagh pìosan àite a tha nan iomadan de shreathan, plèanaichean, ciùban, msaa. Airson cùisean far a bheilear a’ cleachdadh clàran-amais iomlan, dh’ fhaodadh gum bi e feumail an comas pìosan fànais a thoirt air falbh agus/no fhaighinn air ais a tha nan iomadan de shreathan, phlèanaichean, chiùban, msaa.

sgioba Kill faodaidh sinn aon eileamaid no sreath a sguabadh às, no eadhon plèana slàn. Taing do fheartan cruinne, bidh seo a ’tachairt gu math luath - mìltean de thursan nas luaithe na toirt air falbh eileamaid-às-eileamaid.

Tha an dealbh a’ sealltainn sreath trì-thaobhach ann an cruinne-cè ^a agus diofar sheòrsaichean sguabadh às.

Tha cruinneagan nan claidheamhan ulaidh airson dàta a stòradh. Arrays gann. Pàirt 3

Gus pìosan àite a thaghadh a’ cleachdadh clàran-amais aithnichte, faodaidh tu an àithne a chleachdadh Cumadh.

A’ taghadh colbh matrix a-steach don chaochladair Colbh:

; Зададим трёхмерный разреженный массив 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

Co-dhùnadh:

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

Is e an rud a tha inntinneach mun chaochladair Colbh gu bheil raon gann againn cuideachd, a dh’ fheumar faighinn thuige tro $GET, leis nach eil luachan bunaiteach air an stòradh ann.

Faodar pìosan àite a thaghadh cuideachd tro phrògram beag a’ cleachdadh a’ ghnìomh $Òrdugh. Tha seo gu sònraichte goireasach air àiteachan far nach eil na clàran-amais aca air an tomhas (cartography).

co-dhùnadh

Tha na h-amannan a th’ ann an-dràsta a’ cruthachadh gnìomhan àrd-amasach ùra. Faodaidh grafaichean a bhith air an dèanamh suas de bhilleanan de vertices, mapaichean air an dèanamh suas de bhilleanan de phuingean, agus dh’ fhaodadh cuid eadhon a bhith ag iarraidh an cruinne-cè aca fhèin a ruith air automata cealla (1, 2).

Nuair nach urrainn meud an dàta bho arrays gann a dhol a-steach do RAM tuilleadh, ach feumaidh tu obrachadh còmhla riutha, is fhiach beachdachadh air comasachd pròiseactan coltach ris a chuir an gnìomh air cruinnean agus COS.

Tapadh leibh airson an aire agad! Tha sinn a’ feitheamh ri do cheistean agus do mhiannan anns na beachdan.

Àicheadh: Is e an artaigil seo agus na beachdan agam dha mo bheachd agus chan eil dàimh sam bith agam ri suidheachadh oifigeil InterSystems Corporation.

Source: www.habr.com

Cuir beachd ann