Узагальнена задача про призначення

Матеріал з testwiki
Версія від 08:51, 20 травня 2022, створена imported>Lxlalexlxl (Визначення)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)
Перейти до навігації Перейти до пошуку

У прикладній математиці під узагальненою задачею про призначення розуміють задачу комбінаторної оптимізації, що є узагальненням задачі про призначення, в якій множина виконавців має розмір, не обов'язково рівний розміру множини робіт. При цьому виконавця можна призначити для виконання будь-яких робіт (не обов'язково однієї роботи, як у задачі про призначення). При призначенні виконавця для виконання роботи задається дві величини — ціна і дохід. Кожен виконавець має певний бюджет, так що сума всіх витрат не повинна перевищувати цього бюджету. Потрібно знайти таке призначення виконавців для виконання робіт, щоб максимізувати прибуток.

Особливі випадки

У разі, коли бюджети виконавців і всі вартості робіт дорівнюють 1, задача перетворюється на задачу про максимальне парування.

Якщо ціни і доходи для всіх призначень виконавців на роботи рівні, завдання зводиться до мультиплікативного рюкзака.

Якщо є всього один агент, задача зводиться до задачі про рюкзак.

Визначення

Є n робіт x1,,xn і m виконавців b1,,bm. Кожен виконавець bi має бюджет wi. Для кожної пари виконавець bi і робота xj задано дохід pi,j і вагу wi,j. Розв'язком є підмножина робіт U і розподіл робіт з U за виконавцями. Розв'язок допустимий, якщо сума витрат на призначені роботи виконавця bi не перевершує бюджету wi. Доходом від розв'язку є сума всіх доходів усіх розподілів робота-виконавець.

Математично узагальнену задачу про призначення можна сформулювати так:

максимізувати i=1mj=1npijxij.
при j=1nwijxijwii=1,,m;
i=1mxij1j=1,,n;
xij{0,1}i=1,,m,j=1,,n;

Узагальнена задача про призначення є NP-складною і навіть APX-складною.

Фляйшер, Гоманс, Мірокні і Свириденко запропонували комбінаторний алгоритм локального пошуку з апроксимацією (2+ε) та алгоритм на основі лінійного програмування з апроксимацією (ee1+ε)[1].

Апроксимація (ee1+ϵ) є кращою відомою апроксимацією узагальненої задачі про призначення.

Жадібний апроксимаційний алгоритм

Використовуючи алгоритм α-апроксимації задачі про призначення, можна створити (α+1)-апроксимацію для узагальненої задачі про призначення на зразок жадібного алгоритму, використовуючи концепцію залишку доходу. Алгоритм ітераційно створює попередню послідовність, в якій на ітерації j передбачається закріпити роботи за виконавцем bj. Вибір для виконавця bj може змінитися в подальшому при закріпленні робіт за іншими виконавцями. Залишок доходу роботи xi для виконавця bj дорівнює pij, якщо xi не віддано іншому виконавцю, і pij — pik, якщо роботу віддано виконавцю bk.

Формально: Використаємо вектор T для попереднього вибору і в цьому векторі

T[i]=j означає, що на роботу xi передбачається призначити виконавця bj,
T[i]=1 означає, що на роботу xi нікого не призначено.

Залишок доходу на ітерації j позначається через Pj, де

Pj[i]=pij, якщо роботу xi не обрано (тобто T[i]=1)
Pj[i]=pijpik, якщо роботу xi передбачається віддати виконавцю bk (тобто T[i]=k).

Отже, алгоритм виглядає так:

Присвоюються початкові значення T[i]=1 для всіх i=1n
Для всіх j=1...m виконати:
Використовується алгоритм апроксимації для отримання розподілу робіт для виконавця bj, використовуючи функцію залишку доходу Pj. Позначаються вибрані роботи Sj.
Підправляється T, використовуючи Sj, тобто T[i]=j для всіх iSj.
кінець циклу

Див. також

Примітки

Шаблон:Reflist

Посилання

  1. L. Fleischer, M. X. Goemans, V. S. Mirrokni, and M. Sviridenko. Tight approximation algorithms for maximum general assignment problems. In SODA'06: Proc