Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Нужен алгоритм...

5.0K
08 января 2005 года
gnome
20 / / 08.01.2005
Всем привет!
Вот такая вот проблемка...
Есть некоторая прямоугольная область MxN и много прямоугольных "кусков" размером меньше этой области. Задача в том, чтобы как можно плотнее заполнить эту область, т.е. нужно по очереди добавлять каждую часть по определенным координатам, причем так, чтобы в конце оставшаяся неиспользуемая площадь была как можно меньше.
Где-то слышал об алгоритме, который решает такие задачи, но уже не помню.
Объясните пожалуйста в общих чертах принцип, или название алгоритма подскажите, чтоб я сам мог в инете поискать...

Заранее спасибо!
301
08 января 2005 года
lord Kelvin
897 / / 08.11.2004
Спасибо, пока, оставь себе.
Алгоритм...
В левый верхний угол помещаешь первый прямоугольник, за ним (справа) второй, <...> так пока не дойдешь до края. переходишь на новую строку. У левого края максимально высоко укладываешь следующий пр-ник (не поместившийся в первой строке) Так кидаешь прямоугольники пока они не коньчатся или не кончится место. Запоминаешь размер незаполненной области.
Перебираешь все варианты (их N!) и в конце концов находишь лучшй.

P.S. Все это работать будет долго, некрасиво, но будет.
292
12 января 2005 года
Matush
726 / / 14.01.2004
Полный перебор конечно отпадает, я вообще считаю что полный перебор целесообразно использовать только при количестве елементов не более 10.
Я бы решал эту задачу так:
Укладываю прямоугольники начиная с самого большого (тут надо еще определить что такое самый большой - или большой по площади или габариты). Потом доставляю деталь в ту сторону которая короче (что бы занятая область вырастала равномерно в оба направления). Вот походу и все.
Этот алгоритм не даст 100% максимального заполнения, но будет близок к этому.
Для модернизации надо более разумно продумать установку следующего прямоугольника (проверять помещается ли он в уже получившиеся пробелы и т.д.)

Это пока все что взбрело в голову.
Кстати это задача олимпиадная, где-то обласного уровня, я ее еще в лицее решал, причем таким методом.
Так что можеш поискать на сайтах с олимпиадными задачами, может исходник есть. Но я бы советовал написать самому - это в сотни раз полезнее.
259
12 января 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by gnome
Всем привет!
Вот такая вот проблемка...
Есть некоторая прямоугольная область MxN и много прямоугольных "кусков" размером меньше этой области. Задача в том, чтобы как можно плотнее заполнить эту область, т.е. нужно по очереди добавлять каждую часть по определенным координатам, причем так, чтобы в конце оставшаяся неиспользуемая площадь была как можно меньше.
Где-то слышал об алгоритме, который решает такие задачи, но уже не помню.
Объясните пожалуйста в общих чертах принцип, или название алгоритма подскажите, чтоб я сам мог в инете поискать...

Заранее спасибо!


Почитай книгу Морозов А.Д. "Введение в теорию фракталов"

6.3K
12 января 2005 года
mefisto
26 / / 13.04.2004
Цитата:
Originally posted by Matush
Полный перебор конечно отпадает, я вообще считаю что полный перебор целесообразно использовать только при количестве елементов не более 10.
Я бы решал эту задачу так:
Укладываю прямоугольники начиная с самого большого (тут надо еще определить что такое самый большой - или большой по площади или габариты). Потом доставляю деталь в ту сторону которая короче (что бы занятая область вырастала равномерно в оба направления). Вот походу и все.
Этот алгоритм не даст 100% максимального заполнения, но будет близок к этому.
Для модернизации надо более разумно продумать установку следующего прямоугольника (проверять помещается ли он в уже получившиеся пробелы и т.д.)



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

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог