Skip to content

Instantly share code, notes, and snippets.

@andersonFaro9
Last active December 17, 2015 11:19
Show Gist options
  • Save andersonFaro9/5601114 to your computer and use it in GitHub Desktop.
Save andersonFaro9/5601114 to your computer and use it in GitHub Desktop.
Problema dos Generais Bizantinos
***********************************************
Problema dos Generais Bizantinos:
        - Generais cercam uma cidade com suas tropas.
        - Generais estão separados pelo relevo, somente podem
se comunicar através de mensageiros.
        - Generais só vencem se todos atacarem ao mesmo tempo.
Teoremas:
        1º - Se 2/3 + 1 dos generais (processos) forem leais (não falharem),
existe uma solução (algoritmo) que resultará numa ação comum, independente de possíveis
mensagens enviadas pelos traidores.
        2º - Se 1/3 ou mais dos generais (processos) forem traidores (falharem),
não existe solução para este problema.
***********************************************
//Classe General
package teste;
public class General
{
public void calcular()
{
int lealdade = 1;
if((lealdade/3 * 2 + 1 > 0))
System.out.println("Processo leal...");
}
}
//Classe traidor
package teste;
public class Traidor
{
public void calcular()
{
int traicao = 0;
if((traicao/3 * 2 + 1 > 1))
System.out.println("Processo desleal...");
}
}
//Classe Main, responsável por executar
package teste;
public class Main
{
/**
* @param args
*/
public static void main(String[] args)
{
General general = new General();
general.calcular();
Traidor traidor = new Traidor();
traidor.calcular();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment