Ich habe mich gefragt, warum das Problem der Essensphilosophen auf einem Fall mit fünf Philosophen beruht. Warum nicht vier?
Ich denke, wir können alle unangenehmen Probleme beobachten, die auftreten können, wenn wir beispielsweise fünf Philosophen diskutieren, auch wenn wir vier Denker haben. Ist es dann nur aus einem historischen Grund?
history
concurrency
falconepl
quelle
quelle
Antworten:
Laut EWD310 "Hierarchical Ordering of Sequential Processes" ( Hierarchische Reihenfolge der sequentiellen Prozesse) wurde Nummer 5 für Bildungszwecke ausgewählt, um es den Schülern zu erleichtern, Algorithmen zu verstehen, mit denen die Lösung des Problems demonstriert werden soll.
Dieser Artikel stützt ferner die Idee, dass 5 für das allgemeine Problem nicht wirklich relevant ist, indem er zum einen explizit angibt, dass das Problem für 9 oder 25 Philosophen gestellt worden sein könnte, und zum anderen, indem er es in Form von zwei gleichzeitig operierenden Problemen darstellt Entitäten, "Klasse A und Klasse B, teilen sich die gleiche Ressource ..."
Die von Dijkstra verwendete Lösung führt drei "Zustände des Philosophen" ein: Denken, Essen, Hunger. Der zur Lösung des Problems vorgestellte Code verwaltet diese drei Zustände zusammen mit einer damit nicht verbundenen Anzahl von Philosophen.
Wenn der Autor die Anzahl der Philosophen 2, 3 oder 4 gewählt hat, kann dies zu Verwirrung bei den Schülern führen, die den Code lesen, unabhängig davon, ob die gewählte Anzahl mit der Anzahl der Zustände oder etwas anderem zusammenhängt. Dies kann leicht durch Versuch genannten Zahlen in der Beschreibung von EWD310 unten angegebenen getestet werden: Anmerkung zum Beispiel , wie sich dies ändern würde
[0:4]
auf[0:3]
,[0:2]
,[0:1]
und Aussagen , welchemod
.Im Gegensatz dazu sieht Nummer 5 ziemlich unschuldig aus und ruft keine unnötigen Assoziationen hervor. Man kann sagen, dass es gewählt wurde, um besser zu veranschaulichen, dass die Anzahl der Philosophen willkürlich ist .
Der erwähnte Algorithmus wird in EWD310 wie folgt dargestellt:
quelle
Nur Dijkstra kann mit Sicherheit antworten, aber ich wäre zuversichtlich, dass es willkürlich ist.
http://en.wikipedia.org/wiki/Dining_philosophers_problem
quelle
Weil es seltsam ist, nicht gerade. Damit Sie nicht versuchen, einen Algorithmus zu entwickeln, der auf Symmetrie oder Paarbildung beruht, und erst viel später feststellen, dass er für den allgemeinen Fall nicht funktioniert.
Dies ist eine Meinung; Ich habe keine historischen Kenntnisse darüber, was dem Autor in den Sinn gekommen ist.
quelle