есть следующая задача:
дан набор объектов которые необходимо обработать на некотором количестве изолированных процессоров (у каждого своя память, в реальности — кластер многопроцессорных машин). Для каждого из объектов на основе исторических данных известно, сколько ресурсов он потребует (ресурсы — память, процессорное время, утилизация сети). Необходимо собрать объекты в кучки такие, чтобы все кучки были примерно одного размера по времени выполнения + минимизировали утилизацию сети + имели ограничение по памяти.
Для меня выглядит как NP задачка, т.к. если мне дадут готовые кучки, я могу легко написать проверочную функцию: просуммировать время, чуть более хитрым образом сложить память, ещё более хитрым образом сложить использование сети (т.к. разные объекты могут хотеть из сети одни и те же данные и это мне тоже заранее известно). Имхо похоже на задачу о рюкзаке, но немного хитрее =)
Не может ли кто-нибудь подсказать, в какую сторону мне почитать, если я хочу проводить такое разбиение максимально быстро, т.е. для меня не так уж принципиально получить идеальное разбиение.
Если важно, то язык — java (м.б. там уже все написано? =) )