|
|
|
Алгоритм/ Оптимизация
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! У меня стоит задача составить алгоритм, решающий описанные ниже задачи. К сожалению, я очень мало об этом знаю и пока в самом начале пути и подумала может знающие люди смогут подсказать направление. СПАСИБО ОГРОМНОЕ заранее! Итак задача: Получить наибольшее непрерывное количество свободного пространства в ряду на полках с минимальным количетсвом шагов (перестановок книг на полке), показать вариант (как выглядит полка, какие книги где) с мин количеством шагов, с кол шагов min-1, min-2 и т.д. Данные: Шкаф с полками и книгами на разных рядах. Надо максимизировать количество свободного пространства в РЯДУ. Есть несколько типов книг: роман, детектив и приключения. Роман нельзя перемещать, они должны остаться на своих местах. Все остальные можно свободно перемещать. Расстояние на полках и размер книг измеряем в миллиметрах. Опция: отдавать предпочтение перемещению книг одного и того же автора, что бы они стояли рядом... Вот так вот... Спасибо за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2011, 23:34 |
|
||
|
Алгоритм/ Оптимизация
|
|||
|---|---|---|---|
|
#18+
это обыкновенная динамика кури любые задачи с USACO, например а ващет это не совсем просто шоб вот так сесть и помочь В чем долна заключаться помощь? Накодить или как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2011, 04:03 |
|
||
|
Алгоритм/ Оптимизация
|
|||
|---|---|---|---|
|
#18+
разбей задачу (прежде всего) на кусочки никогда не решай что-то вот в стиле "вот а я" разбей и думай : вот как ты будешь делать именно этот этап? Не держи в голове всю конструкцию Никто в мире никогда не решал задачи этим подходом, - вот всё и сразу Всё делается постепеннно Есть конечно нюансы, можно и сразу, но тебе главное понять: жизнь разбивается на маленькие кусочки, слайсы, она рубится как ветчина Если не сможешь - это ну что, что тут говорить Но всегда надо решать маленькую проблему, а не всю, Умение разбить задачу на маленькие проблемы - это 90% успеха ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2011, 04:12 |
|
||
|
Алгоритм/ Оптимизация
|
|||
|---|---|---|---|
|
#18+
web сервер поднимите, если уж не хочеться exe студентам показывать, хотя то что говорят выше с БД, тоже правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2011, 05:50 |
|
||
|
Алгоритм/ Оптимизация
|
|||
|---|---|---|---|
|
#18+
Говоря "очень мало об этом знаю" я именно это и имею ввиду :-) Что значит "обыкновенная динамика", "Кури задачи", "БД"? Все серьезно. Мне нужно написать алгоритм, т.е. логику, словами, не код. (И конечно полки-книжки это метафора, но очень точно определяет суть проблемы). Мне нужно понять насколько это детально "алгоритм", каков подход, примеры шагов или все шаги? Я не знаю, если честно, насколько это трудоемко потому что никогда ничем подобным мне не приходилось заниматься... Почитав немного форум, мне показалось возможным спросить людей сведущих и профессионалов в этой области/ Спасибо!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2011, 09:50 |
|
||
|
Алгоритм/ Оптимизация
|
|||
|---|---|---|---|
|
#18+
On 10.05.2011 10:50, Cyberholic wrote: > Что значит "обыкновенная динамика" Скорее всего, ничего. Это похоже вам дали в универе пример NP полной задачи. Решается перебором. Или оптимизированным перебором (aka жадные алгоритмы) но тебе видимо надо самому придумать этот алгоритм, поэтому ничего кроме твоей головы тебе не поможет. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2011, 10:14 |
|
||
|
Алгоритм/ Оптимизация
|
|||
|---|---|---|---|
|
#18+
Ох был бы университет это как все было бы здорово :-) Но нет, это вполне реальная задача которая решит (автоматизирует, упростит) актуальную проблему в бизнесе. Просто пример с книгам очень очень уж подходит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2011, 22:44 |
|
||
|
Алгоритм/ Оптимизация
|
|||
|---|---|---|---|
|
#18+
Ладно, примем вашу объектную модель... Вопрос: книги перемещаются в пределах одной полки? или между полками тоже можно? Если можно между полками - как книги одного автора должны группироваться на разных полках? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2011, 23:45 |
|
||
|
Алгоритм/ Оптимизация
|
|||
|---|---|---|---|
|
#18+
СПАСИБО ОГРОМНОЕ! Можно между полками в одном и том же ряду. Главная цель -- максимум непрерывного свободного места в миллиметрах/ за минимум шагов. При этом предпочтительно попробовать перемещать книги так, что бы книги одного и того же автора стояли рядом, если тольео конечно при этом достигается услове максимального свободного места за минимум перемещений... Не знаю хорошо ли объясняю данное условие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2011, 23:03 |
|
||
|
Алгоритм/ Оптимизация
|
|||
|---|---|---|---|
|
#18+
Бр-р-р... Уже непонятки. Чем РЯД отличается от ПОЛКИ? Или уж за это время можно было и нарисовать, как выглядит модель. И рисунок с парой итераций прилепить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2011, 23:12 |
|
||
|
Алгоритм/ Оптимизация
|
|||
|---|---|---|---|
|
#18+
Готово! Дайте знать, если все равно плохо объясняю, попробую тогда еще раз нарисовать и по другому объяснить. итак, ряд состоит из нескольких полок (трех например на рисунке), книги можно перемещать по всему ряду, по всем трем полкам что бы достичь цели. Роман перемещать нельзя, все остальное можно, нужно максимум возможного непрерывного пространства в милиметрах. Очевидно в данном примере освободится целая полка посередине. Книиги разной толщины, все измеряется в милиметрах, расстояние между книгами, толщина книги... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2011, 00:08 |
|
||
|
Алгоритм/ Оптимизация
|
|||
|---|---|---|---|
|
#18+
Как-то вы не так опИсываете область... мутновато Из вашего примера "ПОЛКА" - это один "кубик" шкафа, а "РЯД" - горизонтальный набор ПОЛОК. А "книги" можно перемещать только по РЯДУ (то есть только горизонтально). Что-то где-то здесь не так... Самое реальное - возьмите что-то с "ячеистой" структурой (электронную таблицу, например) - и изобразите в ней ваш шкафчик: полки/ряды/пустые места/книги. И изобразите НЕСКОЛЬКО шагов по перестановке книг. Чтобы вообще начать понимать, ЧТО вы пытаетесь достичь. Еще более реальное - надо не отображать свою задачу на выдуманную из собственной головы "аналогию", а приводить исходную постановку, что вы там оптимизируете и в приложении к чему... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2011, 00:49 |
|
||
|
Алгоритм/ Оптимизация
|
|||
|---|---|---|---|
|
#18+
На дефрагментацию похоже... Навскидку: 1. Ищем ряд без романов, с макс. пустым местом 2. Перекидываем из этого ряда в ряд с романом (по возможности поближе к автору, если он там есть). 3. Когда 2 будет невозможно, перекидываем на другие ряды с мин. пустым местом (по возможности поближе к автору, если он там есть) 4. Когда 3 невозможно, перекидываем внутри ряда в начало, или в конец (где уже есть больше книг). 5. Радуемся максимально пустому пространству на полке, и идем за пивом... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2011, 09:08 |
|
||
|
Алгоритм/ Оптимизация
|
|||
|---|---|---|---|
|
#18+
Cyberholic, Сколько в вашем бизнесе объектов типа "автор", "книга", "полка", "ряд"? Сколько времени вы можете дать компьютеру на нахождение оптимального решения? От этого зависит, можно ли атаковать в лоб "перебором", или все-таки нужно заморачиваться и строить всяческие модели и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2011, 10:24 |
|
||
|
Алгоритм/ Оптимизация
|
|||
|---|---|---|---|
|
#18+
AndreTM, все именно так как Вы и поняли: полка -- один кубик шкафа, ряд -- горизонтальный набор полок. Книги перемещаются только по ряду. В моем примере верхний и нижний ряды пустые, но они тоже по сути могут быть с книгами и оптимизация пространства должна проводиться по ряду: на верхнем ряду, посередине и в нижнем ряду. refreg, это действительно похоже на дефрагментацию! С той разницей, что критерием здесь так же выступает МИНИМАЛЬНОЕ количество шагов. Feech, каждый ряд будет рассматриваться по отдельности, поэтому я думаю количество рядов не столько важно. Полок в ряду от 1 до 10 примерно. Книг может быть много, от 0 до ну может 100, авторов соответсвенно =< количества книг. Время компьютеру можно дать ну несколько минут без проблем... Цель - максимум свободного места, минимум перестановок. и показать вариант (как выглядит полка, какие книги где) с мин количеством шагов, с кол шагов min-1, min-2 и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2011, 23:34 |
|
||
|
Алгоритм/ Оптимизация
|
|||
|---|---|---|---|
|
#18+
Cyberholic, Ясно. Похоже, что простым перебором решать не стоит. На мой взгляд, требуется уточнить критерий оптимальности, что значит "максимум свободного места"? Очевидно, что сумма свободного места остается неизменной, меняется только распределение этого свободного места по непрерывным свободным участкам в пределах ряда. Вы должны сформулировать функцию, которая, имея на входе набор свободных участков, выдает некоторое число, выражающее качество данного набора. Например, эта функция должна четко различать, что лучше: два свободных участка шириной 4 каждый, или один шириной 5 и второй шириной 3. Или еще лучше один шириной 6 и два шириной 1 каждый? Далее, в эту функцию необходимо вплести количество перестановок. То есть, если распределение 5+3 из примера выше лучше чем распределение 4+4, но для него потребуется N дополнительных перестановок, то при каких N считать его по-прежнему лучшим? И напоследок, необходимо в эту функцию вплести метрику того, как численно выразить книги одного автора, стоящие рядом или не рядом. То есть, если в нашем же примере при решении 5+3 книги идут вразнобой, а при решении 4+4 - авторы максимально сгруппированы, то какое решение лучше и насколько? Или сколько дополнительных перестановок можно делать для цели групировки книг одного автора вместе? Если эту функцию удастся четко сформулировать и перевести всю задачу на формальный язык для систем планирования, то можно для поиска решения применить какой-нибудь высокооптимизированный планировщик (например, FF planner http://www.loria.fr/~hoffmanj/ff.html). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2011, 10:34 |
|
||
|
Алгоритм/ Оптимизация
|
|||
|---|---|---|---|
|
#18+
под максимально свободным местом пнимается НЕПРЕРЫВНОЕ максимальное свободное место. Это было в первом посте, в описании задачи: Получить наибольшее непрерывное количество свободного пространства в ряду на полках с минимальным количетсвом шагов (перестановок книг на полке), показать вариант (как выглядит полка, какие книги где) с мин количеством шагов, с кол шагов min-1, min-2 и т.д. Данные: Шкаф с полками и книгами на разных рядах. Надо максимизировать количество свободного пространства в РЯДУ. Есть несколько типов книг: роман, детектив и приключения. Роман нельзя перемещать, они должны остаться на своих местах. Все остальные можно свободно перемещать. Расстояние на полках и размер книг измеряем в миллиметрах. Опция: отдавать предпочтение перемещению книг одного и того же автора, что бы они стояли рядом... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2011, 23:27 |
|
||
|
Алгоритм/ Оптимизация
|
|||
|---|---|---|---|
|
#18+
Cyberholicrefreg, это действительно похоже на дефрагментацию! С той разницей, что критерием здесь так же выступает МИНИМАЛЬНОЕ количество шагов.Допустим, есть порядок действий выполняющий требуемое преобразование за N шагов. Что бы показать, что можно выполнить это действие за меньшее количество шагов, надо или найти более быстрое преобразование, либо перебрать все варианты. Если найдено более быстрое преобразование, то что бы доказать, что оно минимально... (читай сначала). Следовательно, только перебор. Правда, еще вариант, если задача уже решена (математиками, например) и доказано, что такой-то алгоритм приводит к минимому... можно смело его использовать. Пока математики думают над задачами, инженеры их уже решают... --- По поводу задачи, упрощаем: 1. Т.к. из ряда в ряд нельзя перекидывать, убираем все ряды оставляем один (для других рядов задача аналогична) 2. Т.к. романы нельзя передвигать - превращаем их в перегородки Таким образом, задача: Есть ряд из полок, на ней книги. Освободить в ряду место под пиво Более четко сформулировать предлагаю тебе, т.к. я не понял "свободное место" - это внутри одной полки, или несколько идущих друг за другом пустых полок. И еще, шаг - это "сдвинуть на миллиметр внутри одной полки?" или "Перекинуть с полки на полку?", или еще что? Предлагаю, на опцию пока забить, т.к. на основной алгоритм, она вряд ли окажет существенного влияния, если только ты не готов пожертвовать несколькими лишними шагами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2011, 08:39 |
|
||
|
Алгоритм/ Оптимизация
|
|||
|---|---|---|---|
|
#18+
refreg, Перебором так перебором! 1. Свободное место -- непрерывное свободное место, которое можно будет использовать под другие книги (под пиво тоже можно как Вы предлагаете). Если в итоге этого "упражнения" освобождается целая полка в ряду и получается максимальное непрерывное свободное место -- только лучше. 2. Шаг -- любое перемещение на полках, будь-то просто сдвиг одной книги на пару миллиметров или перестановка книги с одной полки на другую Надеюсь теперь все четко... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2011, 10:16 |
|
||
|
Алгоритм/ Оптимизация
|
|||
|---|---|---|---|
|
#18+
Cyberholic, теперь все четко ;) Можете использовать решение, предоставленное автором refreg. Я бы добавил после п.2 такое 3. Создаем пустой список решений. 4. Сотрируем расстояния от перегородки до перегородки по убыванию (романы теперь стали перегородками). 5. Берем первое такое расстояние. 6. Пытаемся все книги из этого участка переложить на свободные места на других полках. 7. Если смогли все переложить, то ответ готов. Касательно картинок min-1, min-2 и т.п. - они формируются тут же. 8. Если не смоги все переложить, и что-то осталось, то это что-то сдвигаем вплотную к стенкам. 9. Если освобожденное пространство больше, чем следующее в списке из п.4, то ответ готов. 10. Если меньше, то добавляем наше решение в список возможных решений. 11. Если в сортированном списке расстояний из п.4 есть следующий кандидат, берем его и переходим к п.6. 12. Если следующего варианта нет, то ищем с списке решений решение с максимальным итоговым свободным расстоянием. Это и есть ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2011, 13:28 |
|
||
|
Алгоритм/ Оптимизация
|
|||
|---|---|---|---|
|
#18+
No ved Punkti 1 i 2 predidushego resheniya predpolagayut perestanovku iz ryada v ryad, chto nevozmozhno po usloviyam... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2011, 18:19 |
|
||
|
Алгоритм/ Оптимизация
|
|||
|---|---|---|---|
|
#18+
CyberholicNo ved Punkti 1 i 2 predidushego resheniya predpolagayut perestanovku iz ryada v ryad, chto nevozmozhno po usloviyam... На мой взгляд, не предполагают: refreg1. Т.к. из ряда в ряд нельзя перекидывать , убираем все ряды оставляем один (для других рядов задача аналогична) 2. Т.к. романы нельзя передвигать - превращаем их в перегородки Ваш интерес в решении задачи непонятен: он есть или его нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2011, 15:17 |
|
||
|
Алгоритм/ Оптимизация
|
|||
|---|---|---|---|
|
#18+
автор Vopros snyat, ne na tot otvet bil mnoi vzyat. 1. Ищем ряд без романов, с макс. пустым местом 2. Перекидываем из этого ряда в ряд с романом (по возможности поближе к автору, если он там есть). Eshe vorpors mozhno po sleduyushim shagam? 3. Создаем пустой список решений. 4. Сотрируем расстояния от перегородки до перегородки по убыванию (романы теперь стали перегородками). 5. Берем первое такое расстояние. 6. Пытаемся все книги из этого участка переложить на свободные места на других полках. Chto oznachaet "Uchastok". Rasstoyanie ot peregorodki do peregorodki est pustoe mesto, iz "uchastka" s samim bolshim pustim mestom perekladivaem knigi na svobodnie mesta na drugih polkah. Chto oznachaet uchastokn i kak ego mozhno "opredelit" v dannom kontekste? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2011, 19:45 |
|
||
|
Алгоритм/ Оптимизация
|
|||
|---|---|---|---|
|
#18+
CyberholicChto oznachaet "Uchastok". Rasstoyanie ot peregorodki do peregorodki est pustoe mesto, iz "uchastka" s samim bolshim pustim mestom perekladivaem knigi na svobodnie mesta na drugih polkah. Chto oznachaet uchastokn i kak ego mozhno "opredelit" v dannom kontekste? Вы из-за границы пишете? Попробуйте сайтик типа http://translit.ru/. Участок - это область полки, заключенныя между неперемещаемыми границами. Неперемещаемые границы - это перегородки и романы. Участок может быть как пустой, так и с книгами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2011, 16:12 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=84&tid=1342915]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 380ms |

| 0 / 0 |
