scr
09-06-2007 15:20 о пользе фундаментальных знаний
Решил поближе познакомиться очередным языком программирования — Python, "just for fun". Параллельно решил написать программку, которая оптимальным образом размещала бы некоторое количество крупных видеофайлов по нескольким DVD дискам. То есть, например, есть n файлов суммарным объёмом 50 Gb и нужно распределить их по стандартным DVD болванкам так, чтобы на них осталось минимальное количество свободного места.

Понятно, что оптимальное решение может быть найдено в результате анализа всех возможных перестановок файлов, распихивания их по дискам и подсчёта остающегося свободного места на каждой болванке. Существуют также класс алгоритмов, которые обходятся без перебора и позволяют получить приблизительное решение, то есть не самое лучшее, но вполне подходящее. Данные алгоритмы сразу были отвергнуты — процессоры сейчас мощные, перемолоть все возможные комбинации для пары сотен файлов, казалось бы, не должно быть для них большой проблемой.

Первый же запуск программы на тестовой последовательности из 46 файлов (в реальности файлов в несколько раз больше) показал, что следствие пошло по ложному пути:

Общее количество файлов: 46
Следующая перестановка (1 из 5502622159812088949850305428800254892961651752960000000000)


Никак не думал, что факториал от 46 это так много.

Update от 14 ноября 2007: Есть отечественная разработка nnBackup, которая умеет сортировать файлы по папкам с учётом размера

Ваш комментарий:
Гость []
[смайлики сайта]
Автоматическое распознавание URL
Не преобразовывать смайлики
Cкрыть комментарий
Закрыть