Недавно я читал много статей о византийской отказоустойчивости. Существует общее доказательство того, что 3m + 1 компьютеров необходимы для обработки византийских ошибок. Общее доказательство идет что-то вроде этого:Почему простое трехстороннее большинство голосов не решает византийских ошибок?
Есть три «генералов»: A, B и C. Предположим, генералы общаться, как это, где С «предателем»:
A --> B "Attack", A --> C "Attack"
B --> A "Attack", B --> C "Attack"
C --> A "Attack", C --> B "Retreat"
A receives "Attack" from both sources, and will attack.
B receives "Attack" from A but "Retreat" from C and doesn't know what to do.
C is a traitor, so his action could be anything.
Таким образом, мы не можем гарантировать, что большинство участников достигнет консенсуса.
Я как бы понимаю это доказательство, но, похоже, не хватает главного момента. Не делайте A, B и C также свой собственный внутренний расчет, что делать? Поскольку A & B являются «лояльными» генералами здесь, кажется, что «правильное» действие - атаковать. Разве не разрешено учитывать его собственные расчеты при принятии решения о том, что делать? В этом случае он мог бы легко сломать связь между конфликтующими входами A & C и принять решение атаковать. Затем, как A & B атаки, и мы решаем проблему. Это другая проблема, чем проблема классических византийских генералов?
Ну, я всегда вижу проблему, сведенную к этим проблемам «командиров и лейтенантов», но я не вижу, как это очевидно. В исходной задаче Византийских генералов каждый генерал «наблюдает» за городом и решает, атаковать ли. Разве они не формулируют свою собственную независимую идею о том, атаковать ли? В этом случае им просто нужен еще один генерал, чтобы согласиться с ними. Сокращение до «командирской общей» проблемы для меня не имеет смысла. –
Таким образом, вы можете убедиться, что большинство генералов атакуют, но не все лояльные общие атаки. Это более очевидно для больших примеров. –