Предположим, что у меня есть n число одинаковых по размеру и равномерно развернутых квадратов в ограниченной области в 2D системе координат (с плавающей запятой). Ящики не должны перекрываться. Теперь я хочу найти свободное место для еще одной коробки. Мне нужно несколько советов по алгоритму для решения этой проблемы. Есть идеи?Графический алгоритм для подгонки в квадрат между набором квадратов
ответ
Для этого должен быть алгоритм линии сканирования. Вы говорите, что коробки одинаково повернуты, поэтому вы должны иметь возможность повернуть систему координат, если необходимо, чтобы края ящиков были параллельны координатам x и y. Затем я сортировал ящики в порядке координат y.
Теперь попробуйте поместить коробку в самое нижнее возможное положение. Прочтите из отсортированных ящиков, чтобы найти все ящики, достаточно низкие, чтобы помешать вашему размещению и создать упорядоченный набор (например, красно-черное дерево или аналогичный контейнерный класс) этих полей. Теперь просканируйте этот набор ящиков и посмотрите, есть ли достаточно большой промежуток, чтобы разместить коробку. Если нет, используйте исходный отсортированный список ящиков, чтобы найти и удалить нижний ящик, так что вы можете рассмотреть возможность размещения нового поля чуть выше этого нижнего поля, чтобы он не мог помешать этому. Добавьте больше ящиков из отсортированного списка, чтобы покрыть все ящики, достаточно высокие, чтобы помешать этой новой возможной высоте окна. Следите за тем, где вы удалили ящики из списка, и проверьте там, чтобы открыть, открыт ли пробел, достаточный для хранения коробки. Если нет, повторите упражнение, пока не найдете пробел или пробег в верхней части возможной области.
Это выглядит как стоимость N log N для начальной сортировки, а затем стоимость не более логарифма N на каждый ящик для вставки и удаления ячеек из упорядоченного набора. Проверка пробелов не стоит дороже, потому что вы проверяете только пробел в месте, где вы только что удалили ящик. Поэтому я думаю, что общая стоимость составляет N log N.
- 1. Иминометный алгоритм подгонки?
- 2. алгоритм для объединения данных для линейной подгонки?
- 3. параметр оценки подгонки кривой - обратный квадрат закона
- 4. Алгоритм минимизации наименьших квадратов при выполнении распределения?
- 5. Простой алгоритм для подгонки плитки (конкретные размеры)
- 6. Графический алгоритм перемещения ссылок
- 7. Графический алгоритм для многих узлов
- 8. Графический алгоритм для сопоставления узлов
- 9. Алгоритм «Волшебный квадрат»
- 10. Обратные моменты нецентрального распределения квадратов Ши-квадрат
- 11. Алмазный квадрат алгоритм
- 12. алгоритм для вычисления разности между набором прямоугольников и один прямоугольник
- 13. сделать квадрат из 4 отдельных квадратов
- 14. Алгоритм алгоритма магии квадратных квадратов
- 15. Столбец для подгонки (css)
- 16. Разница между алгоритмами подгонки в scipy
- 17. Графический алгоритм Unions, intersect, subtract
- 18. наименьших квадратов алгоритм не работает
- 19. Графический алгоритм рисования
- 20. полиномиальной Constrained наименьших квадратов подгонки кривой с MATLAB
- 21. Алгоритм для подгонки многоугольников к рисованным пикселям в холсте?
- 22. Графический алгоритм для поиска кратчайшего маршрута транспортировки заказа
- 23. квадратов рисования в пределах квадратов
- 24. Что такое быстрый алгоритм преобразования матрицы квадратов в треугольную полосу?
- 25. Алгоритм вычисления площади области в сетке квадратов
- 26. Оптимизация подгонки кривой python GUI
- 27. Алгоритм изменения/подгонки для каменной кладки, такой как отображение фотографий
- 28. Сумма квадратов - np.inner против возведения в квадрат, а затем суммированием
- 29. Алгоритм для нахождения числа квадратов в данной окружности
- 30. Алгоритм, необходимый для максимизации числа квадратов в прямоугольнике с ограничениями
Вы хотите * любое * свободное квадратное пространство или свободное пространство, которое будет держать самый большой квадрат? – Geobits
@Geobits Дополнительный квадрат, чтобы он поместился, имеет тот же размер, что и все остальные квадраты. В конце концов, я хочу, чтобы ближайшее свободное пространство от данной точки – user1169629