Qual é o problema dos filósofos do jantar?
O problema dos filósofos gastronômicos é um experimento mental ou exemplo usado no campo da ciência da computação. O problema usa uma analogia para ilustrar os problemas de sincronização que podem surgir quando os computadores compartilham recursos. Os cientistas da computação usam os problemas dos filósofos do jantar para ensinar aos alunos os algoritmos usados para resolver esses problemas.
O cenário do problema dos filósofos do jantar é uma mesa circular na qual cinco filósofos estão sentados. No centro da mesa há uma tigela de macarrão ou outro alimento. Cada filósofo tem um garfo ou pauzinho de cada lado, significando que existem cinco garfos ou pauzinhos no total. Para comer, um filósofo precisa de dois utensílios. Cada filósofo também tem que gastar algum tempo pensando, e não pode pensar e comer ao mesmo tempo. O cerne do problema dos filósofos do jantar é a dificuldade de evitar um impasse.
O impasse nesse problema ocorre quando os filósofos se colocam em uma posição em que não conseguem pensar nem comer. Por exemplo, se cada filósofo pegasse o utensílio à sua esquerda, ninguém seria capaz de comer, porque todos os utensílios estariam em uso, mas nenhum filósofo teria dois. Para permitir que todos os filósofos comam, o aluno deve criar um algoritmo que garanta que alguns filósofos estejam comendo enquanto outros estão pensando. Isso permite que comer e pensar continuar sem parar.
Existem várias soluções possíveis para o problema dos filósofos do jantar. Uma solução envolve a criação de um sexto personagem, o garçom, que dá ou nega permissão aos filósofos para pegar seus garfos. Outros envolvem regular a ordem em que os filósofos pegam e largam seus garfos para maximizar a disponibilidade. Outros envolvem dizer aos filósofos para verificar se seus vizinhos estão comendo antes de tentar comer. Em essência, cada solução envolve o desenvolvimento de um conjunto de regras, chamado algoritmo, que governa quando os filósofos pensam, comem ou pegam e largam seus utensílios.
O problema dos filósofos gastronômicos foi expresso pela primeira vez pelo cientista holandês Edsger Dijkstra, em 1965, como uma pergunta para os alunos. Desde então, o problema passou por várias alterações. Ele aparece em vários formatos ligeiramente diferentes, alguns dos quais alteram apenas os detalhes da história, mas outros que propõem limitações adicionais ao problema para demonstrar conceitos difíceis. A versão moderna mais comum foi criada por Tony Hoare.