Skip to content

Trabalho desenvolvido para a disciplina SI220 - Matemática Discreta

Notifications You must be signed in to change notification settings

Smoow/two_generals_problem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

two_generals_problem

Trabalho desenvolvido para a disciplina SI220 - Matemática Discreta

Consiste em uma adaptação do conhecido problema, na computação, "Two Generals' Problem" - ou "Problema dos Dois Generais"


Enunciado (íntegra):
  Há dois exércitos tentando atacar um castelo no centro de uma planície. 
  O exército azul está ao sul e o exército vermelho está ao norte. 
  A única possibilidade de vitória para os dois exércitos sobre o castelo é se eles atacarem ao mesmo tempo.
  Para isso, eles precisam sincronizar um horário para o ataque.

  O exército vermelho comanda o exército azul, então ele deve enviar o primeiro mensageiro definindo a hora do ataque.
  O exército vermelho dispõe de um sinalizador.
  Ficou combinado entre os exércitos que: 
    quando o exército vermelho recebesse o mensageiro do exército azul confirmando o horário,
    esse sinalizador seria disparado confirmando o ataque.

  O exército Azul tem 1% de chance de impossibilitar o horário, levando o exército azul a enviar um mensageiro para solicitar
  um novo horário para o exército vermelho (quando o exercito vermelho receber o mensageiro do azul ele irá disparar o sinalizador,
  então volta pro vermelho de novo).

  O mensageiro demora entre 60~70 minutos (3600 segundos~4200 segundos) para atravessar o campo para enviar a mensagem.
  O castelo captura cerca de 45% dos mensageiros.

  Se após 210 minutos e 1 segundo (12601 segundos) do envio do primeiro mensageiro do exército vermelho 
  o mensageiro do exército azul não chegar ao exército vermelho, declara-se que o mensageiro enviado anteriormente morreu e
  é enviado outro.

  *IMPORTANTE:* Se o mensageiro do exército vermelho não morreu, quer dizer que os últimos 3 mensageiros do exército azul morreram, 
  logo há uma chance de que o quarto mensageiro do exército azul chegue no exército vermelho ao mesmo tempo que o do vermelho chegue 
  no azul. Se o exército vermelho ainda não tiver disparado o sinalizador quando o novo mensageiro chegar o exército azul deve enviar outro mensageiro.

  Quando o Sinalizador for disparado (sem ser na impossibilidade) não há necessidade de enviar novos mensageiros.
  Se após 70 minutos e 1 segundo (4201 segundos) do envio do mensageiro do exército azul não for observado o disparo do sinalizador ou 
  não receber um novo mensageiro definindo um novo horário, o exército azul declara que o ultimo mensageiro morreu e deve enviar um novo.

  Cada exército só pode enviar um mensageiro por vez.
  O exército vermelho dispõe de 5 mensageiros, e o azul dispõe de 10 mensageiros;
  Se esgotar o número de mensageiros de um exército antes do sinalizador ter sido disparado o exército perde.

  Observações: O seu algoritmo deve exibir a timestamp[1] de início da troca de mensagens, e a suposta timestamp de termino da 
  troca de mensagens (Adicione os valores da viagem dos mensageiros)
  O algoritmo deve exibir quanto tempo demorou a troca de mensagens(hh:mm:ss), quantos mensageiros foram utilizados de cada 
  exército e se o exército perdeu a batalha.
  Deve-se utilizar um gerador randômico para o tempo de travessia do mensageiro, para a possibilidade de o castelo capturar um mensageiro e 
  para a possibilidade do exército azul impossibilitar o horário escolhido pelo exército vermelho.

About

Trabalho desenvolvido para a disciplina SI220 - Matemática Discreta

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages