Padziko lonse lapansi ndi malupanga amtengo wapatali osungira deta. Mitundu yambiri. Gawo 3

Padziko lonse lapansi ndi malupanga amtengo wapatali osungira deta. Mitundu yambiri. Gawo 3M'magawo akale (1, 2) tidalankhula zapadziko lonse lapansi ngati mitengo, m'nkhaniyi tiwona zapadziko lonse lapansi ngati magawo ochepa.

Sparse Array ndi mtundu wamagulu momwe zinthu zambiri zimatengera mtengo womwewo.

M'malo mwake, magawo ochepa amakhala akulu kwambiri kotero kuti palibe chifukwa chokhalira kukumbukira zinthu zofanana. Choncho, n'zomveka kugwiritsa ntchito sparse arrays kuti chikumbukiro chisawonongeke posunga zinthu zofanana.
M'zinenero zina zopangira mapulogalamu, magawo ochepa amaphatikizidwa m'chinenerocho, mwachitsanzo mu J, MATLAB. Zilankhulo zina zamapulogalamu zili ndi malaibulale apadera omwe amakulolani kuti muwagwiritse ntchito. Za C++ - Mwini neri Al.

Ma Globals ndi oyenera kugwiritsa ntchito magawo ochepa chifukwa:

  1. Amasunga zikhalidwe zamanodi ena okha ndipo samasunga zomwe sizikudziwika;
  2. Mawonekedwe ofikira mtengo wa node ndi ofanana kwambiri ndi zilankhulo zingati zamapulogalamu zomwe zimakwaniritsa mwayi wopeza zinthu zambiri.
    Set ^a(1, 2, 3)=5
    Write ^a(1, 2, 3)

  3. Padziko lonse lapansi ndi gawo lotsika kwambiri losungiramo zidziwitso, chifukwa chake lili ndi mawonekedwe othamanga kwambiri (kuyambira mazana masauzande mpaka makumi mamiliyoni a zochitika pamphindikati, kutengera zida, onani pansipa). 1)

Popeza kuti padziko lonse lapansi ndi dongosolo lokhazikika, ndizomveka kuti apange maulendo ochepa pa iwo pamene amadziwika pasadakhale kuti kuchuluka kwa RAM sikungakhale kokwanira.

Chimodzi mwazinthu zokhazikitsidwa ndi sparse array ndikubweza mtengo wokhazikika ngati mwayi wapezeka ku selo yosadziwika.

Izi zitha kukhazikitsidwa pogwiritsa ntchito ntchitoyi $GET mu COS. Chitsanzo ichi chimayang'ana 3-dimensional array.

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

Ndi ntchito ziti zomwe zimafunikira magawo ochepa ndipo ma globals angathandize bwanji?

Kulumikizana (kulumikizana) matrix

Matrices oterowo amagwiritsidwa ntchito kuyimira ma graph:

Padziko lonse lapansi ndi malupanga amtengo wapatali osungira deta. Mitundu yambiri. Gawo 3

Mwachiwonekere, kukula kwa graph, ndipamenenso mazero adzakhalapo mu matrix. Ngati, mwachitsanzo, titenga chithunzi cha malo ochezera a pa Intaneti ndikuchiwonetsa mu mawonekedwe a matrix ofanana, ndiye kuti pafupifupi onse adzakhala ndi zero, i.e. adzakhala ochepa.

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

Mu chitsanzo ichi, tikupulumutsa padziko lonse lapansi ^m matrix olumikizirana, komanso kuchuluka kwa m'mphepete pa mfundo iliyonse (omwe ali ndi mabwenzi omwe ali nawo komanso kuchuluka kwa mabwenzi).

Ngati kuchuluka kwa zinthu mu graph sikuposa 29 miliyoni (chiwerengerochi chimatengedwa ngati 8 * kukula kwa mzere), ndiko kuti, njira yotsika mtengo kwambiri yosungira matrices oterowo ndi zingwe zazing'ono, popeza kukhazikitsidwa kwawo kumakulitsa mipata yayikulu mwanjira yapadera.

Kuwongolera ndi zingwe zazing'ono kumachitika ndi ntchitoyi $BIT.

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

Boma makina kusintha tebulo

Popeza graph yosinthira ya finite automaton ndi graph wamba, ndiye kuti tebulo losinthira la finite automaton ndilofanana ndi matrix oyandikana nawo omwe takambirana pamwambapa.

Ma cell automata

Padziko lonse lapansi ndi malupanga amtengo wapatali osungira deta. Mitundu yambiri. Gawo 3

Makina odziwika kwambiri a cell ndi masewera "Moyo", yomwe, chifukwa cha malamulo ake (pamene selo lili ndi oyandikana nawo ambiri, limafa) ndilochepa.

Stephen Wolfram amakhulupirira kuti ma cell automata ndi gawo latsopano la sayansi. Mu 2002, adasindikiza buku lamasamba 1280, A New Kind of Science, momwe amatsutsa mozama kuti kupita patsogolo kwa ma cell automata sikunapake, koma kumapirira ndipo kumakhala ndi tanthauzo lalikulu kumadera onse a sayansi.

Zatsimikiziridwa kuti ma aligorivimu aliwonse omwe angagwiritsidwe ntchito pakompyuta amatha kukhazikitsidwa pogwiritsa ntchito ma cell automaton. Ma cell automata amagwiritsidwa ntchito kutengera madera ndi machitidwe osinthika, kuthetsa mavuto a algorithmic ndi zolinga zina.

Ngati tili ndi gawo lalikulu ndipo tiyenera kulemba maiko onse apakatikati a automaton yama cell, ndiye kuti ndizomveka kugwiritsa ntchito ma globals.

Zojambulajambula

Chinthu choyamba chomwe chimabwera m'maganizo mwanga ndikamagwiritsa ntchito sparse arrays ndikujambula mapu.

Monga lamulo, pali malo ambiri opanda kanthu pamapu. Ngati mapu akuimiridwa ngati ma pixel akulu, ndiye kuti 71% ya ma pixel a Dziko lapansi adzakhala ndi nyanja. Zosanjikizana. Ndipo ngati mutagwiritsa ntchito ntchito za manja a anthu okha, ndiye kuti malo opanda kanthu adzakhala oposa 95%.

Inde, palibe amene amasunga mapu mu mawonekedwe a raster arrays;
Koma vekitala ndi chiyani? Uwu ndi mtundu wa chimango ndi ma polylines ndi ma polygon okhala ndi mfundo.
Kwenikweni database ya mfundo ndi kulumikizana pakati pawo.

Imodzi mwamapu omwe amafunitsitsa kupanga mapu ndi ntchito ya Gaia Telescope yopanga mapu a mlalang'amba wathu. Mophiphiritsa, mlalang'amba wathu, monga chilengedwe chonse, ndi malo ochepa omwe amapitilirabe: malo aakulu opanda kanthu momwe mulibe tinthu tating'ono - nyenyezi. Malo opanda kanthu ndi 99,999999…….%. Kuti musunge mapu a mlalang'amba wathu, nkhokwe yapadziko lonse lapansi idasankhidwa - Caché.

Sindikudziwa momwe dziko lonse lilili mu polojekitiyi, nditha kuganiza kuti ndizofanana ndi:

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

Kumene kuli b, l, d Galactic imagwirizanitsa latitude, longitude ndi mtunda wopita ku Dzuwa.

Mapangidwe osinthika amitundu yapadziko lonse lapansi amakulolani kuti musunge zofunikira zilizonse za nyenyezi ndi mapulaneti, popeza zoyambira padziko lonse lapansi ndizochepa.

Kusunga mapu a chilengedwe chathu, Caché sanasankhidwe chifukwa cha kusinthasintha kwake, komanso chifukwa cha kuthekera kwake kusunga mtsinje wa deta mofulumira kwambiri, panthawi imodzimodziyo kupanga index globals kuti afufuze mofulumira.

Ngati tibwerera ku Dziko Lapansi, ndiye kuti ntchito zama cartographic zidapangidwa padziko lonse lapansi OpenStreetMap XAPI ndi mphanda wa OpenStreetMap - Mtengo wa FOSM.

Posachedwapa hackathon Cache ma index a geospatial adakhazikitsidwa Geospatial. Tikudikirira nkhani yochokera kwa olemba yomwe ili ndi tsatanetsatane wokhazikitsa.

Kukhazikitsa ma index a malo padziko lonse lapansi mu OpenStreetMap XAPI

Zithunzi zotengedwa kuchokera chiwonetsero ichi.

Dziko lonse lapansi limagawidwa m'mabwalo, kenako mabwalo ang'onoang'ono, ndi ma subsquares kukhala ma sub-squares, ndi zina zotero. Mwambiri, timapeza dongosolo lambiri losungira lomwe ma globals amapangidwa.

Padziko lonse lapansi ndi malupanga amtengo wapatali osungira deta. Mitundu yambiri. Gawo 3

Nthawi iliyonse, titha kupempha malo omwe tikufuna kapena kuchotsa, ndipo ma subquares onse adzabwezedwanso kapena kuchotsedwa.

Chiwembu chofanana pazadziko lonse lapansi chikhoza kukhazikitsidwa m'njira zingapo.

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

Zosankha 2:

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

Muzochitika zonsezi, sikovuta kugwiritsa ntchito COS/M kufunsa mfundo zomwe zili mu sikweya ya mulingo uliwonse. Zidzakhala zosavuta kuyeretsa magawo apakati pamlingo uliwonse munjira yoyamba, koma izi sizofunikira.

Chitsanzo cha chimodzi mwamabwalo otsikirapo:

Padziko lonse lapansi ndi malupanga amtengo wapatali osungira deta. Mitundu yambiri. Gawo 3

Ndipo nazi zingapo zapadziko lonse lapansi kuchokera ku projekiti ya XAPI: kuyimira index pa mayiko:

Padziko lonse lapansi ndi malupanga amtengo wapatali osungira deta. Mitundu yambiri. Gawo 3

padziko lonse ^njira amagwiritsidwa ntchito posungira mfundo polylines (misewu, mitsinje yaing'ono, ndi zina zotero) ndi ma polygons (malo otsekedwa: nyumba, nkhalango, etc.).

Kusiyanasiyana kwapang'onopang'ono kwa kugwiritsa ntchito mitundu ingapo yapadziko lonse lapansi.

  1. Timasunga zolumikizira za zinthu zina ndi mayiko awo (mapu, ma cell automata)
  2. Timasunga matrices ochepa.

Mlandu 2) popempha kugwirizanitsa komwe chinthucho sichinapatsidwe mtengo, tiyenera kupeza mtengo wa chinthu chosasinthika cha sparse array.

Mabonasi omwe timalandira tikamasunga masamu ambiri padziko lonse lapansi

Chotsani mwachangu ndi/kapena sankhani malo omwe ali mizere ingapo, ndege, ma cubes, ndi zina zambiri. Nthawi zomwe ma index ambiri amagwiritsidwa ntchito, kuthekera kochotsa mwachangu ndi/kapena kutenga magawo amizeremizere, ndege, ma cubes, ndi zina zambiri zitha kukhala zothandiza.

timu kupha tikhoza kuchotsa chinthu chimodzi kapena mzere, kapena ngakhale ndege yonse. Chifukwa cha zinthu zapadziko lonse lapansi, izi zimachitika mwachangu kwambiri - nthawi masauzande mwachangu kuposa kuchotsa chinthu ndi chinthu.

Chithunzichi chikuwonetsa mawonekedwe amitundu itatu padziko lonse lapansi ^a ndi mitundu yosiyanasiyana ya kufufutidwa.

Padziko lonse lapansi ndi malupanga amtengo wapatali osungira deta. Mitundu yambiri. Gawo 3

Kuti musankhe zidutswa za danga pogwiritsa ntchito ma index odziwika, mutha kugwiritsa ntchito lamulo Gwirizanitsani.

Kusankha kolamu ya matrix muzosintha za Column:

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

Kutsiliza:

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

Chosangalatsa pakusintha kwa Column ndikuti tilinso ndi gulu locheperako, lomwe liyeneranso kupezeka. $GET, popeza zokhazikika sizimasungidwa mmenemo.

Kusankha zidutswa za malo kungathenso kuchitidwa kudzera mu pulogalamu yaying'ono pogwiritsa ntchito ntchitoyi $Oda. Izi ndizosavuta makamaka pamipata yomwe ma indices sawerengedwera (makatoni).

Pomaliza

Masiku ano akupanga ntchito zatsopano zokhumba. Zithunzi zimatha kupangidwa ndi mabiliyoni a vertices, mamapu opangidwa ndi mabiliyoni a mfundo, ndipo ena angafune kuyendetsa chilengedwe chawo pa ma cell automata (1, 2).

Pamene kuchuluka kwa deta kuchokera ku sparse arrays sikungathenso kulowa mu RAM, koma muyenera kugwira nawo ntchito, ndiye kuti ndi bwino kulingalira za kuthekera kokwaniritsa ntchito zofanana pa globals ndi COS.

Zikomo chifukwa chakumvetsera! Tikuyembekezera mafunso ndi zofuna zanu mu ndemanga.

chandalama: Nkhaniyi ndi ndemanga zanga kwa izo ndi lingaliro langa ndipo sizikukhudzana ndi udindo wa InterSystems Corporation.

Source: www.habr.com

Kuwonjezera ndemanga