Last active
December 17, 2015 11:19
-
-
Save andersonFaro9/5601114 to your computer and use it in GitHub Desktop.
Problema dos Generais Bizantinos
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
*********************************************** | |
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