Глобалҳо шамшерҳои ганҷ барои нигоҳ доштани маълумот мебошанд. Массивҳои пароканда. Қисми 3

Глобалҳо шамшерҳои ганҷ барои нигоҳ доштани маълумот мебошанд. Массивҳои пароканда. Қисми 3Дар қисмҳои қаблӣ (1, 2) мо дар бораи глобалҳо ҳамчун дарахтҳо сӯҳбат кардем, дар ин бора мо ба глобалҳо ҳамчун массивҳои пароканда назар хоҳем кард.

Массиви пароканда як намуди массив аст, ки дар он аксари арзишҳо як арзишро мегиранд.

Дар амал, массивҳои камёфт аксар вақт чунон бузурганд, ки ишғол кардани хотира бо унсурҳои якхела ҳеҷ маъно надорад. Аз ин рӯ, амалӣ кардани массивҳои камёфт ба тарзе маъно дорад, ки хотира барои нигоҳ доштани арзишҳои якхела сарф нашавад.
Дар баъзе забонҳои барномасозӣ, массивҳои камёфт ба худи забон дохил мешаванд, масалан дар Ҷ, Мақом:. Дигар забонҳои барномасозӣ китобхонаҳои махсус доранд, ки ба шумо имкон медиҳанд, ки онҳоро амалӣ кунед. Барои C++ - Эйген ва дигарон.

Глобалҳо номзадҳои хуб барои татбиқи массивҳои пароканда мебошанд, зеро:

  1. Онҳо арзишҳои танҳо гиреҳҳои муайянро нигоҳ медоранд ва арзишҳои гиреҳҳои номуайянро нигоҳ намедоранд;
  2. Интерфейси дастрасӣ ба арзиши гиреҳ ба он хеле монанд аст, ки чӣ қадар забонҳои барномасозӣ дастрасӣ ба унсури массиви бисёрченакаро амалӣ мекунанд.
    Set ^a(1, 2, 3)=5
    Write ^a(1, 2, 3)

  3. Глобалӣ як сохтори сатҳи пасти нигоҳдории маълумот аст, бинобар ин он дорои хусусиятҳои барҷастаи суръат аст (аз садҳо ҳазорҳо то даҳҳо миллион транзаксияҳо дар як сония, вобаста ба сахтафзор, ба поён нигаред). 1)

Азбаски глобалӣ сохтори устувор аст, дар онҳо массивҳои пароканда эҷод кардан маъно дорад, вақте ки пешакӣ маълум аст, ки миқдори RAM кофӣ нахоҳад буд.

Яке аз хосиятҳои татбиқи массивҳои пароканда ин баргардонидани баъзе арзиши пешфарз аст, агар дастрасӣ ба ячейкаи номуайян анҷом дода шавад.

Инро бо истифода аз функсия амалӣ кардан мумкин аст $GET дар COS. Ин мисол массиви 3-ченакаро баррасӣ мекунад.

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

Кадом вазифаҳо массивҳои камро талаб мекунанд ва чӣ гуна глобалҳо метавонанд ба ин кӯмак расонанд?

Матритсаи ҳамсоягӣ (пайвастшавӣ).

Чунин матрицахо барои нишон додани графикҳо истифода мешавад:

Глобалҳо шамшерҳои ганҷ барои нигоҳ доштани маълумот мебошанд. Массивҳои пароканда. Қисми 3

Аён аст, ки график чӣ қадар калонтар бошад, дар матритса ҳамон қадар сифрҳо зиёд хоҳанд буд. Агар, масалан, мо як графики шабакаи иҷтимоиро гирем ва онро дар шакли матритсаи шабеҳ пешниҳод кунем, он гоҳ он қариб пурра аз сифрҳо иборат хоҳад буд, яъне. массиви камёфт мешавад.

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

Дар ин мисол мо дар саросари ҷаҳон сарфа мекунем ^m матритсаи пайвастшавӣ, инчунин шумораи кунҷҳои ҳар як гиреҳ (ки бо кӣ дӯст аст ва шумораи дӯстон).

Агар шумораи элементҳои график аз 29 миллион зиёд набошад (ин адад ҳосили 8 * гирифта мешавад) андозаи максималии хат), яъне роҳи боз ҳам сарфакоронаи нигоҳ доштани чунин матритсаҳо сатри бит аст, зеро татбиқи онҳо холигии калонро ба таври махсус оптимизатсия мекунад.

Манипуляцияҳо бо сатрҳои бит аз ҷониби функсия иҷро карда мешаванд $BIT.

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

Ҷадвали гузариши мошини давлатӣ

Азбаски графи гузариши автомати ниҳоӣ графики оддӣ аст, пас ҷадвали гузариши автомати ниҳоӣ ҳамон матритсаи ҳамсоягии дар боло баррасӣшуда мебошад.

Автоматҳои мобилӣ

Глобалҳо шамшерҳои ганҷ барои нигоҳ доштани маълумот мебошанд. Массивҳои пароканда. Қисми 3

Машҳуртарин автомати мобилӣ мебошад бозии "Ҳаёт", ки аз рӯи қоидаҳои худ (вақте ки ҳуҷайра ҳамсояҳои зиёд дорад, мемирад) массиви камёфт аст.

Стивен Волфрам боварӣ дорад, ки автоматҳои мобилӣ ҳастанд сохаи нави илм. Дар соли 2002 ӯ китоби 1280 саҳифаи «Намуди нави илм»-ро нашр кард, ки дар он ба таври васеъ истидлол мекунад, ки пешрафтҳо дар автоматҳои ҳуҷайра ҷудо нестанд, балки устуворанд ва барои тамоми соҳаҳои илм аҳамияти бузург доранд.

Исбот шудааст, ки ҳар як алгоритми иҷрошавандаи компютерро бо ёрии автомати мобилӣ амалӣ кардан мумкин аст. Автоматҳои мобилӣ барои моделсозии муҳити динамикӣ ва системаҳо, барои ҳалли масъалаҳои алгоритмӣ ва дигар мақсадҳо истифода мешаванд.

Агар мо майдони азим дошта бошем ва мо бояд тамоми ҳолати мобайнии автомати ҳуҷайраро сабт кунем, он гоҳ истифодаи глобалӣ маъно дорад.

Картография

Аввалин чизе, ки дар мавриди истифодаи массивҳои пароканда ба хотирам меояд, ин харитасозии вазифаҳост.

Чун қоида, дар харитаҳо фазои холӣ зиёд аст. Агар харита ҳамчун пикселҳои калон нишон дода шавад, пас 71% пикселҳои Заминро уқёнусҳо ишғол мекунанд. Массиви пароканда. Ва агар шумо танҳо корҳои дасти инсонро истифода баред, фазои холӣ зиёда аз 95% хоҳад буд.

Албатта, ҳеҷ кас харитаҳоро дар шакли массивҳои растрӣ нигоҳ намедорад, тасвири векторӣ истифода мешавад;
Аммо харитаҳои векторӣ чист? Ин як навъ чаҳорчӯба ва полихатҳо ва бисёркунҷаҳоест, ки аз нуқтаҳо иборатанд.
Аслан базаи нуқтаҳо ва робитаҳои байни онҳо.

Яке аз миссияҳои шӯҳратпарасти харитасозӣ ин миссияи Telescope Gaia барои харитаи галактикаи мо мебошад. Ба таври образнок гуем, галактикаи мо мисли тамоми коинот як массиви доимии пароканда аст: фазохои азими холй, ки дар онхо нуктахои хурди нодир — ситорахо мавчуданд. Фазои холӣ 99,999999…….% аст. Барои нигоҳ доштани харитаи галактикаи мо, махзани умумиҷаҳонӣ интихоб карда шуд - Cach.

Ман сохтори дақиқи глобалиро дар ин лоиҳа намедонам, ман метавонам тахмин кунам, ки он чизе монанд аст:

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

Дар куҷо b, l, d координатхои галактикии арз, тули ва масофа ба Офтоб.

Сохтори чандири глобалӣ ба шумо имкон медиҳад, ки ҳама гуна хусусиятҳои зарурии ситораҳо ва сайёраҳоро захира кунед, зеро асосҳои глобалӣ нақша надоранд.

Барои нигоҳ доштани харитаи олами мо, Caché на танҳо барои чандирии худ, балки барои қобилияти зуд нигоҳ доштани ҷараёни маълумот ва ҳамзамон барои ҷустуҷӯи зуд индекси глобалӣ эҷод кардан интихоб карда шуд.

Агар мо ба Замин баргардем, пас лоиҳаҳои картографӣ дар ҷаҳониён сохта шудаанд OpenStreetMap XAPI ва як фардкунандаи OpenStreetMap - FOSM.

Ба карибй дар Hackathon Caché нишондиҳандаҳои геофазоӣ амалӣ карда шуданд Geospatial. Мо интизори мақолаи муаллифон бо тафсилоти татбиқ ҳастем.

Амалисозии индексҳои фазоӣ дар глобалӣ дар OpenStreetMap XAPI

Суратҳо аз ин презентатсия.

Тамоми кураи замин ба чоркунчаҳо, баъд зери мураббаъҳо ва зерчарбачаҳо ба зерчарбачаҳо ва ғайра тақсим мешаванд. Умуман, мо сохтори иерархикиро барои нигоҳ доштани глобалӣ ба даст меорем.

Глобалҳо шамшерҳои ганҷ барои нигоҳ доштани маълумот мебошанд. Массивҳои пароканда. Қисми 3

Дар ҳар лаҳза, мо метавонем қариб фавран майдони дилхоҳро дархост кунем ё онро тоза кунем ва ҳамаи зермайдонҳо низ баргардонида ё тоза карда мешаванд.

Нақшаи шабеҳи глобалӣ метавонад бо чанд роҳ амалӣ карда шавад.

Интихоби 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ВторойТочки
...

Интихоби 2:

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

Дар ҳарду ҳолат, истифодаи COS/M барои дархост кардани нуқтаҳое, ки дар квадрати ҳама гуна сатҳҳо ҷойгиранд, душвор нест. Дар варианти аввал тоза кардани қитъаҳои мураббаъи фазо дар ҳама сатҳ каме осонтар хоҳад буд, аммо ин хеле кам лозим аст.

Намунаи яке аз квадратҳои сатҳи поёнӣ:

Глобалҳо шамшерҳои ганҷ барои нигоҳ доштани маълумот мебошанд. Массивҳои пароканда. Қисми 3

Ва инҳоянд якчанд глобалӣ аз лоиҳаи XAPI: муаррифии шохиси глобалӣ:

Глобалҳо шамшерҳои ганҷ барои нигоҳ доштани маълумот мебошанд. Массивҳои пароканда. Қисми 3

глобалӣ ^ рох барои нигоҳ доштани нуқтаҳо истифода мешавад полилинҳо (роҳҳо, дарёҳои хурд ва ғ.) ва полигонҳо (минтақаҳои пӯшида: биноҳо, ҷангалҳо ва ғ.).

Таснифи дағалии истифодаи массивҳои пароканда дар глобалӣ.

  1. Мо координатаҳои объектҳои муайян ва ҳолати онҳоро нигоҳ медорем (харитасозӣ, автоматҳои мобилӣ)
  2. Мо матрицаҳои камёфтро нигоҳ медорем.

Барои ҳолати 2) ҳангоми дархости координати мушаххас, ки дар он элемент ба арзиш таъин нашудааст, мо бояд арзиши элементи массиви нобаёнро гирем.

Бонусҳое, ки мо ҳангоми нигоҳ доштани матритсаҳои бисёрченака дар глобалӣ мегирем

Қисмҳои фазоеро, ки чанд сатр, ҳавопаймо, куб ва ғайра мебошанд, зуд хориҷ кунед ва/ё интихоб кунед. Барои ҳолатҳое, ки индексҳои бутун истифода мешаванд, қобилияти зуд тоза кардан ва/ё гирифтани қисмҳои фазо, ки чанд сатр, ҳавопаймо, мукааб ва ғайра мебошанд, муфид буда метавонад.

даста куштан мо метавонем як элемент ё як сатр ё ҳатто як ҳавопайморо нест кунем. Ба шарофати хосиятҳои глобалӣ, ин хеле зуд ба амал меояд - ҳазорҳо маротиба тезтар аз тозакунии элемент ба элемент.

Дар расм массиви сеченака дар глобалӣ нишон дода шудааст ^a ва намудҳои гуногуни ҳазф.

Глобалҳо шамшерҳои ганҷ барои нигоҳ доштани маълумот мебошанд. Массивҳои пароканда. Қисми 3

Барои интихоби қисмҳои фазо бо истифода аз индексҳои маълум, шумо метавонед фармонро истифода баред Якҷоягӣ кунед.

Интихоби сутуни матритса ба тағирёбандаи Сутун:

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

Хулоса:

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

Чизи ҷолиб дар бораи тағирёбандаи Сутун дар он аст, ки мо инчунин массиви камёфт дорем, ки ба он низ бояд тавассути $GET, зеро арзишҳои пешфарз дар он нигоҳ дошта намешаванд.

Интихоби қисмҳои фазо инчунин метавонад тавассути як барномаи хурд бо истифода аз функсия анҷом дода шавад $ Фармоиш. Ин махсусан дар фазоҳое қулай аст, ки индексҳояшон квантизатсия нашудаанд (картография).

хулоса

Замони хозира вазифахои нави калон мегузорад. Графикҳо метавонанд аз миллиардҳо қуллаҳо, харитаҳо аз миллиардҳо нуқтаҳо иборат бошанд ва баъзеҳо ҳатто мехоҳанд, ки олами худро дар автоматҳои мобилӣ идора кунанд (1, 2).

Вақте ки ҳаҷми маълумот аз массивҳои камёфт дигар ба RAM мувофиқат карда наметавонад, аммо шумо бояд бо онҳо кор кунед, пас имкони татбиқи лоиҳаҳои шабеҳро дар глобалӣ ва COS баррасӣ кардан лозим аст.

Ба диққататон ташаккур! Саволҳо ва хоҳишҳои шуморо дар шарҳҳо интизорем.

Радди: Ин мақола ва шарҳҳои ман ба он ақидаи мананд ва ба мавқеи расмии InterSystems Corporation иртибот надоранд.

Манбаъ: will.com

Илова Эзоҳ