Балансировка нагрузки: различия между версиями

Перейти к навигации Перейти к поиску
Строка 26: Строка 26:
'''Идентичные машины'''
'''Идентичные машины'''


Примечательно, что хорошо известный алгоритм Грэма [15], LIST SCHEDULING, который определен для идентичных машин, пригоден как для временных, так и для постоянных задач. Этот алгоритм жадным образом назначает новое задание наименее загруженной машине. Коэффициент конкурентоспособности этого алгоритма составляет 2 - 1/м, что является наилучшим возможным значением (см. [ ]). Отметим, что коэффициент конкурентоспособности здесь тот же, что и для постоянных задач, однако для постоянных задач можно достичь коэффициента конкурентоспособности, который не стремится к 2 для больших m – см., например, [11].
Примечательно, что хорошо известный алгоритм Грэма [15], LIST SCHEDULING, который определен для идентичных машин, пригоден как для временных, так и для постоянных задач. Этот алгоритм жадным образом назначает новое задание наименее загруженной машине. Коэффициент конкурентоспособности этого алгоритма составляет 2 - 1/m, что является наилучшим возможным значением (см. [5]). Отметим, что коэффициент конкурентоспособности здесь тот же, что и для постоянных задач, однако для постоянных задач можно достичь коэффициента конкурентоспособности, который не стремится к 2 для больших m – см., например, [11].




'''Равномерно связанные машины'''
'''Равномерно связанные машины'''


Для равномерно связанных машин ситуация не слишком отличается. В этом случае алгоритмы Аспнеса и др. [3], а также Бермана и др. [ ] не могут применяться в исходном виде и требуют определенных модификаций. Алгоритм Азара и др. [7] имеет коэффициент конкурентоспособности не выше 20; он основан на общем методе, предложенном в [ ]. Алгоритм в работе [3] сохраняет предполагаемое значение Я, которое является оценкой стоимости оптимального оффлайнового алгоритма OPT. Инвариантом, который необходимо сохранить, является Я < 2OPT. На каждом шаге процедура применяется для некоторого значения Я (которое может быть инициализировано как загрузка первого задания на самой быстрой машине). Процедура для заданного значения Я применяется до тех пор, пока она не завершится неудачей, т.е. некоторое задание не может быть назначено, несмотря на выполнение всех условий. Процедура спроектирована таким образом, что в случае, когда она завершается неудачей, а это должно быть при ОПТ > Я, значение Я удваивается, и процедура повторяется для нового значения, игнорируя все назначения, выполненные для малых значений Я. Этот подход называется методом удвоения, в результате чего получается алгоритм с коэффициентом конкурентоспособности, который не более чем четыре раза превышает коэффициент конкурентоспособности, достигнутый процедурой. Процедура для заданного Я действует следующим образом. Пусть будет целевым коэффициентом конкурентоспособности для процедуры будет c. Машины сортируются по их скорости. Каждое задание назначается первой машине согласно порядку сортировки, такой, что задание может быть ей назначено. Задание j, поступающее в момент времени t, может быть назначено машине i, если pj/si < Я and l)~l + pj/si < cX. В работе [ ] было показано, что c = 5 позволяет алгоритму успешно назначать все задания (т. е. иметь хотя бы одну допускающую назначение машину для каждого задания), до тех пор, пока OPT < Я. Заметим, что константа c для постоянных задач, используемая в [ ], равна 2. Что касается нижних границ, то в [ ] было показано, что коэффициент конкурентоспособности R любого алгоритма удовлетворяет условию R > 3 - o(1). Верхнюю границу до значения 6 + 2 p5 улучшили Бар-Ной и др. [9].  
Для равномерно связанных машин ситуация не слишком отличается. В этом случае алгоритмы Аспнеса и др. [3], а также Бермана и др. [12] не могут применяться в исходном виде и требуют определенных модификаций. Алгоритм Азара и др. [7] имеет коэффициент конкурентоспособности не выше 20; он основан на общем методе, предложенном в [3]. Алгоритм в работе [3] сохраняет предполагаемое значение <math>\lambda</math>, которое является оценкой стоимости оптимального оффлайнового алгоритма OPT. Инвариантом, который необходимо сохранить, является <math>\lambda \le 2 OPT</math>. На каждом шаге процедура применяется для некоторого значения <math>\lambda</math> (которое может быть инициализировано как загрузка первого задания на самой быстрой машине). Процедура для заданного значения <math>\lambda</math> применяется до тех пор, пока она не завершится неудачей, т. е. некоторое задание не может быть назначено, несмотря на выполнение всех условий. Процедура спроектирована таким образом, что в случае, когда она завершается неудачей, а это должно быть при <math>OPT > \lambda</math>, значение <math>\lambda</math> удваивается, и процедура повторяется для нового значения, игнорируя все назначения, выполненные для малых значений <math>\lambda</math>. Этот подход называется методом удвоения, в результате чего получается алгоритм с коэффициентом конкурентоспособности, который не более чем четыре раза превышает коэффициент конкурентоспособности, достигнутый процедурой. Процедура для заданного <math>\lambda</math> действует следующим образом. Пусть будет целевым коэффициентом конкурентоспособности для процедуры будет c. Машины сортируются по их скорости. Каждое задание назначается первой машине согласно порядку сортировки, такой, что задание может быть ей назначено. Задание j, поступающее в момент времени t, может быть назначено машине i, если <math>p_j / s_i \le \lambda</math> и <math>L^{t - 1}_i + p_j / s_i \le c \lambda</math>. В работе [7] было показано, что c = 5 позволяет алгоритму успешно назначать все задания (т. е. иметь хотя бы одну допускающую назначение машину для каждого задания), до тех пор, пока <math>OPT \le \lambda</math>. Заметим, что константа c для постоянных задач, используемая в [3], равна 2. Что касается нижних границ, то в [7] было показано, что коэффициент конкурентоспособности <math>\mathcal{R}</math> любого алгоритма удовлетворяет условию <math>\mathcal{R} \ge 3 - o(1)</math>. Верхнюю границу до значения <math>6 + 2 \sqrt{5} \approx 10.47</math> улучшили Бар-Ной и др. [9].  
   
   


4551

правка

Навигация