![]() |
|
|
![]()
|
|
| slamsssss |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 21.2.2013 Репутация: нет Всего: нет |
Всем привет! поставили задачу для пореза профиля. Исходные данные - количество профилей одинаковой длины и список длин на которые нужно порезать весь профиль, естественно с меньшими обрезками. Например дано 10 семиметровых профилей и список порезов - 5 порезов по 3200 мм, 7 порезов по 1430 мм и т.п. Как решал задачу, сортировал массив порезов по убыванию, брал первый элемент и поочередно складывал со всеми остальными элементами ( 1 и 2 элементы, 1 и 3, 1 и 4 .. потом 2 и 3, 2 и 4... предпоследний и последний) и находил максимально возможную сумму (конечно сумма должна быть меньше длины профиля). Потом проверял если длина профиля минус максимальная сумма больше либо равно минимальному элементу (параллельно нахожу) то запускаю функцию которая к этой макс. сумме поочередно прибавляет остальные элементы массива и опять же нахожу максимальную сумму - теперь уже из трех элементов и так рекурсивно пока остаток не будет меньше минимального элемента из оставшихся. Но как показала практика - не всегда выходит оптимально и значит нужен другой алгоритм.
Представляю его так. Из всех элементов массива необходимо найти максимально приближенную к длине профиля сумму чисел, притом количество слагаемых может колебаться от 2 чисел до к примеру 7. Нужен алгоритм решения такой задачи. Буду признателен за любые мысли |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Читайте "задачу об одномерном рюкзаке".
Сразу подскажу. Если нужен именно оптимум - то это полный перебор без вариантов. Если же устраивает ответ, близкий к оптимуму (т.е. он может быть оптимальным, а может и не быть) - то генетика. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| slamsssss |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 21.2.2013 Репутация: нет Всего: нет |
т.е. без перебора не обойтись, печально.. ну а задачу посмотрю, спасибо))
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Да, это NP-полная задача. Впрочем, она поддаётся оптимизации и при правильном алгоритме перебирается порядка 1/е вариантов от общего их числа, а учёт особенностей входных данных может привести к ещё большему выигрышу. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| slamsssss |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 21.2.2013 Репутация: нет Всего: нет |
эээ... в алгоритмизации не силен, что значит 1/е вариантов?
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| slamsssss |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 21.2.2013 Репутация: нет Всего: нет |
Спасибо за советы, почитал по данным задачам и таки да - только перебором можно сделать
|
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |