Кіріспе
Математикалық талдау және компьютерлік ғылымда Z-рет, Лебег қисығы, Мортон кеңістігін толтыру қисығы, Мортон реті немесе Мортон коды дерек нүктесінің жақын орналасуын сақтай отырып, көп өлшемді деректерді бір өлшемге бейнелейтін функциялар болып табылады. Ол Францияда 1904 жылы зерттеген Анри Лебегтің және АҚШ-та 1966 жылы файлдарды тізбектеуге алғаш рет қолданған Гай Макдональд Мортонның есімдерімен аталады. Көп өлшемді нүктенің z мәні оның координаттарының екілік өрнектерін бір-бірімен алмастыру арқылы есептеледі. Деректер осы рет бойынша сұрыпталғаннан кейін, қарапайым бір өлшемді массивтер, екілік іздеу ағаштары, B-ағаштар, өткізіп жіберу тізімдері немесе (маңызды емес биттері қиылып алынған) хэш-кестелер сияқты кез келген бір өлшемді дерек құрылымын қолдануға болады. Алынған рет, төрттік немесе сегіздік ағаштарды тереңдетіп аралау нәтижесінде алынған ретке баламалы түрде сипаттама беруге болады.
In mathematical analysis and computer science, functions which are Z order, Lebesgue curve, Morton space filling curve, Morton order or Morton code map multidimensional data to one dimension while preserving locality of the data points. It is named in France after Henri Lebesgue, who studied it in 1904, and named in the United States after Guy Macdonald Morton, who first applied the order to file sequencing in 1966. The z value of a point in multidimensions is simply calculated by interleaving the binary representations of its coordinate values. Once the data are sorted into this ordering, any one dimensional data structure can be used, such as simple one dimensional arrays, binary search trees, B trees, skip lists or (with low significant bits truncated) hash tables. The resulting ordering can equivalently be described as the order one would get from a depth first traversal of a quadtree or octree.
Аумақты іздеу үшін бір өлшемді дерек құрылымдарымен пайдалану
Биттерді бір-бірімен кезеңдестіру арқылы деректер базасының жазбалары биттердің (мүмкін өте ұзын) тізбегіне айналады. Биттік тізбектер бинарлық сандар ретінде түсіндіріледі және деректер кіріспеде айтылғандай, кез келген бір өлшемді дерек құрылымын пайдалана отырып, бинарлық мәндер бойынша сұрыпталады немесе индекстеледі. Дегенмен, осы деректерде көп өлшемді іздеу диапазоны бойынша сұрау жасағанда, екілік іздеу тиімді болмайды. Z реті жергіліктікті жақсы сақтайтын болса да, тиімді диапазондық іздеу үшін дерек құрылымында кездесетін нүктеден көп өлшемді іздеу диапазонындағы келесі мүмкін Z мәнін есептейтін алгоритм қажет: Бұл мысалда сұранылатын диапазон (x = 2, , 3, y = 2, , 6) нүктелі тіктөртбұрышпен көрсетілген. Оның ең жоғары Z мәні (MAX) 45-ке тең. Бұл мысалда, іздеу кезінде Z мәнін арттыру бағытында F = 19 мәні кездеседі, сондықтан F мен MAX арасындағы интервалда іздеу керек (жарық аймақ). Іздеуді жылдамдату үшін іздеу диапазонындағы келесі Z мәні есептеледі, ол BIGMIN (мысалда 36) деп аталады, және іздеу тек BIGMIN мен MAX арасындағы интервалда (қою мәндер) жүргізіледі, осылайша қалың сызылған аймақтың көп бөлігін өткізіп жібереді. Кеміту бағытында іздеу LITMAX-қа ұқсас, ол сұраныс диапазонында F-тен кіші ең жоғары Z мәнін білдіреді. BIGMIN мәселесі алғаш Tropf және Herzog еңбектерінде айтылып, оның шешімі көрсетілген. LITMAX/BIGMIN есептеу алгоритмінің толық түсіндірмесі, Паскаль тіліндегі бастапқы кодпен (3D, nD-ге оңай бейімделеді) және қозғалмалы нүктелік деректерді және мүмкін теріс деректерді қалай өңдеуге болатындығы туралы кеңестер Tropf 2021 жылы ұсынған. Мұнда биттерді кезеңдестіру тікелей жасалмайды; деректер құрылымында тек бастапқы (сұрыпталмаған) деректер базасының жазбаларына сілтемелер бар. Жалпы жазбаны салыстыру функциясы (z мәніне қатысты үлкен, кішкентай немесе тең) болғанда, компьютерлік сөз ұзындығынан асып кеткен биттік тізбектердің ұзындығына байланысты туындайтын қиындықтардан аулақ болады және кодты кез келген өлшемге және жазба кілт сөзінің ұзындығына оңай бейімдеуге болады. Бұл тәсіл таңдалған бір өлшемді дерек құрылымына тәуелді болмағандықтан, деректерді құрылымдаудың еркін таңдауы бар, сондықтан теңгерімді ағаштар сияқты белгілі әдістерді динамикалық деректерді өңдеу үшін қолдануға болады, ал енгізу немесе жою кезінде ағаштың тепе-теңдігін сақтау үшін O(log n) уақыт қажет. Бұл әдіс UB ағаштарында (теңгерімді) да қолданылады, BIGMIN үшін "GetNextZ мекенжайы" деген атаумен. Таңдаудың еркіндігі әдісті қолданыстағы деректер базасына енгізуді жеңілдетеді. Бұл, мысалы, ерекше ескертулерді қажет ететін R ағаштарынан өзгеше. Әдісті иерархиялық түрде (қолдағы деректер құрылымына сәйкес), мүмкіндігінше өсу және кему бағытында қолдану, коммерциялық және техникалық қолданбаларда маңызды болатын, мысалы, ең жақын көршілерді іздеу процедурасы ретінде жоғары тиімді көп өлшемді диапазондық іздеуді қамтамасыз етеді. Z реті коммерциялық деректер базасы жүйелеріне енген санаулы көп өлшемді кіру әдістерінің бірі болып табылады. Әдіс әртүрлі салалардағы әртүрлі техникалық қолданбаларда және коммерциялық деректер базасы жүйелерінде қолданылады. Көп бұрын, 1966 жылы Г. М. Мортон статикалық екі өлшемді географиялық деректер базасының файлдарын тізбектеу үшін Z ретін ұсынған. Аумақтық деректер бірліктері бір немесе бірнеше төртбұрыштық кадрларда орналасады, олардың өлшемдері және төменгі оң бұрыштағы Z мәндері, бұрыштағы орнында Z ретінің иерархиясына сәйкес келеді. Жоғары ықтималдықпен, жақын кадрға өту бір немесе бірнеше салыстырмалы түрде кіші сканерлеу қадамдарымен жүзеге асырылады.
In this example, the range being queried (x = 2, , 3, y = 2, , 6) is indicated by the dotted rectangle. Its highest Z value (MAX) is 45. In this example, the value F = 19 is encountered when searching a data structure in increasing Z value direction, so we would have to search in the interval between F and MAX (hatched area). To speed up the search, one would calculate the next Z value which is in the search range, called BIGMIN (36 in the example) and only search in the interval between BIGMIN and MAX (bold values), thus skipping most of the hatched area. Searching in decreasing direction is analogous with LITMAX which is the highest Z value in the query range lower than F. The BIGMIN problem has first been stated and its solution shown in Tropf and Herzog. An extensive explanation of the LITMAX/BIGMIN calculation algorithm, together with Pascal Source Code (3D, easy to adapt to nD) and hints on how to handle floating point data and possibly negative data, is provided 2021 by Tropf: Here, bit interleaving is not done explicitly; the data structure has just pointers to the original (unsorted) database records. With a general record comparison function (greater less equal, in the sense of z value), complications with bit sequences length exceeding the computer word length are avoided, and the code can easily be adapted to any number of dimensions and any record key word length. As the approach does not depend on the one dimensional data structure chosen, there is still free choice of structuring the data, so well known methods such as balanced trees can be used to cope with dynamic data, and keeping the tree balance when inserting or deleting takes O(log n) time. The method is also used in UB trees (balanced), with the name "GetNextZ address" for BIGMIN. The Free choice makes it easier to incorporate the method into existing databases. This is in contrast for example to R trees where special considerations are necessary. Applying the method hierarchically (according to the data structure at hand), optionally in both increasing and decreasing direction, yields highly efficient multidimensional range search which is important in both commercial and technical applications, e. g. as a procedure underlying nearest neighbour searches. Z order is one of the few multidimensional access methods that has found its way into commercial database systems. The method is used in various technical applications of different fields and in commercial database systems. As long ago as 1966, G. M. Morton proposed Z order for file sequencing of a static two dimensional geographical database. Areal data units are contained in one or a few quadratic frames represented by their sizes and lower right corner Z values, the sizes complying with the Z order hierarchy at the corner position. With high probability, changing to an adjacent frame is done with one or a few relatively small scanning steps.
Сызықтық алгебра
Матрицаларды көбейтуге арналған Страссен алгоритмі матрицаларды төрт блокқа бөлуге негізделген, содан кейін осы блоктардың әрқайсысын төрт кішірек блокқа рекурсивті түрде бөлу, блоктар жеке элементтерге дейін (немесе практикалық тұрғыдан алғанда: Moser–de Bruijn тізбегінің қарапайым алгоритмі жылдам болатынша) жеткенше, шағын матрицаларға дейін жалғасады. Матрица элементтерін Z тәртібімен орналастыру локальдылықты жақсартады және қатарлық немесе бағандық тәртіппен салыстырғанда қосымша артықшылыққа ие – екі блокты көбейтуге арналған кіші программаға матрицаның жалпы көлемін білудің қажеті жоқ, тек блоктардың көлемі мен жадтағы орналасуы ғана қажет. Z тәртібімен Страссен көбейтуін тиімді пайдалану көрсетілген, Valsalam және Skjellum-ның 2002 жылғы мақаласына қараңыз. Buluç және басқалар параллель матрица-вектор көбейтуді іске асыру үшін Z тәртібімен нөлдік емес элементтерін орналастыратын сирек матрицалық дерек құрылымын ұсынады. Сызықтық алгебрадағы матрицаларды кеңістікті толтыру қисығы арқылы да қарап шығуға болады. Дәстүрлі циклдар матрицаны қатар бойынша қарап шығады. Z қисығымен қарап шығу жад иерархиясына тиімді қол жеткізуге мүмкіндік береді.
with Z order has been demonstrated, see Valsalam and Skjellum's 2002 paper. Buluç et al. present a sparse matrix data structure that Z orders its non zero elements to enable parallel matrix vector multiplication. Matrices in linear algebra can also be traversed using a space filling curve. Conventional loops traverse a matrix row by row. Traversing with the Z curve allows efficient access to the memory hierarchy.
Текстуралық карталау
Кейбір графикалық процессорлар текстуралық карталарды Z тәртібімен сақтайды, бұл текстураланған растерлеу кезінде сілтемелердің кеңістіктік жақындығын арттыруға мүмкіндік береді. Бұл кэш жолдарына тікбұрышты плиткаларды бейнелеуге және жақын жерлерге қол жеткізудің кэште болу ықтималдығын арттыруға мүмкіндік береді. Ірі масштабта, бұл SDRAM/DDRAM-дағы қымбат "беттік үзілістердің" (яғни, қатарларды ауыстыру құнының) ықтималдығын азайтады. Бұл маңызды, себебі 3D-көрсетуге кез келген түрлендірулер (айналу, масштабтау, перспектива және анимацияланған беттердің бұрмалануы) кіреді. Мұндай форматтар көбінесе "swizzled" немесе "twiddled" текстуралар деп аталады. Басқа плиткалық форматтар да қолданылуы мүмкін.
n-денелік проблема
Барнс-Хат алгоритміне октау құрылымы қажет. Деректерді меңзерлік ағаш ретінде сақтау октауды тереңдік бойынша бірінші кезекте аралау үшін көптеген тізбекті меңзерлік дереференциялауларды талап етеді (таратылған жадтағы машинада бұл қымбат операция). Оның орнына, деректерді октаулық хэштеуді пайдаланып хэш-кестеде сақтаса, Z-реттік қисық октауды табиғи түрде тереңдік бойынша бірінші кезекте аралайды.