4551
правка
Irina (обсуждение | вклад) |
Irina (обсуждение | вклад) |
||
Строка 34: | Строка 34: | ||
== Основные результаты == | == Основные результаты == | ||
Задача согласования k множеств всегда может быть решена в синхронной системе. Основной результат заключается в определении минимального числа раундов (<math>R_t</math>), | Задача согласования k множеств всегда может быть решена в синхронной системе. Основной результат заключается в определении минимального числа раундов (<math>R_t</math>), которое требуется безошибочным процессам для вычислений в наихудшем сценарии (такой сценарий имеет место, когда в каждом раунде ровно k процессов приходят к аварийному завершению). В работе [3] было показано, что <math>R_t = \lfloor \frac{t}{k} \rfloor + 1</math>. Очень простой алгоритм, реализующий эту нижнюю границу, изображен на рис. 1. | ||
'''Function''' k-set_agreement(<math>v_i</math>) | '''Function''' k-set_agreement(<math>v_i</math>) | ||
Строка 40: | Строка 40: | ||
(2) '''when''' <math>r = 1, 2, ..., \lfloor \frac{t}{k} \rfloor + 1</math> '''do''' % r: номер раунда % | (2) '''when''' <math>r = 1, 2, ..., \lfloor \frac{t}{k} \rfloor + 1</math> '''do''' % r: номер раунда % | ||
(3) '''begin_round''' | (3) '''begin_round''' | ||
(4) ''отправить'' <math>(est_i)</math> ''всем''; % включая | (4) ''отправить'' <math>(est_i)</math> ''всем''; % включая само <math>p_i</math> % | ||
(5) <math>est_i \gets min( \{ </math> значения <math>( | (5) <math>est_i \gets min( \{ </math> значения <math>(est_j)</math>, принятые в ходе текущего раунда r}); | ||
(6) '''end_round'''; | (6) '''end_round'''; | ||
(7) ''возврат'' <math>(est_i)</math> | (7) ''возврат'' <math>(est_i)</math> | ||
Строка 49: | Строка 49: | ||
Отказы случаются, однако на практике они редки. Обозначим за f количество процессов, | Отказы случаются, однако на практике они редки. Обозначим за f количество процессов, приходящих к аварийному завершению в данном прогоне алгоритма, <math>0 \le f \le t</math>. Нас интересуют синхронные алгоритмы, которые завершаются максимум за <math>R_t</math> раундов в случае, когда на текущем прогоне аварийно завершаются t процессов, но которые позволяют безошибочным процессам выполнить вычисление за гораздо меньшее число раундов, если отказов мало. Такие алгоритмы называются ''алгоритмами с ранним вычислением решений''. В [4] было показано, что при наличии f аварийных завершений процессов любой алгоритм согласования k множеств с ранним вычислением решений имеет прогоны, на которых ни один процесс не вычисляет решение до раунда <math>R_f = min(\lfloor \frac{f}{k} \rfloor + 2, \lfloor \frac{t}{k} \rfloor + 1)</math>. Эта нижняя граница показывает неизбежно присущий им компромисс, устанавливающий связь между степенью координации k, максимальным количеством отказов процесса t, фактическим количеством отказов процесса f и наилучшей достижимой временной сложностью. Алгоритмы согласования k множеств с ранним вычислением решений для синхронной модели можно найти в [4, 12]. | ||
Строка 60: | Строка 60: | ||
Алгоритм согласования k множеств с ранним | Алгоритм согласования k множеств с ранним вычислением решений для модели с отказом из-за любого пропуска был описан в [13]. Этот алгоритм, которому требуется t < n/2 времени, приводит хороший процесс к вычислению решения и остановке максимум за <math>R_f = min(\lfloor \frac{f}{k} \rfloor + 2, \lfloor \frac{t}{k} \rfloor + 1)</math> раундов. При этом процесс, который не является хорошим, выполняется не более <math>R_f(not good) = min(\lceil \frac{f}{k} \rceil + 2, \lceil \frac{t}{k} \rceil + 1)</math> раундов. | ||
Строка 66: | Строка 66: | ||
В [13] было показано, что для заданной степени координации k Значение <math>t < \frac{k}{k+1} n</math> является верхней границей числа отказов процессов в случае, когда требуется решить задачу о согласовании k наборов в синхронной системе, подверженной отказам из-за любого пропуска. Алгоритм согласования k множеств, реализующий эту границу, был описан в работе [13]. Этот алгоритм требует, чтобы процессы выполнили R = t + 2 - k раундов перед вычислением решения. Доказательство (или опровержение) того, что R является нижней границей, когда <math>t < \frac{k}{k+1} n</math>, по-прежнему является открытым вопросом. Еще одной нерешенной задачей является алгоритм согласования k множеств с ранним | В [13] было показано, что для заданной степени координации k Значение <math>t < \frac{k}{k+1} n</math> является верхней границей числа отказов процессов в случае, когда требуется решить задачу о согласовании k наборов в синхронной системе, подверженной отказам из-за любого пропуска. Алгоритм согласования k множеств, реализующий эту границу, был описан в работе [13]. Этот алгоритм требует, чтобы процессы выполнили R = t + 2 - k раундов перед вычислением решения. Доказательство (или опровержение) того, что R является нижней границей, когда <math>t < \frac{k}{k+1} n</math>, по-прежнему является открытым вопросом. Еще одной нерешенной задачей является алгоритм согласования k множеств с ранним вычислением решений для <math>t < \frac{k}{k+1} n</math> и k > 1. | ||
правка