Изменения

Перейти к: навигация, поиск

O2Cmax

125 байт добавлено, 23:02, 16 мая 2016
Псевдокод
==Псевдокод==
function scheduling(a: '''int'''[n], b: '''int[n]'''): '''pair<int[n], int[n]>''' <tex>I = \varnothing </tex> <tex>J = \varnothing </tex> <tex>C_{max} = \max \{\sum \limits_{i = 1}^{n} a_i, \ \sum \limits_{i = 1}^{n} b_i, \ \max \limits_{i = 1}^{n}\{a_i + b_{i}\}\}</tex> '''for''' <tex>i = 1</tex> '''to''' <tex>n</tex> '''if''' <tex>a_{i} \leqslant b_{i}</tex> <tex> I = I \cup \{i\} </tex> '''else''' <tex> J = J \cup \{i\} </tex> Найти <tex>x</tex>, где <tex>a_{x} = \max \limits_{i \in I} \{a_{i}\}</tex> Найти <tex>y</tex>, где <tex>b_{y} = \max \limits_{i \in J} \{b_{i}\}</tex> '''if''' <tex>a_{x} < b_{y}</tex> Поменять местами первый и второй станок Пересчитать <tex>I, J, x</tex> Запомнить, что поменяли
Начиная с <tex>0</tex> на первом станке расставляем расписание для <tex>I \setminus \{x\}</tex> Начиная с <tex>0</tex> на втором станке расставляем расписание для <tex>\{x\}</tex>, затем для <tex>I \setminus \{x\}</tex><br/> От правой границы {{---}} <tex>C_{max}</tex> на первом станке расставляем расписание для <tex>\{x\}</tex>, затем для <tex>J</tex> От правой границы {{---}} <tex>C_{max}</tex> на втором станке расставляем расписание для <tex>J</tex><br/> '''if''' станки меняли местами поменять их обратно
==Сложность алгоритма==
251
правка

Навигация