IPB

Добро пожаловать, гость ( Вход | Регистрация )

> Ближайшая точка, типа прикладная
Рейтинг  3
alan
23.1.2010, 22:31
Сообщение #1


zzz...
*****

Группа: Администраторы Braingames
Сообщений: 13 545
Регистрация: 23.2.2009
Из: Симферополь
Пользователь №: 13 114



Представьте, что у вас есть множество А из M точек на плоскости (x_i,y_i). Есть информация о них - по две координаты.

Потом нам дают еще одну точку - B(b_x,b_y). Нужно найти:
а) Точку из множества А ближайшую к B.
б) N ближайших точек к B.
в) Все точки на растоянии меньше чем R от B

Задача - оптимально организовать информацию о точках А. Оптимальность определяется средней скоростью выполнения а), б) или в).
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
NLIzer
24.1.2010, 0:43
Сообщение #2


Активный участник
***

Группа: Пользователи Braingames
Сообщений: 353
Регистрация: 7.3.2009
Из: Москва
Пользователь №: 13 325



QUOTE(alan @ 23.1.2010, 22:31) *

Представьте, что у вас есть множество А из M точек на плоскости (x_i,y_i). Есть информация о них - по две координаты.

Потом нам дают еще одну точку - B(b_x,b_y). Нужно найти:
а) Точку из множества А ближайшую к B.
б) N ближайших точек к B.
в) Все точки на растоянии меньше чем R от B

Задача - оптимально организовать информацию о точках А. Оптимальность определяется средней скоростью выполнения а), б) или в).

Первое что приходит на ум, это представление областей, в которых находятся точки, в виде квадрантного дерева. Для точки B определяется квадрант относительно других квадрантов в дереве и далее вычисляются квадранты ближайших точек обходом по дереву. В квадранте ближайших точек вычисляется R для каждой точки в квадранте, ну и т.д.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
alan
24.1.2010, 8:02
Сообщение #3


zzz...
*****

Группа: Администраторы Braingames
Сообщений: 13 545
Регистрация: 23.2.2009
Из: Симферополь
Пользователь №: 13 114



QUOTE(NLIzer @ 23.1.2010, 22:43) *

Первое что приходит на ум, это представление областей, в которых находятся точки, в виде квадрантного дерева. Для точки B определяется квадрант относительно других квадрантов в дереве и далее вычисляются квадранты ближайших точек обходом по дереву. В квадранте ближайших точек вычисляется R для каждой точки в квадранте, ну и т.д.

Давай подробнее, пожалуйста smile.gif А то мало что понял...
1. Что за квадратное дерево? Как его образовывать?
2. Как для В определять квадрант? Что значит определение квадранта Относительно других квадратнов?



П.С. А может еще есть и не первое приходящее на ум?smile.gif
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
NLIzer
24.1.2010, 15:04
Сообщение #4


Активный участник
***

Группа: Пользователи Braingames
Сообщений: 353
Регистрация: 7.3.2009
Из: Москва
Пользователь №: 13 325



QUOTE(alan @ 24.1.2010, 8:02) *

Давай подробнее, пожалуйста smile.gif А то мало что понял...
1. Что за квадратное дерево? Как его образовывать?
2. Как для В определять квадрант? Что значит определение квадранта Относительно других квадратнов?
П.С. А может еще есть и не первое приходящее на ум?smile.gif

Все точки А описываются одним квадратом. Этот квадрат делится на 4 равные квадратные части – квадранты, каждый из квадрантов опять делится на 4 части и т.д. Таким образом строится квадрантное дерево, все родительские узлы этого дерева – квадранты, листья дерева – точки или списки точек входящие в родительский квадрант. Для каждого узла дерева вычисляется количество точек содержащиеся в квадранте.
Ну и далее все операции выполняются сначала для квадрантов в которых есть точки, а потом для точек в них.
Изображение
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
alan
24.1.2010, 16:07
Сообщение #5


zzz...
*****

Группа: Администраторы Braingames
Сообщений: 13 545
Регистрация: 23.2.2009
Из: Симферополь
Пользователь №: 13 114



QUOTE(NLIzer @ 24.1.2010, 13:04) *

Все точки А описываются одним квадратом. Этот квадрат делится на 4 равные квадратные части – квадранты, каждый из квадрантов опять делится на 4 части и т.д. Таким образом строится квадрантное дерево, все родительские узлы этого дерева – квадранты, листья дерева – точки или списки точек входящие в родительский квадрант. Для каждого узла дерева вычисляется количество точек содержащиеся в квадранте.
Ну и далее все операции выполняются сначала для квадрантов в которых есть точки, а потом для точек в них.
Изображение

Ого, даже рисунок rolleyes.gif

А какой в этом смысл? Почему просто не разбить все на D^2 квадратов? Например, так что бы в каждом было или 0 или 1 точка.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщения в этой теме
alan   Ближайшая точка   23.1.2010, 22:31
idler_   Сколько платишь? :)   23.1.2010, 22:40
alan   Для примера очевидное и далекое от оптимальности р...   23.1.2010, 22:43
idler_   А как платить? За что? За решение + доказательство...   23.1.2010, 23:10
JK   Зачем тратить время просто так? ) Человек с таки...   23.1.2010, 23:39
idler_   Человек с таким ником не может задавать таких воп...   23.1.2010, 23:52
telepnev   А как платить? За что? За решение + доказательство...   30.1.2010, 0:35
NLIzer   Представьте, что у вас есть множество А из M точе...   24.1.2010, 0:43
alan   Первое что приходит на ум, это представление обла...   24.1.2010, 8:02
NLIzer   Давай подробнее, пожалуйста :) А то мало что поня...   24.1.2010, 15:04
alan   Все точки А описываются одним квадратом. Этот ква...   24.1.2010, 16:07
NLIzer   А какой в этом смысл? Почему просто не разбить вс...   24.1.2010, 16:44
alan   Ну давай забудем лучше о памяти, а то если все пом...   24.1.2010, 17:50
NLIzer   Я так понял, что для поиска ближайшей точки ты пр...   24.1.2010, 18:40
alan   telepnev, это не выч геом, это кибернетика :) кид...   30.1.2010, 7:37
telepnev   кидай.Раз и два   9.2.2010, 21:11
NLIzer   Раз и два О как!!! :) Я был близок   10.2.2010, 0:00
NLIzer   alan, как задачка то, решилась?   9.2.2010, 17:16


Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0 -

 



- Упрощённая версия Сейчас: 4.7.2025, 18:01
Яндекс.Метрика