Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
13 / 13 / 1
Регистрация: 19.10.2019
Сообщений: 607

std::map для k-d дерева

28.04.2021, 20:06. Показов 2071. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Хочу найти SOTA для реализации K-D деревьев.
Базовые варианты как я понимаю - либо самому делать структуру, либо использовать что то из стандартной библиотеки.
Самый логичный вариант попробовать сочинить что то с использованием std::map, но компаратор у std::map всего один и этот компаратор как должен знать по какой оси ему проводить сравнение. В общем, если не лезть в недра либы, а обойтись стандартным апи пока непонятно как это делать.
Сделать свою структурку не проблема, но в стандартной библиотеки уже все оптимизировано и навешено всяких пряников, а тут надо или обойтись скромными возможностями или писать самому.
Есть конечно вариант со сторонними библиотека, например CGAL, но хочется обойтись стандартной библиотекой.

Добавлено через 5 минут
Вот если было понимание как находить корневой узел, то это облегчило бы дело.
Никто ведь не запрещает использовать компаратор как статический оператор.

Добавлено через 13 минут
Пока склоняюсь к мысли создать класс наследник от std::map и переопределить все методы, которые приводят к поиску т.е. это оператор [], find, at
В переопределенных методах сбрасывать циклический счетчик осей и вызывать основной метод.
Но насколько это решение корректное ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.04.2021, 20:06
Ответы с готовыми решениями:

Возможно ли создать контейнер std::map, в котором в качестве значения была бы ссылка на std::map?
Здравствуйте. Возможно ли создать контейнер std::map, в котором в качестве значения была бы ссылка на std map? Например: std::map...

Emplace в std::map. Как добавить элемент в std::map без копирования?
здравствуйте... есть ли способ не писать так: std::map<int, char> ksa; ksa.emplace(std::piecewise_construct, ...

Очистка map и перевернутого std::map c std::greater
Написала я программу, которая заполняет два контейнера map. a,b. вывод программы такой 11 a: 0.00000000 - 0.00000000 a: 0.10000000...

28
13 / 13 / 1
Регистрация: 19.10.2019
Сообщений: 607
28.04.2021, 22:42  [ТС]
Студворк — интернет-сервис помощи студентам
Я правда вынес за скобки вопрос инициализации мапы.

Добавлено через 2 минуты
Алексей1153, Можно поподробнее.
Взяли получили хеш от чего то там и как они помогу в поиске ближайшей точки ?
Есть геохеши, но это не имеет никакого отношения к обычным хешам.
0
фрилансер
 Аватар для Алексей1153
6495 / 5724 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
28.04.2021, 22:54
Цитата Сообщение от squareroot Посмотреть сообщение
получили хеш от чего то там
да просто уникальный uint64_t id точки. Основная мапа - это просто свалка точек. Всё интересное - в индексах. А каждый индекс представляет собой связь id-> координата

Понятно, что нет возможности узнать, в каком первом из трёх индексов (x,y,z) нужно будет начинать искать.

Берётся любой, там ищем ближайшие точки.
Берём второй, там ищем ближайшие точки.
Потом третий

пересечение трёх поисков - результат

основная затрата времени тут будет на поиск пересечения результатов
0
13 / 13 / 1
Регистрация: 19.10.2019
Сообщений: 607
28.04.2021, 22:59  [ТС]
Алексей1153, Есть k-d дерево.
Вы придумали что-то лучшее ? Тогда Вам надо срочно начинать диссер писать.
Но тут тема про k-d.
0
фрилансер
 Аватар для Алексей1153
6495 / 5724 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
28.04.2021, 23:21
Цитата Сообщение от squareroot Посмотреть сообщение
диссер писать
лень

Добавлено через 1 минуту
squareroot, мой вариант не будет, конечно, самый супер-пупер быстрым и оптимальным, но он рабочий на 100%. И его даже можно использовать при проверке супер-пуперского быстрого алгоритма
0
13 / 13 / 1
Регистрация: 19.10.2019
Сообщений: 607
28.04.2021, 23:24  [ТС]
Алексей1153, Спасибо за желание помочь, но я в название темы заглавном посте не просто так указал слово SOTA
0
фрилансер
 Аватар для Алексей1153
6495 / 5724 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
28.04.2021, 23:34
squareroot, кстати, интернет не подсказал мне, что сие обозначает.

Не по теме:

Там есть варианты:

1)S.O.T.A – Stalker Online Time Anomaly
2)компания по втюхиванию женщинам краски
3)магазин электроники в Киеве
4)некое СМИ



описание дерева в вики нашлось, но как я там увидел структуру описания узла, я сильно засомневался в его эффективности при реализации на C++
0
13 / 13 / 1
Регистрация: 19.10.2019
Сообщений: 607
28.04.2021, 23:39  [ТС]
Алексей1153, https://en.wikipedia.org/wiki/State_of_the_art

Добавлено через 3 минуты
Наверно куча даёт больше гибкости чем мапа. Наверно стоит подумать в эту сторону.
0
фрилансер
 Аватар для Алексей1153
6495 / 5724 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
28.04.2021, 23:46
выражение State-of-the-art - означает нечто новейшее, современнейшее, насколько я понял

ну, ок, что на эту тему нам говорит интернет

даже статья на всеми любимом хабре имеется
0
13 / 13 / 1
Регистрация: 19.10.2019
Сообщений: 607
28.04.2021, 23:59  [ТС]
Алексей1153, Я ее видел, но хотелось проверить можно ли брать за основу std::map
Рукотворные деревья штука симпатичная, но бес всякой полезной обвязки, которая есть у контейнеров стандартной библиотеки узко применимая. А писать полноценный класс как то долго.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.04.2021, 23:59

Составной ключ для std::map
Есть класс. Нужно его сделать ключем для карты. class Vertex{ public: double X,Y,Z; Vertex(double x=0,double y=0, double...

Стоит ли очищать в деструкторе std::map , std::vecotor?
У меня ещё один нубский вопрос :) Вот если в классе объявлены мапы и вектора, которые по ходу программы как то заполняются, нужно ли мне...

std::map, std::vector и порядок обхода коллекции
Здравствуйте, уважаемые! Вопрос следующий - если я сохраняю какие-то значения в map или вектор, то всегда ли я буду получать тот-же...

Std::unordered_multimap<std::string, int> map
Приветствую. Как можно получить только &quot;уникальный&quot; ключ в контейнере? std::unordered_multimap&lt;std::string, int&gt; map; ...

Заголовочный файл для std::map<string,int>
Добрый вечер. Назрел такой вопрос. Про написании программы телефонная книга не понимаю, какие методы нужно писать в хэдер файл, если у нас...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru