Fiquei me perguntando por que o problema dos filósofos de jantar é baseado em um caso de cinco filósofos. Por que não quatro?
Eu acho que podemos observar todas as questões desagradáveis que podem ocorrer quando discutimos o exemplo de cinco filósofos também quando recebemos quatro pensadores. É apenas por uma razão histórica, então?
history
concurrency
falconepl
fonte
fonte
Respostas:
De acordo com o que está escrito no EWD310 "Pedido hierárquico de processos sequenciais" , parece que o número 5 foi escolhido para fins educacionais, a fim de facilitar aos alunos o entendimento do algoritmo projetado para demonstrar a solução do problema.
Este mesmo artigo apóia ainda mais a idéia de que 5 não é realmente relevante para o problema geral, primeiro declarando explicitamente que "o problema poderia ter sido colocado para 9 ou 25 filósofos ..." e depois representando-o em termos de duas operações simultâneas. entidades " , classe A e classe B, compartilhando o mesmo recurso ..."
A solução usada por Dijkstra introduz três "estados do filósofo": pensando, comendo, com fome. O código apresentado para resolver o problema opera esses três estados, juntamente com um número não relacionado a ele de filósofos.
Se o autor tivesse escolhido o número de filósofos 2, 3 ou 4, isso poderia causar confusão para os alunos que lêem o código, se o número escolhido está relacionado à quantidade de estados ou a qualquer outra coisa. Isso pode ser facilmente testado por tentando números mencionados na descrição citadas de EWD310 abaixo: nota, por exemplo, como isso mudaria
[0:4]
a[0:3]
,[0:2]
,[0:1]
e declarações envolvendomod
.Ao contrário, o número 5 parece bastante inocente e não invoca associações desnecessárias. Pode-se dizer que foi escolhido para ilustrar melhor que a quantidade de filósofos é, bem, arbitrária .
O algoritmo mencionado é apresentado no EWD310 da seguinte maneira:
fonte
Apenas Dijkstra pode responder com certeza, mas eu ficaria confiante o suficiente para que seja arbitrário.
http://en.wikipedia.org/wiki/Dining_philosophers_problem
fonte
Porque é estranho, nem par. Para que você não tente criar um algoritmo que se baseia na simetria ou na formação de pares, e só muito mais tarde perceba que não funciona no caso geral.
Esta é uma opinião; Não tenho conhecimento histórico do que passou pela cabeça do autor.
fonte