Придумаете случайную задачу на расписание с ограничениями, свяжите её с теорией графов и предложите алгоритм поиска оптимального решения, обсудите сложность и случаи NP-полноты

25 Ноя в 15:44
5 +3
0
Ответы
1
Задача (случайный пример). Есть набор задач J={1,…,n}J=\{1,\dots,n\}J={1,,n}, одинаковые машины MMM числа mmm. Каждая задача jjj имеет длительность pj∈{1,2,4}p_j\in\{1,2,4\}pj {1,2,4}. Даны ограничения:
- предшествования (частичный порядок) задаются ориентированным ацикличным графом (DAG) D=(J,Eprec)D=(J,E_{prec})D=(J,Eprec ): если (i→j)∈Eprec(i\to j)\in E_{prec}(ij)Eprec , то jjj нельзя начать до завершения iii;
- конфликтные пары (нельзя выполнять одновременно) задаются неориентированным графом G=(J,Econf)G=(J,E_{conf})G=(J,Econf ): если {i,j}∈Econf\{i,j\}\in E_{conf}{i,j}Econf , то их исполнения не должны пересекаться по времени.
Цель: минимизировать makespan Cmax⁡C_{\max}Cmax — время завершения всех задач.
Связь с теорией графов.
- Предшествования — это DAG DDD (частичный порядок). Антайны (maximal antichains) в этом порядке соответствуют множествам задач, которые теоретически могут выполняться одновременно, если нет конфликтов.
- Конфликты — это граф GGG; в любой момент можно запустить лишь такое подмножество задач, которое является независимым множеством в GGG и не содержит задач с неудовлетворёнными предшественниками.
- Модель с дизъюнктивными рёбрами: для каждой конфликтной пары {i,j}\{i,j\}{i,j} добавляется дизъюнктивное условие «либо iii перед jjj, либо jjj перед iii» — классическая дисъюнктивная модель для цехового расписания.
Формулировка точного алгоритма (time-indexed ILP).
Пусть верхняя грань срока TTT (возможно суммарный объём). Вводим бинарные переменные
xj,t={1,если задача j стартует в момент t,0,иначе x_{j,t}=\begin{cases}1,&\text{если задача }j\text{ стартует в момент }t,\\0,&\text{иначе}\end{cases}
xj,t ={1,0, если задача j стартует в момент t,иначе
с t=0,…,T−pjt=0,\dots,T- p_jt=0,,Tpj . Ограничения:
1) каждая задача стартует ровно один раз:
∀j: ∑t=0T−pjxj,t=1. \forall j:\ \sum_{t=0}^{T-p_j} x_{j,t}=1.
j: t=0Tpj xj,t =1.
2) машина в любой момент обслуживает не более mmm задач:
∀τ∈{0,…,T−1}: ∑j∑t: t≤τ<t+pjxj,t≤m. \forall \tau\in\{0,\dots,T-1\}:\ \sum_{j}\sum_{t:\ t\le\tau<t+p_j} x_{j,t}\le m.
τ{0,,T1}: j t: tτ<t+pj xj,t m.
3) предшествования:
∀(i→j)∈Eprec: ∑tt xi,t+pi≤∑tt xj,t. \forall (i\to j)\in E_{prec}:\ \sum_t t\,x_{i,t}+p_i \le \sum_t t\,x_{j,t}.
(ij)Eprec : t txi,t +pi t txj,t .
4) конфликты (запрещение перекрытия для каждой пары):
∀{i,j}∈Econf: ∑t,u: интервалы [t,t+pi),[u,u+pj) пересекаютсяxi,txj,u=0, \forall\{i,j\}\in E_{conf}:\ \sum_{t,u:\ \text{интервалы }[t,t+p_i),[u,u+p_j)\text{ пересекаются}} x_{i,t}x_{j,u}=0,
{i,j}Econf : t,u: интервалы [t,t+pi ),[u,u+pj ) пересекаются xi,t xj,u =0,
или линеаризовать через дополнительные бинарные переменные порядка. Цель: минимизировать TTT (либо минимизировать последнее завершение через переменные начала).
Этот ILP даёт оптимальное решение, но размер и решаемость резко растут с TTT и nnn.
Альтернативный точный метод (перебор/DP по состояниям).
Определим DP по подмножествам завершённых задач: F(S)F(S)F(S) — минимальное время, за которое можно выполнить подмножество SSS. Начальное F(∅)=0F(\varnothing)=0F()=0. Переход: из состояния SSS можно одновременно запустить любое множество A⊆J∖SA\subseteq J\setminus SAJS, такое что
- все задачи в AAA имеют все предшественники в SSS (т.е. AAA — допустимое расширение),
- AAA независимо в GGG,
- ∣A∣≤m|A|\le mAm.
Тогда
F(S∪A)=min⁡{ max⁡(F(S), F(S)+max⁡j∈Apj) }=F(S)+max⁡j∈Apj. F(S\cup A)=\min\{\,\max(F(S),\,F(S)+\max_{j\in A} p_j)\,\} = F(S)+\max_{j\in A} p_j.
F(SA)=min{max(F(S),F(S)+jAmax pj )}=F(S)+jAmax pj .
Ищем F(J)F(J)F(J). Этот DP требует перебора подмножеств допустимых AAA и всех SSS, в худшем случае экспоненциально: время порядка O∗(2n)O^*(2^n)O(2n) (символ O∗(⋅)O^*(\cdot)O() опускает полиномиальные множители).
Эвристики и приближения.
- List-scheduling (topological order / LPT): сортировать задачи по приоритету (например, по длительности или раннему возможному старту) и размещать на первой свободной машине при соблюдении предшествований и конфликтов. Быстро, но не всегда оптимально.
- Для общего случая без предшествований list-scheduling даёт гарантированный коэффициент приближения ≤2−1m\le 2-\tfrac{1}{m}2m1 относительно оптимального Cmax⁡C_{\max}Cmax (классическая оценка Грэма).
- Можно использовать B&B + релаксации (LP), или итеративно выбирать максимум независимого множества в GGG из допустимых задач для заполнения слота (требует решение MWIS — тоже NP-трудная подзадача).
Сложность и NP-полнота.
- Общая задача (идентичные машины, предшествования, конфликты) является NP-трудной; точное решение в общем случае требует экспоненциального времени (и ILP решается экспоненциально в худшем случае).
- Уже частные случаи NP-полны:
- задача идентичных машин без предшествований P∣∣Cmax⁡P||C_{\max}P∣∣Cmax содержит Partition/3-Partition и потому NP-трудна (сильная NP-полнота для общего mmm и длительностей).
- задача с единичными длительностями и предшествованиями P∣prec,pj=1∣Cmax⁡P|prec,p_j=1|C_{\max}Pprec,pj =1∣Cmax NP-полна для m≥2m\ge2m2 (классический результат).
- задача с конфликтным графом сводится к проблемам раскраски/пакетирования (capacity coloring) и потому NP-трудна в общем случае.
- Полиномиально разрешимые случаи:
- m=1m=1m=1 — просто топологическая сортировка, полиномиально.
- если предшествования образуют цепь (total order) — однопроходная последовательность.
- некоторые параметризованные случаи: при очень малом nnn или малой ширине частичного порядка (малый максимум размера антайна) можно применять DP по состояниям с приемлемой сложностью; также допустимы FPT-алгоритмы при параметре «ширина» или «treewidth» соответствующих графов.
Краткая инструкция для практического решения.
- Для n≲40n\lesssim 40n40: используйте DP по подмножествам или time-indexed ILP в современном солвере (CP-SAT).
- Для средних nnn: B&B с эвристическим упорядочиванием (topological + LPT) и отсекающими оценками (нижняя граница по сумме длительностей и по длине критического пути).
- Для больших nnn: приближённые и жадные алгоритмы, локальный поиск, расписание по уровням (антайнки), либо сведение к специальной задаче с последующим применением эвристик на конфликтном графе.
Если хотите, могу сгенерировать конкретный случай (конкретные n,m,pjn,m,p_jn,m,pj , списки рёбер Eprec,EconfE_{prec},E_{conf}Eprec ,Econf ) и показать пошагово поиск оптимального расписания на небольшом примере.
25 Ноя в 15:55
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир