Je me demandais pourquoi le problème des philosophes de la restauration est basé sur un cas de cinq philosophes. Pourquoi pas quatre?
Je suppose que nous pouvons observer tous les problèmes désagréables qui peuvent survenir lorsque nous discutons de l'exemple de cinq philosophes également lorsque nous avons quatre penseurs. Est-ce alors uniquement pour une raison historique?
history
concurrency
falconepl
la source
la source
Réponses:
Selon ce qui est écrit dans EWD310 "Ordre hiérarchique des processus séquentiels" , il semble que le numéro 5 ait été choisi à des fins éducatives, afin de faciliter la compréhension par les élèves de l'algorithme conçu pour démontrer la solution du problème.
Ce même article soutient en outre l'idée que 5 n'est pas vraiment pertinent pour un problème général, d'abord en déclarant explicitement que "le problème aurait pu être posé pour 9 ou 25 philosophes ..." et ensuite, en le représentant en termes de deux fonctionnant simultanément entités, "classe A et classe B, partageant la même ressource ..."
La solution utilisée par Dijkstra introduit trois "états de philosophe": penser, manger, faim. Le code présenté pour résoudre le problème, exploite ces trois états, ainsi qu'un nombre sans rapport avec lui de philosophes.
Si l'auteur a choisi le nombre de philosophes 2, 3 ou 4, cela pourrait causer de la confusion aux étudiants qui lisent le code, que le nombre choisi soit lié à la quantité d'états ou à autre chose. Cela peut facilement être testé en essayant numéros mentionnés dans la description ci - dessous cités de EWD310: Note par exemple , comment cela changerait
[0:4]
à[0:3]
,[0:2]
,[0:1]
et les déclarations concernantmod
.Par opposition à cela, le numéro 5 semble assez innocent et n'invoque pas d'associations inutiles. On peut dire qu'il a été choisi pour mieux illustrer cette quantité de philosophes est bien arbitraire .
L'algorithme mentionné est présenté dans EWD310 comme suit:
la source
Seul Dijkstra peut répondre avec certitude, mais je serais suffisamment confiant que c'est arbitraire.
http://en.wikipedia.org/wiki/Dining_philosophers_problem
la source
Parce que c'est bizarre, pas même. Pour que vous n'essayiez pas de concevoir un algorithme qui repose sur la symétrie ou la formation de paires, et que vous vous rendez compte beaucoup plus tard que cela ne fonctionne pas pour le cas général.
Ceci est une opinion; Je n'ai aucune connaissance historique de ce qui a traversé l'esprit de l'auteur.
la source