Согласно комментарию Эрлиха (кстати, спасибо), термин "планирование" может вводить в заблуждение, и это может быть более подходящим описанием: учитывая матрицу N*N, найдите перестановку строк, которая даст наибольшую диагональную сумму. сильный>
У меня есть набор из N рабочих мест и N процессоров. Все процессоры могут отличаться друг от друга. Для каждой пары (задание, процессор) у меня есть производительность этого задания, работающего на этом процессоре. Производительность измеряется в IPC (количество инструкций за цикл).
Я пытаюсь найти расписание (распределение 1-к-1), которое максимизирует общую сумму IPC. Я могу сделать это, перебрав все возможные расписания с O(N!), что нецелесообразно.
Затем я попытался использовать алгоритм «стабильного сопоставления» O (N ^ 2), используя IPC для сортировки рабочих нагрузок и предпочтений процессоров. Он работает очень быстро и возвращает приличное расписание, но не оптимальное.
Мои вопросы:
1) Я действительно ожидал, что алгоритм стабильного сопоставления сможет вернуть оптимальное назначение. Может кто-нибудь объяснить, почему это не удается? Мое лучшее предположение на данный момент — это существование связей между разными парами (задание, процессор). Я также безуспешно пробовал алгоритм «стабильного сопоставления с безразличием». Я должен упомянуть, что алгоритм не дает сбоев из-за моей реализации. Я ищу более теоретический ответ на вопрос, почему сам алгоритм не может решить эту проблему.
2) Знаете ли вы алгоритм, который я могу использовать для этого? Он вообще существует?