powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поиск свободной нычки.
25 сообщений из 58, страница 2 из 3
Поиск свободной нычки.
    #36889843
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_some_Ой!
(Тогда остается Монте-Карло)
+1 Тоже неплохой метод когда нужно асимтотически оценить что-нибудь и ответ выдать мгновенно в первые-же секунды работы алгоритма. В параллель с работающим NP-сложныйм методом.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36890172
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_some_Яростный Меч,

Ой!
(Тогда остается Монте-Карло)

Попробуйте монте-карлой сложить два квадрата 100x100 впихнуть в одну коробку 100x200.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36890281
_some_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ru,

Оно, конечно же, не запрещено. Только тогда лучше метод Лас-Вегаса.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36891785
Volochkova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прямоугольники строго идут параллельно осям координат.
Никаких там под углом и т.д.

Блин, неужели так все сложно...
Размеры прямоугольников всегда одинаковые.
Допустимо касание прямоугольников.

хоть в цикле идти со смещением и перебором искать область.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36891876
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VolochkovaБлин, неужели так все сложно...А чем вам вариант от iv_an_ru не нравится?
Мне этот вариант наиболее симпатичен.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36892010
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Вариант iv_an_ru из бюджетных - наиболее оптимальный. Другие варианты будут скорее всего за деньги.

Волочкова, вам всё понятно?
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36892124
junior  idiot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача решается алгоритмом из семейства line-sweep.
Наброски решения (только в несколько иной формулировке) -- здесь (секция "Area of the union of rectangles").
Вкратце: она элементарно сводится к поиску множества точек прямоугольника (см. первый пост iv_an_ru), не принадлежащих объединению множества других прямоугольников; левые и правые рёбра этих прямоугольников сортируются по возрастанию, после чего некая воображаемая линия "сканирует" их слева на право, между любыми двумя соседними линиями легко строится множество "свободных" точек, не принадлежащих ни одному прямоугольнику.
Думаю, это оптимальный алгоритм.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36892138
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
junior idiotлевые и правые рёбра этих прямоугольников сортируются по возрастаниюПо возрастанию чего? длины? - так они все одинаковой длины.
А вообще это не алгоритм, а поток сознания.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36892148
junior  idiot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftПо возрастанию чего? длины? - так они все одинаковой длины.
А вообще это не алгоритм, а поток сознания.
По возрастанию абсциссы, очевидно (написал я, пожалуй, криво, но если б Вы прошли по указанной ссылке, то сразу поняли бы о чём речь).
Если Вы не знаете такой техники, то лучше отправляйтесь штудировать педивикию хотя бы %) техника в ряде задач очень полезна, например -- в данной.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36892151
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
junior idiotЗадача решается алгоритмом из семейства line-sweep.
Наброски решения (только в несколько иной формулировке) -- здесь (секция "Area of the union of rectangles").
Вкратце: она элементарно сводится к поиску множества точек прямоугольника (см. первый пост iv_an_ru), не принадлежащих объединению множества других прямоугольников; левые и правые рёбра этих прямоугольников сортируются по возрастанию, после чего некая воображаемая линия "сканирует" их слева на право, между любыми двумя соседними линиями легко строится множество "свободных" точек, не принадлежащих ни одному прямоугольнику.
Думаю, это оптимальный алгоритм.
Алгоритмы сканирования пикселей оптимальны только для сложных или очень-очень многочисленных фигур и --- сюрприз --- растра. У нас 6 очень простых фигур, и нигде не сказано, что у них координаты одновременно небольшие и целочисленные.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36892163
junior  idiot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iv_an_ruАлгоритмы сканирования пикселей оптимальны только для сложных или очень-очень многочисленных фигур и --- сюрприз --- растра. У нас 6 очень простых фигур, и нигде не сказано, что у них координаты одновременно небольшие и целочисленные.
Помилуйте, при чём здесь пиксели? Указанный алгоритм работает с непрерывными координатами.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36892172
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruнигде не сказано, что у них координаты одновременно небольшие и целочисленные.А для вашего алгоритма это и не требуется. Достаточно ввести понятия "ширина столбца" и "высота строки".
И кстати, матрица получится 11х11, а не 13х13.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36892202
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
junior idiotiv_an_ruАлгоритмы сканирования пикселей оптимальны только для сложных или очень-очень многочисленных фигур и --- сюрприз --- растра. У нас 6 очень простых фигур, и нигде не сказано, что у них координаты одновременно небольшие и целочисленные.
Помилуйте, при чём здесь пиксели? Указанный алгоритм работает с непрерывными координатами.
Разумеется работает. Пока в вашей задаче вы ответ вычисляете, а подбираете вариант. Иначи возникают проблемы с эффективным хранением промежуточных данных.

Можно, конечно, скрестить ужа с ежом --- сначала модифицировать исходные прямоугольники "голодной козой", а потом именно таким сканированием искать свободное место. Это будет хорошо работать в т.ч. для фигур сложной формы, а не только для параллельных осям "ящиков". Но это точно не быстрее обегания матрицы 11x11.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36892230
junior  idiot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iv_an_ruМожно, конечно, скрестить ужа с ежом --- сначала модифицировать исходные прямоугольники "голодной козой", а потом именно таким сканированием искать свободное место. Это будет хорошо работать в т.ч. для фигур сложной формы, а не только для параллельных осям "ящиков". Но это точно не быстрее обегания матрицы 11x11.
Вы не поняли алгоритма. Ну неужели так сложно пройти по указанным ссылкам?
Для сложных фигур он вообще работать не будет, равно как и в случае поворота прямоугольников на угол, не кратный pi/2. Это не "сканирование" в обычном смысле, скачки между ближайшими вертикальными линиями (будь то левое или правое ребро какого-либо прямоугольника) происходят "мгновенно", за одну итерацию, что логично -- между ними множество "свободных" точек на вертикальной воображаемой линии остаётся неизменным, потому и никакой растр не нужен.
Сложность алгоритма при правильном выборе структур данных -- O(N*logN).
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36892365
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
junior idiotВы не поняли алгоритма.
Это вы не поняли ещё не поняли свой будущий алгоритма до конца.
junior idiotНу неужели так сложно пройти по указанным ссылкам?
В этом пока что нет надобности, потому что у меня ещё не развился склероз.
junior idiotДля сложных фигур он вообще работать не будет, равно как и в случае поворота прямоугольников на угол, не кратный pi/2.
Сканирование как раз для любых многоугольников работать будет, а при извращении --- и для NURBS-ов. Но только если сначала "голодной козой" заменить исходные фигуры на их "запрещённые окрестности", а вставляемый прямоугольник --- на его центр из одной точки. Без этой замены задача очень противная, потому что поиск одной точки --- это одно, а отслеживание всех событий, происходящих в каждой движущейся прямоугольной "тени" каждого свободного в данный момент отрезка --- песнь лебяжья.[/quot]
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36892407
junior  idiot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iv_an_ru, а вам не кажется нелепой ситуация, в которой вы меня уверяете в том, что я имею ввиду именно алгоритм сканирования, хотя я говорю про совершенно другой алгоритм?
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36892608
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
junior idiotiv_an_ru, а вам не кажется нелепой ситуация, в которой вы меня уверяете в том, что я имею ввиду именно алгоритм сканирования, хотя я говорю про совершенно другой алгоритм?
Cтранно, ссылку даёте как раз на алгоритм сканирования по возрастающей координате с предварительной сортировкой событий по этой координате, сами пытаетесь высказать то же самое.
Если вам кажется, что без "голодной козы" этот метод будет удобен --- попробуйте не абстрактную идею высказать, а продемонстрировать код.
Чего проще, казалось бы --- взяли прямоугольники, составили общий сортированный список координат их левых и правых сторон, и бодро пошли циклом прям именно по этому списку, не пытаясь "подглядывать" в исходные данные для X отличных от значения текущего элемента списка.
Ну так заранее огорчу --- там полезут вредные случаи, для которых надо будет городить как раз "память" для данных из уже пройденных координат, именно с указанием точного значения X, когда событие происходило. Или запоминать, какой именно номер прямоугольника связан с каким событием, и лазить в "двумерные" данные по ранее пройденным объектам.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36892817
junior  idiot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iv_an_ruCтранно, ссылку даёте как раз на алгоритм сканирования по возрастающей координате с предварительной сортировкой событий по этой координате, сами пытаетесь высказать то же самое.
Ага-ага. Теперь перечитайте свои пассажи про "произвольные фигуры". Про сортировку каких координат вы там писали? %)))

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

Как видно, задача сводится к поиску ГМТ внутри некоего обрамляющего прямоугольника (в общем случае -- плоскости), не принадлежащих ни одному заданному прямоугольнику (то есть, не принадлежащих их объединению, поиск которого -- классическая задачка для sweep line).

iv_an_ru попробуйте не абстрактную идею высказать, а продемонстрировать код.
Это не "абстрактная идея", а вполне конкретный алгоритм. Достаточно широко известный, чтобы легко гуглиться. Вот, например, одна из первых ссылок в гугле . С той лишь минимальной разницей, что между двумя событиями в данной задаче нас интересует не длина вертикальных отрезков, проходящих через хотя бы один прямоугольник, а множество вертикальных отрезков, не проходящих ни через один прямоугольник, что позволяет использовать точь-в-точь такой же подход.

iv_an_ruНу так заранее огорчу --- там полезут вредные случаи, для которых надо будет городить как раз "память" для данных из уже пройденных координат, именно с указанием точного значения X, когда событие происходило. Или запоминать, какой именно номер прямоугольника связан с каким событием, и лазить в "двумерные" данные по ранее пройденным объектам.
Пф, ну конечно надо "запоминать" ребро какого прямоугольника проходится линией; и более того -- запоминать какое это именно ребро, левое или правое, чтобы знать, включать или исключать из активного множества прямоугольник, и какой именно. А что в этом ужасного? Вас пугает дополнительная память на индекс прямоугольника и флаг левое/правое в структуре события?
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36892920
rt123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Детишки кромсают общий случай сабжевой задачи одной левой: http://www.spoj.pl/problems/DECORATE/
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36892922
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
junior idiotПереход от исходных прямоугольников и впихиваемого прямоугольника к новым "обрамлённым" прямоугольникам и впихиваемой точки -- очевиден настолько, что на фоне общего алгоритма совершенно не требует внимания
Всё, вопрос снят. Раз это сделано, то дальше вопроов нет.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36893784
Volochkova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм.... дело ясное что дело темное.
Получить матрицу дело не сложное, впрочем чем то напоминает тему, когда в виде нажимаем кнопу ( ярлык на рабочий стол" винда же находит первое свободное место и кидает туда ярлык..

p.s. размеры всех мелких прямоугольников одинаковые...
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36896141
rt123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(изучил первые 5 ответов... как грится, однако "мдя...")

VolochkovaХм.... дело ясное что дело темное. ...

Чё, никак? Вот смотри:

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

После 5-го шага у нас будет массив всех возможных нычек. Идем по этому массиву нычек и смотрим:
есть ли в нем нычка, в которую можно целиком поместить 6-ю паркетину?
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36896215
Volochkova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rt123(изучил первые 5 ответов... как грится, однако "мдя...")

VolochkovaХм.... дело ясное что дело темное. ...

Чё, никак? Вот смотри:

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

После 5-го шага у нас будет массив всех возможных нычек. Идем по этому массиву нычек и смотрим:
есть ли в нем нычка, в которую можно целиком поместить 6-ю паркетину?

Вот это и напрягает. После 10 нычки из будет уже много... устану делить и выделять..
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36896232
junior  idiot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rt123, решение O(N^2) было предложено почти сразу, тут больше интересно решить за O(N*logN).
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36896329
rt123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> После 10 нычки из будет уже много... устану делить и выделять..

Я понял буквально, что будет только 5 штук
...
Рейтинг: 0 / 0
25 сообщений из 58, страница 2 из 3
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поиск свободной нычки.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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