powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Опасные дырки в прямоугольнике
18 сообщений из 68, страница 3 из 3
Опасные дырки в прямоугольнике
    #33051457
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4321(А то ить троек то ~ 10**9, как White Owl , задолбаишься просто перебирать в лоб)
Это почему это их вдруг 10**9? Откуда вдруг такое гигантское и жесткое число вылезло? :)

mikhail_n
Пока что, на мой взгляд, перспективу имеет только то, что предлагает 4321, всё остальное - детский лепет.
Ну-ну... Опубликуй свой алгоритм сначала.
...
Рейтинг: 0 / 0
Опасные дырки в прямоугольнике
    #33052148
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
начальная школа.
подготовительный класс.
учимся читать:
RatTailВ прямоугольнике
с координатами левого нижнего угла (0; 0) и правого верхнего (3000; 3000)
проделаны 4 дырки с координатами:
(1200; 85)
(63; 2500)
(2700; 2650)
(2990; 100)

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

Для этих четырех конкретных дырок ответ = (1433.0; 1669.8).
А если таких дырок ~1000?
Как найти самую безопасную точку (хотя бы одну, если их несколько) как можно
быстрее и с точностью до десятых?
перший пост, меж протчим.

далее, немного комбинаторики, 10**3*(10**3 - 1)*(10**3-2)/("семь-восемь"=6) - с точностью минус 0.6 порядка упираемся в 10**9 (кстати, в зависимости от методики составления троек мы можем получить и 10**3*(10**3 - 1)*(10**3-2) без "/("семь-восемь")=6"). Или вы предлагаете выборочную "триангуляцию". Опишите, как и что мы будем натягивать.
...
Рейтинг: 0 / 0
Опасные дырки в прямоугольнике
    #33052210
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikhail_n
Ув. тов. mayton, для Вашей постановки задачи

F(x,y)=min(V1(x,y),V2(x,y),V3(x,y),V4(x,y))


готов с ходу в карьер предложить сразу четыре решения:

(x1,y1), (x2,y2), (x3,y3), (x4,y4)

но даже если Вы замените min на max, то это ничего не даст, читайте

Прошу прощения. Очепятка. Действительно надо заменить min на max.
...
Рейтинг: 0 / 0
Опасные дырки в прямоугольнике
    #33053713
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4321далее, немного комбинаторики, 10**3*(10**3 - 1)*(10**3-2)/("семь-восемь"=6) - с точностью минус 0.6 порядка упираемся в 10**9 (кстати, в зависимости от методики составления троек мы можем получить и 10**3*(10**3 - 1)*(10**3-2) без "/("семь-восемь")=6").
Вообще-то из 1000 точек можно составить 166,167,000 не совпадающих комбинаций. Это вовсе не 10**9, хотя и чуть побольше чем 10**8. :)

4321Или вы предлагаете выборочную "триангуляцию". Опишите, как и что мы будем натягивать.
Нет, выборочную сделать будет сложно. Для самой выборки все равно прийдется все тройки перебирать. Так что для 1000 точек прийдется сделать 166,167,000 расчетов.
Вот только работающей альтернативы все равно нет :)
...
Рейтинг: 0 / 0
Опасные дырки в прямоугольнике
    #33056263
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не понял... ну че замолчали то? Варианты решения где?
Мое с тысячью точек на P4 1.2GHz/W2K/Ansi C/MS VC 2003 справилось за пять минут. А ваше? :)
...
Рейтинг: 0 / 0
Опасные дырки в прямоугольнике
    #33056836
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl 4321 10**3*(10**3 - 1)*(10**3-2)/6 - с точностью минус 0.6 порядка упираемся в 10**9
Вообще-то из 1000 точек можно составить 166,167,000 не совпадающих комбинаций. Это вовсе не 10**9, хотя и чуть побольше чем 10**8. :)

мыкажеццанаписалиоднуитужецифру. Вы не находите?
Что касается порядка - возьмите 2000 точек - перевалите за 10**9 (и, сл-но, за 50 минут на вашем железе). Речь именно о том, что скорость Вашего алгоритма ~N**3. И это не лечится.

White Owl выборочную сделать будет сложно. Для самой выборки все равно прийдется все тройки перебирать. Так что для 1000 точек прийдется сделать 166,167,000 расчетов.
ну хотя бы разрешили себе отбрасывать тройки, содержащие внутри натянутых на них треугольников другие проколы? (т.е. не проверять, что и окружность будет содержать как минимум те же проколы?)

Если да - попробуйте придумать "отсечение" скажем вида ~ "взяв первую тройку с некоторыми 2-мя заданными проколами (и перебирая 3-и), для всех точек (из N) заведомо не составляем тройки с теми, которые включают 3-ю точку взятой тройки..."

(с трудом представляю себе алгоритм (не переборный!!!) такого "отсечения", но он, возможно, спасет вас от зависимости ~N**3. Важно, чтобы алгоритм отбрасывал множества так, чтобы их даже не надо было проверять (иначе просто "уцениться" шаг перебора, но шагов останется столько же, и зависимсоть - той же степени).

White OwlВот только работающей альтернативы все равно нет :)
Ну, не все же торопятся реализовывать лобовые алгоритмы с хреновой сходимостью. Некоторым достаточно обосновать приемлемость алгоритма со скоростью сходимости ~N и "с достаточно хорошей наперед заданной точностью". А кодировать - и без нас любителей дохера. какгрицца - "пусть трактор пашет - он железный"
...
Рейтинг: 0 / 0
Опасные дырки в прямоугольнике
    #33058336
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4321 White Owl выборочную сделать будет сложно. Для самой выборки все равно прийдется все тройки перебирать. Так что для 1000 точек прийдется сделать 166,167,000 расчетов.
ну хотя бы разрешили себе отбрасывать тройки, содержащие внутри натянутых на них треугольников другие проколы? (т.е. не проверять, что и окружность будет содержать как минимум те же проколы?)
То есть ты предлагаешь сначала проверить есть ли проколы внутри треугольника а потом проверять уже полную окружность? Тебе не кажется, что это будет двойная работа? :)

4321Если да - попробуйте придумать "отсечение" скажем вида ~ "взяв первую тройку с некоторыми 2-мя заданными проколами (и перебирая 3-и), для всех точек (из N) заведомо не составляем тройки с теми, которые включают 3-ю точку взятой тройки..."
Э? Расшифруй.

4321(с трудом представляю себе алгоритм (не переборный!!!) такого "отсечения", но он, возможно, спасет вас от зависимости ~N**3. Важно, чтобы алгоритм отбрасывал множества так, чтобы их даже не надо было проверять (иначе просто "уцениться" шаг перебора, но шагов останется столько же, и зависимсоть - той же степени).
Перебор будет в любом случае. Можно частично сократить перебор если суметь отсортировать элементы множества, а потом выделять "подходящий кусок" из отсортированного массива и уже в нем делать перебор. Но вот как для этой конкретной задачи сделать сортировку я с ходу не вижу.

4321 White OwlВот только работающей альтернативы все равно нет :)
Ну, не все же торопятся реализовывать лобовые алгоритмы с хреновой сходимостью. Некоторым достаточно обосновать приемлемость алгоритма со скоростью сходимости ~N и "с достаточно хорошей наперед заданной точностью". А кодировать - и без нас любителей дохера. какгрицца - "пусть трактор пашет - он железный"
Лучше признайся, что на поверку твой метод сеток не заработал :)
...
Рейтинг: 0 / 0
Опасные дырки в прямоугольнике
    #33058402
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlЛучше признайся, что на поверку твой метод сеток не заработал :)
"а ты азартный, Парамоша"

Лучше признайся, что в логике "нне очинь". Пока ручками не налажаишь


Лома, ж объяснял уже много раз. А на слабО пусть мОлодежь и пОдростки фихней маица.



________________
По поводу "перебирать" - "и ничего больше не дано" - (в твоем алгоритме "перебора всех возможных") я думаю ты все таки упорствуешь и врёшь, как всякий упорствующий. Но есть ли способ устроить некую двумерную "меру", "автоматически перестраиваемую" при смене первой пары точек (и отбрасывающую все точки кроме ограниченного ближнего круга) из режима перебора - не уверен).



- Положим, в порядке бреда: взяли 2 направления (от прямой) и 2 "по возможности" ближайшие к паре (искать перебором среди всех не надо, достаточно неким быстрым поиском по упорядоченному набору находить входящие в некий квадрат, усекая размер квадрата вдвое. Пока не останется по ~1 точки. [Квадрат для простоты бреда направлен по осям, поиск отдельно по x, y, чтобы не домысливать методы быстрого поиска на плоскости]. Поскольку полный перебор не делается, а имеет место "быстрый поиск", то перебор всех N точек не нужен. Нужны только 2 ближайшие справа и слева. Любая другая тройка даст окружность, вмещающую ближайший прокол. Как видим, наметки избавиться от 3-го N в зависимости вида N*N*N появляются.

Остается полный перебор пар N*N. Скорей всего и тут можно сообразить, как получить несколько ближайших точек в разных секторах, так, что все другие пары с необходимостью дадут окружности накрывающие хотя бы один из этих ближайших проколов. Пока не знаю, можно ли придумать, сколько надо секторов, но наверное немного :).
...
Рейтинг: 0 / 0
Опасные дырки в прямоугольнике
    #33058514
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4321 White OwlЛучше признайся, что на поверку твой метод сеток не заработал :)
"а ты азартный, Парамоша"
Лучше признайся, что в логике "нне очинь". Пока ручками не налажаишь
Лома, ж объяснял уже много раз. А на слабО пусть мОлодежь и пОдростки фихней маица.
Немножко азартности есть, не буду отрицать. А вот наезд на логику - не угадал... А если тебе "лома" доказать свою точку зрения... Ну извините....


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


4321- Положим, в порядке бреда: взяли 2 направления (от прямой) и 2 "по возможности" ближайшие к паре (искать перебором среди всех не надо, достаточно неким быстрым поиском по упорядоченному набору находить входящие в некий квадрат, усекая размер квадрата вдвое. Пока не останется по ~1 точки.
эээээ..... Квадрат говоришь? В общем, я не очень понял твое предложение... Тем более что напрямую по трем точкам его построить не получится. А вот после того как окружность уже найдена..... Ну-ка, попробуем.... ..... .... .... Есть эффект! Итого 1000 точек я сейчас обсчитываю за 3:15.

Так, еще бы придумать как сокращать количество троек на которых строятся окружности...


4321Нужны только 2 ближайшие справа и слева. Любая другая тройка даст окружность, вмещающую ближайший прокол. Как видим, наметки избавиться от 3-го N в зависимости вида N*N*N появляются.
Не годится. Ближайшие справа и слева не гарантируют что окружность построенная на них будет больше чем окружность построенная на основе более удаленых точек. При этом обе эти окружности могут даже вообще не пересекаться, а только соприкасаться в базовой точке.
...
Рейтинг: 0 / 0
Опасные дырки в прямоугольнике
    #33058558
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2WhiteOwl

Относительно Вашего метода беру свои слова обратно. Он работает. Единственное чтобы поменял - на третьем шаге вместо перебора всех возможных троек (N**3) делал бы триангуляцию Деланэ (есть алгоритмы N**2).
...
Рейтинг: 0 / 0
Опасные дырки в прямоугольнике
    #33058709
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikhail_nОтносительно Вашего метода беру свои слова обратно. Он работает. Единственное чтобы поменял - на третьем шаге вместо перебора всех возможных троек (N**3) делал бы триангуляцию Деланэ (есть алгоритмы N**2).
нууууууу... можно попробовать. Делане здесь действительно подойдет лучше чем лобовая триангуляция. Ладно, ушел думать дальше :)
...
Рейтинг: 0 / 0
Опасные дырки в прямоугольнике
    #33059109
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl А если тебе "лома" доказать свою точку зрения...

доказать то я уже все доказал. если кто не видит - его проблеммы. лома кодировать доказанное


White Owl Не годится. Ближайшие справа и слева не гарантируют что окружность построенная на них будет больше чем окружность построенная на основе более удаленых точек. При этом обе эти окружности могут даже вообще не пересекаться, а только соприкасаться в базовой точке.
Годится. Ближайшие (к центру отрезка) ГАРАНТИРУЮТ, что окружность построенная на них ЕДИНСТВЕННАЯ, не включающая иных проколов справа (на правой), слева (на левой). ( Предлагаю разобраться в лемме самостоятельно (и кто из нас му... ну в общем - "херовый логик"???) ). (но возможно включающая проколы "другосторонние). Т.е. гарантируют, что другие окружности построенные на точках однозначно "попадают в брак". Т.ч. достаточно находить ближайшие к центру отрезка, и если это будет быстрее, чем N*(нечто, порядка среднего времени отсева проколотых), то скорость сходимости у вас подрастет.


Если еще и брать не все 2-ки, а удастся доказать, что достаточно скольки-то ближайших (возможно, правда, что в зависимости от распределения), то скорость вашего перебора можно приподнять.
...
Рейтинг: 0 / 0
Опасные дырки в прямоугольнике
    #33059133
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, перл о том, что окружности проходящие через 2 заданные точки (опорную 2-ку, в нашем случае), "могут даже вообще не пересекаться, а только соприкасаться в базовой точке" предлагаю запатентовать и выбить на щите в качестве герба (за отсутствием щита - на лбу, дабы собеседнику было ясно, с кем тот имеет дело )

(короче - усцацца)
...
Рейтинг: 0 / 0
Опасные дырки в прямоугольнике
    #33061953
Valer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пластину 3000 * 3000 можно представить
в виде решетки 3000 * 3000 или 30000 * 30000 .
( бумажный эквивалент - милиметровка )
Узлы решетки с отверстиями помечаются .

задаем X=2

цикл по всем отверстиям

вокруг каждой узла формируется контур
( например квадрат ) с центром в этом узле и с размерами X *X
который захватывает новые точки вокруг узла

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

новый узел захватывается только если он свободен
или если новое расстояние меньше записанного в узел

размеры контура X увеличиваем +2 в тех направлениях
где есть свободные узлы решетки

next

условия выхода из цикла отсутсвие свободных точек
на решетке , их можно считать в цикле

точность расчетов зависит от шага решетки
оперативной памяти для массивов должно хватить
...
Рейтинг: 0 / 0
Опасные дырки в прямоугольнике
    #33063323
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl mikhail_n- на третьем шаге вместо перебора всех возможных троек (N**3) делал бы триангуляцию Деланэ (есть алгоритмы N**2).
нууууууу... можно попробовать. Делоне здесь действительно подойдет лучше чем лобовая триангуляция. Ладно, ушел думать дальше :)
Подумал... Не годится. Для триангуляции Делоне требуется делать перебор всех оставшихся точек, и проверять расстояние до них. Плюс хранить еще список ребер а не только список точек. В итоге получаем N^2 расчетных блоков по Tt секунд каждый для триангуляции. А потом еще N расчетных блоков по Tc секунд каждый на расчет описаных окуржностей для каждого найденого треугольника. Причем Tt как минимум в N раз больше чем Tc.
А лобовой перебор треугольников это "всего-лишь" N^3*Tc :)
Вот если бы у нас с самого начала была задана сетка ребер триангуляции - тогда да, получилось бы намного быстрее. Но нам, к сожалению, приходится строить ее самим.
В общем, интуиция меня не подвела с самого начала - триангуляция это ненужное в данном случае усложнение.
...
Рейтинг: 0 / 0
Опасные дырки в прямоугольнике
    #33063347
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValerПластину 3000 * 3000 можно представить
в виде решетки 3000 * 3000 или 30000 * 30000 .
( бумажный эквивалент - милиметровка )
.....

А если есть три точки с совпадающими координатами? :) К тому же точность этого метода очень уж низкая. А вообще, это все сильно смахивает на построение диаграммы Вороного методом перебора :) Есть более простые и точные методы рисования той же картинки.
...
Рейтинг: 0 / 0
Опасные дырки в прямоугольнике
    #33063947
Valer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
А если есть три точки с совпадающими координатами? :) К тому же точность этого метода очень уж низкая. А вообще, это все сильно смахивает на построение диаграммы Вороного методом перебора :) Есть более простые и точные методы рисования той же картинки.

1 три точки с овпадающими координатами - это одна точка
2 точность запрошена автором 0.1
3 методы в студию
...
Рейтинг: 0 / 0
Опасные дырки в прямоугольнике
    #33068271
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valer3 методы в студию
А в яндексе поискать по словам "диаграмма Вороного" не догадался?
...
Рейтинг: 0 / 0
18 сообщений из 68, страница 3 из 3
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Опасные дырки в прямоугольнике
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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