Постройте математическую формулировку задачи планирования расписания экзаменов как задачи теории графов (раскраска вершин, несмежные ограничения), обсудите сложность задачи, приведите эвристические и точные методы её решения и опишите, как учесть дополнительные реальные ограничения (ограниченные аудитории, временные окна, предпочтения студентов)
Математическая формулировка (базовая) - Пусть экзамены — вершины невзвешенного графа G=(V,E)G=(V,E)G=(V,E), где ребро (u,v)∈E(u,v)\in E(u,v)∈E означает, что есть хотя бы один студент, сдающий и uuu, и vvv (конфликт). Временные слоты — цвета 1,…,k1,\dots,k1,…,k. - Задача раскраски: найти отображение f:V→{1,…,k} \;f:V\to\{1,\dots,k\}\;f:V→{1,…,k} такое, что ∀(u,v)∈E: f(u)≠f(v).
\forall (u,v)\in E:\; f(u)\neq f(v). ∀(u,v)∈E:f(u)=f(v).
Частные постановки: проверка существования kkk-раскраски (решение да/нет) или минимизация числа слотов (минимизация хроматического числа χ(G)\chi(G)χ(G)). ILP-формулировка (базовая) - Переменные xv,t∈{0,1} \;x_{v,t}\in\{0,1\}\;xv,t∈{0,1} — 1 если экзамен vvv назначен в слот ttt. - Ограничения: ∀v: ∑t=1kxv,t=1,
\forall v:\ \sum_{t=1}^k x_{v,t}=1, ∀v:t=1∑kxv,t=1,∀(u,v)∈E, ∀t: xu,t+xv,t≤1.
\forall (u,v)\in E,\ \forall t:\ x_{u,t}+x_{v,t}\le 1. ∀(u,v)∈E,∀t:xu,t+xv,t≤1. Сложность - Проблема существования kkk-раскраски NP-полна. Минимизация числа слотов (минимизация χ(G)\chi(G)χ(G)) NP‑трудна и плохо аппроксимируема (сильно NP‑трудна; аппроксимация в общем случае невозможна с полиномиальным множителем n1−εn^{1-\varepsilon}n1−ε при общих предположениях). Эвристические методы - Однофазные greedy-подходы: - Порядки: влиятельность по степени (largest degree first), DSATUR (жадная с учётом насыщенности). - First-fit/Best-fit по порядку вершин. - Локальный поиск и метаэвристики: - Kempe‑цепи (перекраски), tabu‑search, simulated annealing, iterated local search, genetic algorithms, ant colony. - Перемещения: репламинг цвета, обмены пар вершин, слияние/разбиение классов. - Алгоритмы кластеризации/разделения: - Разбиение графа на компоненты/клики, раскраска по блокам, сопоставление с задачей разбиения. - Двухфазные схемы (практичные): - Сначала получить раскраску по слотам (игнорируя аудитории), затем упаковать экзамены в аудитории по каждому слоту как задачу bin‑packing (first‑fit decreasing и т.п.). Точные методы - Полный перебор с branch-and-bound для раскраски (использует нижние оценки: максимальная клика и жадную раскраску). - ILP/SAT/CP: формулировки в виде целочисленного программирования или булевой SAT, решаемые CPLEX/Gurobi/OR‑Tools/ SAT‑solvers. - CSP/CP‑SAT (OR‑Tools) — гибко добавляет побочные ограничения и штрафы. - Для умеренных размеров (до нескольких сотен экзаменов при хорошей структуре) точные решатели иногда применимы. Учет дополнительных реальных ограничений 1) Ограниченные аудитории - Модель с назначением экзамена в конкретную аудиторию: - Переменные zv,t,r∈{0,1} \;z_{v,t,r}\in\{0,1\}\;zv,t,r∈{0,1} — 1 если экзамен vvv в слоте ttt в аудитории rrr. - Ограничения: ∀v: ∑t,rzv,t,r=1,
\forall v:\ \sum_{t,r} z_{v,t,r}=1, ∀v:t,r∑zv,t,r=1,∀r,t: ∑vzv,t,r≤1(в одной аудитории в один слот не более одного экзамена),
\forall r,t:\ \sum_{v} z_{v,t,r}\le 1 \quad(\text{в одной аудитории в один слот не более одного экзамена}), ∀r,t:v∑zv,t,r≤1(воднойаудиторииводинслотнеболееодногоэкзамена),∀v,t,r: zv,t,r=0 если capr<sizev.
\forall v,t,r:\ z_{v,t,r}=0\ \text{если}\ \text{cap}_r < size_v. ∀v,t,r:zv,t,r=0еслиcapr<sizev.
- Альтернатива (менее детально): сначала раскраска по слотам (xv,tx_{v,t}xv,t), затем для каждого слота решить упаковку экзаменов в аудитории (bin‑packing), или в ILP добавить ∀t: ∑vsizev⋅xv,t≤∑rcapr.
\forall t:\ \sum_v size_v\cdot x_{v,t}\le \sum_r cap_r. ∀t:v∑sizev⋅xv,t≤r∑capr.
— однако это даёт только суммарную вместимость, не распределение по аудиториям. 2) Временные окна и предопределённые запреты - Ограничение допустимых слотов: если для экзамена vvv разрешён набор слотов WvW_vWv, то ∀t∉Wv: xv,t=0.
\forall t\notin W_v:\ x_{v,t}=0. ∀t∈/Wv:xv,t=0. 3) Предпочтения студентов и мягкие ограничения - Вводим штрафы/веса и минимизируем суммарную стоимость: - Переменные штрафа для размещения pv,t\;p_{v,t}pv,t (нежелательные слоты) и штрафы за плохие последовательности для студентов, например для студента сдающего u,vu,vu,v: penaltyu,v(tu,tv)=wu,v⋅g(∣tu−tv∣),
\text{penalty}_{u,v}(t_u,t_v)=w_{u,v}\cdot g(|t_u-t_v|), penaltyu,v(tu,tv)=wu,v⋅g(∣tu−tv∣),
где ggg задаёт функцию неудобства (например высокий штраф за подряд или одновременно). При линейной/кусочно‑линейной форме можно линearизовать и добавить в объектив: min∑v,tpv,txv,t+∑(u,v)∑t,t′wu,v,t,t′yu,v,t,t′,
\min \sum_{v,t} p_{v,t} x_{v,t} + \sum_{(u,v)} \sum_{t,t'} w_{u,v,t,t'} y_{u,v,t,t'}, minv,t∑pv,txv,t+(u,v)∑t,t′∑wu,v,t,t′yu,v,t,t′,
где yu,v,t,t′y_{u,v,t,t'}yu,v,t,t′ — бинарная переменная, равная 1 если xu,t=xv,t′=1x_{u,t}=x_{v,t'}=1xu,t=xv,t′=1 (линеаризация через стандартные связки). - Мягкие ограничения даются как штрафы, либо как приоритеты в многоцелевой оптимизации. Практические рекомендации - Начинать с двухфазной схемы: жадная/DSATUR раскраска → упаковка по аудиториям → локальный поиск для устранения конфликтов и уменьшения штрафов. - Для строгих требований к оптимальности применять ILP/CP‑SAT с аккуратной линейризацией и отсечениями (использовать нижние оценки: размер максимальной клики, краевой раскраски). - Использовать эвристики для больших инстансов: DSATUR + Kempe + tabu/SA + бин‑пак для аудиторий; гибридные подходы обычно дают лучшую практическую производительность. - Для учета предпочтений и временных окон предпочтительнее CP‑моделирование (легко задавать домены и мягкие ограничения). Ключевые замечания - Любое введение реальных ограничений (аудитории, окна, предпочтения) сохраняет NP‑трудность; часто практикуют приближённые и гибридные методы. - Для оценки качества использовать нижние оценки (ω(G)\omega(G)ω(G) — размер максимальной клики) и метрики удобства студентов (число подряд экзаменов, суммарные штрафы). Если нужно, могу привести конкретную ILP/CP‑формулировку для заданного набора данных (число экзаменов, размеров, аудиторий, временных слотов).
- Пусть экзамены — вершины невзвешенного графа G=(V,E)G=(V,E)G=(V,E), где ребро (u,v)∈E(u,v)\in E(u,v)∈E означает, что есть хотя бы один студент, сдающий и uuu, и vvv (конфликт). Временные слоты — цвета 1,…,k1,\dots,k1,…,k.
- Задача раскраски: найти отображение f:V→{1,…,k} \;f:V\to\{1,\dots,k\}\;f:V→{1,…,k} такое, что
∀(u,v)∈E: f(u)≠f(v). \forall (u,v)\in E:\; f(u)\neq f(v).
∀(u,v)∈E:f(u)=f(v). Частные постановки: проверка существования kkk-раскраски (решение да/нет) или минимизация числа слотов (минимизация хроматического числа χ(G)\chi(G)χ(G)).
ILP-формулировка (базовая)
- Переменные xv,t∈{0,1} \;x_{v,t}\in\{0,1\}\;xv,t ∈{0,1} — 1 если экзамен vvv назначен в слот ttt.
- Ограничения:
∀v: ∑t=1kxv,t=1, \forall v:\ \sum_{t=1}^k x_{v,t}=1,
∀v: t=1∑k xv,t =1, ∀(u,v)∈E, ∀t: xu,t+xv,t≤1. \forall (u,v)\in E,\ \forall t:\ x_{u,t}+x_{v,t}\le 1.
∀(u,v)∈E, ∀t: xu,t +xv,t ≤1.
Сложность
- Проблема существования kkk-раскраски NP-полна. Минимизация числа слотов (минимизация χ(G)\chi(G)χ(G)) NP‑трудна и плохо аппроксимируема (сильно NP‑трудна; аппроксимация в общем случае невозможна с полиномиальным множителем n1−εn^{1-\varepsilon}n1−ε при общих предположениях).
Эвристические методы
- Однофазные greedy-подходы:
- Порядки: влиятельность по степени (largest degree first), DSATUR (жадная с учётом насыщенности).
- First-fit/Best-fit по порядку вершин.
- Локальный поиск и метаэвристики:
- Kempe‑цепи (перекраски), tabu‑search, simulated annealing, iterated local search, genetic algorithms, ant colony.
- Перемещения: репламинг цвета, обмены пар вершин, слияние/разбиение классов.
- Алгоритмы кластеризации/разделения:
- Разбиение графа на компоненты/клики, раскраска по блокам, сопоставление с задачей разбиения.
- Двухфазные схемы (практичные):
- Сначала получить раскраску по слотам (игнорируя аудитории), затем упаковать экзамены в аудитории по каждому слоту как задачу bin‑packing (first‑fit decreasing и т.п.).
Точные методы
- Полный перебор с branch-and-bound для раскраски (использует нижние оценки: максимальная клика и жадную раскраску).
- ILP/SAT/CP: формулировки в виде целочисленного программирования или булевой SAT, решаемые CPLEX/Gurobi/OR‑Tools/ SAT‑solvers.
- CSP/CP‑SAT (OR‑Tools) — гибко добавляет побочные ограничения и штрафы.
- Для умеренных размеров (до нескольких сотен экзаменов при хорошей структуре) точные решатели иногда применимы.
Учет дополнительных реальных ограничений
1) Ограниченные аудитории
- Модель с назначением экзамена в конкретную аудиторию:
- Переменные zv,t,r∈{0,1} \;z_{v,t,r}\in\{0,1\}\;zv,t,r ∈{0,1} — 1 если экзамен vvv в слоте ttt в аудитории rrr.
- Ограничения:
∀v: ∑t,rzv,t,r=1, \forall v:\ \sum_{t,r} z_{v,t,r}=1,
∀v: t,r∑ zv,t,r =1, ∀r,t: ∑vzv,t,r≤1(в одной аудитории в один слот не более одного экзамена), \forall r,t:\ \sum_{v} z_{v,t,r}\le 1 \quad(\text{в одной аудитории в один слот не более одного экзамена}),
∀r,t: v∑ zv,t,r ≤1(в одной аудитории в один слот не более одного экзамена), ∀v,t,r: zv,t,r=0 если capr<sizev. \forall v,t,r:\ z_{v,t,r}=0\ \text{если}\ \text{cap}_r < size_v.
∀v,t,r: zv,t,r =0 если capr <sizev . - Альтернатива (менее детально): сначала раскраска по слотам (xv,tx_{v,t}xv,t ), затем для каждого слота решить упаковку экзаменов в аудитории (bin‑packing), или в ILP добавить
∀t: ∑vsizev⋅xv,t≤∑rcapr. \forall t:\ \sum_v size_v\cdot x_{v,t}\le \sum_r cap_r.
∀t: v∑ sizev ⋅xv,t ≤r∑ capr . — однако это даёт только суммарную вместимость, не распределение по аудиториям.
2) Временные окна и предопределённые запреты
- Ограничение допустимых слотов: если для экзамена vvv разрешён набор слотов WvW_vWv , то
∀t∉Wv: xv,t=0. \forall t\notin W_v:\ x_{v,t}=0.
∀t∈/Wv : xv,t =0.
3) Предпочтения студентов и мягкие ограничения
- Вводим штрафы/веса и минимизируем суммарную стоимость:
- Переменные штрафа для размещения pv,t\;p_{v,t}pv,t (нежелательные слоты) и штрафы за плохие последовательности для студентов, например для студента сдающего u,vu,vu,v:
penaltyu,v(tu,tv)=wu,v⋅g(∣tu−tv∣), \text{penalty}_{u,v}(t_u,t_v)=w_{u,v}\cdot g(|t_u-t_v|),
penaltyu,v (tu ,tv )=wu,v ⋅g(∣tu −tv ∣), где ggg задаёт функцию неудобства (например высокий штраф за подряд или одновременно). При линейной/кусочно‑линейной форме можно линearизовать и добавить в объектив:
min∑v,tpv,txv,t+∑(u,v)∑t,t′wu,v,t,t′yu,v,t,t′, \min \sum_{v,t} p_{v,t} x_{v,t} + \sum_{(u,v)} \sum_{t,t'} w_{u,v,t,t'} y_{u,v,t,t'},
minv,t∑ pv,t xv,t +(u,v)∑ t,t′∑ wu,v,t,t′ yu,v,t,t′ , где yu,v,t,t′y_{u,v,t,t'}yu,v,t,t′ — бинарная переменная, равная 1 если xu,t=xv,t′=1x_{u,t}=x_{v,t'}=1xu,t =xv,t′ =1 (линеаризация через стандартные связки).
- Мягкие ограничения даются как штрафы, либо как приоритеты в многоцелевой оптимизации.
Практические рекомендации
- Начинать с двухфазной схемы: жадная/DSATUR раскраска → упаковка по аудиториям → локальный поиск для устранения конфликтов и уменьшения штрафов.
- Для строгих требований к оптимальности применять ILP/CP‑SAT с аккуратной линейризацией и отсечениями (использовать нижние оценки: размер максимальной клики, краевой раскраски).
- Использовать эвристики для больших инстансов: DSATUR + Kempe + tabu/SA + бин‑пак для аудиторий; гибридные подходы обычно дают лучшую практическую производительность.
- Для учета предпочтений и временных окон предпочтительнее CP‑моделирование (легко задавать домены и мягкие ограничения).
Ключевые замечания
- Любое введение реальных ограничений (аудитории, окна, предпочтения) сохраняет NP‑трудность; часто практикуют приближённые и гибридные методы.
- Для оценки качества использовать нижние оценки (ω(G)\omega(G)ω(G) — размер максимальной клики) и метрики удобства студентов (число подряд экзаменов, суммарные штрафы).
Если нужно, могу привести конкретную ILP/CP‑формулировку для заданного набора данных (число экзаменов, размеров, аудиторий, временных слотов).