Мне было интересно, почему проблема обедающих философов основана на случае пяти философов. Почему не четыре?
Я полагаю, что мы можем наблюдать все неприятные проблемы, которые могут возникнуть при обсуждении примера с пятью философами, а также при наличии четырех мыслителей. Это только по исторической причине?
history
concurrency
falconepl
источник
источник
Ответы:
Согласно тому, что написано в EWD310 «Иерархическое упорядочение последовательных процессов» , похоже, что номер 5 был выбран для образовательных целей, чтобы облегчить студентам понимание алгоритма, предназначенного для демонстрации решения проблемы.
В этой самой статье далее поддерживается идея о том, что 5 на самом деле не имеет отношения к общей проблеме, во-первых, явно заявив, что «проблема могла быть поставлена для 9 или 25 философов ...», а затем, представив ее в виде двух одновременно работающих объекты "класс A и класс B, совместно использующие один и тот же ресурс ..."
Решение, используемое Дейкстрой, вводит три «состояния философа»: мышление, еда, голод. Код, представленный для решения проблемы, оперирует этими тремя состояниями вместе с не связанным с ним числом философов.
Если бы автор выбрал число философов 2, 3 или 4, это может вызвать замешательство у студентов, читающих код, независимо от того, связано ли выбранное число с количеством состояний или чем-то еще. Это можно легко проверить, попробовав указанные цифры в описании процитированных из EWD310 ниже ноты, например , как это изменило бы
[0:4]
к[0:3]
,[0:2]
,[0:1]
и заявление с участиемmod
.В отличие от этого, номер 5 выглядит довольно невинно и не вызывает ненужных ассоциаций. Можно сказать, что он был выбран, чтобы лучше проиллюстрировать, что количество философов произвольно .
Упомянутый алгоритм представлен в EWD310 следующим образом:
источник
Только Дейкстра может ответить наверняка, но я был бы достаточно уверен, что это произвольно.
http://en.wikipedia.org/wiki/Dining_philosophers_problem
источник
Потому что это странно, а не даже. Так что вы не пытаетесь придумать алгоритм, основанный на симметрии или формировании пар, и только намного позже поймете, что он не работает для общего случая.
Это мнение; У меня нет исторических знаний о том, что приходило в голову автору.
источник