|
|
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
вопросы по поиску столкновений астероидов тут можно задавать? Это правильная тема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2015, 18:06 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
авторФормат входного файла В первой строке задано число астероидов N (1 ≤ N ≤ 10). В следующей строке указаны характеристики корабля: радиус R (1 ≤ R ≤ 1000), степень полинома C1 равная p1 (0 ≤ p1 ≤ 9) с последующим указанием (p1 + 1) коэффициентов многочлена (-1000 ≤ С1i ≤ 1000) начиная от младшего, степень полинома C2 с дальнейшим указанием коэффициентов и степень полинома C3 с дальнейшим указанием коэффициентов полинома (ограничения на размер и коэффициенты полиномов одинаковые). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2015, 19:40 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
maytonЕсли плоскость - дискретная то можно закрашивать каждый дискретный элемент цветом.А если не дискретная, то дискретизировать, и закрашивать каждый дискретный элемент списком цветов, встречающихся в нём :) Трудно что-то подсказывать без знания N, неравномерности данных, чисел поисков для каждого набора из N точек (всего поисков для одного набора, последовательных поисков с одним набором) и ожидаемых оптимальности результата и бюджета разработки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2015, 23:29 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
Диаграмма Вороного или триангуляция Делоне нужны для более сложных задач, в этой ветке несколько лет назад White Owl решал задачу где триангуляция Делоне могла бы снизить трудоёмкость алгоритма с кубического до линейно-логарифмического. Если мне не изменяет память, трудоёмкость триангуляции Делоне методом Форчуна - N*ln(N). Поэтому как уже сказал Valer - тупым последовательным перебором вы гарантировано находите решение за N шагов. Любая попытка оптимизировать алгоритм будет основана на неявном предположении что какой-то добрый дядя собрал для вас статистику о характере распределения этих ваших N точек (затратив при этом как минимум те же N операций), а потом абсолютно бескорыстно подарил её вам. Ну или исчо может быть вариант что вам каким-то образом доступна априорная информация о характере распределения точек. Если это ваш случай, то тогда есть смысл колупаться. Если же на вас одномоментно вываливается случайный набор N точек - полный перебор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2015, 20:06 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
mikhail_nЕсли же на вас одномоментно вываливается случайный набор N точек - полный перебор. Вроде как набор не случайный, а очень даже известный, если я правильно понял ТЗ. Случайная точка одна, относительно которой искать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2015, 20:24 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
Antipich, я бы шла от этого макета решения(точки заменила на случайные) Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2015, 22:00 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
mikhail_nЛюбая попытка оптимизировать алгоритм будет основана на неявном предположении что какой-то добрый дядя собрал для вас статистику о характере распределения этих ваших N точек (затратив при этом как минимум те же N операций), а потом абсолютно бескорыстно подарил её вам.Если карта набор этих точек повторяется миллион раз, только с другой случайной мухой-параметром, то амортизация сбора статистики в пересчёте на одну муху мало отличится от "абсолютно бескорыстно". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2015, 17:26 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
AntipichДобрый день. Есть у меня такая задача: Есть множество N точек на плоскости. Оно фиксированное. Есть произвольная точка p. Задача - найти из множества N точку, ближайшую к p. Везде в интернете ссылаются на kd деревья или диаграмму Вороного. Но я хоть убей не могу понять, как они применимы именно к этой задаче. Вот взять диаграмму Вороного. https://ru.wikipedia.org/wiki/Диаграмма_Вороного http://neerc.ifmo.ru/wiki/index.php?title=Диаграмма_Вороного Ну разбили мы на ячейки. А дальше что? Как понять, в какую ячейку попадает наша точка? Как пользоваться этими алгоритмами в данном случае? Заранее благодарю за помощь. Зачем усложнять. Делаете массв точек и 2 массива указателей на точки для осей координат. Массивы указателей на точки сортируете по возрастанию координат Берете на вход точку ищете точки в массиве указателей между которыми нужно вставить вашу новою точку. Из 2-х соседних выбираете ту, которая ближе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2015, 21:18 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
ДохтаРAntipichДобрый день. Есть у меня такая задача: Есть множество N точек на плоскости. Оно фиксированное. Есть произвольная точка p. Задача - найти из множества N точку, ближайшую к p. Везде в интернете ссылаются на kd деревья или диаграмму Вороного. Но я хоть убей не могу понять, как они применимы именно к этой задаче. Вот взять диаграмму Вороного. https://ru.wikipedia.org/wiki/Диаграмма_Вороного http://neerc.ifmo.ru/wiki/index.php?title=Диаграмма_Вороного Ну разбили мы на ячейки. А дальше что? Как понять, в какую ячейку попадает наша точка? Как пользоваться этими алгоритмами в данном случае? Заранее благодарю за помощь. Зачем усложнять. Делаете массв точек и 2 массива указателей на точки для осей координат. Массивы указателей на точки сортируете по возрастанию координат Берете на вход точку ищете точки в массиве указателей между которыми нужно вставить вашу новою точку. Из 2-х соседних выбираете ту, которая ближе. Можно обойтись и 2 массивам , массив с точками отсортировать значению оси Х а массив указателей на эти точки отсортировать по значению оси Y. Делаете поиск методом половинного деления типа для вставки координат новой точки. Получаете координаты 2-х ближайших точек, из них выбираете ту которая ближе к вашей точке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2015, 21:31 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
ДохтаРМассивы указателей на точки сортируете по возрастанию координат По какому возрастанию координат? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2015, 21:38 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
maytonДохтаРМассивы указателей на точки сортируете по возрастанию координат По какому возрастанию координат? Х и Y. Первый массив 1 1,5 2 3.2 3 4.1 4 8.7 5 9.4 второй массив 3 2 5 1 4 на вход приходит точка с координатами 5.3 Ближайшие точки 4.1 , 8.7 , 3.2 , 9.4 Ошибся будет выбор из 4 точек. Из них нужно выбрать самую близ лежащую. То есть методом половинного деления задача сводится к выбору из 4 точек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2015, 21:53 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
ДохтаР, я убеждён что корректность результата зависит от выбора направления ранжирования точек. К примеру сверху-вниз + слева направо в силу дихотомии пропускают важную точку которая лежит на 2 ячейки от искомой. Тоже самое если ты выбираешь обход слева направо + сверху вниз я могу указать такие исходные данные при которых ты промахнёшся мимо нужной точки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2015, 22:09 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
maytonДохтаРМассивы указателей на точки сортируете по возрастанию координат По какому возрастанию координат? Массив точек сортируется по возрастанию координаты Х Массив указателей на точку сортируется по возрастанию значения координат Y точек на которые они ссылаются . Если точек очень много, то вместо массива нужно строить дерево блоков и подбирать их размер под линейку кеша процессора, что бы половинное деление не продувало кеши. Но это уже следующий этап оптимизации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2015, 22:13 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
maytonДохтаР, я убеждён что корректность результата зависит от выбора направления ранжирования точек. К примеру сверху-вниз + слева направо в силу дихотомии пропускают важную точку которая лежит на 2 ячейки от искомой. Тоже самое если ты выбираешь обход слева направо + сверху вниз я могу указать такие исходные данные при которых ты промахнёшся мимо нужной точки. ИМХО Не промахнусь. в одномерной системе координат задача оптимизируется до 2 ближайших точек, в двухмерной системе координат до 4 , в трех мерной до 9 . итд.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2015, 22:19 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
ДохтаРв одномерной системе координат задача оптимизируется до 2 ближайших точек, Док ты сильно ошибаешся. Я могу нарисовать тебе этот частный случай. Ну лучше ты сам порисуй и найди неблагоприятный расклад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2015, 22:24 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
maytonДохтаРв одномерной системе координат задача оптимизируется до 2 ближайших точек, Док ты сильно ошибаешся. Я могу нарисовать тебе этот частный случай. Ну лучше ты сам порисуй и найди неблагоприятный расклад. Подумал ничего не придумал в 2- мерной системе координат алгоритм выходит 4 точки , из который нужно выбрать ближайшую собрав в отдельный массив и отсортировав по длине гипотенуз прямоугольные треугольники . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2015, 00:07 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
ДохтаРПодумал ничего не придумал в 2- мерной системе координат алгоритм выходит 4 точки , из который нужно выбрать ближайшую собрав в отдельный массив и отсортировав по длине гипотенуз прямоугольные треугольники . ОК. Возможно я не так понял твою сортировку. Давай исходник. Можно на псевдо-языке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2015, 00:09 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
maytonДохтаРПодумал ничего не придумал в 2- мерной системе координат алгоритм выходит 4 точки , из который нужно выбрать ближайшую собрав в отдельный массив и отсортировав по длине гипотенуз прямоугольные треугольники . ОК. Возможно я не так понял твою сортировку. Давай исходник. Можно на псевдо-языке. Извини что с большой задержкой , я было начал реализовывать идею в коде и погряз в реализиции а потом отвлекся и забыл. Приблизительный алгоритм сортировки описан тут для более простого случая: 18534524 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2015, 19:42 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
ДохтаРmaytonпропущено... ОК. Возможно я не так понял твою сортировку. Давай исходник. Можно на псевдо-языке. Извини что с большой задержкой , я было начал реализовывать идею в коде и погряз в реализиции а потом отвлекся и забыл. Приблизительный алгоритм сортировки описан тут для более простого случая: 18534524 Суть идеи в том что сначала массив точек нужно отсорировать отдельно по каждой координате. Потом поиском в диапазоне по Х Y ищется ближайшая, через расчет разности гипотинуз. Реализация достаточно просто масштабирется до пространства любой размерности, вплодь до дефайном или параметром. У меня сначала было желание реализовать универсальный поисковик , для разумной многомерности пространства, но я не нашел ему практического применения и бысро потерял мотивацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2015, 19:53 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
ДохтаР, mayton тут прав, сортировкой можно только для одномерного случая для двухмерного и больше применяются k-d деревья и их разновидности для нахождения 2^k соседних точек (к - размерность пространства) из которых можно выбрать ближайшую. Cтоимость поиска в готовом k-d дереве - O(k*ln(N)) самый быстрый алгоритм который я знаю по построению k-d дерева выполняется за O(N*ln(N)), скоро я надеюсь напишу о нём в блоге PS: проблема самобалансировки k-d деревьев пока не решена даже для 2-х мерного случая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2015, 13:15 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
пардон, поиск ближайшей точки если верить википедии несколько хуже O(H*Ln(H)) H - высота дерева А вот здесь готовая реализация ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2015, 13:51 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
Нашёл апплет-демку. С К-Д деревом. Пока не понял чем он отличается от R-деревев. Вобщем накидал случайных точек. Умышленно неоднородно. Получилось вот такое разбиение пространства. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2015, 17:38 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
mayton, википедияКаждая вершина R-дерева имеет переменное количество элементов (не более некоторого заранее заданного максимума). Каждый элемент нелистовой вершины хранит два поля данных: способ идентификации дочерней вершины и ограничивающий прямоугольник (кубоид), охватывающий все элементы этой дочерней вершины. Все хранимые кортежи хранятся на одном уровне глубины, таким образом, дерево идеально сбалансировано. При проектировании R-дерева нужно задать некоторые константы: данные хранятся только в "листьях", дополнительно используются агрегатные значения (координаты вмещающего объекта) в k-d дереве многомерная точка хранится в каждой ноде ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2015, 19:46 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
А выводы? Автору нужно искать ближайшие точки. В силу распространённости технологий oct-tree, r-tree я-бы начал решение с них. Если нет доводов против. Какие доводы против? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2015, 20:04 |
|
||
|
Диаграмма Вороного, поиск ближайшей точки
|
|||
|---|---|---|---|
|
#18+
mayton, всё зависит от того что нужно автору если геймдев, то обычно квадродерево, читай модификация k-d если БД, то R-tree, оно обычно и используется в качестве индексов, но его и делать не надо, оно обычно уже в БД есть - надо просто научиться им пользоваться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2015, 20:59 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39126365&tid=1340722]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
134ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
| others: | 253ms |
| total: | 495ms |

| 0 / 0 |
