Цепочечные структуры в задачах о расписаниях | ПДМ. 2016. № 3(33). DOI: 10.17223/20710410/33/5

Цепочечные структуры в задачах о расписаниях

Разработаны алгоритмы построения однопроцессорного расписания с условиями частичного предшествования и мультипроцессорного расписания без простоев и условий частичного предшествования.

Chain structures in schedules tasks.pdf Введение В исследованиях задач составления расписаний учебных занятий [1, с. 403], их приведения к «безоконному» виду [2], а также в задачах о расписаниях обслуживания множества заданий в мультипроцессорной системе без простоя процессоров и прерываний обработки каждого задания [3] нередко используются методы теории графов [4-6]. Пусть G = (V, E) - связный граф. Цепью в G называется [7] такая последовательность вершин ai и попарно различных ребер bi (вершины могут повторяться) P0 = (a0,b0,abbb ..., bk-1 ,ak), (1) что каждые два соседних ребра bi-1 и bi имеют общую вершину ai; если все вершины в (1) попарно различны, то цепь называется простой. Если концевые вершины a0 и an (простой) цепи (1) совпадают, то (простая) цепь (1) называется (простым) циклом. В настоящей работе обсуждается использование цепочечных структур (цепей и кон-катенаций нескольких цепей): в п. 1 -для построения однопроцессорного расписания с условиями предшествования, в п. 2 - для проверки существования интервальной рёберной раскраски двудольных графов (графической интерпретации многопроцессорного расписания без простоев и условий предшествования). Интервальной рёберной раскраской графа G = (V, E) называется такое отображение множества ребер E в множество целых чисел («цветов»), при котором для каждого v из множества вершин V цвета рёбер, инцидентных v, различны и образуют целочисленный интервал (далее будем писать кратко «интервальная раскраска»). Пример 1. 1) Простой цикл нечётной длины не имеет интервальной раскраски. Смежные рёбра на рис. 1, а раскрашены в цвета а и а +1 (а = 0). Тогда цвет третьего ребра при интервальной раскраске должен быть отличным от а и а +1 целым числом, соседним как с а, так и с а +1 (а такого числа не существует). 2) Простой цикл чётной длины интервально раскрашиваем (достаточно взглянуть на раскраску рёбер графа на рис. 1,б). Рис. 1. Циклы нечётной длины не допускают интервальной раскраски, чётной длины - допускают аб Задача об интервальной раскраске заданного графа G = (V, E) NP-полна [2]. Свойство NP-полноты сохраняется и в случае двудольного графа [8]. Сложность задачи об интервальной раскрашиваемости может различаться для разных классов двудольных графов. Ниже показано, что любой регулярный двудольный граф допускает интервальную раскраску (результат Р. Камаляна [9]), при этом задача об интервальной раскрашиваемости обыкновенного регулярного графа NP-полна [2]. Общеизвестно, что текстуально близкие задачи теории графов нередко принадлежат разным классам сложности. Из примеров, приведённых в [10, с. 104], уместно указать на следующие две задачи: «Кратчайший путь между двумя вершинами» и «Самый длинный путь между двумя вершинами» в заданном графе G = (V,E); первая, как известно, разрешима за время O(|V|2), вторая же NP-полна - к этой задаче сводится задача «Гамильтонов путь между двумя вершинами» [10, с. 269]. Замечание 1. Для задачи «Кратчайший путь между двумя вершинами» неизвестен алгоритм с оценкой O(|E|) [11, с. 236]. Сложность задачи о гамильтоновом маршруте (цикле или пути) принципиально различна для графов разных классов. Рассмотренные далее задачи тесно связаны с вычислением гамильтоновых маршрутов в графах простой структуры: в связном регулярном графе чётной степени и ациклическом ориентированном графе. 1. Расписание выполнения заданий в однопроцессорной системе с условиями частичного предшествования 1.1. Достаточные условия интервальной раскрашиваемости Из теоремы Эйлера [7, с. 192] следует, что связный регулярный граф G чётной степени обладает эйлеровым циклом (под степенью регулярного графа будем понимать степень вершины графа); теорема Ю. Петерсена [12] утверждает, что связный регулярный граф чётной степени 2n допускает разложение на n 2-факторов (каждая связная компонента 2-фактора является гамильтоновым циклом). Если каждый из этих 2-факторов является набором циклов чётной длины в графе G, то, помечая последовательные рёбра каждого цикла i-го набора метками 2i, 2i + 1, 2i, 2i + 1, ... (i = 0,1,...,n - 1), можно получить интервальную раскраску. Из перечисленных свойств графа сохраним лишь требование чётности длины любого цикла. Но последнее, согласно теореме Кени-га, означает двудольность графа, а как уже отмечалось ранее, не всякий двудольный граф интервально раскрашиваем. Более того, проверка интервальной раскрашиваемости является NP-полной задачей, следовательно, не существует эффективно проверяемых необходимых и достаточных условий (в предположении истинности гипотезы P=NP). Поэтому для обеспечения свойства интервальной раскрашиваемости следует добавить некоторое дополнительное условие (разумеется, менее слабое, чем регулярность с чётной степенью). Потребуем выполнение свойства регулярности без условия чётности степени графа. В случае нечётной степени А достаточно найти в заданном регулярном двудольном графе G = (X, Y, E) полное паросочетание X с Y (существование такого паросочетания следует из следствия 8.16.1 [1, с. 165]), раскрасить его рёбра цветом А - 1 и удалить его, затем воспользоваться теоремой Ю. Петерсена для интервальной раскраски оставшегося графа (А - 1) цветами: 0,1,... , А - 2. Таким образом, мы пришли к известному результату [9] об интервальной раскрашиваемости любого регулярного двудольного графа. 1.2. Перечисление допустимых расписаний с условиями ч а с т и ч н о г о п р е д ш е с т в о в а н и я Пусть однопроцессорной системе выделены для обработки объекты 0, 1,..., n - 1 и заданы условия частичного предшествования: для некоторых пар объектов указано, что один из объектов пары должен быть обработан раньше другого. Требуется построить допустимое расписание обработки, другими словами, упорядочить все объекты в соответствии с условиями частичного предшествования. Рассмотрим орграф G = (V, E), вершины Vo,Vi,... , vn-1 которого соответствуют заданным объектам, дуги - условиям частичного предшествования: из вершины v в вершину Vj дуга проведена тогда и только тогда, когда объект с номером j предшествует объекту с номером i. Если в орграфе G имеется цикл, то искомое расписание, очевидно, не существует (ориентированный граф имеет цикл в том и только в том случае, когда алгоритм поиска в глубину находит обратную дугу [13]). Если G - ациклический орграф, то для построения допустимого расписания достаточно применить алгоритм топологической сортировки [1, с. 96]. Предлагается близкий по идее алгоритм 1, на основе которого удаётся не только построить допустимое расписание, но и выполнить перечисление таких расписаний. В алгоритме используются следующие обозначения: m(v) -целочисленные метки вершин v Е V; L[i] -список всех вершин с i исходящими дугами, i = 0,1,..., n - 1 (сначала все списки пусты). Нетрудно видеть, что сложность алгоритма 1 не превышает O(n8). Алгоритм 1. Иерархическая сортировка вершин графа Вход: связный ациклический орграф G = (V, E) на n вершинах Выход: такая упорядоченная последовательность T вершин множества V, что для каждой дуги (vi,vj) Е E вершина vj предшествует вершине v в последовательности T 1: Для всех v Е V выполнить: m(v) := 0; i := d-(v); добавить v в L[i]. 2: Пока E = 0: 3: выбрать произвольную вершину v из L[0] и дугу (u,v). 4: Если m(v) + 1 > m(u), то m(u) := m(v) + 1. 5: i := d-(u). 6: Удалить дугу (u,v) из E. 7: Переместить вершину u из L[i] в L[i - 1]. 8: Если d+(v) = 0, то удалить вершину v из графа и из L[0]. 9: Восстановить исходный граф G = (V, E). 10: m0 := maxm(v), T := 0. vev 11: Для i = 0,... , m0 выполнить: 12: Для всех v Е V выполнить: 13: Если m(v) = i, то добавить v к концу последовательности T. Утверждение 1. Упорядочение объектов, индуцированное последовательностью T, является допустимым расписанием. Доказательство. Отсутствие вершины с нулевой полустепенью исхода в орграфе G (или в подграфе, полученном в каждой итерации цикла) означало бы присутствие в орграфе цикла, что противоречит условию применения иерархической сортировки. Для каждой дуги (v^, vj) метка, присваиваемая вершине v алгоритмом 1, превышает метку, присваиваемую вершине vj: m(v^) ^ m(vj) + 1. Следовательно, если известно, что j-й объект предшествует i-му объекту, то в списке, индуцированном последовательностью T, объект с номером j располагается раньше объекта с номером i, т. е. получено допустимое расписание. ■ В следующем следствии через V обозначено множество всех вершин v с меткой m(v) = i, i = 0,..., т0. Следствие 1. Количество допустимых расписаний равно |Vo|!... |Vm01! Замечание 2. Задача иерархической сортировки текстуально близка к задаче поиска ориентированного гамильтонова пути в каждой компоненте ориентированного графа. Уже отмечалось, что в общем случае задача о гамильтоновом пути NP-полна, но для ациклических ориентированных графов задача разрешима за полиномиальное время [14]. Пример 2. Пусть n =12, для каждого объекта в скобках указаны предшествующие ему объекты: 0(1, 2, 3), 1(4), 2(1, 4), 3(2, 5, 6), 4(5, 7,8, 9), 5(9,10), 6(10,11). В частности, отсюда видно, что у объектов 7,... , 10 нет предшественников. На рис. 2, а приведён орграф G. Рис. 2. Орграф G (а); результат алгоритма 1 - вершины G упорядочены по неубыванию меток (б) аб На рис. 3, а отображены результаты выполнения первой итерации цикла 2, где выбраны вершина v7 G L[0] и дуга (v4,v7); метке m(v4) присвоено значение 1, переменной i - значение 2; дуга (v4, v7) удалена; вершина v4 перемещена из L[2] в L[1]; вершина v7 удалена из графа и из L[0]. Во второй итерации цикла 2 (рис. 3, б) для вершины v8 выполнены аналогичные действия. Окончательный результат приведён на рис. 2, б. Рис. 3. Первая (а) и вторая (б) итерации цикла 2 алгоритма 1 Поясним на примере графа G, приведённого на рис. 4, а. Выберем в G непродол-жимую цепь P0 = (a0,b0,a4,bi,ai,b2,a5,b3,a0,b4,a7,b5,a2,b6,a4). Затем удалим из копии G графа G рёбра b0,... ,b6, включенные в P0. Самой правой вершиной P0, обладающей в оставшемся графе G' инцидентными рёбрами, будет вершина a2 (инцидентные рёбра b7 и b8). Построим в G' непродолжимую цепь Pi = (a2,b7,a5); для результата конкатенации P0 и Pi сохраним обозначение P0: P0 = (a0, b0, a4,bi, ai,b2, a5,b3, a0, b4,a7, b5, a2, b6,a4; a2, b7, a5) -и удалим из графа G' ребро b7. Самой правой вершиной P0, обладающей инцидентными ребрами, снова является вершина a2, Pi = (a2,b8, aii,bg,a3,bi0,a6,bii,ai,bi2,a8,bi3,a3,bi4,a7) -непродолжимая цепь графа G', начинающаяся в вершине a2. Результат конкатенации P0 и Pi обозначим через P0: P0 = = (a0, b0, a4,bi,ai,b2, a5,b3, a0, b4, a7, b5, a2, be, a4; a2,b7, a5; a2, b8,aii, bg, a3, bw, ae, bii,ai,bi2, a8,bi3,a3,bi4,a7). Непродолжимая цепь, начинающаяся в вершине a3: Pi = (a3,bi5,ag, bi6,ai). Выполним конкатенацию с P0, после чего в качестве заключительного шага выберем непродолжимую цепь Pi = (a3,bi7, ai0) и выполним её конкатенацию с P0. В результате получим кусочно-непрерывный путь в графе G: P = (b0,bi,... , bi7). Замечание 3. Естественным представляется вместо «просто» непродолжимой цепи рассматривать самую длинную цепь в графе. Однако, как отмечено выше, её построение затруднено NP-полнотой соответствующей задачи распознавания. Рис. 4. Двудольный граф G (а); кусочно-непрерывный путь P (б). Номера рёбер соответствуют порядку их следования в P аб 2.2. Жадный алгоритм интервальной раскраски Пусть в двудольном графе G = (V,E), V = (X,Y), |E| = m, |V| = n, построен кусочно-непрерывный путь P из последовательных рёбер ei = (vi,Wi), i = 0... ,m - 1. В прикладных задачах нередко требуется построить интервальную раскраску, удовлетворяющую дополнительному условию - все цвета принадлежат некоторому «допустимому» диапазону. Допустимый для раскрашивания рёбер диапазон цветов обозначим через [-t..t], где t - заданное натуральное число. Цвет ребра ei будем обозначать C[i], i = 0,... ,m - 1. Цвета всех раскрашенных рёбер, инцидентных вершине Vi, будем называть цветами, представленными в вершине v^ для их хранения используем список L[vi], i = 0,... ,n - 1. Предлагается раскрасить последовательные рёбра кусочно-непрерывного пути P цветами из допустимого диапазона так, чтобы в каждый момент времени для каждой вершины vi цвета, представленные в Vi, составляли (целочисленный) интервал. Алгоритм раскрашивания, обладающий таким свойством, будем называть жадным алгоритмом. Для заданного непустого целочисленного интервала цветов [a..b] = {a, a + 1,... , b} цвета из множества {а - 1,b + 1} П [-t..t] будем называть приграничными цветами; для пустого интервала приграничным цветом считается каждый цвет из допустимого диапазона. Для ребра ei = (vi,wi) через M1 =[min1..max1] и M2 = [min2..max2] будем обозначать интервалы цветов, представленных в вершинах vi и wi, Mi и M2 - множества цветов, приграничных для M1 и M2 соответственно. Из соображений краткости мы не будем снабжать эти обозначения индексом i, поскольку всюду в дальнейшем индекс i однозначно определяется из контекста. Утверждение 2. Пусть ребро ei = (vi,wi) не раскрашено. Для раскраски ребра ei в соответствии с жадным алгоритмом может быть выбран любой цвет из пересечения M1 П M2, и никакой другой. Доказательство. Справедливость утверждения следует из того, что жадный алгоритм сохраняет свойство интервальности как для цветов, представленных в вершине vi, так и для цветов, представленных в вершине wi. ■ Пусть заданный допустимый интервал [-t..t] достаточно большой, списки цветов L[vi] и L[wi], представленных в концевых вершинах ребра ei = (vi,wi), образуют непустые интервалы M1 и M2 соответственно. Цвет r Е M1 П M2, допустимый для раскрашивания ребра ei, может: 1) отсутствовать (например, при M1 = [1..2], M2 = = [5.. 10]); 2) определяться однозначно (например, r = 3 при M1 = [1..2], M2 = [4..5]); 3) принимать одно из двух значений (например, при M1 = M2 = [3..4] можно выбрать r = 2 или r = 5). Для формулировки алгоритма 2 нам понадобится способ перебора «состояний» поиска допустимого цвета для рассматриваемого ребра ei: 0,1,...; текущее состояние ребра ei = (vi,wi) будем обозначать qi; логическое условие, выражающее взаимное расположение интервалов M1 и M2 (и случаи, когда один или оба интервала M1 и M2 пусты), - pi[qi]; цвет, выбираемый для присвоения ребру ei в зависимости от pi[qi], - Ci [qi]. При принятом подходе количество таких «состояний» равно 9. Соотнесём каждому qi = 0,1,..., 8 соответствующие pi[qi] и ci[qi]. С п и с о к с о с т о я н и й Pi [0] = №i] = 0 & L[wi] = 0) ; Ci[0] = 0; Pi[1] = №i] = 0 & L[wi] = 0) & ( min2 > - t); Ci[1] = min2 - 1; Pi [2] = (L[vi] = 0 & L[wi] = 0) & ( max2 < t); Ci[2] = max2 + 1; Pi [3] = №i] = 0 & L[wi] = 0) & ( min1 > - t); Ci[3] = min1 - 1; Pi [4] = (L[vi] = 0 & L[wi] = 0) & ( max1 < t); Ci[4] = max1 + 1; Pi [5] = №i] = 0 & L[wi] = 0) & ( min1 > -t) & ( min1 = min2); Ci[5] = min1 - 1; Pi [6] = (L[vi] = 0 & L[wi] = 0) & ( max1 = max2) & ( max1 < t); Ci[6] = max1 + 1; Pi [7] = (L[vi] = 0) & L[wi] = 0) & ( max1 + 2 = min2); Ci[7] = max1 + 1; Pi [8] = №i] = 0) & L[wi] = 0) & ( max2 + 2 = min1); Ci[8] = max2 + 1; Например, для ребра ei = (vi, Wj) при qi = 8 условие pi[qi] означает, что списки цветов, представленных в вершинах vi и wi, не пусты, интервал M2 располагается на числовой оси левее интервала Mi, при этом наибольшее значение (тах2) из интервала M2 на 2 меньше наименьшего значения (mini) из интервала M1. Поэтому множество Mi П M22 цветов, приграничных как для Mi, так и для M2, содержит единственный элемент, равный тах2 + 1. Понятно, что он и выбирается в качестве цвета, присваиваемого ребру ei: ci[8] := тах2 + 1. В основе алгоритма 2 лежит идея перебора с возвратами. Каждая итерация цикла по раскрашиванию рёбер ej,(i = 0,...n - 1) состоит из двух шагов - прямого и возвратного. Прямой шаг включает действия по раскрашиванию ребра ei кусочно-непрерывного пути P с сохранением цветов предшествующих рёбер. Возвратный шаг выполняется, когда прямой шаг по раскрашиванию очередного ребра ei не увенчался успехом, и включает действия по изменению цветов некоторых рёбер, предшествующих ei, с целью подготовить условия для успешного раскрашивания ребра ei. Нумерация рёбер соответствует порядку их следования в кусочно-непрерывном пути P. Алгоритм 2 открывает перспективы для решения известной проблемы: верно ли, что любой двудольный граф с числом вершин n = 15,16,17,18 допускает интервальную раскраску? Известно [15], что при n < 15 ответ положителен, а при n > 18 - отрицателен. На рис. 5 представлена интервальная раскраска, сгенерированная алгоритмом 2 для двудольного графа рис. 4, а. Время счёта - приблизительно 2 мс на компьютере с характеристиками 2,5 ГГц, 8 Гб. Отметим, что первый возвратный шаг выполнен для ребра e7 = (x2,y1), а общее число возвратных шагов - 24. « У 5 •с Ув щу7 Рис. 5. Интервальная раскраска графа G - а; У, Л-т У 2 r t- Уз Алгоритм 2. Жадный алгоритм интервальной раскраски Вход: G = (V, E) - связный двудольный граф, |V| = n, |E| = m; кусочно-непрерывный путь P в графе G Выход: массив C[0..m - 1] для цветов рёбер и логическая переменная Success: Success = true, если интервальная раскраска получена, и Success = false в противном случае 1. Инициализация 1: Для k = 0,... , m - 1 выполнить: Qk := -1 2: Для k = 0, . . . , n - 1 выполнить: 3: L[vk] := 0 4: i := 0 2. Прямой шаг 5: Если Qi > 8, то переход к пункту Возвратный шаг. 6: Если L[vi] = 0, то 7: переменным min1 и max1 присвоить соответственно минимальное и максимальное значения списка L[vi]. 8: Если L[wi] = 0, то 9: переменным min2 и max2 присвоить соответственно минимальное и максимальное значения списка L[wi]. 10: Для k = qi + 1,... , 8 выполнить: 11: Если pi[k] = true, то переход к строке 13 12: переход к пункту Возвратный шаг. 13: C[i] := ci[k]; добавить C [i] в списки L[vi] и L[wi] 14: Если i < m - 1, то i := i + 1; переход к пункту Прямой шаг 15: иначе 16: Success := true; завершить алгоритм. 3. Возвратный шаг 17: Qi := -1; i := i - 1; 18: Если i = -1, то Success := false; завершить алгоритм. 19: Удалить C[i] из L[vi] и L[wi]; qi := qi + 1; переход к пункту Прямой шаг. Заключение Алгоритмы 1 и 2 воплощены в компьютерные программы, получены свидетельства о государственной регистрации в Реестре программ для ЭВМ (2016г.). Из п. 1.2 видно, что алгоритм иерархической сортировки вершин имеет фактически линейную вычислительную сложность относительно длины входа. Вычислительные трудности жадного алгоритма интервальной раскраски коренятся в NP-полноте задачи распознавания об интервальной рёберной раскрашиваемости двудольного графа. В худшем случае время работы данного алгоритма оценивается экспоненциально, однако компьютерные эксперименты подтверждают его эффективность для практической работы с графами, в которых число вершин не превышает 20.

Ключевые слова

расписание, граф, алгоритм, раскраска, сложность, schedule, graph, algorithm, colors, complexity

Авторы

ФИООрганизацияДополнительноE-mail
Магомедов Абдулкарим МагомедовичДагестанский государственный университетдоктор физико-математических наук, профессор, заведующий кафедрой дискретной математики и информатикиmagomedtagir1@yandex.ru
Всего: 1

Ссылки

Свами М., Тхуласираман К. Графы, сети и алгоритмы. М.: Мир, 1984. 455 с.
Асратян А. С., Камалян Р. Р. Интервальные раскраски ребер мультиграфа // Прикладная математика. Вып. 5. Ереван: Изд-во Ереванского ун-та, 1987. C. 25-34.
Танаев В. С., Сотсков Ю. Н., Струсевич В. А. Теория расписаний. Многостадийные системы. М.: Наука, 1989. 328 с.
Магомедов А. М. К вопросу об интервальной Д-раскраске двудольных графов // Автоматика и телемеханика. 2015. №1. С. 101-109.
Магомедов А. М., Магомедов Т. А. Реберно-вершинные инцидентные паросочетания в задачах расписаний // Прикладная дискретная математика. 2015. №1(27). С. 92-95.
Магомедов А. М., Магомедов Т. А. Последовательное разбиение ребер двудольного графа на паросочетания // Дискретная математика. 2016. Т. 28. Вып. 1. С. 78-86.
Емеличев В. А, Мельников О. И., Сарванов В. И., Тышкевич Р. И. Последовательное разбиение ребер двудольного графа на паросочетания. М.: Книжный дом «Либроком», 2009. 392 с.
Севастьянов С. В. Об интервальной раскрашиваемости ребер двудольного графа // Методы дискретного анализа. 1990. Т. 50. С. 61-72.
Камалян Р.Р. Интервальные раскраски полных двудольных графов и деревьев / Препринт ВЦ АН АрмССР. Ереван, 1989. 11c.
Гэри М., Джонсон Д. Вычислительные машины и труднорешаемые задачи. М.: Мир, 1982. 416 с.
Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. М.: Мир, 1979. 536 с.
Petersen J. Die Theorie der regularen Graphs // Acta Math. 1891. No. 15. P. 193-220.
Tucker A. Ch. 2. Covering Circuits and Graph Colorings // Appl. Combinat. 5th Ed. Hoboken: John Wiley & Sons, 2006. P. 49.
Lawler E. L. Combinatorial Optimization: Networks and Matroids. N. Y.: Holt, Rinehart and Winston, 1976.
Giaro K. Compact task scheduling on dedicated processors with no waiting period. PhD thesis. Technical University of Gdansk, IETI Faculty, Gdansk, 1999. (in Polish)
 Цепочечные структуры в задачах о расписаниях | ПДМ. 2016. № 3(33). DOI: 10.17223/20710410/33/5

Цепочечные структуры в задачах о расписаниях | ПДМ. 2016. № 3(33). DOI: 10.17223/20710410/33/5