Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Опасные дырки в прямоугольнике
|
|||
|---|---|---|---|
|
#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?fid=16&msg=33058336&tid=1347687]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
133ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 256ms |
| total: | 493ms |

| 0 / 0 |
