Є бункерів, то я й бін містить я кулі. Кулі мають п квіти, є а я кулі кольору я . Нехай m = ∑ n i = 1 a i .
Своп - це взяти кулю з однієї бункера і поміняти кульку з іншої. Ми хочемо мінімальної кількості свопів, щоб кожен контейнер містив тільки кульки одного кольору.
Я знаю прості спеціальні випадки для всіх i . (Якщо a i = 2 для всіх i , то ви навіть можете це зробити, поміняючи кожну кульку не більше одного разу.)
Редагувати : Це неправильно, оскільки пошук є NP-важким.
Якщо ми знаємо, який колір йде в який контейнер, проблема проста.
Розглянемо багатогранник , V = { v 1 , … , v n } . Якщо ми знаємо , кольору я йде бен б ( я ) , тобто K паралельні дуги ( J , б ( я ) ) в A тоді і тільки тоді бен J містить K кулі кольору I. Кожен компонент графа є ейлеровим. Мінімальна кількість необхідних свопів є , де C ( D ) є числом циклів дуги непересічних , яке охоплює A . Ми можемо поміняти місцями, "слідуючи" за ейлеровим контуром. (своп, що використовує дугу мінімального циклу, може змінити його на менший мінімальний цикл і цикл самоврядування). Після того, як весь графік встановлений самостійними петлями, ми зробили всі необхідні свопи.
Наскільки важка ця проблема взагалі?