Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
В прямоугольнике с координатами левого нижнего угла (0; 0) и правого верхнего (3000; 3000) проделаны 4 дырки с координатами: (1200; 85) (63; 2500) (2700; 2650) (2990; 100) Надо найти точку, лежащую внутри прямоугольника, такую, что расстояние от нее до ближайшей от нее дырки будет максимальным. Т.е., это будет типа самая безопасная точка в прямоугольнике (в терминах возможного падения вниз и гибели). Для этих четырех конкретных дырок ответ = (1433.0; 1669.8). А если таких дырок ~1000? Как найти самую безопасную точку (хотя бы одну, если их несколько) как можно быстрее и с точностью до десятых? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 12:50 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Реши численно. Перебором. А уточнение золотым сечением. Яб так сделал. Ведь точность большая не нужна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 13:02 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
имхо в теориях я не силен... но может от свойств "центра тяжести" отталкнуться... Как в игрушке "Lines"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 13:17 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
SarinРеши численно. Перебором. А уточнение золотым сечением. Яб так сделал. Ведь точность большая не нужна. Чуит мое серцо: в словах сих не токмо мудрость не по летам, но и прозорливостъ просчупываицца. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 13:31 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Di_LIneимхо в теориях я не силен... но может от свойств "центра тяжести" отталкнуться... Как в игрушке "Lines"... Почему бы и не оттолкнуться? Можно и оттолкнуться. Только как и куда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 13:33 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
RatTail Di_LIneимхо в теориях я не силен... но может от свойств "центра тяжести" отталкнуться... Как в игрушке "Lines"... Почему бы и не оттолкнуться? Можно и оттолкнуться. Только как и куда? имхо задачка - тонкая пластина. Дырка она и в бублике дырка. Изначально, без дырков, безопасная точка (ЦТ) в центре, на пересечении диагоналей (ЦП). Слелали дырку с известными координатами. Площадь дырки известна и "масса". Координата тож. ЦТ - смещается...Строго по прямой, проходящей через ЦП и центр дырки на растояние пропорциональное отнятой "массе" ... имхо... И так далее. Эт не матиматика, а механика чистейшей воды. имхо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 13:40 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Вообще-то, мои дырки - это на самом деле точки - в строгом мат. смысле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 13:44 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
RatTailВообще-то, мои дырки - это на самом деле точки - в строгом мат. смысле. Тьфу... Я уж ножовку заточил... Тип пилить бум... Может золотые?.. Математика так математика... Бум строго мат-ругаться? - Критерий подобия есть? Есть! Применяем ТРИЗ и все увиличиваем в 1000 раз. Уже не точка, а настоящая дырка или дырочка. Пластина и так 3000 на 3000 = 900 000 точек... Слушай, как сделаешь - просвети дурилку картонную. Извини, что не по теме. Но в Лайнсе, читал где-то, именно по критерию "тяжести" алгоритм построен... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 14:00 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Так, а как же я это сделаю, если я сам спрашиваю как это сделать? Тривиальная идея: "разбиваем прямоугольник на, скажем, 100х100 квадратов; затем разбиваем самый безопасный из этих квадратов на 100х100 более мелких квадратов и т.д." меня не привлекает. В смысле, по времени счета. Сорри, но возможную роль мифического ЦТ не догоняю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 14:20 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
RatTailТак, а как же я это сделаю, если я сам спрашиваю как это сделать? Тривиальная идея: "разбиваем прямоугольник на, скажем, 100х100 квадратов; затем разбиваем самый безопасный из этих квадратов на 100х100 более мелких квадратов и т.д." меня не привлекает. В смысле, по времени счета. Сорри, но возможную роль мифического ЦТ не догоняю. Центр тяжести прямоугольника ну никак не будет самой безопасной точкой. Просверлим 2 дырки в где-то разных углах одной сторны. Тогда самой безопасной точкой будет где-то на середине противоположнйо стороны. Но это не центр тяжести. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 14:29 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
RatTailСорри, но возможную роль мифического ЦТ не догоняю. Он не мифический, а реальный. Возьми простой лист бумаги из принтера. Его ЦТ легко найдешь иголкой. А ЛЮБАЯ дырка - сместит его по указанной выше прямой. Это - механика и закон Всемирного тяготения... Пусть у листа 3000х3000 у одного из углов "вырезали" квадрат 100х100. ЦТ сместится в противоположную сторону от выреза. Линия перемещения будет проходить через предыдущее положение ЦТ и квази точку ЦТ выреза... Как это в матиматическую модель заложить - не по моим мозгам... Сорри... Что отвлек на глупость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 14:30 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Di_LIne; Я, конечно, в данный момент солидарен с Lelikk'ом, но. Можно рассмотреть идею: искомая точка находится или среди макс. удаленных от ЦТ точек или среди макс. приближенных к ЦТ точек (впрочем, это сам ЦТ). Под ЦТ можно понимать не буквально центр тяжести, а некую особую точку, которая находится достаточно легко и быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 14:53 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
RatTailDi_LIne; Я, конечно, в данный момент солидарен с Lelikk'ом, но. И я не спорю... RatTailМожно рассмотреть идею: искомая точка находится или среди макс. удаленных от ЦТ точек или среди макс. приближенных к ЦТ точек (впрочем, это сам ЦТ). Под ЦТ можно понимать не буквально центр тяжести, а некую особую точку, которая находится достаточно легко и быстро. Она - ЦЕНТР (тяжести) области с координатами 1500; 1500 (по условиям примера). Ключевое слово для меня: RatTailпроделаны 4 дырки с координатами: (1200; 85) (63; 2500) (2700; 2650) (2990; 100) А если точки... Ну... Соединяем две противоположные точки линиями и получаем ответ. Так как точка пересечения этих линий и есть точка максимально удаленная от "дырок". Чистая геометрия. имхо... Если 1000 дырок... То вааще все пофиг... Соединяем любые пары "дырок" линиями... В конечном итоге получим область ГДЕ обязана быть "безопасная точка"... Конечно возможен крайний вариант... Тогда следует говорить о "выборе среднего элемента"... Это, кажется уже из бинарного поиска... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 15:07 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Опять нифига я не понял... Ну ессно, если в припадке безумия искромсать с помощью мачете наш прямоугольник на мелкие дольки, то, конечно, искомая точка окажется в одной из полученных долек...... А может я просто туп. Окуеть. Сейчас заглянул в best solutions этой задачи. Впереди появились 11 вьетнамцев (у них - вьетнамцев - там типа мафия; не удивлюсь, если среди их 11 решений только 2 оригинальных), НО зацените их отрыв по времени от европейских решений! http://spoj.sphere.pl/ranks/RUNAWAY/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 15:19 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Последний технический вариант языком програмирования. Делишь все точки на 2 списка. в произвольном порядке. Поз.1 Бежишь по спискам вниз. по № в списках образуются пары точек. Находишь точку "среднего элемента." -> в третий список. Добежали до коца? Третий список делим по полам на 2 списка. Повторяем еще раз. Goto "Поз.1" Полка не останется одна точка. Блин!!! Дюже похоже на БИНАРНЫЙ ПОИСК! Или... "Сортировка слиянием"??? Что там об их быстрых циклах корифеи писали? Это тебе все намеки. Эт еще в институте проходили... или "проходили" Давай! Шай-бу! Шай-бу! Зря я что ль тут мОзги напрягаю???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 15:32 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
По моим прикидкам таким макаром вроде бы ищется точка с мин. суммой расстояний до всех точек данного набора. Да можно хоть сто раз сказать "бинарный поиск", только кули с того. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 15:45 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
RatTailПо моим прикидкам таким макаром вроде бы ищется точка с мин. суммой расстояний до всех точек данного набора..На бумажке нарисовал. Для 10 дырок.... Имхо... расстояние от нее до ближайшей от нее дырки будет максимальным RatTailДа можно хоть сто раз сказать "бинарный поиск", только кули с того. Ну... Извини. Погорячился! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 15:52 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Куй знает что. Я это все "понимаю". Только не понимаю, как твой алгоритм вяжется с фактом существования прямоугольной области поиска. Твои 1000 дырок висят как бы в воздухе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 16:08 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
2 Di_LIne: ну ни фига подобного. Никто не сказал, что дырки распределены равномерно по поверхности прямоугольника. Я в одну половину запихаю 1000 дырок, в другой буедт чисто и безопасная точка даже близко не будет похожа на перечечение линий. Это вообще ничем не обоснованное предположение про соединение попарно точек. ________________________________________________________ Глюк - это высокоорганизованная система не поддающихся определению частиц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 16:50 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
А расстояние между "безопасной точкой", и краем площади учитывать надо или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 18:33 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Ты спрашиваешь: не является ли то, что окружает снаружи наш прямоугольник, одной большой (и как бы самой опасной) Дырой и не надо ли учитывать расстояние и до этой Дыры? Что-то в этом есть. Но я не думаю, что и эту Дыру надо брать в учет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 20:38 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Почти по сабжу, но увы совсем не то. Находит точку с минимальной суммой расстояний до точек заданного набора: Код: plaintext 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. 31. 32. 33. 34. 35. 36. 37. 38. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 23:15 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
RatTailТы спрашиваешь: не является ли то, что окружает снаружи наш прямоугольник, одной большой (и как бы самой опасной) Дырой и не надо ли учитывать расстояние и до этой Дыры? Если учитывать расстояние до краев, то получится классическая геометрическая задача вписывания максимально возможного круга. К программированию она мало относится. Решение есть в любом (наверное) учебнике по геометрии. Я ее во всяком случае встречал несколько раз. Но в общем случае метод решения достаточно простой: 1) Берешь тройку "опасных точек" и строишь окружность проходяющую через них. Если центр окружности вылез за пределы исходной площадки - подтягиваешь его. 2) Проверяешь расстояние от центра окружности до всех остальных точек. Если расстояние меньше радиуса окружности - значит эта окружность не подходит. 3) Сравниваешь все найденые окружности и та у которой радиус максимальный и будет ответом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 01:20 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
забыл упомянуть :) Этот алгоритм надо применять не только к заданым в условии точкам, но и ко всем точкам образующим границу заданой площади. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 01:32 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
>3) Сравниваешь все найденые окружности и та у которой радиус максимальный и будет ответом. Значит, ответом будет некая окружность? Слабо представляю, как "окружность" может быть ответом. С вами трудно соскучиться. То-то Кот2 рвется в аналитики, а акуз в политику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 10:20 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Попробуй линейное программирование. Как из экономики. Математика там, конечно, крутая. Но ничего сложного. ЗЫ: линейное программирование не имеет отношения к программированию. Это раздел линейной алгебры, если кто не знает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 11:13 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
кхм...Линейное программирование? Здесь же сплошные квадраты и корни :^) Код: plaintext 1. 2. 3. 4. Что касается минимаксной задачи Код: plaintext 1. 2. 3. 4. кхм^2...Линейное программирование - раздел линейной алгебры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 13:40 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Когда рассчитывается то, сколько чего какомы дистрибъютеру послать, так там даже квадратов с корнями нет. А вот как распределить поставку, чтоб выгода максимальная была - это уже как раз линейное программирование. ИМХО, задача с максимальной прибылью похожа на эту. >кхм^2...Линейное программирование - раздел линейной алгебры? Нам в курсе линейки читали. И во всех учебниках по линейке я такой раздел видел. В конце обычно. Назрел у меня вопрос: какое расстояние предполагается считать максимальным? Допустим от меня до дырки оди 3 километра, до дырки два 2 километра. А дырка три в сантиметре от меня. А в другом варианте до дырки один, два и три по полтора километра. В первом случае расстояние суммарное больше. Но позиция, имхо, устойчивей во втором. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 14:50 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
надо максимизировать расстояние до ближайшей дырки (видимо считая границу - дыркой). Т.е. функция хоть и непрерывная но даже не гладкая (при смене "ближайшей" меняется бином, который надо "максимизировать"). В 0 приближении я бы отминимизировал ф-ю вида Сумма(1/(r(i) - r(0))**2) Т.к. есть основания полагать что максимумы будут "не очень далеко" от минимума этой ф-ии. А дальше можно стартовать из всех найденных локальных минимумов по достаточно мелкой сетке но уже в "настоящей задаче" (хотя проще наверное - находить 3 ближайших объекта (точки, либо отрезки границ) к найденной точке локального минимума и вписывать окружность. однако за общность вписывания, в отличии от "скатывания" в решение по сетке, не ручаюсь). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 15:07 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
>видимо считая границу - дыркой Единственная роль границы прямоугольника - ограничить область поиска целевой точки множеством точек, принадлежащих этому прямоугольнику, а не быть еще одной дыркой. Иначе ответ для этой задачи был бы очевиден: +/- бесконечность. >я бы отминимизировал ф-ю вида Сумма(1/(r(i) - r(0))**2) А что мешает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 16:25 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
RatTail>видимо считая границу - дыркой Единственная роль границы прямоугольника - ограничить область поиска целевой точки множеством точек, принадлежащих этому прямоугольнику, а не быть еще одной дыркой. Иначе ответ для этой задачи был бы очевиден: +/- бесконечность. Какие плюс-минус бесконечность? Какое к чертям линейное программирование? Вы условие то читали? Или вас, друзья мои, больше прикалывает использовать умные слова не задумываясь об их смысле? Есть многоугольник. В многоугольнике проколоты дырки. Найти точку максимально удаленую от всех проколотых дырок. RatTail>я бы отминимизировал ф-ю вида Сумма(1/(r(i) - r(0))**2) А что мешает? Мешает то, что эта формула сюда никак не упирается :) Решение выглядит так: 1) для каждого угла исходного многоуголника находим ближайший к углу прокол, замеряем расстояние между углом и проколом. Угол с максимальным расстоянием - кандидат на результат. 2) Если проколов больше чем один, то для каждых двух проколов ищем на каждой из сторон многоугольника точку равноудаленную от обоих проколов. Для каждой найденой точки проверяем, есть ли прокол который ближе чем два исходных? Если есть - отбрасываем эту пару и переходим к следующей. Если нету - и расстояние между точкой на границе многоугольника до обоих проколов максимальное из всех найденых на данный момент - запоминаем эту точку. 3) Если проколов больше чем два, то для каждой тройки проколов ищем центр окружности проведеной через эти три прокола. Проверяем есть ли какой-либо прокол внутри этой окружности и находится ли центр окружности внутри многоугольника? Если есть проколы внутри или центр вышел за пределы многоугольника - отбрасываем и переходим к следующей тройке проколов. Иначе проверяем радиус найденой окружности на максимальность найденых расстояний. Для случая если многоугольник четырехугольный и в нем четыре прокола, тебе понадобится сделать выбор из 4+6+4=14 точек чтобы найти ответ. Устроит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 18:02 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
RatTail роль границы прямоугольника - ограничить область поиска это ненамного меняет задачу (-4 условия из ~1004). Но приводит к необходимости дополнительно обследовать границу - как область возможных решений. RatTail >я бы отминимизировал ф-ю вида Сумма(1/(r(i) - r(0))**2) А что мешает? палиномы (при приравнивании ч.п. 0-ю) получается балшой степени. В аналитике не решается, к линейности не сводятся. Хотя, возможно можно найти ф-ю поудачнее дифференцируемую, но с той же надеждой оценить области примерного расположения предполагаемых решений. Типа Сумма(Ln((r(i) - r(0))**2) не шибко помогает... но кажется степеня ур-й на экстремум будут чуть помельче Но это только определение точек ~ подходящих. А не сами точки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 18:07 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
White Owl 3) Если проколов больше чем два, то для каждой тройки проколов ищем центр окружности проведеной через эти три прокола. Проверяем есть ли какой-либо прокол внутри этой окружности и находится ли центр окружности внутри многоугольника? Если есть проколы внутри или центр вышел за пределы многоугольника - отбрасываем и переходим к следующей тройке проколов. Иначе проверяем радиус найденой окружности на максимальность найденых расстояний. можно сразу брать только тройки, в треугольник, натянутый на которые, не попадает ни один прокол. Меньше центров искать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 18:14 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
4321можно сразу брать только тройки, в треугольник, натянутый на которые, не попадает ни один прокол. Меньше центров искать. Нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 18:17 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
White Owl 4321можно сразу брать только тройки, в треугольник, натянутый на которые, не попадает ни один прокол. Меньше центров искать. Нельзя. "ну и дура" (с не мой). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 18:24 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Ладно, БелоСов, типа уговорил. Значит, триангуляция. Ну и? Скажем, есть у нас готовый список координат трех вершин каждого из треугольников, входящих в триангуляцию некой многоугольной выпуклой области. И что теперь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 21:25 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
RatTailЛадно, БелоСов, типа уговорил. Значит, триангуляция. Ну и? Скажем, есть у нас готовый список координат трех вершин каждого из треугольников, входящих в триангуляцию некой многоугольной выпуклой области. И что теперь? Какие треугольники??? Нет там никаких треугольников. Там исключительно окружности :) А насчет "что теперь?" - А теперь ты выбираешь удобный язык и кодируешь вышеприведеный алгоритм. Лично я бы предпочел AutoLISP там можно не возится с фактическими расчетами, но выбирать тебе :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 23:01 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Дико извиняюсь, но то, что ты предлагаешь, это какая-то чушь. Ты готов перебрать и просчитать ВСЕ возможные комбинации из трех точек из множества 1000 точек. Типа, за пару секунд на машине mmx 266MHz. Я уже молчу о том, что совершенно непонятно куда эти просчеты совать. Вопрос: зная координаты центра и радиус макс. круга, который можно вписать в прямоугольник и который (этот круг) не содержит внутри себя дыр, можешь ли ты сходу сказать, где расположена наша самая безопасная точка? Я - не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 11:56 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
RatTailДико извиняюсь, но то, что ты предлагаешь, это какая-то чушь. Ты готов перебрать и просчитать ВСЕ возможные комбинации из трех точек из множества 1000 точек. Типа, за пару секунд на машине mmx 266MHz. Я уже молчу о том, что совершенно непонятно куда эти просчеты совать. Вопрос: зная координаты центра и радиус макс. круга, который можно вписать в прямоугольник и который (этот круг) не содержит внутри себя дыр, можешь ли ты сходу сказать, где расположена наша самая безопасная точка? Я - не могу. ну зачем перебирать ~10**9? Накрой прямоугольник сеткой стартовых точек ~ 10*3. Найди для каждой стартовой 3 ближайшие "ямы" (или 2 ямы и границу, или 2 границы и яму) (это, если есть некий двумерный индекс по ямам, будет быстрее (10**3)*(10**3), врать неохота, но наверное ~ln(10**3)*10**3 ) И опиши на этих тройках окружности (для 2х и границы - полуокружность с центром на границе, для 1 и 2-х границ - окружность с центром в угле). Сравни радиусы. Центр самой большой - примерно "самая безопасная" (одна из множества "самых безопасных") (скорее всего можно доказать, что количество стартовых точек должно быть сравнимо с N величин, что-то ~ (2-3)*N, для строгого совпадения найденного решения с искомым. Удивлюсь, если гарантия ~N**2) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 12:47 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
>Накрой прямоугольник сеткой стартовых точек ~ 10*3. Всего? На мой вкус, маловато будет. И почему не десятью? По-моему, все это будет называться "пальцем в небо". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 16:27 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
RatTailДико извиняюсь, но то, что ты предлагаешь, это какая-то чушь. Ты готов перебрать и просчитать ВСЕ возможные комбинации из трех точек из множества 1000 точек. Типа, за пару секунд на машине mmx 266MHz. Это ты кому? Мне? :) Ну не веришь, не надо. Тогда можешь решать задачу другими методами... Если конечно придумаешь их :) RatTailЯ уже молчу о том, что совершенно непонятно куда эти просчеты совать. Ну за просчеты обычно извиняются. RatTailВопрос: зная координаты центра и радиус макс. круга, который можно вписать в прямоугольник и который (этот круг) не содержит внутри себя дыр, можешь ли ты сходу сказать, где расположена наша самая безопасная точка? Я - не могу. Да, конечно могу. Самая безопасная точка находится в центре круга с самым максимальным радиусом. Ты этого не видишь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 18:32 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
БелоСов, не кипятись. Это же просто дружеская полемика. Вполне может быть, что твой подход верен на все 100%. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 21:21 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
RatTailПо-моему, все это будет называться "пальцем в небо". вапшета пальцем не нада.те паче - неббу. Ано не аценит. если серьезно, то накрыв прямоугольник сеткой чуть больше чем в N квадратиков (со сдвигом на границе в полквадратца), получим заведомо какое то количество квадатов, не содержащих точек. (т.е. надо ~ [sqrt(N)] +1 "ячеек" для квадратной области, для прямоугольной тоже что - то в этом роде, главное, чтобы ячеек разбиения было > N - числа проколов). Очевидно, что точки, лежащие в их центрах, безопаснее точек, лежащих в центрах содержащих проколы ячеек. если теперь грубо разбить ячейки еще скажем на 3*3, то будем иметь ячейки, которые имеют только пустые смежные, и ячейки, которые имеют непустые смежные. Подобрав разбиение (из оценок мин и макс расстояний), можно будет утверждать что все точки некоторых несмежных (в зависимости от "конфигурации" несмежной области) с проколотыми заведомо безопасней всех точек ячеек имеющих проколотые и (даже) точек ячеек, смежных с проколотыми. Т.е. решения надо искать в таких ячейках "центровых в ряду несмежных". (До сих пор количество вычислений ~N). Вот дальше чуть хуже: гуляя по точкам ячейки мы можем получить массу троек "наиближайших точек", расстояния до которых будут отличаться с точностью до ~1/2 диагонали ячейки. Какую из троек выбрать, и какова сложность алгоритма выборки (в смысле зависимости от N) сказать, не придумав алгоритма, трудно. Тут я действительно соврал, в том смысле, что недостаточно взять только тройки проколов, ближайших к центрам областей. Но если нас интересуют решения с некоторой заданной точностью, то можно будет ограничиться достаточно мелким разбиением (в зависимости от точности, т.е. от 1/2 диагонали "ячеек погрешности", т.е количество ячеек разбиения останется ~N), и выбирать в качестве кандидатов (т.е. троек, служащих для вычисления безопасно точки) только тройки, ближайшие к центрам ячеек, все смежные к которым в некоторой окружности (с радиусом ~ ребра ячеки площадью 1/N от площади прямоугольника) не имеют проколов (решения, лежащие в отй же ячейке будут отличаться с точночтью не больше 1/2 диагонали). Понятно, что большую часть этого бреда можно даже доказать. Лениво, однако. Опять же, не совсем понятно, интересуют ли нас решения "с некоторой точностью"? Но со сложностью ~N. (А то ить троек то ~ 10**9, как White Owl , задолбаишься просто перебирать в лоб) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2005, 10:59 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
4321 (т.е. надо ~ [sqrt(N)] +1 "ячеек" читать "делений" вместо "ячеек" (имеется в виду разбиения сторон). Ленифф, аднако, каюс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2005, 11:11 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Уважаемые господа RatTail, Sarin, Di_LIne, Lelikk, White Owl, 4321! Прошу прощения за то что вмешиваюсь в вашу полемику. Предлагаю следующее: 1) Подойти формально к проблеме нахождения минимума функции многих переменных. То есть определить однозначно, как должна выглядеть целевая функция Например: Если (x1,y1),(x2,y2),(x3,y3),(x4,y4) - экстремальные точки то: Расстояния от x,y до экстремумов V1(x,y)=sqrt((x1-x)^2+(y1-y)^2) V2(x,y)=sqrt((x2-x)^2+(y2-y)^2) V3(x,y)=sqrt((x3-x)^2+(y3-y)^2) V4(x,y)=sqrt((x4-x)^2+(y4-y)^2) Искомая целевая функция может выглядеть приблизительно так: F(x,y)=min(V1(x,y),V2(x,y),V3(x,y),V4(x,y)) Графически эта зависимость выглядит как гористая поверхность с четырьмя коническими пиками. Она непрерывна но имеет разрывы производных. (Неплохо было-бы избавится от функции min т.к. она не дает нам возможность использовать методы градиентов.) Можно попробовать выбрать и другую форму функции F (гладкие поверхности с четырьмя локальными максимумами). Главное, чтобы искомая точка отразилась как глобальный минимум. Непрерывность и дифференцируемость нам дадут возможность применить более широкий спектр методов ИМХО. Не возражаю против других видов функции F. 2) Считать переборные подходы неверными. Нет гарантии что мы можем перебрать n-е количество координат в реальные сроки в общей постановке данной задачи (без конкретных цифр). Методы сеток считать приемлемыми только в том случае, когда аналитическое решение в принципе невозможно. 3) Использовать типовой набор методов поиска минимума: - аналитические (методы градиентных спусков и т.п); - генетические алгоритмы; - стохастичные алгоритмы; - комбинация вышеперечисленных. Спасибо за внимание. С уважением Mayton. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2005, 12:04 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
mayton 1) Подойти формально к проблеме нахождения минимума функции многих переменных. То есть определить однозначно, как должна выглядеть целевая функция 1 ф-я, в общем случае (т.е. если не заботиться специально о расположении ловушек), будет иметь дикое количество практически равнозначных локальных екстремумов. Генетический алгоритм упадет в первый попавшийся и там успокоится. Если же мутации будут частыми - будет периодически прыгать между ~~равнозначностью. mayton 2) Считать переборные подходы неверными. Нет гарантии что мы можем перебрать n-е количество координат в реальные сроки в общей постановке данной задачи (без конкретных цифр). Методы сеток считать приемлемыми только в том случае, когда аналитическое решение в принципе невозможно. Вы наверное не читали, чё я там плёл про сетку. Перебором там не пахнет. Простые геометрические соображения. (Попробуйте закрашивая квадратики нарисовать круг на милиметровке - поймете аналогию). Просто лома доказывать "сходимость". mayton 3) Использовать типовой набор методов поиска минимума: - аналитические (методы градиентных спусков и т.п); - генетические алгоритмы; - стохастичные алгоритмы; - комбинация вышеперечисленных. мдя-ссс. (про замену изломанной поверхности гладкой, но с воронками я уже думал, но полиномчик слишком многокорневой вырисовывается. аналитически его не разгрызть. См.выше. Есть еще метод посыла советчиков "типовых методов из общих соображений" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2005, 15:34 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
4321 1 ф-я, в общем случае (т.е. если не заботиться специально о расположении ловушек), будет иметь дикое количество практически равнозначных локальных екстремумов. Давайте договоримся о какой функции идет речь. Дизьюнкция множества конических поверхностей (F) которую я предложил в своем первом посте не имеет пологих участков. Гипотетически возможны одинаковые значения минимумов (у краев поверхности). 4321 Генетический алгоритм упадет в первый попавшийся и там успокоится. Если же мутации будут частыми - будет периодически прыгать между ~~равнозначностью. Ошибаетесь, коллега. ГА созданы для поиска минимумов именно таких функций. мдя-ссс. (про замену изломанной поверхности гладкой, но с воронками я уже думал, но полиномчик слишком многокорневой вырисовывается. аналитически его не разгрызть. Давайте грызть вместе.. где ваш полином... А? Подать его к столу! Есть еще метод посыла советчиков "типовых методов из общих соображений" Зря зубоскальничаете. На форум и не такие заходят... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2005, 15:47 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
mayton Давайте договоримся о какой функции идет речь. Дизьюнкция множества конических поверхностей (F) которую я предложил в своем первом посте не имеет пологих участков. Гипотетически возможны одинаковые значения минимумов (у краев поверхности). прикиньте: проколы у вас приблизительно по равномерной сетке. Все локальные минимумы однозначны. mayton Ошибаетесь, коллега. ГА созданы для поиска минимумов именно таких функций. могабыть. слишком мало возился, видимо. Но быстрой сходимости именно к глобальному экстремуму не наблюл. Почему-то - к одному из. (с редкими перескоками). mayton [quot ] Давайте грызть вместе.. где ваш полином... А? возьмите частные производные от Summ(1/r(i,0)) по X(0) и Y(0) (в скобках -индексы). Или от Summ(Ln(r(i,0)). Получите свои полиномы >~1000 степени. mayton Зря зубоскальничаете. На форум и не такие заходят... та ничого ж личнохо ЗЫ. просто идея поиска "на милиметровке с точностью" - раскроить область на "клеточки", примерить, куда влезают заданные "клетчатые трафареты кругов" без проколов (что куда-то влезут с определенностью - даже "доказано"). и в окрестности центров этих областей искать решения стандартным натягиванием окружности на тройку ближайших к центру области проколов. (засада может быть в том случае, если таких троек (при малом смещении точки) будет много - т.е. специальная расстановка проколов почти по окружности - но и [любое] решение тогда будет "хорошим" с хорошей точностью). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2005, 16:35 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Рибяты; По существу сказать ничего не имею (в частности и потому что был занят). Но все прочитал с большим интересом. >Неплохо было-бы избавится от функции min т.к. >она не дает нам возможность использовать методы градиентов. Я как в самый первый раз прочитал эту задачу - первая мысль: Градиент! (все, что умею, Ж) Но увы этот ужасный min(...). Сетка вроде бы ничего. Но ее "квадратность" как-то все очень усложняет. Но разброс в exec times разных решений http://spoj.sphere.pl/ranks/RUNAWAY/ заставляет думать, что имеют право на жизнь разные подходы. Кстати, надвигаются выходные... Ж) А регистрация там фри: http://spoj.sphere.pl/problems/classical/ Испытайте кто-нибудь свой алгоритм/идею на практике (задача #34). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2005, 17:14 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
С интересом наблюдаю этот топик уже второй день. Парни, большинство из Вас просто не понимает условий задачи. Аналитика тут не катит. Ув. тов. 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, то это ничего не даст, читайте внимательнее условие задачи, ибо F(x,y)=max(V1(x,y),V2(x,y),V3(x,y),V4(x,y)) даст Вам точку максимально удалённую от одной из 4х опасных точек, что вовсе не гарантирует, что расстояние до ближайшей опасной точки будет максимальным. Поясню на примере: пусть мы ищем решение не на плоскости ограниченной квадратом, а на отрезке прямой. И пусть x1 и x4 принадлежат концам отрезка, а x2 и x3 лежат внутри отрезка. Тогда решением задачи с max будет либо x1 либо x4, посколько расстояние между ними как раз и есть максимально возможное, и никого не волнует, что при этом один из членов внутри скобок обнуляется. Могу привести подобные примеры и для плоскости, просто их сложнее проиллюстрировать. Вообще говоря, эта задача довольно нетривиальна, ибо в общем случае имеет множество решений, причём корреляция числа решений от числа опасных точек довольно произвольна. Могу привести пару примеров когда при неограниченном увеличении количества опасных точек количество решений растёт также неограниченно. Пока что, на мой взгляд, перспективу имеет только то, что предлагает 4321, всё остальное - детский лепет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2005, 17:43 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
4321(А то ить троек то ~ 10**9, как White Owl , задолбаишься просто перебирать в лоб) Это почему это их вдруг 10**9? Откуда вдруг такое гигантское и жесткое число вылезло? :) mikhail_n Пока что, на мой взгляд, перспективу имеет только то, что предлагает 4321, всё остальное - детский лепет. Ну-ну... Опубликуй свой алгоритм сначала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2005, 18:56 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
начальная школа. подготовительный класс. учимся читать: 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"). Или вы предлагаете выборочную "триангуляцию". Опишите, как и что мы будем натягивать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2005, 10:56 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2005, 11:16 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
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 расчетов. Вот только работающей альтернативы все равно нет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2005, 21:12 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Я не понял... ну че замолчали то? Варианты решения где? Мое с тысячью точек на P4 1.2GHz/W2K/Ansi C/MS VC 2003 справилось за пять минут. А ваше? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2005, 21:25 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
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 и "с достаточно хорошей наперед заданной точностью". А кодировать - и без нас любителей дохера. какгрицца - "пусть трактор пашет - он железный" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 11:05 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
4321 White Owl выборочную сделать будет сложно. Для самой выборки все равно прийдется все тройки перебирать. Так что для 1000 точек прийдется сделать 166,167,000 расчетов. ну хотя бы разрешили себе отбрасывать тройки, содержащие внутри натянутых на них треугольников другие проколы? (т.е. не проверять, что и окружность будет содержать как минимум те же проколы?) То есть ты предлагаешь сначала проверить есть ли проколы внутри треугольника а потом проверять уже полную окружность? Тебе не кажется, что это будет двойная работа? :) 4321Если да - попробуйте придумать "отсечение" скажем вида ~ "взяв первую тройку с некоторыми 2-мя заданными проколами (и перебирая 3-и), для всех точек (из N) заведомо не составляем тройки с теми, которые включают 3-ю точку взятой тройки..." Э? Расшифруй. 4321(с трудом представляю себе алгоритм (не переборный!!!) такого "отсечения", но он, возможно, спасет вас от зависимости ~N**3. Важно, чтобы алгоритм отбрасывал множества так, чтобы их даже не надо было проверять (иначе просто "уцениться" шаг перебора, но шагов останется столько же, и зависимсоть - той же степени). Перебор будет в любом случае. Можно частично сократить перебор если суметь отсортировать элементы множества, а потом выделять "подходящий кусок" из отсортированного массива и уже в нем делать перебор. Но вот как для этой конкретной задачи сделать сортировку я с ходу не вижу. 4321 White OwlВот только работающей альтернативы все равно нет :) Ну, не все же торопятся реализовывать лобовые алгоритмы с хреновой сходимостью. Некоторым достаточно обосновать приемлемость алгоритма со скоростью сходимости ~N и "с достаточно хорошей наперед заданной точностью". А кодировать - и без нас любителей дохера. какгрицца - "пусть трактор пашет - он железный" Лучше признайся, что на поверку твой метод сеток не заработал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 18:43 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
White OwlЛучше признайся, что на поверку твой метод сеток не заработал :) "а ты азартный, Парамоша" Лучше признайся, что в логике "нне очинь". Пока ручками не налажаишь Лома, ж объяснял уже много раз. А на слабО пусть мОлодежь и пОдростки фихней маица. ________________ По поводу "перебирать" - "и ничего больше не дано" - (в твоем алгоритме "перебора всех возможных") я думаю ты все таки упорствуешь и врёшь, как всякий упорствующий. Но есть ли способ устроить некую двумерную "меру", "автоматически перестраиваемую" при смене первой пары точек (и отбрасывающую все точки кроме ограниченного ближнего круга) из режима перебора - не уверен). - Положим, в порядке бреда: взяли 2 направления (от прямой) и 2 "по возможности" ближайшие к паре (искать перебором среди всех не надо, достаточно неким быстрым поиском по упорядоченному набору находить входящие в некий квадрат, усекая размер квадрата вдвое. Пока не останется по ~1 точки. [Квадрат для простоты бреда направлен по осям, поиск отдельно по x, y, чтобы не домысливать методы быстрого поиска на плоскости]. Поскольку полный перебор не делается, а имеет место "быстрый поиск", то перебор всех N точек не нужен. Нужны только 2 ближайшие справа и слева. Любая другая тройка даст окружность, вмещающую ближайший прокол. Как видим, наметки избавиться от 3-го N в зависимости вида N*N*N появляются. Остается полный перебор пар N*N. Скорей всего и тут можно сообразить, как получить несколько ближайших точек в разных секторах, так, что все другие пары с необходимостью дадут окружности накрывающие хотя бы один из этих ближайших проколов. Пока не знаю, можно ли придумать, сколько надо секторов, но наверное немного :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 19:17 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
4321 White OwlЛучше признайся, что на поверку твой метод сеток не заработал :) "а ты азартный, Парамоша" Лучше признайся, что в логике "нне очинь". Пока ручками не налажаишь Лома, ж объяснял уже много раз. А на слабО пусть мОлодежь и пОдростки фихней маица. Немножко азартности есть, не буду отрицать. А вот наезд на логику - не угадал... А если тебе "лома" доказать свою точку зрения... Ну извините.... 4321По поводу "перебирать" - "и ничего больше не дано" - (в твоем алгоритме "перебора всех возможных") я думаю ты все таки упорствуешь и врёшь, как всякий упорствующий. В чем я вру? Ты считаешь что я вру когда говорю что не знаю как отсортировать точки чтобы не делать полного или частичного перебора? :) 4321- Положим, в порядке бреда: взяли 2 направления (от прямой) и 2 "по возможности" ближайшие к паре (искать перебором среди всех не надо, достаточно неким быстрым поиском по упорядоченному набору находить входящие в некий квадрат, усекая размер квадрата вдвое. Пока не останется по ~1 точки. эээээ..... Квадрат говоришь? В общем, я не очень понял твое предложение... Тем более что напрямую по трем точкам его построить не получится. А вот после того как окружность уже найдена..... Ну-ка, попробуем.... ..... .... .... Есть эффект! Итого 1000 точек я сейчас обсчитываю за 3:15. Так, еще бы придумать как сокращать количество троек на которых строятся окружности... 4321Нужны только 2 ближайшие справа и слева. Любая другая тройка даст окружность, вмещающую ближайший прокол. Как видим, наметки избавиться от 3-го N в зависимости вида N*N*N появляются. Не годится. Ближайшие справа и слева не гарантируют что окружность построенная на них будет больше чем окружность построенная на основе более удаленых точек. При этом обе эти окружности могут даже вообще не пересекаться, а только соприкасаться в базовой точке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 20:17 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
2WhiteOwl Относительно Вашего метода беру свои слова обратно. Он работает. Единственное чтобы поменял - на третьем шаге вместо перебора всех возможных троек (N**3) делал бы триангуляцию Деланэ (есть алгоритмы N**2). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 20:37 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
mikhail_nОтносительно Вашего метода беру свои слова обратно. Он работает. Единственное чтобы поменял - на третьем шаге вместо перебора всех возможных троек (N**3) делал бы триангуляцию Деланэ (есть алгоритмы N**2). нууууууу... можно попробовать. Делане здесь действительно подойдет лучше чем лобовая триангуляция. Ладно, ушел думать дальше :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 00:13 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
White Owl А если тебе "лома" доказать свою точку зрения... доказать то я уже все доказал. если кто не видит - его проблеммы. лома кодировать доказанное White Owl Не годится. Ближайшие справа и слева не гарантируют что окружность построенная на них будет больше чем окружность построенная на основе более удаленых точек. При этом обе эти окружности могут даже вообще не пересекаться, а только соприкасаться в базовой точке. Годится. Ближайшие (к центру отрезка) ГАРАНТИРУЮТ, что окружность построенная на них ЕДИНСТВЕННАЯ, не включающая иных проколов справа (на правой), слева (на левой). ( Предлагаю разобраться в лемме самостоятельно (и кто из нас му... ну в общем - "херовый логик"???) ). (но возможно включающая проколы "другосторонние). Т.е. гарантируют, что другие окружности построенные на точках однозначно "попадают в брак". Т.ч. достаточно находить ближайшие к центру отрезка, и если это будет быстрее, чем N*(нечто, порядка среднего времени отсева проколотых), то скорость сходимости у вас подрастет. Если еще и брать не все 2-ки, а удастся доказать, что достаточно скольки-то ближайших (возможно, правда, что в зависимости от распределения), то скорость вашего перебора можно приподнять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 10:22 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
кстати, перл о том, что окружности проходящие через 2 заданные точки (опорную 2-ку, в нашем случае), "могут даже вообще не пересекаться, а только соприкасаться в базовой точке" предлагаю запатентовать и выбить на щите в качестве герба (за отсутствием щита - на лбу, дабы собеседнику было ясно, с кем тот имеет дело ) (короче - усцацца) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 10:31 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Пластину 3000 * 3000 можно представить в виде решетки 3000 * 3000 или 30000 * 30000 . ( бумажный эквивалент - милиметровка ) Узлы решетки с отверстиями помечаются . задаем X=2 цикл по всем отверстиям вокруг каждой узла формируется контур ( например квадрат ) с центром в этом узле и с размерами X *X который захватывает новые точки вокруг узла при захвате нового узла решетки в него ствится расстояние до захватившего его отверстия и номер узла захватчика новый узел захватывается только если он свободен или если новое расстояние меньше записанного в узел размеры контура X увеличиваем +2 в тех направлениях где есть свободные узлы решетки next условия выхода из цикла отсутсвие свободных точек на решетке , их можно считать в цикле точность расчетов зависит от шага решетки оперативной памяти для массивов должно хватить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 12:31 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
White Owl mikhail_n- на третьем шаге вместо перебора всех возможных троек (N**3) делал бы триангуляцию Деланэ (есть алгоритмы N**2). нууууууу... можно попробовать. Делоне здесь действительно подойдет лучше чем лобовая триангуляция. Ладно, ушел думать дальше :) Подумал... Не годится. Для триангуляции Делоне требуется делать перебор всех оставшихся точек, и проверять расстояние до них. Плюс хранить еще список ребер а не только список точек. В итоге получаем N^2 расчетных блоков по Tt секунд каждый для триангуляции. А потом еще N расчетных блоков по Tc секунд каждый на расчет описаных окуржностей для каждого найденого треугольника. Причем Tt как минимум в N раз больше чем Tc. А лобовой перебор треугольников это "всего-лишь" N^3*Tc :) Вот если бы у нас с самого начала была задана сетка ребер триангуляции - тогда да, получилось бы намного быстрее. Но нам, к сожалению, приходится строить ее самим. В общем, интуиция меня не подвела с самого начала - триангуляция это ненужное в данном случае усложнение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 18:53 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
ValerПластину 3000 * 3000 можно представить в виде решетки 3000 * 3000 или 30000 * 30000 . ( бумажный эквивалент - милиметровка ) ..... А если есть три точки с совпадающими координатами? :) К тому же точность этого метода очень уж низкая. А вообще, это все сильно смахивает на построение диаграммы Вороного методом перебора :) Есть более простые и точные методы рисования той же картинки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 19:03 |
|
||
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
White Owl А если есть три точки с совпадающими координатами? :) К тому же точность этого метода очень уж низкая. А вообще, это все сильно смахивает на построение диаграммы Вороного методом перебора :) Есть более простые и точные методы рисования той же картинки. 1 три точки с овпадающими координатами - это одна точка 2 точность запрошена автором 0.1 3 методы в студию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2005, 09:59 |
|
||
|
|

start [/forum/topic.php?all=1&fid=16&tid=1347687]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
131ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
118ms |
get tp. blocked users: |
1ms |
| others: | 277ms |
| total: | 575ms |

| 0 / 0 |
