Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Зарядка для ума ( алгоритмическая задача) / 25 сообщений из 39, страница 1 из 2
06.09.2013, 12:51
    #38388988
ДохтаР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зарядка для ума ( алгоритмическая задача)
Оригинальная постановка.
подскажите по каким ключевым словам копать или нарисуйте схематично схему движения

Предлагаю обсудить алгоритмику.
Пребор факториала 6000 вариантов не предлагать.

Как я вижу решение, нужно отсортировать массив из 6000 элементов в порядке возростания растояний между точками или по другому не тривиальному критерию.

Предлагайте .
...
Рейтинг: 0 / 0
06.09.2013, 13:08
    #38389019
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зарядка для ума ( алгоритмическая задача)
Ну да ну да... пойдите по ссылке, почитайте там, ещё пойдите... там есть оригинальная постановка - там и обсуждайте.
...
Рейтинг: 0 / 0
06.09.2013, 13:17
    #38389031
ДохтаР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зарядка для ума ( алгоритмическая задача)
AkinaНу да ну да... пойдите по ссылке, почитайте там, ещё пойдите... там есть оригинальная постановка - там и обсуждайте.

Так усторит ?
постановкаЕсть массив с объектами (id, координаты и "максимальное расстояние зоны влияния" каждой точки).
Всего около 6000 объектов. Максимальное расстояние зоны влияния можно представить как окружность с центром в точке расположения данного объекта. Радиус окружности - та самая зона влияния.

Требуется получить перечень пар всех взаимовлияющих объектов по принципу: расстояние между парой объектов не более, чем сумма их максимальных зон влияния.
...
Рейтинг: 0 / 0
06.09.2013, 13:24
    #38389043
ДохтаР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зарядка для ума ( алгоритмическая задача)
поправил
ДохтаРКак я вижу решение, нужно отсортировать массив из 6000 элементов в порядке возростания растояний до ближайшей точки или по другому не тривиальному критерию.



Какие еще есть варианты условий сортировки для оптимизации алгоритма.
или варианты оптимального решения решения без сортировки ?
...
Рейтинг: 0 / 0
06.09.2013, 13:27
    #38389050
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зарядка для ума ( алгоритмическая задача)
ДохтаРв порядке возростания растояний до ближайшей точкитак количество расстояний-то там O(n^2), чем это лучше решения ТСа? собственно даже а чем оно от него отличается?

Можно это представить как граф с несколькими "областями связности" (сорри за мой английский(с), с графами дел почти не имел, но вроде так оно называется). Если эти области будут небольшие (по кол-ву элементов), то вот к ним можно уже и тупой перебор селфджойном присобачить, поскольку сложность там O(n^2).
А вот сами области найти - это да... та же сортировка, вид сбоку... впрочем, ТС работал абсолютно дубово, а ведь можно было хотя бы проиндексировать ширину-долготу и сразу, с использованием индекса, отсекать все точки, выпадающие за квадрат со стороной, равной двум максимальным радиусам.
...
Рейтинг: 0 / 0
06.09.2013, 13:45
    #38389081
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зарядка для ума ( алгоритмическая задача)
tanglirширинушироту
пятница :)
...
Рейтинг: 0 / 0
06.09.2013, 14:36
    #38389150
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зарядка для ума ( алгоритмическая задача)
ДохтаРКак я вижу решение, нужно отсортировать массив из 6000 элементов в порядке возростания растояний между точками
Хм. Между какими именно точками?

ДохтаРПредлагайте .
ну, сходу я бы попробовал отсортировать по сумме координат точки и затем каждую точку сравнивать с последующими до тех пор, пока не выполнится условие x2+y2-x1-y1>3*D, где D - максимальная "область влияния".
...
Рейтинг: 0 / 0
06.09.2013, 14:40
    #38389163
ДохтаР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зарядка для ума ( алгоритмическая задача)
tanglirДохтаРв порядке возростания растояний до ближайшей точкитак количество расстояний-то там O(n^2), чем это лучше решения ТСа? собственно даже а чем оно от него отличается?


Все растояния не хранятся, хранится одно растояние и( или) координаты до одной ближайшей точки.
Точки имеющие одинаковые растояния до ближайшего соседа, которые с очень большой долей вероятности имеют взаимное влияние друг на друга будут находиться в соседних ячейках массива.

И с очень большой долей вероятности выход из цикла или рекурсии будет происходить гораздо раньше полного перебора всех возможных вариантов путей.
...
Рейтинг: 0 / 0
06.09.2013, 14:50
    #38389175
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зарядка для ума ( алгоритмическая задача)
ДохтаР Все растояния не хранятся, хранится одно растояние и( или) координаты до одной ближайшей точки
Чтобы узнать расстояние до ближайшей точки, надо посчитать расстояния до всех точек. А если посчитали расстояния до всех точек, то дальнейшие сложные выкладки с "вероятно" - мягко говоря, излишни :)
...
Рейтинг: 0 / 0
06.09.2013, 14:52
    #38389184
ДохтаР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зарядка для ума ( алгоритмическая задача)
[quot softwarer]ДохтаРКак я вижу решение, нужно отсортировать массив из 6000 элементов в порядке возростания растояний между точками
Хм. Между какими именно точками?

14804201
ДохтаРКак я вижу решение, нужно отсортировать массив из 6000 элементов в порядке возростания растояний до ближайшей точки или по другому не тривиальному критерию.



softwarerДохтаРПредлагайте .
ну, сходу я бы попробовал отсортировать по сумме координат точки и затем каждую точку сравнивать с последующими до тех пор, пока не выполнится условие x2+y2-x1-y1>3*D, где D - максимальная "область влияния".

согласен.

Как развитие идеи
Отсортировать в каком нибудь мультимапе значение области влияния как ключ , и индекс элемента массива как значение.

Следующий вопрос ,
алгоритмика выбора начинала перебора вариантов , от минимального растояния между точками или или от максимальной площади области вляния ?

зы с таким ходом мыслей есть шанс изобрести велосипед на тему стоимостного оптимизатора
...
Рейтинг: 0 / 0
06.09.2013, 15:00
    #38389193
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зарядка для ума ( алгоритмическая задача)
ДохтаР,

Каково примерно отношение максимального расстояния между точками к максимальному радиусу охвата?
...
Рейтинг: 0 / 0
06.09.2013, 15:08
    #38389206
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зарядка для ума ( алгоритмическая задача)
Перенос обсуждения сюда заставляет думать, что ТС отошёл от попытки оптимизации в рамках SQL... впрочем. в любом случае нужно больше сведений об исходных данных. Соотношение расстояний к зонам влияния, разброс и того, и другого, равномерность распределения точек, частота изменения исходных данных и пр.
...
Рейтинг: 0 / 0
06.09.2013, 15:10
    #38389209
ДохтаР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зарядка для ума ( алгоритмическая задача)
miksoftДохтаР,

Каково примерно отношение максимального расстояния между точками к максимальному радиусу охвата?

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

Для этого нужно максимально быстро собрать такую ститистику имея координаты точек и радиус влияния.

С радиусом вроде все просто .
С растоянимями чуть сложнее. Не хочется сравнивать все возможные варианты растояний между всеми 6000 точками .
...
Рейтинг: 0 / 0
06.09.2013, 15:15
    #38389214
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зарядка для ума ( алгоритмическая задача)
ДохтаРС растоянимями чуть сложнее. Не хочется сравнивать все возможные варианты растояний между всеми 6000 точками .А все варианты и не нужно. Достаточно оценки по самым крайним точкам. В минимальном случае можно проверить две-четыре точки - которые имеют минимумы и максимум по каждой из координат. Это, конечно, не точное решение, но достаточно точное, чтобы оценить характер задачи.
...
Рейтинг: 0 / 0
06.09.2013, 15:16
    #38389216
ДохтаР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зарядка для ума ( алгоритмическая задача)
AkinaПеренос обсуждения сюда заставляет думать, что ТС отошёл от попытки оптимизации в рамках SQL... впрочем. в любом случае нужно больше сведений об исходных данных. Соотношение расстояний к зонам влияния, разброс и того, и другого, равномерность распределения точек, частота изменения исходных данных и пр.


Я, ТС этой темы и ТС в оригинальной постановке ( по ссылке ) разные люди.
Мне интересна общая алгоритмика на любом ЯП,
а не методы реализации и оптимизации на SQL и PL/SQL.

Не вижу проблемы в раздельном обсуждении задачи с разных точек зрения.
...
Рейтинг: 0 / 0
06.09.2013, 15:38
    #38389243
ДохтаР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зарядка для ума ( алгоритмическая задача)
miksoftДохтаРС растоянимями чуть сложнее. Не хочется сравнивать все возможные варианты растояний между всеми 6000 точками .А все варианты и не нужно. Достаточно оценки по самым крайним точкам. В минимальном случае можно проверить две-четыре точки - которые имеют минимумы и максимум по каждой из координат. Это, конечно, не точное решение, но достаточно точное, чтобы оценить характер задачи.

Не совсем понял.
Что бы найти минимумы и максимумы растояний для каждой точки нужно как минимум пройтись по массиву. И так для каждой точки , если массив не сортирован.
Выходим на решение в лоб , через факториал( декартово произведение) количества точек
...
Рейтинг: 0 / 0
06.09.2013, 15:43
    #38389250
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зарядка для ума ( алгоритмическая задача)
ДохтаРmiksoftпропущено...
А все варианты и не нужно. Достаточно оценки по самым крайним точкам. В минимальном случае можно проверить две-четыре точки - которые имеют минимумы и максимум по каждой из координат. Это, конечно, не точное решение, но достаточно точное, чтобы оценить характер задачи.

Не совсем понял.
Что бы найти минимумы и максимумы растояний для каждой точки нужно как минимум пройтись по массиву. И так для каждой точки , если массив не сортирован.
Выходим на решение в лоб , через факториал( декартово произведение) количества точекНет, я говорю о приближенном решении, которое выполняется значительно быстрее. Чтобы оценить максимальное расстояние нужно найти лишь те точки, которые имеют минимальную или максимальную одну из координат. Если по координатам нет индекса, то это решается одним проходом по массиву точек (линейное время). Если индексы есть, то еще проще - берутся крайние значения из индекса (константное время).
...
Рейтинг: 0 / 0
06.09.2013, 15:47
    #38389255
ДохтаР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зарядка для ума ( алгоритмическая задача)
miksoftДохтаРпропущено...


Не совсем понял.
Что бы найти минимумы и максимумы растояний для каждой точки нужно как минимум пройтись по массиву. И так для каждой точки , если массив не сортирован.
Выходим на решение в лоб , через факториал( декартово произведение) количества точекНет, я говорю о приближенном решении, которое выполняется значительно быстрее. Чтобы оценить максимальное расстояние нужно найти лишь те точки, которые имеют минимальную или максимальную одну из координат. Если по координатам нет индекса, то это решается одним проходом по массиву точек (линейное время). Если индексы есть, то еще проще - берутся крайние значения из индекса (константное время).

То есть квадрат на пощади которого находятся все точки участвующие в расчете нужно
ставнивать с площадью круга максимального влияния .
Правильно ?
...
Рейтинг: 0 / 0
06.09.2013, 15:53
    #38389265
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зарядка для ума ( алгоритмическая задача)
ДохтаРТо есть квадрат на пощади которого находятся все точки участвующие в расчете нужно
ставнивать с площадью круга максимального влияния .
Правильно ?Наверное, можно и так.
Но я говорил о линейных размерах, а не о площадях. Т.е. сравнивать максимальное расстояние среди крайних 2-4 точек и максимальный радиус влияния.
...
Рейтинг: 0 / 0
06.09.2013, 15:58
    #38389280
ДохтаР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зарядка для ума ( алгоритмическая задача)
Поправил
авторТо есть квадрат прямоугольник на пощади которого находятся все точки участвующие в расчете нужно
ставнивать с площадью круга максимального влияния .
Правильно ?


С прямоугольником сложнее, площадь пересечения сферических в вакуме прямоугольника и круга
в большестве случаев ( чуть реже чем всегда ) будет меньше ,
чем у квадрата такой же как у прямоугольника площади и и того же круга.
...
Рейтинг: 0 / 0
06.09.2013, 16:05
    #38389296
ДохтаР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зарядка для ума ( алгоритмическая задача)
miksoftДохтаРТо есть квадрат на пощади которого находятся все точки участвующие в расчете нужно
ставнивать с площадью круга максимального влияния .
Правильно ?Наверное, можно и так.
Но я говорил о линейных размерах, а не о площадях. Т.е. сравнивать максимальное расстояние среди крайних 2-4 точек и максимальный радиус влияния.

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

Ведь зона влияния уже по сути есть площадь из постановки задачи.

В общем случае задача сводится к поиску факта пересечения площадей нескольких окружностей.
...
Рейтинг: 0 / 0
06.09.2013, 16:07
    #38389302
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зарядка для ума ( алгоритмическая задача)
ДохтаРМне интересна общая алгоритмика на любом ЯП,
а не методы реализации и оптимизации на SQL и PL/SQL.

Не вижу проблемы в раздельном обсуждении задачи с разных точек зрения.
Именно от того, какими особенностями обладают исходные данные, зависит применимость или неприменимость того или иного метода оптимизации. Какой смысл кластеризовать точки, если распределение близко к равномерному? Зачем выполнять предфильтрацию по одной координате, если расстояния сравнимы с радиусами? Нахрена каждый раз считать с нуля, если между двумя последовательными расчётами в наборе изменяется только одна точка?
...
Рейтинг: 0 / 0
06.09.2013, 16:07
    #38389303
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зарядка для ума ( алгоритмическая задача)
ДохтаРплощадь пересеченияа это тут причем?
...
Рейтинг: 0 / 0
06.09.2013, 16:16
    #38389327
ДохтаР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зарядка для ума ( алгоритмическая задача)
AkinaДохтаРМне интересна общая алгоритмика на любом ЯП,
а не методы реализации и оптимизации на SQL и PL/SQL.

Не вижу проблемы в раздельном обсуждении задачи с разных точек зрения.
Именно от того, какими особенностями обладают исходные данные, зависит применимость или неприменимость того или иного метода оптимизации. Какой смысл кластеризовать точки, если распределение близко к равномерному? Зачем выполнять предфильтрацию по одной координате, если расстояния сравнимы с радиусами? Нахрена каждый раз считать с нуля, если между двумя последовательными расчётами в наборе изменяется только одна точка?

Мне ИМХО кажется что данная задача как раз из тех где проще написать свой велосипед ,
чем заставить работать стоимостной оптимизатор оракла.
...
Рейтинг: 0 / 0
06.09.2013, 16:27
    #38389349
ДохтаР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зарядка для ума ( алгоритмическая задача)
miksoftДохтаРплощадь пересеченияа это тут причем?

Это ИМХО предположение.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Зарядка для ума ( алгоритмическая задача) / 25 сообщений из 39, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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