|
|
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
Не будьте так категоричны. Недавно Док мне дал ссылку на M-Деревья. Вобщем - это окружности по своей сути. Поэтому я-бы предположил что Spatial-структур данных или Spatial индексов мы можем брать бесконечно много способов деления пространства на гипер-кубики, *-плоскости или *-сферы. Главное чтобы соблюдались принципы не-линейного роста времени поиска. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2016, 12:42 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
maytonНе будьте так категоричны. Недавно Док мне дал ссылку на M-Деревья. Вобщем - это окружности по своей сути. Поэтому я-бы предположил что Spatial-структур данных или Spatial индексов мы можем брать бесконечно много способов деления пространства на гипер-кубики, *-плоскости или *-сферы. Главное чтобы соблюдались принципы не-линейного роста времени поиска. +1 Вибирайте на свой вкус и цвет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2016, 14:40 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
SashaMercury, //Вы не говорите о сложности построения данного индекса и о побочных эффектах. Приведите пожалуйста пример вашей простой //реализации Ну действительно есть способ, как делать выборку по одномерному индексу построенному на замешанных побитно XY чтобы выбрать точки в прямоугольнике (правда с запасом). Механизм успешно работает (лет 15) в некоем ГИС. А R-деревья здесь действительно не причем... Сложность: на каждую точку одно вхождение замешанных побитно XY в индекс Побочные эффекты: 1. для поиска в прямоугольнике нужно просканировать НЕСКОЛЬКО интервалов индекса (мин. количество - 4) 2. будут найдены лишние точки - на самом деле ищутся точки находящиеся в прямоугольнике выравненном по сетке и содержащем данный; данный эффект можно уменьшить за счет увеличения числа интервалов сканирования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2016, 23:06 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
iv_an_ru, "четревьев" может это оно и есть о чем я? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2016, 23:16 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
nikichale, какова сложность построения индекса, вставки нового элемента и удаления элемента? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 02:40 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
SashaMercurynikichale, какова сложность построения индекса, вставки нового элемента и удаления элемента? Дык это просто способ свести задачу к обычному одномерному индексу. Вот если нужно искать не точки, а протяженные объекты, тогда на один объект вставляется/удаляется до 4х значений XY и результат выборки нужно группировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 06:43 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
nikichaleiv_an_ru, "четревьев" может это оно и есть о чем я? Я-бы не вводил коллег в ступор такими терминами. Есть-же английский или англоицизм. Мы к нему достаточно адаптипрованы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 08:43 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
nikichaleSashaMercurynikichale, какова сложность построения индекса, вставки нового элемента и удаления элемента? Дык это просто способ свести задачу к обычному одномерному индексу. Вот если нужно искать не точки, а протяженные объекты, тогда на один объект вставляется/удаляется до 4х значений XY и результат выборки нужно группировать Каким образом вы будете это делать? Что за 'просто способ' ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 09:13 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
На стыке классических баз данных и ГИС используется https://en.wikipedia.org/wiki/Z-order_curve Ее иногда называют Z-кривая, она-же Кривая Мортона и она-же Порядок Мортона e.t.c. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 10:52 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
maytonnikichaleiv_an_ru, "четревьев" может это оно и есть о чем я? Я-бы не вводил коллег в ступор такими терминами. Есть-же английский или англоицизм. Мы к нему достаточно адаптипрованы.Кнут, "сортировка и поиск". В англицком это quad-trees. В случае плоскости это деление квадрата на 4 или больше квадрата на каждом уровне индекса, в пространстве куб на 8 кусков. Хотя бывает, что дробят сразу на 16--64--256 кусков, особенно в САПРах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 11:21 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
iv_an_rumaytonпропущено... Я-бы не вводил коллег в ступор такими терминами. Есть-же английский или англоицизм. Мы к нему достаточно адаптипрованы.Кнут, "сортировка и поиск". В англицком это quad-trees. В случае плоскости это деление квадрата на 4 или больше квадрата на каждом уровне индекса , в пространстве куб на 8 кусков. Хотя бывает, что дробят сразу на 16--64--256 кусков, особенно в САПРах. В подавляющем большенстве случаев этот матан используется как империческая константа определяющая критерии балансировки дерева. Более простыми словами , от корня до значения должено быть не более 4 адресный операций. 3 ветви + 1 листовой блок хранящий непосредствено само значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 11:32 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
maytonНа стыке классических баз данных и ГИС используется https://en.wikipedia.org/wiki/Z-order_curve Ее иногда называют Z-кривая, она-же Кривая Мортона и она-же Порядок Мортона e.t.c.Один только недостаток у этой кривой --- мрачная непредсказуемость селективности, поэтому при попытке использовать её на большой дисковой памяти SQL-процессор встаёт колом. Для хорошего пространственного индекса N точек на квадрате площади 1, матожидание трудоёмкости выборки "рамкой" со стороной 1/x почти пропорционально 2 ln(x) + N/(pagesize * x^2), а Z-ордер с вероятностью, экспоненциально падающей с ростом x, выкидывает "фортели", приводящие к чтению до половины точек набора, давая разброс от 2 ln(x) + N/(pagesize * x^2) до 2 ln(x) + N/(pagesize * 2). Для иных задач простая выборка по X и потом по Y может оказатьcя не хуже :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 11:43 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
д0kiv_an_ruпропущено... Кнут, "сортировка и поиск". В англицком это quad-trees. В случае плоскости это деление квадрата на 4 или больше квадрата на каждом уровне индекса , в пространстве куб на 8 кусков. Хотя бывает, что дробят сразу на 16--64--256 кусков, особенно в САПРах. В подавляющем большенстве случаев этот матан используется как империческая константа определяющая критерии балансировки дерева. Не понял, какой матан и какая балансировка. д0kБолее простыми словами , от корня до значения должено быть не более 4 адресный операций. 3 ветви + 1 листовой блок хранящий непосредствено само значение.Ну подсчитайте. 8К дисковая страница, пусть в среднем 4 байта жатое инкрементом значение и 4 байта адрес следующей страницы, итого ветвление 1000x от уровня к уровню. 3 ветви дадут всего миллиард адресов страниц-ветвей, это только 8 терабайт диска. Детский размерчик, для бедных :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 11:51 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
iv_an_ruОдин только недостаток у этой кривой --- мрачная непредсказуемость селективности, поэтому при попытке использовать её на большой дисковой памяти SQL-процессор встаёт колом. Для хорошего пространственного индекса N точек на квадрате площади 1, матожидание трудоёмкости выборки "рамкой" со стороной 1/x почти пропорционально 2 ln(x) + N/(pagesize * x^2), а Z-ордер с вероятностью, экспоненциально падающей с ростом x, выкидывает "фортели", приводящие к чтению до половины точек набора, давая разброс от 2 ln(x) + N/(pagesize * x^2) до 2 ln(x) + N/(pagesize * 2). Для иных задач простая выборка по X и потом по Y может оказатьcя не хуже :) Чувствуется опыт. Ты работал с ГИС-ами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 11:55 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
iv_an_ruд0kпропущено... В подавляющем большенстве случаев этот матан используется как империческая константа определяющая критерии балансировки дерева. Не понял, какой матан и какая балансировка. д0kБолее простыми словами , от корня до значения должено быть не более 4 адресный операций. 3 ветви + 1 листовой блок хранящий непосредствено само значение.Ну подсчитайте. 8К дисковая страница, пусть в среднем 4 байта жатое инкрементом значение и 4 байта адрес следующей страницы , итого ветвление 1000x от уровня к уровню. 3 ветви дадут всего миллиард адресов страниц-ветвей, это только 8 терабайт диска. Детский размерчик, для бедных :) Следующей в какую сторону ? Там должно быть 2 перпендикулярных линии одна в глубь кроны дерева, другая в право-лево для сканирования по диапазону. Жаль что грохнули срачи в других СУБД , я бы вам показал 2 класса реализующие страницы самобалансирующегося дерева. Там, в сраче, речь шла о виртуально непрерывном адресном пространстве, блоках, экстентах , фрагментах... Профильным термином ресурса о rowid в терменологии СУБД, который придуман за царя гороха, в большенстве случаев ( СУБД) строится исходя имперического числа 4 ( адресных операции) . Когда балансировка вылазит за импирическое число 4 , производители СУБД, как правило, рекомендую перестроить индекс ( поменять опции хранения) , если у них нет функционала автоматической балансировки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 12:11 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
д0kПрофильным термином ресурса о rowid в терменологии СУБД, который придуман за царя гороха, в большенстве случаев ( СУБД) строится исходя имперического числа 4 ( адресных операции) . Речь идет о 4 физических чтениях (IOPS) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 12:25 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
maytonд0kПрофильным термином ресурса о rowid в терменологии СУБД, который придуман за царя гороха, в большенстве случаев ( СУБД) строится исходя имперического числа 4 ( адресных операции) . Речь идет о 4 физических чтениях (IOPS) ? Это в самом худшем случае.... А речь идет о 4 адресных операциях ( накладных расходах на реализацию виртуально непрырывного адресного пространства). При правильно построенном и разогретом LRU кеше, как правило требуется дисковый 1 IOPS для получения rowid записи из листовго блока индекса по ключу и еще 1 IOPS для получения самой записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 12:34 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
iv_an_ruд0kпропущено... В подавляющем большенстве случаев этот матан используется как империческая константа определяющая критерии балансировки дерева. Не понял, какой матан и какая балансировка. Упомянутый ранее вами частный случай "четревьев" как импирическая константа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 13:19 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
maytonТы работал с ГИС-ами?Писал один решатель транспортной задачи, и потом большую часть геометрии в СУБД OpenLink Virtuoso. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 13:37 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
iv_an_rumaytonНа стыке классических баз данных и ГИС используется https://en.wikipedia.org/wiki/Z-order_curve Ее иногда называют Z-кривая, она-же Кривая Мортона и она-же Порядок Мортона e.t.c.Один только недостаток у этой кривой --- мрачная непредсказуемость селективности, поэтому при попытке использовать её на большой дисковой памяти SQL-процессор встаёт колом. Для хорошего пространственного индекса N точек на квадрате площади 1, матожидание трудоёмкости выборки "рамкой" со стороной 1/x почти пропорционально 2 ln(x) + N/(pagesize * x^2), а Z-ордер с вероятностью, экспоненциально падающей с ростом x, выкидывает "фортели", приводящие к чтению до половины точек набора, давая разброс от 2 ln(x) + N/(pagesize * x^2) до 2 ln(x) + N/(pagesize * 2). Для иных задач простая выборка по X и потом по Y может оказатьcя не хуже :) Не понял, причем тут свойства Z-кривой, по моему доступ по любому индексу в большой файл плох, если порядок записей в таблице и в индексе не коррелируют. В худшем случае каждая из N/(x^2) выбираемых точек ляжет в свою страницу и трудоемкость будет N/(x^2), т.е. по крайней мере будет зависеть от размера рамки. Если же упорядочить записи в таблице по ключу индекса, проблем с выборкой рамкой вообще не должно быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 16:17 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
nikichaleНе понял, причем тут свойства Z-кривой, по моему доступ по любому индексу в большой файл плох, если порядок записей в таблице и в индексе не коррелируют. В худшем случае каждая из N/(x^2) выбираемых точек ляжет в свою страницу и трудоемкость будет N/(x^2), т.е. по крайней мере будет зависеть от размера рамки. Если же упорядочить записи в таблице по ключу индекса, проблем с выборкой рамкой вообще не должно быть. Я почти согласен со всеми ораторами. Добавлю. КМК Z-order curve это наивная попытка уменьшить стоимость I/O для старых типов накопителей (диск) где есть цена позиционирования и где есть выбор между index access и FTS 50:50. Впервые о Z-кривой вычитал у Шеши Шекхар - Основы Пространственных БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 16:36 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
nikichaleiv_an_ruпропущено... Один только недостаток у этой кривой --- мрачная непредсказуемость селективности, поэтому при попытке использовать её на большой дисковой памяти SQL-процессор встаёт колом. Для хорошего пространственного индекса N точек на квадрате площади 1, матожидание трудоёмкости выборки "рамкой" со стороной 1/x почти пропорционально 2 ln(x) + N/(pagesize * x^2), а Z-ордер с вероятностью, экспоненциально падающей с ростом x, выкидывает "фортели", приводящие к чтению до половины точек набора, давая разброс от 2 ln(x) + N/(pagesize * x^2) до 2 ln(x) + N/(pagesize * 2). Для иных задач простая выборка по X и потом по Y может оказатьcя не хуже :) Не понял, причем тут свойства Z-кривой, по моему доступ по любому индексу в большой файл плох, если порядок записей в таблице и в индексе не коррелируют.В случае случайного доступа к "зету" на случайных данных, плох не только доступ к записям таблицы по индексу, но и доступ к страницам самого индекса. С другой стороны, есть алгоритмы, как раз хорошо оптимизируемые под Z-порядок. Например, микрософтовская пирамида растров. В ней k-ая плитка N-го уровня получается склейкой плиток уровня 0 с Z-номерами от 4^N * k до 4^N * (k+1) - 1 включительно, либо склейкой плиток уровня N-1 с Z-номерами от 4k до 4k+3. Сплошные последовательные чтения, для диска это удобнее некуда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 16:51 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
iv_an_runikichaleпропущено... Не понял, причем тут свойства Z-кривой, по моему доступ по любому индексу в большой файл плох, если порядок записей в таблице и в индексе не коррелируют.В случае случайного доступа к "зету" на случайных данных , плох не только доступ к записям таблицы по индексу, но и доступ к страницам самого индекса. С другой стороны, есть алгоритмы, как раз хорошо оптимизируемые под Z-порядок. Например, микрософтовская пирамида растров. В ней k-ая плитка N-го уровня получается склейкой плиток уровня 0 с Z-номерами от 4^N * k до 4^N * (k+1) - 1 включительно, либо склейкой плиток уровня N-1 с Z-номерами от 4k до 4k+3. Сплошные последовательные чтения, для диска это удобнее некуда. Не знаю получится ли , но попробую поумничать :) ИМХО это только кажется, что данные случайны потому что система представления физических сущьностей неверная. Иногда достаточно первести представление для хранения из декартовой плоскости в полярную систему координат или наоборот и все оптимизируется само собой... Как только при решении задачи всплывает тригонометрические функции , то переход в полярную систему координат вопрос времени выделенного на борьбу с гемороем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 18:09 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
iv_an_ruОдин только недостаток у этой кривой --- мрачная непредсказуемость селективности, поэтому при попытке использовать её на большой дисковой памяти SQL-процессор встаёт колом. Для хорошего пространственного индекса N точек на квадрате площади 1, матожидание трудоёмкости выборки "рамкой" со стороной 1/x почти пропорционально 2 ln(x) + N/(pagesize * x^2), а Z-ордер с вероятностью, экспоненциально падающей с ростом x, выкидывает "фортели", приводящие к чтению до половины точек набора, давая разброс от 2 ln(x) + N/(pagesize * x^2) до 2 ln(x) + N/(pagesize * 2). Для иных задач простая выборка по X и потом по Y может оказатьcя не хуже :) тут к сожалению или к счастью он прав, при выборе алгоритма Z-обхода нужно "что-то знать о данных" д0kВ подавляющем большенстве случаев этот матан используется как империческая константа определяющая критерии балансировки дерева. автобалансировку для 2D-дерева пока не придумали, насколько мне известно можно построить совсем не идеальное, но очень простое дерево модификация декартова дерева: задать каждой координате случайное число Z - O(n) отсортировать по Z - O(n*ln(n)) последовательно по уменьшению или увеличению Z добавлять в 2D-дерево, для определения направления С-Ю или З-В использовать н-р чётность Z проходимого узла - O (Ln(n!)) в целом получится O(n*ln(n)) на составление дерева д0kНе знаю получится ли , но попробую поумничать :) ИМХО это только кажется, что данные случайны потому что система представления физических сущьностей неверная. Иногда достаточно первести представление для хранения из декартовой плоскости в полярную систему координат или наоборот и все оптимизируется само собой... обычная задача ГИС - поиск окрестностей точки, для любой точки - не прокатит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 19:08 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
Коль мы уже докопались до Дзет и окончательно замкнуть мысль на конекретике давайте рассмотрим магические "четревья" и Z курвы Дзетта функция (4) Наиболее точно соотвествует 1 ( единице ) эвклидового пространства , а дальше путем сокращений мы выходим на школьную программу НОК и НОД , для оптимизации хранения и доступа многомерных структур и разных представлений в одномерной ( декартовой) оперативной памяти с минимальными затратами на адресную арифметику. 4 - магическое число, которое позволяет наиболее экономно абстрагировать число Пи и прочие вещественный фундаметнальные константы в алгоритмику и перевести пространственный матан высших порядков в адресную арифметику компьтера.... А мнимые величины в смещения, выравнивание и коственную адресацию. приблизительно так .... постенно переходим к лямбда исчислению в котром я не спец, поэтому передаю эстафету майтону :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 19:17 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39229026&tid=1340722]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
156ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 259ms |
| total: | 516ms |

| 0 / 0 |
