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

Перейти к навигации Перейти к поиску
Строка 38: Строка 38:
  (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> ''всем''; % включая сам <nath>p_i</math> %
  (4)      ''отправить'' <math>(est_i)</math> ''всем''; % включая сам <math>p_i</math> %
  (5)      <math>est_i \gets min( \{ </math> значения <math>(est_i)</math>, полученные в ходе текущего раунда r});
  (5)      <math>est_i \gets min( \{ </math> значения <math>(est_i)</math>, полученные в ходе текущего раунда r});
  (6) '''end_round''';
  (6) '''end_round''';
Строка 47: Строка 47:




Отказы случаются, однако на практике они редки. Обозначим за f количество процессов, приводящих к аварийному завершению в данном прогоне алгоритма, 0 < f < t. Нас интересуют синхронные алгоритмы, которые завершаются максимум за <math>R_t</math> раундов в случае, когда на текущем прогоне аварийно завершаются t процессов, но которые позволяют безошибочным процессам выполнить вычисление за гораздо меньшее число раундов, если отказов мало. Такие алгоритмы называются алгоритмами с ранним принятием решений. В [ ] было показано, что при наличии f аварийных завершений процессов любой алгоритм согласования k множеств с ранним принятием решений имеет прогоны, на которых ни один процесс не принимает решение до раунда Rf = min(bkfc + 2; bktc + 1). Эта нижняя граница показывает неизбежно присущий им компромисс, устанавливающий связь между степенью координации k, максимальным количеством отказов процесса t, фактическим количеством отказов процесса f и наилучшей достижимой временной сложностью. Алгоритмы согласования k множеств с ранним принятием решений для синхронной модели можно найти в [4, 12].
Отказы случаются, однако на практике они редки. Обозначим за 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].




'''Другие модели возникновения отказов'''
'''Другие модели возникновения отказов'''


В модели с отказом из-за пропуска отправки процесс является сбойным, если он приводит к аварийному завершению или забывает отправить сообщения. В модели с отказом из-за любого пропуска процесс является сбойным, если он приводит к аварийному завершению или забывает отправить либо получить сообщения. (Отказ из-за пропуска отправки моделирует отказ выходного буфера, а отказ из-за пропуска получения – отказ входного буфера). Эти модели возникновения отказов были предложены в работе [ ].
В модели с отказом из-за пропуска отправки процесс является сбойным, если он приводит к аварийному завершению или забывает отправить сообщения. В модели с отказом из-за любого пропуска процесс является сбойным, если он приводит к аварийному завершению или забывает отправить либо получить сообщения. (Отказ из-за пропуска отправки моделирует отказ выходного буфера, а отказ из-за пропуска получения – отказ входного буфера). Эти модели возникновения отказов были предложены в работе [11].




Понятие сильного завершения для задач о согласовании множеств было введено в [13]. На интуитивном уровне понятно, что это свойство требует, чтобы как можно больше процессов вычислили решение. Назовем хорошим процесс, который не приводит к аварийному завершению и не имеет отказов из-за пропуска. Алгоритм согласования множеств имеет сильное завершение, если при его выполнении все хорошие процессы обязательно вычисляют решение. (Только те процессы, которые приходят к аварийному завершению во время выполнения алгоритма или не получают достаточно сообщений, могут остаться без вычисленного решения).
Понятие ''сильного'' завершения для задач о согласовании множеств было введено в [13]. На интуитивном уровне понятно, что это свойство требует, чтобы как можно больше процессов вычислили решение. Назовем ''хорошим'' процесс, который не приводит к аварийному завершению и не имеет отказов из-за пропуска. Алгоритм согласования множеств имеет сильное завершение, если при его выполнении все хорошие процессы обязательно вычисляют решение. (Только те процессы, которые приходят к аварийному завершению во время выполнения алгоритма или не получают достаточно сообщений, могут остаться без вычисленного решения).




Алгоритм согласования k множеств с ранним принятием решений для модели с отказом из-за любого пропуска был описан в [13]. Этот алгоритм, которому требуется t < n/2 времени, приводит хороший процесс к принятию решения и остановке максимум за Rf = min(bkfc + 2; bktc + 1) раундов. При этом процесс, который не является хорошим, выполняется не более Rf(not_good) = min(dkfe + 2, [|j + 1) раундов.
Алгоритм согласования 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> раундов.




Поскольку Rf является нижней границей для числа раундов в модели отказов с аварийным завершением, предыдущий алгоритм показывает, что это значение также является нижней границей для вычисления решения безошибочными процессами в более строгой модели с отказом из-за любого пропуска. Доказательство того, что Rf(not_good) представляет собой верхнюю границу числа раундов, которые должен выполнить процесс, не являющийся хорошим, пока не найдено.
Поскольку <math>R_f</math> является нижней границей для числа раундов в модели отказов с аварийным завершением, предыдущий алгоритм показывает, что это значение также является нижней границей для вычисления решения безошибочными процессами в более строгой модели с отказом из-за любого пропуска. Доказательство того, что <math>R_f(not_ good)</math> представляет собой верхнюю границу числа раундов, которые должен выполнить процесс, не являющийся хорошим, пока не найдено.




В [ ] было показано, что для заданной степени координации k,t< kk+1 n является верхней границей числа отказов процессов в случае, когда требуется решить задачу о согласовании k наборов в синхронной системе, подверженной отказам из-за любого пропуска. Алгоритм согласования k множеств, реализующий эту границу, был описан в работе [ ]. Этот алгоритм требует, чтобы процессы выполнили R = t + 2 - k раундов перед вычислением решения. Доказательство (или опровержение) того, что R является нижней границей, когда t < k+1k n, по-прежнему является открытым вопросом. Еще одной нерешенной задачей является алгоритм согласования k множеств с ранним принятием решений для t < -^ n и k > 1.
В [13] было показано, что для заданной степени координации k,t< kk+1 n является верхней границей числа отказов процессов в случае, когда требуется решить задачу о согласовании k наборов в синхронной системе, подверженной отказам из-за любого пропуска. Алгоритм согласования k множеств, реализующий эту границу, был описан в работе [ ]. Этот алгоритм требует, чтобы процессы выполнили R = t + 2 - k раундов перед вычислением решения. Доказательство (или опровержение) того, что R является нижней границей, когда t < k+1k n, по-прежнему является открытым вопросом. Еще одной нерешенной задачей является алгоритм согласования k множеств с ранним принятием решений для t < -^ n и k > 1.




4551

правка

Навигация