Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / подбор слагаемых Excel / 9 сообщений из 9, страница 1 из 1
14.05.2017, 21:29
    #39452833
Gamst
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подбор слагаемых Excel
Добрый день,


помогите, пожалуйста, решить задачу.
1. имеется массив данных - таблица размером 4х50 (столбцы х строки) с одним числом в каждой ячейке
2. задача - при вводе произвольного числа (суммы) подобрать слагаемые из таблицы, найти и выписать все возможные комбинации для данной суммы
3. ограничения - кол-во слагаемых равно всегда 4
- каждое слагаемое берется из своего столбца (из любой строки)

спасибо!
...
Рейтинг: 0 / 0
14.05.2017, 22:55
    #39452852
Михаил Ч.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подбор слагаемых Excel
Простой перебор 50^4 вариантов
(код не оптимизирован)
...
Рейтинг: 0 / 0
14.05.2017, 23:02
    #39452855
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подбор слагаемых Excel
Михаил Ч.Простой перебор 50^4 вариантовДостаточно перебрать 50^3 (125 тыс.) вариантов - вместе с итоговой суммой они определяют значение 4-го слагаемого, и достаточно просто проверить его наличие.
...
Рейтинг: 0 / 0
14.05.2017, 23:13
    #39452856
Михаил Ч.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подбор слагаемых Excel
Akinaи достаточно просто проверить его наличие.
поиском в массиве? что почти не будет отличатся от перебора, т.к. массивы не отсортированы.
Кроме того числа в столбцах повторяются, а нужно генерацию всех вариантов сочетаний слагаемых
...
Рейтинг: 0 / 0
15.05.2017, 07:53
    #39452887
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подбор слагаемых Excel
Михаил Ч.поиском в массиве?Вот ещё! Range.Find
Михаил Ч.массивы не отсортированыКто мешает? сортируем один раз, а итераций аки грязи...
Михаил Ч.числа в столбцах повторяются, а нужно генерацию всех вариантов сочетаний слагаемыхА на что это влияет?
...
Рейтинг: 0 / 0
15.05.2017, 08:29
    #39452890
Михаил Ч.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подбор слагаемых Excel
AkinaВот ещё! Range.Find
По своей сути это такой же перебор массива (возможно работает быстрее, чем перебор реализованный на VBA)

По указанным исходным данным перебор 50^4, без оптимизации вывода результатов на лист занимает менее 1 секунды.
Также реализовал перебор 50^3 вариантов (см. вложение), но пришлось жертвовать памятью

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

От трудности задачи зависит необходимость ее оптимизации, возможно, что написание и отладка оптимизированного кода займет времени существенно больше, чем неоптимизированный перебор (как в данном случае).
...
Рейтинг: 0 / 0
15.05.2017, 08:34
    #39452893
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подбор слагаемых Excel
Михаил Ч.Также можно не использовать нули в расчетахНу чтобы не использовать нули, нужно проверить, что сумма трёх максимальных значений в остальных столбцах меньше заданной суммы. И если это так - то почему бы их и не откинуть (да и не только их, но и все малые значения). Это ведь тоже одноразовая операция, а ускорит просчёт солидно.
...
Рейтинг: 0 / 0
15.05.2017, 08:57
    #39452897
Михаил Ч.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подбор слагаемых Excel
AkinaИ если это так - то почему бы их и не откинуть (да и не только их, но и все малые значения). Это ведь тоже одноразовая операция, а ускорит просчёт солидно.
Это один из частных случаев метода ветвей и границ - отсечение неперспективных ветвей решения.

После оптимизации вывода массива на лист: перебор 50^4 - 0,5 сек, 50^3 - 0,03 сек.
...
Рейтинг: 0 / 0
15.05.2017, 09:16
    #39452906
Gamst
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подбор слагаемых Excel
Михаил Ч., Akina - спасибо большое!!
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / подбор слагаемых Excel / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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