powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Диаграмма Вороного, поиск ближайшей точки
25 сообщений из 216, страница 6 из 9
Диаграмма Вороного, поиск ближайшей точки
    #39229026
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не будьте так категоричны. Недавно Док мне дал ссылку на M-Деревья.
Вобщем - это окружности по своей сути. Поэтому я-бы предположил что Spatial-структур
данных или Spatial индексов мы можем брать бесконечно много способов
деления пространства на гипер-кубики, *-плоскости или *-сферы.
Главное чтобы соблюдались принципы не-линейного роста времени поиска.
...
Рейтинг: 0 / 0
Диаграмма Вороного, поиск ближайшей точки
    #39229145
д0k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonНе будьте так категоричны. Недавно Док мне дал ссылку на M-Деревья.
Вобщем - это окружности по своей сути. Поэтому я-бы предположил что Spatial-структур
данных или Spatial индексов мы можем брать бесконечно много способов
деления пространства на гипер-кубики, *-плоскости или *-сферы.
Главное чтобы соблюдались принципы не-линейного роста времени поиска.

+1

Вибирайте на свой вкус и цвет :)
...
Рейтинг: 0 / 0
Диаграмма Вороного, поиск ближайшей точки
    #39229493
nikichale
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SashaMercury,

//Вы не говорите о сложности построения данного индекса и о побочных эффектах. Приведите пожалуйста пример вашей простой //реализации

Ну действительно есть способ, как делать выборку по одномерному индексу построенному на замешанных побитно XY чтобы выбрать точки в прямоугольнике (правда с запасом).
Механизм успешно работает (лет 15) в некоем ГИС.
А R-деревья здесь действительно не причем...

Сложность:
на каждую точку одно вхождение замешанных побитно XY в индекс
Побочные эффекты:
1. для поиска в прямоугольнике нужно просканировать НЕСКОЛЬКО интервалов индекса (мин. количество - 4)
2. будут найдены лишние точки - на самом деле ищутся точки находящиеся в прямоугольнике выравненном по сетке и содержащем данный; данный эффект можно уменьшить за счет увеличения числа интервалов сканирования
...
Рейтинг: 0 / 0
Диаграмма Вороного, поиск ближайшей точки
    #39229495
nikichale
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iv_an_ru,

"четревьев" может это оно и есть о чем я?
...
Рейтинг: 0 / 0
Диаграмма Вороного, поиск ближайшей точки
    #39229534
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikichale, какова сложность построения индекса, вставки нового элемента и удаления элемента?
...
Рейтинг: 0 / 0
Диаграмма Вороного, поиск ближайшей точки
    #39229550
nikichale
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SashaMercurynikichale, какова сложность построения индекса, вставки нового элемента и удаления элемента?

Дык это просто способ свести задачу к обычному одномерному индексу.
Вот если нужно искать не точки, а протяженные объекты, тогда на один объект вставляется/удаляется до 4х значений XY и результат выборки нужно группировать
...
Рейтинг: 0 / 0
Диаграмма Вороного, поиск ближайшей точки
    #39229577
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikichaleiv_an_ru,

"четревьев" может это оно и есть о чем я?
Я-бы не вводил коллег в ступор такими терминами. Есть-же
английский или англоицизм. Мы к нему достаточно адаптипрованы.
...
Рейтинг: 0 / 0
Диаграмма Вороного, поиск ближайшей точки
    #39229585
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikichaleSashaMercurynikichale, какова сложность построения индекса, вставки нового элемента и удаления элемента?

Дык это просто способ свести задачу к обычному одномерному индексу.
Вот если нужно искать не точки, а протяженные объекты, тогда на один объект вставляется/удаляется до 4х значений XY и результат выборки нужно группировать

Каким образом вы будете это делать? Что за 'просто способ' ?
...
Рейтинг: 0 / 0
Диаграмма Вороного, поиск ближайшей точки
    #39229677
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На стыке классических баз данных и ГИС используется

https://en.wikipedia.org/wiki/Z-order_curve

Ее иногда называют Z-кривая, она-же Кривая Мортона и она-же Порядок Мортона e.t.c.
...
Рейтинг: 0 / 0
Диаграмма Вороного, поиск ближайшей точки
    #39229704
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonnikichaleiv_an_ru,

"четревьев" может это оно и есть о чем я?
Я-бы не вводил коллег в ступор такими терминами. Есть-же
английский или англоицизм. Мы к нему достаточно адаптипрованы.Кнут, "сортировка и поиск". В англицком это quad-trees. В случае плоскости это деление квадрата на 4 или больше квадрата на каждом уровне индекса, в пространстве куб на 8 кусков. Хотя бывает, что дробят сразу на 16--64--256 кусков, особенно в САПРах.
...
Рейтинг: 0 / 0
Диаграмма Вороного, поиск ближайшей точки
    #39229711
д0k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iv_an_rumaytonпропущено...

Я-бы не вводил коллег в ступор такими терминами. Есть-же
английский или англоицизм. Мы к нему достаточно адаптипрованы.Кнут, "сортировка и поиск". В англицком это quad-trees. В случае плоскости это деление квадрата на 4 или больше квадрата на каждом уровне индекса , в пространстве куб на 8 кусков. Хотя бывает, что дробят сразу на 16--64--256 кусков, особенно в САПРах.

В подавляющем большенстве случаев этот матан используется как империческая
константа определяющая критерии балансировки дерева.
Более простыми словами , от корня до значения
должено быть не более 4 адресный операций.
3 ветви + 1 листовой блок хранящий непосредствено само значение.
...
Рейтинг: 0 / 0
Диаграмма Вороного, поиск ближайшей точки
    #39229721
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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я не хуже :)
...
Рейтинг: 0 / 0
Диаграмма Вороного, поиск ближайшей точки
    #39229729
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
д0kiv_an_ruпропущено...
Кнут, "сортировка и поиск". В англицком это quad-trees. В случае плоскости это деление квадрата на 4 или больше квадрата на каждом уровне индекса , в пространстве куб на 8 кусков. Хотя бывает, что дробят сразу на 16--64--256 кусков, особенно в САПРах.
В подавляющем большенстве случаев этот матан используется как империческая
константа определяющая критерии балансировки дерева.
Не понял, какой матан и какая балансировка.
д0kБолее простыми словами , от корня до значения должено быть не более 4 адресный операций. 3 ветви + 1 листовой блок хранящий непосредствено само значение.Ну подсчитайте. 8К дисковая страница, пусть в среднем 4 байта жатое инкрементом значение и 4 байта адрес следующей страницы, итого ветвление 1000x от уровня к уровню. 3 ветви дадут всего миллиард адресов страниц-ветвей, это только 8 терабайт диска. Детский размерчик, для бедных :)
...
Рейтинг: 0 / 0
Диаграмма Вороного, поиск ближайшей точки
    #39229731
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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я не хуже :)
Чувствуется опыт. Ты работал с ГИС-ами?
...
Рейтинг: 0 / 0
Диаграмма Вороного, поиск ближайшей точки
    #39229742
д0k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iv_an_ruд0kпропущено...

В подавляющем большенстве случаев этот матан используется как империческая
константа определяющая критерии балансировки дерева.
Не понял, какой матан и какая балансировка.
д0kБолее простыми словами , от корня до значения должено быть не более 4 адресный операций. 3 ветви + 1 листовой блок хранящий непосредствено само значение.Ну подсчитайте. 8К дисковая страница, пусть в среднем 4 байта жатое инкрементом значение и 4 байта адрес следующей страницы , итого ветвление 1000x от уровня к уровню. 3 ветви дадут всего миллиард адресов страниц-ветвей, это только 8 терабайт диска. Детский размерчик, для бедных :)

Следующей в какую сторону ?
Там должно быть 2 перпендикулярных
линии одна в глубь кроны дерева, другая в право-лево для сканирования по диапазону.

Жаль что грохнули срачи в других СУБД , я бы вам показал 2 класса
реализующие страницы самобалансирующегося дерева.

Там, в сраче, речь шла о виртуально непрерывном адресном пространстве,
блоках, экстентах , фрагментах...
Профильным термином ресурса о rowid в терменологии СУБД, который придуман
за царя гороха, в большенстве случаев ( СУБД) строится исходя имперического
числа 4 ( адресных операции) .

Когда балансировка вылазит за импирическое число 4 , производители СУБД,
как правило, рекомендую перестроить индекс ( поменять опции хранения) ,
если у них нет функционала автоматической балансировки.
...
Рейтинг: 0 / 0
Диаграмма Вороного, поиск ближайшей точки
    #39229764
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
д0kПрофильным термином ресурса о rowid в терменологии СУБД, который придуман
за царя гороха, в большенстве случаев ( СУБД) строится исходя имперического
числа 4 ( адресных операции) .

Речь идет о 4 физических чтениях (IOPS) ?
...
Рейтинг: 0 / 0
Диаграмма Вороного, поиск ближайшей точки
    #39229777
д0k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonд0kПрофильным термином ресурса о rowid в терменологии СУБД, который придуман
за царя гороха, в большенстве случаев ( СУБД) строится исходя имперического
числа 4 ( адресных операции) .

Речь идет о 4 физических чтениях (IOPS) ?

Это в самом худшем случае....

А речь идет о 4 адресных операциях ( накладных расходах
на реализацию виртуально непрырывного адресного пространства).

При правильно построенном и разогретом LRU кеше,
как правило требуется дисковый 1 IOPS для получения
rowid записи из листовго блока индекса по ключу
и еще 1 IOPS для получения самой записи.
...
Рейтинг: 0 / 0
Диаграмма Вороного, поиск ближайшей точки
    #39229838
д0k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iv_an_ruд0kпропущено...

В подавляющем большенстве случаев этот матан используется как империческая
константа определяющая критерии балансировки дерева.
Не понял, какой матан и какая балансировка.


Упомянутый ранее вами частный случай "четревьев" как импирическая константа.
...
Рейтинг: 0 / 0
Диаграмма Вороного, поиск ближайшей точки
    #39229865
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonТы работал с ГИС-ами?Писал один решатель транспортной задачи, и потом большую часть геометрии в СУБД OpenLink Virtuoso.
...
Рейтинг: 0 / 0
Диаграмма Вороного, поиск ближайшей точки
    #39230070
nikichale
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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), т.е. по крайней мере будет зависеть от размера рамки. Если же упорядочить записи в таблице по ключу индекса, проблем с выборкой рамкой вообще не должно быть.
...
Рейтинг: 0 / 0
Диаграмма Вороного, поиск ближайшей точки
    #39230113
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikichaleНе понял, причем тут свойства Z-кривой, по моему доступ по любому индексу в большой файл плох, если порядок записей в таблице и в индексе не коррелируют. В худшем случае каждая из N/(x^2) выбираемых точек ляжет в свою страницу и трудоемкость будет N/(x^2), т.е. по крайней мере будет зависеть от размера рамки. Если же упорядочить записи в таблице по ключу индекса, проблем с выборкой рамкой вообще не должно быть.
Я почти согласен со всеми ораторами. Добавлю. КМК Z-order curve это наивная попытка уменьшить стоимость
I/O для старых типов накопителей (диск) где есть цена позиционирования и где есть выбор между index access
и FTS 50:50.

Впервые о Z-кривой вычитал у Шеши Шекхар - Основы Пространственных БД.
...
Рейтинг: 0 / 0
Диаграмма Вороного, поиск ближайшей точки
    #39230144
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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. Сплошные последовательные чтения, для диска это удобнее некуда.
...
Рейтинг: 0 / 0
Диаграмма Вороного, поиск ближайшей точки
    #39230248
д0k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iv_an_runikichaleпропущено...


Не понял, причем тут свойства Z-кривой, по моему доступ по любому индексу в большой файл плох, если порядок записей в таблице и в индексе не коррелируют.В случае случайного доступа к "зету" на случайных данных , плох не только доступ к записям таблицы по индексу, но и доступ к страницам самого индекса.

С другой стороны, есть алгоритмы, как раз хорошо оптимизируемые под Z-порядок. Например, микрософтовская пирамида растров. В ней k-ая плитка N-го уровня получается склейкой плиток уровня 0 с Z-номерами от 4^N * k до 4^N * (k+1) - 1 включительно, либо склейкой плиток уровня N-1 с Z-номерами от 4k до 4k+3. Сплошные последовательные чтения, для диска это удобнее некуда.


Не знаю получится ли , но попробую поумничать :)

ИМХО
это только кажется, что данные случайны
потому что система представления физических сущьностей неверная.
Иногда достаточно первести представление для хранения из
декартовой плоскости в полярную систему координат или наоборот
и все оптимизируется само собой...

Как только при решении задачи всплывает тригонометрические функции ,
то переход в полярную систему координат вопрос времени выделенного
на борьбу с гемороем.
...
Рейтинг: 0 / 0
Диаграмма Вороного, поиск ближайшей точки
    #39230292
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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Не знаю получится ли , но попробую поумничать :)
ИМХО
это только кажется, что данные случайны
потому что система представления физических сущьностей неверная.
Иногда достаточно первести представление для хранения из
декартовой плоскости в полярную систему координат или наоборот
и все оптимизируется само собой...
обычная задача ГИС - поиск окрестностей точки, для любой точки - не прокатит
...
Рейтинг: 0 / 0
Диаграмма Вороного, поиск ближайшей точки
    #39230297
д0k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коль мы уже докопались до Дзет
и окончательно замкнуть мысль на конекретике
давайте рассмотрим магические "четревья" и Z курвы

Дзетта функция (4)

Наиболее точно соотвествует 1 ( единице ) эвклидового пространства ,
а дальше путем сокращений мы выходим на школьную
программу НОК и НОД , для оптимизации хранения и доступа
многомерных структур и разных представлений в
одномерной ( декартовой) оперативной памяти
с минимальными затратами на адресную арифметику.

4 - магическое число, которое позволяет наиболее экономно
абстрагировать число Пи и прочие вещественный фундаметнальные константы
в алгоритмику и перевести пространственный матан высших порядков
в адресную арифметику компьтера....
А мнимые величины в смещения, выравнивание и коственную адресацию.

приблизительно так ....
постенно переходим к лямбда исчислению в котром я не спец,
поэтому передаю эстафету майтону :)
...
Рейтинг: 0 / 0
25 сообщений из 216, страница 6 из 9
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Диаграмма Вороного, поиск ближайшей точки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]