Изменения

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

Невозможность византийского консенсуса

2104 байта добавлено, 19:14, 3 июня 2019
Новая страница: «Можно доказать, например, что при ''n'' = 3, ''f'' = 1 консенсус Проблема византийских генерало…»
Можно доказать, например, что при ''n'' = 3, ''f'' = 1 консенсус [[Проблема византийских генералов|византийских генералов]] невозможен.

Доказательство от Елизарова:

Пусть каждому процессу подаётся число 0 или 1 на вход(могут быть разными на разных процессах). Задача - прийти к нетривиальному консенсусу всем работающим процессам на одном значении, которое было дано на вход хотя бы одному работающему процессу. (Сильный консенсус)

[[Файл:byzantine.png|frame|right]] Предположим обратное. Пусть существует алгоритм консенсуса. Тогда расставим 4 ноды с этим алгоритмом, подадим верхним на вход 0, и нижним = 1.

Тогда если считать 2 верхних процесса рабочими, а 2 нижних - одним сбойным, верхние обязаны прийти к консенсусу на 0. Аналогично, если считать 2 нижних процесса рабочими, а 2 верхних - одним сбойным - нижние приходят к консенсусу на 1.

И если мы считаем рабочими 2 правых, а 2 левых - одним сбойным(ведущим себя как пара из верхнего рабочего и нижнего рабочего) - то верхний правый придет к консенсусу на 0 вместе с воображаемым верхним соседом, а нижний правый - к консенсусу на 1 с воображаемым нижним соседом. Fail.

Поэтому такого алгоритма нет, и консенсус при N=3 и f=1 невозможен.
292
правки

Навигация