Ntiaj teb no yog cov khoom muaj nqis-nqaij rau khaws cov ntaub ntawv. Sparse arrays. Ntu 3

Ntiaj teb no yog cov khoom muaj nqis-nqaij rau khaws cov ntaub ntawv. Sparse arrays. Ntu 3Hauv seem yav dhau los (1, 2) peb tham txog lub ntiaj teb no li ntoo, nyob rau hauv no peb yuav saib lub ntiaj teb no raws li sparse arrays.

Sparse Array yog ib hom array uas feem ntau ntawm cov nqi coj tus nqi tib yam.

Hauv kev xyaum, sparse arrays feem ntau loj heev uas tsis muaj qhov taw tes hauv kev nco nrog cov ntsiab lus zoo ib yam. Yog li ntawd, nws ua rau kev txiav txim siab los siv cov arrays sib cais hauv txoj hauv kev uas lub cim xeeb tsis tau khib nyiab ntawm kev khaws cov txiaj ntsig zoo ib yam.
Hauv qee hom lus programming, sparse arrays suav nrog hauv cov lus nws tus kheej, eg ua j, MATLAB. Lwm yam lus programming muaj cov tsev qiv ntawv tshwj xeeb uas tso cai rau koj los siv lawv. Rau C++ - Tus kheej thiab lwm tus.

Ntiaj teb no yog cov neeg sib tw zoo rau kev siv cov khoom sib cais vim tias:

  1. Lawv khaws cov txiaj ntsig ntawm qee cov nodes thiab tsis khaws cov txiaj ntsig ntawm cov tsis tau teev tseg;
  2. Lub interface rau kev nkag mus rau ntawm node tus nqi yog heev zoo ib yam li pes tsawg lub programming lus siv nkag mus rau ib tug multidimensional array keeb.
    Set ^a(1, 2, 3)=5
    Write ^a(1, 2, 3)

  3. Ntiaj teb no yog tus qauv qis qis rau kev khaws cov ntaub ntawv, yog li nws muaj cov yam ntxwv nrawm nrawm (los ntawm ntau pua txhiab mus rau kaum lab ntawm kev hloov pauv hauv ib ob, nyob ntawm qhov kho vajtse, saib hauv qab). 1)

Txij li thaum lub ntiaj teb no yog ib tug tsis tu ncua qauv, nws ua rau kev txiav txim siab los tsim sparse arrays rau lawv thaum nws paub ua ntej tias tus nqi ntawm RAM yuav tsis txaus.

Ib qho ntawm cov khoom ntawm sparse array kev siv yog rov qab qee tus nqi qub yog tias muaj kev nkag mus rau lub xovtooj tsis tau txhais.

Qhov no tuaj yeem siv tau los ntawm kev ua haujlwm $GET hauv COS. Qhov piv txwv no suav nrog 3-dimensional array.

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

Cov hauj lwm dab tsi xav tau cov arrays sib cais thiab cov ntiaj teb yuav pab tau li cas?

Adjacency (kev sib txuas) matrix

Xws li matrices siv los sawv cev graphs:

Ntiaj teb no yog cov khoom muaj nqis-nqaij rau khaws cov ntaub ntawv. Sparse arrays. Ntu 3

Obviously, qhov loj ntawm daim duab, ntau zeros yuav muaj nyob rau hauv lub matrix. Yog hais tias, piv txwv li, peb coj ib tug social network graph thiab nthuav nws nyob rau hauv daim ntawv ntawm ib tug zoo xws li cov matrix, ces nws yuav luag tag nrho muaj pes tsawg leeg, i.e. yuav yog sparse array.

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

Hauv qhov piv txwv no, peb txuag thoob ntiaj teb ^m kev sib txuas matrix, nrog rau tus naj npawb ntawm cov npoo ntawm txhua qhov ntawm (uas yog phooj ywg nrog leej twg thiab tus lej ntawm cov phooj ywg).

Yog tias tus naj npawb ntawm cov ntsiab lus hauv daim duab tsis ntau tshaj 29 lab (tus lej no raug coj los ua cov khoom ntawm 8 * kab loj tshaj plaws), uas yog, ib qho kev lag luam ntau dua los khaws cov matrices yog cov hlua me ntsis, txij li lawv qhov kev siv ua kom zoo dua qhov sib txawv loj hauv txoj kev tshwj xeeb.

Manipulations nrog cov hlua me ntsis yog ua los ntawm kev ua haujlwm $BIT.

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

Lub xeev tshuab hloov lub rooj

Txij li thaum qhov kev hloov pauv ntawm finite automaton yog ib daim duab zoo tib yam, ces cov lus hloov pauv ntawm lub finite automaton yog tib qhov adjacency matrix tau tham saum toj no.

Cellular automata

Ntiaj teb no yog cov khoom muaj nqis-nqaij rau khaws cov ntaub ntawv. Sparse arrays. Ntu 3

Qhov nrov tshaj plaws cellular automaton yog game "Lub neej", uas, vim nws txoj cai (thaum ib lub cell muaj ntau tus neeg nyob ze, nws tuag) yog ib tug sparse array.

Stephen Wolfram ntseeg tias cellular automata yog kev kawm tshiab. Hauv xyoo 2002, nws tau luam tawm 1280-nplooj phau ntawv, Ib Hom Kev Tshawb Fawb Tshiab, uas nws tau sib cav dav dav tias kev nce qib hauv cellular automata tsis nyob ib leeg, tab sis muaj kev vam meej thiab muaj txiaj ntsig zoo rau txhua qhov kev tshawb fawb.

Nws tau raug pov thawj tias txhua algorithm executable ntawm lub computer tuaj yeem siv tau siv lub cellular automaton. Cellular automata yog siv los ua qauv dynamic ib puag ncig thiab cov tshuab, los daws cov teeb meem algorithmic thiab rau lwm yam.

Yog tias peb muaj thaj chaw loj thiab peb yuav tsum tau sau tag nrho cov xeev nruab nrab ntawm lub xov tooj ntawm tes automaton, ces nws ua rau kev txiav txim siab siv thoob ntiaj teb.

Cartography

Thawj qhov uas los rau hauv kuv lub siab thaum nws los txog rau kev siv sparse arrays yog daim ntawv qhia ua haujlwm.

Raws li txoj cai, muaj ntau qhov chaw khoob ntawm daim duab qhia chaw. Yog tias daim ntawv qhia tau sawv cev raws li cov pixels loj, ces 71% ntawm lub ntiaj teb pixels yuav nyob hauv dej hiav txwv. Sparse array. Thiab yog tias koj tsuas yog ua haujlwm ntawm tib neeg txhais tes, ces qhov chaw khoob yuav ntau dua 95%.

Tau kawg, tsis muaj leej twg khaws daim duab qhia chaw nyob rau hauv daim ntawv ntawm raster arrays; ib tug vector sawv cev yog siv.
Tab sis dab tsi yog vector maps? Qhov no yog ib hom thav duab thiab polylines thiab polygons uas muaj cov ntsiab lus.
Qhov tseem ceeb yog database ntawm cov ntsiab lus thiab kev sib txuas ntawm lawv.

Ib lub hom phiaj tseem ceeb tshaj plaws hauv kev ua haujlwm yog Gaia Telescope lub hom phiaj los qhia peb lub galaxy. Figuratively hais lus, peb galaxy, zoo li tag nrho lub ntiaj teb, yog ib tug sparse array tsis tu ncua: loj qhov chaw ntawm emptiness nyob rau hauv uas muaj tsawg tsawg cov ntsiab lus - hnub qub. Qhov chaw seem yog 99,999999…….%. Txhawm rau khaws daim ntawv qhia ntawm peb lub galaxy, lub ntiaj teb database tau raug xaiv - Caché.

Kuv tsis paub tus qauv tseeb ntawm lub ntiaj teb hauv qhov project no, kuv tuaj yeem xav tias nws yog qee yam zoo li:

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

Qhov twg b,l,d galactic coordinates latitude, longitude thiab nyob deb ntawm lub hnub.

Cov qauv hloov pauv ntawm lub ntiaj teb no tso cai rau koj kom txuag tau cov yam ntxwv tsim nyog ntawm cov hnub qub thiab cov ntiaj chaw, txij li cov hauv paus hauv ntiaj teb yog cov tswv yim-tsawg.

Txhawm rau khaws daim ntawv qhia ntawm peb lub ntiaj teb, Caché tau xaiv tsis yog rau nws qhov yooj yim xwb, tab sis kuj rau nws lub peev xwm khaws cov kwj ntawm cov ntaub ntawv sai heev, thaum tib lub sijhawm tsim cov ntsuas thoob ntiaj teb rau kev tshawb nrhiav ceev.

Yog tias peb rov qab mus rau lub ntiaj teb, ces cov phiaj xwm cartographic tau tsim nyob rau hauv ntiaj teb OpenStreetMap XAPI thiab ib rab diav rawg ntawm OpenStreetMap - FOSM.

Tsis ntev los no Hackathon Cache geospatial indexes tau siv Geospatial. Peb tab tom tos ib tsab xov xwm los ntawm cov kws sau ntawv nrog cov ntsiab lus siv.

Kev nqis tes ua ntawm spatial indexes ntawm lub ntiaj teb hauv OpenStreetMap XAPI

Cov duab coj los ntawm qhov kev nthuav qhia no.

Tag nrho lub ntiaj teb muab faib ua squares, ces sub-squares, thiab sub-squares rau hauv sub-sub-squares, thiab lwm yam. Feem ntau, peb tau txais cov qauv hierarchical rau khaws cia uas lub ntiaj teb tsim.

Ntiaj teb no yog cov khoom muaj nqis-nqaij rau khaws cov ntaub ntawv. Sparse arrays. Ntu 3

Lub sijhawm twg los xij, peb tuaj yeem yuav luag tam sim ntawd thov cov xwm txheej xav tau lossis tshem nws, thiab tag nrho cov sub-squares tseem yuav rov qab los lossis tshem tawm.

Ib lub tswv yim zoo sib xws ntawm lub ntiaj teb tuaj yeem siv tau ntau txoj hauv kev.

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

Xaiv 2:

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

Hauv ob qho xwm txheej, nws tsis yooj yim rau siv COS / M los thov cov ntsiab lus nyob rau hauv ib lub xwmfab ntawm txhua qib. Nws yuav yooj yim me ntsis los ntxuav cov square pieces ntawm qhov chaw ntawm txhua qib hauv thawj qhov kev xaiv, tab sis qhov no tsis tshua tsim nyog.

Ib qho piv txwv ntawm ib qho ntawm theem qis squares:

Ntiaj teb no yog cov khoom muaj nqis-nqaij rau khaws cov ntaub ntawv. Sparse arrays. Ntu 3

Thiab ntawm no yog ob peb lub ntiaj teb los ntawm XAPI qhov project: sawv cev ntawm qhov ntsuas ntawm lub ntiaj teb:

Ntiaj teb no yog cov khoom muaj nqis-nqaij rau khaws cov ntaub ntawv. Sparse arrays. Ntu 3

ntiaj teb no ^ txoj siv los khaws cov ntsiab lus polylines (txoj kev, cov dej me me, thiab lwm yam) thiab polygons (cov chaw kaw: cov tsev, hav zoov, thiab lwm yam).

Rough classification ntawm kev siv sparse arrays nyob rau hauv lub ntiaj teb no.

  1. Peb khaws cov kev tswj hwm ntawm qee yam khoom thiab lawv lub xeev (mapping, cellular automata)
  2. Peb khaws cov sparse matrices.

Rau rooj plaub 2) thaum thov ib qho kev sib koom tes tshwj xeeb uas lub ntsiab tsis tau muab tus nqi, peb yuav tsum tau txais tus nqi ntawm lub default sparse array element.

Cov nyiaj tshwj xeeb uas peb tau txais thaum khaws cov matrices multidimensional hauv ntiaj teb

Tshem tawm sai sai thiab/lossis xaiv tej qhov chaw uas muaj ntau yam kab, dav hlau, cubes, thiab lwm yam. Rau cov xwm txheej uas siv cov lej suav, lub peev xwm tshem tawm sai sai thiab / lossis nqa cov chunks ntawm qhov chaw uas muaj ntau ntawm kab, dav hlau, lub voos xwmfab, thiab lwm yam yuav pab tau.

Pab neeg tua peb tuaj yeem rho tawm ib qho lossis ib kab, lossis txawm tias tag nrho lub dav hlau. Ua tsaug rau cov khoom ntawm lub ntiaj teb no, qhov no tshwm sim sai heev - ntau txhiab zaus sai dua li kev tshem tawm ntawm lub ntsiab lus.

Daim duab qhia txog peb-dimensional array nyob rau hauv lub ntiaj teb no ^a thiab ntau hom kev tshem tawm.

Ntiaj teb no yog cov khoom muaj nqis-nqaij rau khaws cov ntaub ntawv. Sparse arrays. Ntu 3

Txhawm rau xaiv qhov chaw uas siv cov indexes paub, koj tuaj yeem siv cov lus txib hauj lwm ua ke.

Xaiv ib kab matrix rau hauv kab sib txawv:

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

Xaus:

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

Dab tsi yog qhov nthuav txog Kab sib txawv yog tias peb kuj muaj qhov sib txawv, uas yuav tsum tau nkag mus los ntawm $GET, txij li qhov tseem ceeb tsis tau khaws cia rau hauv nws.

Xaiv tej qhov chaw tuaj yeem ua tiav los ntawm qhov kev pab cuam me me uas siv cov haujlwm $ Order. Qhov no yog tshwj xeeb tshaj yog yooj yim nyob rau hauv qhov chaw uas nws indices tsis quantized (cartography).

xaus

Lub sijhawm tam sim no tsim cov haujlwm tshiab uas xav tau. Cov duab tuaj yeem ua tau los ntawm ntau lab ntawm vertices, daim duab qhia ua los ntawm ntau lab ntawm cov ntsiab lus, thiab qee tus txawm xav khiav lawv lub ntiaj teb ntawm cellular automata (1, 2).

Thaum lub ntim ntawm cov ntaub ntawv los ntawm sparse arrays tsis tuaj yeem haum rau hauv RAM, tab sis koj yuav tsum ua haujlwm nrog lawv, ces nws tsim nyog xav txog qhov ua tau zoo ntawm kev siv cov haujlwm zoo sib xws hauv ntiaj teb thiab COS.

Ua tsaug rau koj mloog! Peb tab tom tos koj cov lus nug thiab xav tau hauv cov lus pom.

Disclaimer: Kab lus no thiab kuv cov lus rau nws yog kuv lub tswv yim thiab tsis muaj kev cuam tshuam rau txoj haujlwm ntawm InterSystems Corporation.

Tau qhov twg los: www.hab.com

Ntxiv ib saib