Дар қисмҳои қаблӣ (
Дар амал, массивҳои камёфт аксар вақт чунон бузурганд, ки ишғол кардани хотира бо унсурҳои якхела ҳеҷ маъно надорад. Аз ин рӯ, амалӣ кардани массивҳои камёфт ба тарзе маъно дорад, ки хотира барои нигоҳ доштани арзишҳои якхела сарф нашавад.
Дар баъзе забонҳои барномасозӣ, массивҳои камёфт ба худи забон дохил мешаванд,
Глобалҳо номзадҳои хуб барои татбиқи массивҳои пароканда мебошанд, зеро:
- Онҳо арзишҳои танҳо гиреҳҳои муайянро нигоҳ медоранд ва арзишҳои гиреҳҳои номуайянро нигоҳ намедоранд;
- Интерфейси дастрасӣ ба арзиши гиреҳ ба он хеле монанд аст, ки чӣ қадар забонҳои барномасозӣ дастрасӣ ба унсури массиви бисёрченакаро амалӣ мекунанд.
Set ^a(1, 2, 3)=5 Write ^a(1, 2, 3)
- Глобалӣ як сохтори сатҳи пасти нигоҳдории маълумот аст, бинобар ин он дорои хусусиятҳои барҷастаи суръат аст (аз садҳо ҳазорҳо то даҳҳо миллион транзаксияҳо дар як сония, вобаста ба сахтафзор, ба поён нигаред).
1 )
Азбаски глобалӣ сохтори устувор аст, дар онҳо массивҳои пароканда эҷод кардан маъно дорад, вақте ки пешакӣ маълум аст, ки миқдори RAM кофӣ нахоҳад буд.
Яке аз хосиятҳои татбиқи массивҳои пароканда ин баргардонидани баъзе арзиши пешфарз аст, агар дастрасӣ ба ячейкаи номуайян анҷом дода шавад.
Инро бо истифода аз функсия амалӣ кардан мумкин аст
SET a = $GET(^a(x,y,z), defValue)
Кадом вазифаҳо массивҳои камро талаб мекунанд ва чӣ гуна глобалҳо метавонанд ба ин кӯмак расонанд?
Матритсаи ҳамсоягӣ (пайвастшавӣ).
Аён аст, ки график чӣ қадар калонтар бошад, дар матритса ҳамон қадар сифрҳо зиёд хоҳанд буд. Агар, масалан, мо як графики шабакаи иҷтимоиро гирем ва онро дар шакли матритсаи шабеҳ пешниҳод кунем, он гоҳ он қариб пурра аз сифрҳо иборат хоҳад буд, яъне. массиви камёфт мешавад.
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 * гирифта мешавад)
Манипуляцияҳо бо сатрҳои бит аз ҷониби функсия иҷро карда мешаванд
; установка бита
SET $BIT(rowID, positionID) = 1
; получение бита
Write $BIT(rowID, positionID)
Ҷадвали гузариши мошини давлатӣ
Азбаски графи гузариши автомати ниҳоӣ графики оддӣ аст, пас ҷадвали гузариши автомати ниҳоӣ ҳамон матритсаи ҳамсоягии дар боло баррасӣшуда мебошад.
Автоматҳои мобилӣ
Машҳуртарин автомати мобилӣ мебошад
Стивен Волфрам боварӣ дорад, ки автоматҳои мобилӣ ҳастанд
Исбот шудааст, ки ҳар як алгоритми иҷрошавандаи компютерро бо ёрии автомати мобилӣ амалӣ кардан мумкин аст. Автоматҳои мобилӣ барои моделсозии муҳити динамикӣ ва системаҳо, барои ҳалли масъалаҳои алгоритмӣ ва дигар мақсадҳо истифода мешаванд.
Агар мо майдони азим дошта бошем ва мо бояд тамоми ҳолати мобайнии автомати ҳуҷайраро сабт кунем, он гоҳ истифодаи глобалӣ маъно дорад.
Картография
Аввалин чизе, ки дар мавриди истифодаи массивҳои пароканда ба хотирам меояд, ин харитасозии вазифаҳост.
Чун қоида, дар харитаҳо фазои холӣ зиёд аст. Агар харита ҳамчун пикселҳои калон нишон дода шавад, пас 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
Суратҳо аз
Тамоми кураи замин ба чоркунчаҳо, баъд зери мураббаъҳо ва зерчарбачаҳо ба зерчарбачаҳо ва ғайра тақсим мешаванд. Умуман, мо сохтори иерархикиро барои нигоҳ доштани глобалӣ ба даст меорем.
Дар ҳар лаҳза, мо метавонем қариб фавран майдони дилхоҳро дархост кунем ё онро тоза кунем ва ҳамаи зермайдонҳо низ баргардонида ё тоза карда мешаванд.
Нақшаи шабеҳи глобалӣ метавонад бо чанд роҳ амалӣ карда шавад.
Интихоби 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 барои дархост кардани нуқтаҳое, ки дар квадрати ҳама гуна сатҳҳо ҷойгиранд, душвор нест. Дар варианти аввал тоза кардани қитъаҳои мураббаъи фазо дар ҳама сатҳ каме осонтар хоҳад буд, аммо ин хеле кам лозим аст.
Намунаи яке аз квадратҳои сатҳи поёнӣ:
Ва инҳоянд якчанд глобалӣ аз лоиҳаи XAPI: муаррифии шохиси глобалӣ:
глобалӣ ^ рох барои нигоҳ доштани нуқтаҳо истифода мешавад
Таснифи дағалии истифодаи массивҳои пароканда дар глобалӣ.
- Мо координатаҳои объектҳои муайян ва ҳолати онҳоро нигоҳ медорем (харитасозӣ, автоматҳои мобилӣ)
- Мо матрицаҳои камёфтро нигоҳ медорем.
Барои ҳолати 2) ҳангоми дархости координати мушаххас, ки дар он элемент ба арзиш таъин нашудааст, мо бояд арзиши элементи массиви нобаёнро гирем.
Бонусҳое, ки мо ҳангоми нигоҳ доштани матритсаҳои бисёрченака дар глобалӣ мегирем
Қисмҳои фазоеро, ки чанд сатр, ҳавопаймо, куб ва ғайра мебошанд, зуд хориҷ кунед ва/ё интихоб кунед. Барои ҳолатҳое, ки индексҳои бутун истифода мешаванд, қобилияти зуд тоза кардан ва/ё гирифтани қисмҳои фазо, ки чанд сатр, ҳавопаймо, мукааб ва ғайра мебошанд, муфид буда метавонад.
даста
Дар расм массиви сеченака дар глобалӣ нишон дода шудааст ^a ва намудҳои гуногуни ҳазф.
Барои интихоби қисмҳои фазо бо истифода аз индексҳои маълум, шумо метавонед фармонро истифода баред
Интихоби сутуни матритса ба тағирёбандаи Сутун:
; Зададим трёхмерный разреженный массив 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
Чизи ҷолиб дар бораи тағирёбандаи Сутун дар он аст, ки мо инчунин массиви камёфт дорем, ки ба он низ бояд тавассути
Интихоби қисмҳои фазо инчунин метавонад тавассути як барномаи хурд бо истифода аз функсия анҷом дода шавад
хулоса
Замони хозира вазифахои нави калон мегузорад. Графикҳо метавонанд аз миллиардҳо қуллаҳо, харитаҳо аз миллиардҳо нуқтаҳо иборат бошанд ва баъзеҳо ҳатто мехоҳанд, ки олами худро дар автоматҳои мобилӣ идора кунанд (
Вақте ки ҳаҷми маълумот аз массивҳои камёфт дигар ба RAM мувофиқат карда наметавонад, аммо шумо бояд бо онҳо кор кунед, пас имкони татбиқи лоиҳаҳои шабеҳро дар глобалӣ ва COS баррасӣ кардан лозим аст.
Ба диққататон ташаккур! Саволҳо ва хоҳишҳои шуморо дар шарҳҳо интизорем.
Радди: Ин мақола ва шарҳҳои ман ба он ақидаи мананд ва ба мавқеи расмии InterSystems Corporation иртибот надоранд.
Манбаъ: will.com