Ang mga global kay mga treasure-sword para sa pagtipig sa datos. Talagsaon nga mga han-ay. Bahin 3

Ang mga global kay mga treasure-sword para sa pagtipig sa datos. Talagsaon nga mga han-ay. Bahin 3Sa miaging mga bahin (1, 2) naghisgot kami mahitungod sa mga global isip mga kahoy, niining usa atong tan-awon ang mga global isip mga panagsama.

Panagtag nga Array mao ang usa ka matang sa laray diin kadaghanan sa mga kantidad adunay parehas nga kantidad.

Sa praktis, ang mga tipik nga mga han-ay sa kasagaran dako kaayo nga walay kapuslanan sa pag-okupar sa panumduman nga adunay managsama nga mga elemento. Busa, makatarunganon nga ipatuman ang mga panagsama nga mga array sa paagi nga ang memorya dili mausik sa pagtipig sa parehas nga mga kantidad.
Sa pipila ka mga lengguwahe sa pagprograma, ang pipila nga mga arrays gilakip sa pinulongan mismo, pananglitan sa J, MATLAB. Ang ubang mga programming language adunay espesyal nga mga librarya nga nagtugot kanimo sa pagpatuman niini. Para sa C++ - Iyaha ug uban pa.

Ang mga global maayo nga mga kandidato alang sa pagpatuman sa mga gamay nga arrays tungod kay:

  1. Gitipigan nila ang mga kantidad sa pipila lamang nga mga node ug wala gitipigan ang mga kantidad sa mga wala matino;
  2. Ang interface alang sa pag-access sa kantidad sa usa ka node susama kaayo sa kung pila ka mga programming language ang nagpatuman sa access sa usa ka multidimensional array element.
    Set ^a(1, 2, 3)=5
    Write ^a(1, 2, 3)

  3. Ang global usa ka medyo ubos nga lebel nga istruktura alang sa pagtipig sa datos, busa kini adunay talagsaong mga kinaiya sa katulin (gikan sa gatusan ka libo hangtod sa napulo ka milyon nga mga transaksyon matag segundo, depende sa hardware, tan-awa sa ubos). 1)

Tungod kay ang global usa ka makanunayon nga istruktura, makatarunganon nga maghimo ug gamay nga mga arrays sa kanila kung nahibal-an nga daan nga ang kantidad sa RAM dili igo.

Usa sa mga kabtangan sa mga pag-implementar sa pipila ka mga array mao ang pagbalik sa pipila ka mga default nga kantidad kung ang usa ka pag-access gihimo sa usa ka wala matino nga cell.

Mahimo kining ipatuman gamit ang function $GET sa COS. Kini nga pananglitan nagkonsiderar sa usa ka 3-dimensional nga array.

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

Unsang mga buluhaton ang nanginahanglan ug gamay nga mga arrays ug sa unsang paagi makatabang ang mga global?

Adjacency (koneksyon) matrix

Ang ingon nga mga matrice gigamit sa pagrepresentar sa mga graph:

Ang mga global kay mga treasure-sword para sa pagtipig sa datos. Talagsaon nga mga han-ay. Bahin 3

Dayag nga, kon mas dako ang graph, mas daghang mga sero ang anaa sa matrix. Kung, pananglitan, nagkuha kami usa ka graph sa social network ug gipresentar kini sa porma sa usa ka parehas nga matrix, nan kini hapit sa tibuuk nga mga zero, i.e. mahimong usa ka gamay nga laray.

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

Niini nga pananglitan, nagtipig kita sa tibuok kalibutan ^m connectivity matrix, ingon man ang gidaghanon sa mga ngilit sa matag node (kinsa ang mga higala ug ang gidaghanon sa mga higala).

Kung ang gidaghanon sa mga elemento sa graph dili molapas sa 29 milyon (kini nga numero gikuha ingon produkto sa 8 * maximum nga gidak-on sa linya), nga mao, ang usa ka labi ka ekonomikanhon nga paagi sa pagtipig sa ingon nga mga matrice mao ang mga bit string, tungod kay ang ilang pagpatuman nag-optimize sa daghang mga kal-ang sa usa ka espesyal nga paagi.

Ang mga manipulasyon nga adunay mga bit string gihimo sa function $BIT.

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

Talaan sa pagbalhin sa makina sa estado

Tungod kay ang transition graph sa usa ka finite automaton usa ka ordinaryo nga graph, nan ang transition table sa finite automaton mao ang parehas nga adjacency matrix nga gihisgutan sa ibabaw.

Cellular nga awto

Ang mga global kay mga treasure-sword para sa pagtipig sa datos. Talagsaon nga mga han-ay. Bahin 3

Ang labing inila nga cellular automat mao ang dula nga "Kinabuhi", nga, tungod sa mga lagda niini (kung ang usa ka selyula adunay daghang mga silingan, kini mamatay) usa ka gamay nga han-ay.

Si Stephen Wolfram nagtuo nga ang cellular automata bag-ong natad sa syensya. Sa 2002, gipatik niya ang usa ka 1280-panid nga libro, Usa ka Bag-ong Matang sa Siyensya, diin siya nangatarungan sa kadaghanan nga ang mga pag-uswag sa cellular automata dili ilain, apan naglungtad ug adunay daghang mga implikasyon sa tanan nga mga bahin sa syensya.

Napamatud-an nga ang bisan unsang algorithm nga ma-executable sa usa ka kompyuter mahimong ipatuman gamit ang usa ka cellular automaton. Ang cellular automata gigamit sa pagmodelo sa dinamikong mga palibot ug sistema, aron masulbad ang mga problema sa algorithm ug alang sa uban pang mga katuyoan.

Kung kami adunay usa ka dako nga natad ug kinahanglan namon nga irekord ang tanan nga mga intermediate nga estado sa usa ka cellular automaton, nan makatarunganon nga gamiton ang mga global.

Kartograpiya

Ang una nga butang nga naa sa akong hunahuna kung bahin sa paggamit sa mga panagsa nga arrays mao ang mga buluhaton sa pagmapa.

Ingon sa usa ka lagda, adunay daghang walay sulod nga luna sa mga mapa. Kung ang mapa girepresentahan nga dagkong mga pixel, nan 71% sa mga pixel sa Yuta ang maokupar sa kadagatan. Talagsaon nga han-ay. Ug kung mag-apply ka lamang sa mga buhat sa mga kamot sa tawo, nan ang walay sulod nga luna mahimong labaw pa sa 95%.

Siyempre, walay usa nga nagtipig sa mga mapa sa porma sa raster arrays; gigamit ang representasyon sa vector.
Apan unsa ang mga mapa sa vector? Kini usa ka matang sa frame ug polylines ug polygons nga naglangkob sa mga punto.
Sa tinuud usa ka database sa mga punto ug koneksyon tali kanila.

Usa sa labing ambisyoso nga mga misyon sa pagmapa mao ang Gaia Telescope nga misyon sa pagmapa sa atong galaksiya. Sa masambingayong pagkasulti, ang atong galaksiya, sama sa tibuok uniberso, maoy usa ka padayon nga diyotay nga han-ay: dagkong mga wanang sa kahaw-ang diin adunay talagsaon nga gagmay nga mga punto - mga bituon. Ang bakanteng luna kay 99,999999…….%. Aron tipigan ang mapa sa atong galaxy, usa ka global database ang gipili - Caché.

Wala ko nahibal-an ang eksaktong istruktura sa mga global sa kini nga proyekto, makahunahuna ako nga kini usa ka butang nga susama sa:

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

Asa ang b, l, d galactic coordinates latitude, longitude ug gilay-on sa Adlaw.

Ang flexible structure sa globals nagtugot kanimo sa pagluwas sa bisan unsa nga gikinahanglan nga mga kinaiya sa mga bitoon ug mga planeta, tungod kay ang mga base sa mga global dili kaayo scheme.

Aron matipigan ang mapa sa atong uniberso, gipili ang Caché dili lamang alang sa pagka-flexible niini, kondili alang usab sa abilidad niini sa pagtipig sa usa ka stream sa datos nga dali kaayo, samtang dungan nga nagmugna og index globals alang sa paspas nga pagpangita.

Kung mobalik kita sa Yuta, nan ang mga proyekto sa cartographic gihimo sa mga global OpenStreetMap XAPI ug usa ka tinidor sa OpenStreetMap - FOSM.

Bag-o lang sa hackathon Caché gipatuman ang mga geospatial index Geospatial. Naghulat kami sa usa ka artikulo gikan sa mga tagsulat nga adunay mga detalye sa pagpatuman.

Pagpatuman sa spatial index sa usa ka global sa OpenStreetMap XAPI

Mga hulagway nga gikuha gikan sa kini nga presentasyon.

Ang tibuok globo gibahin ngadto sa mga kuwadrado, unya mga sub-kuwadrado, ug mga sub-kuwadrado ngadto sa sub-sub-kuwadrado, ug uban pa. Sa kinatibuk-an, nakakuha kami usa ka hierarchical nga istruktura alang sa pagtipig kung unsang mga global ang gihimo.

Ang mga global kay mga treasure-sword para sa pagtipig sa datos. Talagsaon nga mga han-ay. Bahin 3

Sa bisan unsang gutlo, mahimo namong hangyoon dayon ang gusto nga kuwadro o hawanan kini, ug ang tanan nga mga sub-kuwadrado usab ibalik o hawanan.

Ang susamang laraw sa globals mahimong ipatuman sa daghang paagi.

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

Pagpili 2:

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

Sa duha ka mga kaso, dili lisud ang paggamit sa COS/M sa paghangyo sa mga punto nga nahimutang sa usa ka square sa bisan unsang lebel. Mahimong mas sayon ​​​​ang paglimpyo sa mga square nga piraso sa luna sa bisan unsang lebel sa unang kapilian, apan kini panagsa ra gikinahanglan.

Usa ka pananglitan sa usa sa ubos nga lebel nga mga kwadro:

Ang mga global kay mga treasure-sword para sa pagtipig sa datos. Talagsaon nga mga han-ay. Bahin 3

Ug ania ang daghang mga global gikan sa proyekto sa XAPI: representasyon sa usa ka indeks sa mga global:

Ang mga global kay mga treasure-sword para sa pagtipig sa datos. Talagsaon nga mga han-ay. Bahin 3

global ^ paagi gigamit sa pagtipig sa mga punto polylines (mga dalan, gagmay nga mga suba, ug uban pa) ug mga polygon (sirado nga mga lugar: mga bilding, kalasangan, ug uban pa).

Mabangis nga pagklasipikar sa paggamit sa mga sparse arrays sa globals.

  1. Gitipigan namon ang mga koordinasyon sa pipila nga mga butang ug ang ilang mga estado (mapping, cellular automata)
  2. Gitipigan namon ang gamay nga mga matrice.

Para sa kaso 2) sa dihang mangayo ug espesipikong koordinasyon diin ang elemento wala gi-assign sa usa ka bili, kinahanglan natong makuha ang bili sa default sparse array element.

Mga bonus nga among nadawat kung nagtipig sa mga multidimensional nga matrice sa mga global

Pagdali sa pagtangtang ug / o pagpili sa mga piraso sa wanang nga daghang mga linya, eroplano, cubes, ug uban pa. Para sa mga kaso diin gigamit ang mga integer index, ang abilidad sa dali nga pagtangtang ug/o pagkuha sa mga tipik sa luna nga daghang mga laray, eroplano, cubes, ug uban pa mahimong mapuslanon.

team Patya mahimo natong tangtangon ang bisan usa ka elemento o usa ka laray, o bisan usa ka tibuuk nga eroplano. Salamat sa mga kabtangan sa globals, kini mahitabo sa labing madali - liboan ka mga panahon nga mas paspas kay sa elemento-sa-elemento pagtangtang.

Ang numero nagpakita sa usa ka three-dimensional array sa usa ka global ^a ug lain-laing matang sa pagtangtang.

Ang mga global kay mga treasure-sword para sa pagtipig sa datos. Talagsaon nga mga han-ay. Bahin 3

Aron mapili ang mga piraso sa wanang gamit ang nahibal-an nga mga indeks, mahimo nimong gamiton ang mando Maghiusa.

Pagpili sa usa ka matrix nga kolum sa Column 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

Panapos:

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

Ang nakapaikag bahin sa variable sa Column mao nga kita usab adunay usa ka gamay nga laray, nga kinahanglan usab nga ma-access pinaagi sa $GET, tungod kay ang mga default nga kantidad wala gitipigan niini.

Ang pagpili sa mga piraso sa luna mahimo usab pinaagi sa usa ka gamay nga programa gamit ang function $Pag-order. Kini labi ka kombenyente sa mga wanang kansang mga indeks wala gi-quantize (kartograpiya).

konklusyon

Ang karon nga mga panahon nagpatunghag bag-ong ambisyoso nga mga buluhaton. Ang mga graph mahimong gilangkuban sa binilyon nga mga vertices, mga mapa nga gilangkoban sa binilyon nga mga punto, ug ang uban tingali gusto nga modagan sa ilang kaugalingong uniberso sa cellular automata (1, 2).

Sa diha nga ang gidaghanon sa mga data gikan sa sparse arrays dili na mahaum sa RAM, apan kamo kinahanglan nga sa pagtrabaho uban kanila, nan kini mao ang bili sa paghunahuna sa posibilidad sa pagpatuman sa susama nga mga proyekto sa globals ug COS.

Salamat sa imong pagtagad! Naghulat kami sa imong mga pangutana ug gusto sa mga komento.

Disclaimer: Kini nga artikulo ug ang akong mga komento niini mao ang akong opinyon ug walay kalabotan sa opisyal nga posisyon sa InterSystems Corporation.

Source: www.habr.com

Idugang sa usa ka comment