No artigo de Dijkstra, "Humble Programmer" , ele menciona que deu a alguns voluntários um problema para resolver:
“Realizei um pequeno experimento de programação com voluntários realmente experientes, mas algo inesperado e inesperado apareceu. Nenhum dos meus voluntários encontrou a solução óbvia e mais elegante. Após uma análise mais minuciosa, isso acabou tendo uma fonte comum: a noção de repetição estava tão intimamente ligada à idéia de uma variável controlada associada a ser intensificada, que eles foram mentalmente impedidos de ver o óbvio. Suas soluções eram menos eficientes, desnecessariamente difíceis de entender e levaram muito tempo para encontrá-las. ”
Qual foi o problema que Dijkstra deu aos voluntários? Quais foram as soluções?
algorithms
history
user712092
fonte
fonte
Respostas:
O "problema dos filósofos do jantar" foi o problema apresentado.
Isso tem suas raízes em sistemas concorrentes e é uma pergunta típica da universidade apresentada ao discutir a simultaneidade.
Acredito que 4 ou 5 algoritmos "oficiais" foram desenvolvidos para resolver o problema, mas uma rápida pesquisa no google por "Problema dos filósofos de jantar" fornecerá a você uma variedade de resultados.
Para obter detalhes sobre este problema de Standford U, visite: http://academicearth.org/lectures/dining-philosopher-problem
O artigo da wikipedia está localizado em: http://en.wikipedia.org/wiki/Dining_philosophers_problem
Uma solução da MSDN Magizine está localizada em: http://msdn.microsoft.com/en-us/magazine/dd882512.aspx
Se você ler a versão original do documento nas notas de rodapé na página 866, declara: "Anais do Congresso IFIP 1965, 213-217." Soluções de um problema no controle de programação simultâneo. "
O problema na simultaneidade e nos recursos compartilhados é o "Problema dos filósofos do jantar". :-)
Espero que ajude.
fonte