powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поиск свободной нычки.
25 сообщений из 58, страница 1 из 3
Поиск свободной нычки.
    #36888374
Volochkova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дано прямоугольник (x1,y1,x2,y2) Rect_Big
Есть более мелкий прямоугольник ( заготовка) Rect_x
Известен только его размер. w1, h1.
в произвольном порядке накидали 5 элементов Rect_x в Rect_Big.
Надо положить шестой на свободное место ( не закрывая другие 5 Rect_x) в Rect_Big.
Как вычислить эту свободную нычку? Если ее нет, то не добавлять.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36888582
Фотография aleksandr-pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если взять по простому то задачку можно попробовать решить так:

1 - берем 2 любых из 5 прямоугольников.
2 - берем крайние координаты, скажем если первый выше второго то надо взять левый нижний угол у первого и верхний правый в у второго если разница между координатами X будет больше ширины вписываемого и разница между Y больше высоту вписываемого то ляпай в любо место между двумя прямоугольниками.
3 - и так далее перебираем расстояния между границами прямоугольников, не забываю проверять что бы другие прямоугольники уже не находились в этих границах.
4 - так же необходимо проверять расстояние от этих прямоугольников до границ "окна"
примерно как то так - если посчитать все расстояния можно сделать вывод о том куда ляпнуть свободный прямоугольник
www.aleksandr-pro.ru/images/primerno.gif
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36888589
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Volochkova,

стороны прямоугольников всегда параллельны осям координат?
Rect_x может поворачиваться?
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36888594
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Volochkova,

множество возможных значений координат дискретно или непрерывно?
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36888597
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Volochkovaв произвольном порядке накидали 5 элементов Rect_x в Rect_Big.При этом они могли перекрыться?
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36888698
green_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По-моему, это задача раскроя.
Решается методами линейного программирования.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36888886
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
green_2005По-моему, это задача раскроя.
Решается методами линейного программирования.Можно, конечно, и линейным, но как-то из пушки по воробьям.
Я бы решал "теорией голодной козы", построив геометрическое место точек, где может находиться центр нового прямоугольника. То есть я бы внешний прямоугольник уменьшил на w1 по ширине и h1 по высоте (получил бы (x1+0.5*w1, y1+0.5*h1, x2-0.5*w1, y2-0.5*h1), в него накидал аналогично увеличенных мелких прямоугольников, где внешний прямоугольник оказался не закрыт, там можно разместить центр нового прямоугольника. Если новый можно крутить, то повторить процедуру, поменяв w1 и h1 местами.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36888891
_some_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Volochkova,

Предлагаю продолжить методом Монте-Карло:
Так же произвольно, как и первые пять, кидаем шестой прямоугольник. Если он лег удачно (без перекрытий) - так и оставляем. Если нет, повторяем еще раз до победного конца, но не более заранее оговоренного числа раз.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36888916
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_some_Предлагаю продолжить методом Монте-Карло:
Так же произвольно, как и первые пять, кидаем шестой прямоугольник. Если он лег удачно (без перекрытий) - так и оставляем. Если нет, повторяем еще раз до победного конца, но не более заранее оговоренного числа раз.Предлагаю так суда грузить. Кидаем трактор в трюм. Если он лег удачно (без перекрытий) - так и оставляем. Если нет, повторяем еще раз до победного конца, но не более заранее оговоренного числа раз.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36888952
_some_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ru Предлагаю так суда грузить. Кидаем трактор в трюм. Если он лег удачно (без перекрытий) - так и оставляем. Если нет, повторяем еще раз до победного конца, но не более заранее оговоренного числа раз.

А оно разве грузится как-то по-другому? Я недавно мебель перевозил. Впечатления еще свежие.

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

Если Монте-Карло не подходит, то можно эвристики предложить.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36889003
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_some_iv_an_ru Предлагаю так суда грузить. Кидаем трактор в трюм. Если он лег удачно (без перекрытий) - так и оставляем. Если нет, повторяем еще раз до победного конца, но не более заранее оговоренного числа раз.А оно разве грузится как-то по-другому?Академик Крылов в своих мемуарах подробно описывает загрузку некоторых сухогрузов как своё отдельное серьёзное достижение. А вообще почти всегода стивидором рулит дяденька с профильным в/о и хорошим стажем.[/quot]
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36889005
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Навскидку можно так (насчет оптимальности большие сомнения):

1) Создаем некую древовидную структуру-индекс, для быстрого нахождения прямоугольника Rect_x по точке внутри него (как именно - надо уточнять). Т.е. имеется точка, надо выяснить, в каком она прямоугольнике. Хотя если количество их так и останется 5, то этот пункт необязателен.

2) Устанавливаем X=x1, Y = y1.
3) Пока Х <= x2-w1:
4) Пока Y <= y2-h1:
Проверяем возможность разместить прямоугольник от точки (X, Y) (а именно попадание красных точек в имеющиеся прямоугольники). Если получилось - усё, приехали. Иначе запоминаем наименьший правый край из помешавших прямоугольников (R), их наибольший bottom (B) и делаем Y = B, возврат к п. 4.
5) Из всех R берем наименьший (r), делаем X = r, возврат к п. 3.

Тут, конечно, неизбежны повторные проверки, но гарантируется конечное число ходов.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36889020
_some_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У нас пошел разговор в стиле: "А если вы бочку друг на друга надумаете катить, то это уже контейнерные перевозки, это вам в "Трансагенство"..."

Я только руководил разгрузкой одинаковых вагонов с одинаковыми грузами (бумага). Так вот, все вагоны были загружены как-то по особому. Число единиц груза было всегда разным.

В журнале "Текстильная промышленность" когда-то была рассмотрена оптимизация распроя полотна на прямоугольные заготовки. Там очень подробно эвристики были рассмотрены.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36889039
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_some_,

Раскрой одно время был вообще модной темой, (а распил ещё моднее)
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36889043
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Volochkova...
При каждом добавлении нового нужно доказывать формальную возможность положить шестой. Тоесть для данного случая к примеру, уже после 1 швыряния куска прямоугольника шестой положить никак невозможно.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36889066
_some_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ru,

Главный вывод из той статьи: Задача раскроя не имеет внятного аналитического решения. Поэтому и возились с эвристиками.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36889085
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечНавскидку можно так (насчет оптимальности большие сомнения):
У меня тоже. Можно быстрее.
1. Мысленно растягиваем отрезки-стороны маленьких прямоугольников так, чтобы они упёрлись в края экрана. То есть каждый прямоугольник превращается в эдакую '#'.
2. Теперь весь большой прямоугольник разграфлён на клеточки разного размера. Если координаты нигде не повторяются, то клеточек будет 13*13=169, если повторяются то меньше. Вполне мелкая матрица.
3. Делаем целочисленную матрицу такого размера, заливаем нулями, потом "рисуем" в ней уже имеющиеся прямоугольники, забивая целое число клеточек номером прямоугольника.
4. Теперь не проблема пробежаться по матрице, разыскивая прямоугольник нулей подходящих габаритов.

Этот алгоритм юзался до Win2000 включительно в оконной системе, потом наши Нские люди предложили более быстрый, который я тут повешусь расписывать.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36889091
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_some_Главный вывод из той статьи: Задача раскроя не имеет внятного аналитического решения. Поэтому и возились с эвристиками.Ясен пень, раз одномерные задачи о ранцах и то сплошь NP-противные, двумерный аналог тем более будет NP.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36889104
_some_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я предлагаю следующий вариант:
(Предполагается, что все малые прямоугольники выкладываются параллельно сторонам большого и направление больших и малых сторон у всех совпадает)

Берем очередной уже выложенный прямоугольник. Пытаемся выложить новый прямоугольник, размещая его в притык к стороне и к углу. Всего 8 возможных вариантов.
Если есть перекрытие с другими прямоугольниками - переходим к следующему варианту. Иначе - удалось разместить.

Перебираем все исходные пять прямоугольников. Если разместить не удалось - нычки нет.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36889110
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю, нейросеть решит эту задачу быстре чем NP но придётся пожертвовать аналитической точностью.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36889120
_some_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_some_,

Прямоугольники пытаемся размещать как красные на рисунке.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36889122
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_some_Пытаемся выложить новый прямоугольник, размещая его в притык к стороне и к углу. Всего 8 возможных вариантов.
Не совсем понял, но мне кажется, это отклонение от ТЗ.
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36889233
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_some_,

Ваш вариант не сможет впихнуть 6-й (зеленый) прямоугольник
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36889376
_some_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный Меч,

Ой!
(Тогда остается Монте-Карло)
...
Рейтинг: 0 / 0
Поиск свободной нычки.
    #36889417
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
щас прикинул по своему варианту - самый худший случай примерно N^2 поисков прямоугольников по точке. Не так плохо (по крайней мере, не NP).
+ память под структуру для быстрого поиска, но это копейки для современных компов.
...
Рейтинг: 0 / 0
25 сообщений из 58, страница 1 из 3
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поиск свободной нычки.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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