Zastanawiałem się, dlaczego problem filozofów kulinarnych jest oparty na przypadku pięciu filozofów. Dlaczego nie cztery?
Wydaje mi się, że możemy obserwować wszystkie nieprzyjemne problemy, które mogą wystąpić podczas omawiania przykładu pięciu filozofów, także gdy mamy czterech myślicieli. Czy to tylko z powodów historycznych?
history
concurrency
falconepl
źródło
źródło
Odpowiedzi:
Zgodnie z tym, co napisano w EWD310 „Hierarchiczne porządkowanie procesów sekwencyjnych” , wygląda na to, że numer 5 został wybrany do celów edukacyjnych, aby ułatwić uczniom zrozumienie algorytmu zaprojektowanego w celu zademonstrowania rozwiązania problemu.
Ten sam artykuł dodatkowo popiera ideę, że 5 nie jest tak naprawdę istotny dla ogólnego problemu, po pierwsze, wyraźnie stwierdzając, że „problem mógł zostać postawiony dla 9 lub 25 filozofów ...”, a następnie, reprezentując go w kategoriach dwóch jednocześnie działających podmioty „klasy A i klasy B dzielące ten sam zasób ...”
Rozwiązanie zastosowane przez Dijkstrę wprowadza trzy „stany filozofa”: myślenie, jedzenie, głód. Kod przedstawiony w celu rozwiązania problemu obsługuje te trzy stany wraz z niepowiązaną z nim liczbą filozofów.
Gdyby autor wybrał liczbę filozofów 2, 3 lub 4, mogłoby to spowodować zamieszanie uczniów czytających kod, niezależnie od tego, czy wybrana liczba jest związana z ilością stanów, czy czymś innym. To może być łatwo testowane przez próby wymienione w opisie podane numery od EWD310 poniżej: uwaga na przykład jak by to zmienić
[0:4]
, aby[0:3]
,[0:2]
,[0:1]
i oświadczenia udziałemmod
.W przeciwieństwie do tego, numer 5 wygląda dość niewinnie i nie wywołuje niepotrzebnych skojarzeń. Można powiedzieć, że wybrano to, aby lepiej zilustrować, że liczba filozofów jest, cóż, arbitralna .
Wspomniany algorytm przedstawiono w EWD310 w następujący sposób:
źródło
Tylko Dijkstra może na pewno odpowiedzieć, ale byłbym pewien, że jest to arbitralne.
http://en.wikipedia.org/wiki/Dining_philosophers_problem
źródło
Bo to dziwne, nawet nie. Abyś nie próbował opracować algorytmu, który opiera się na symetrii lub tworzeniu par, i dopiero znacznie później zdajesz sobie sprawę, że to nie działa w ogólnym przypadku.
To jest opinia; Nie mam historycznej wiedzy o tym, co przyszło na myśl autorowi.
źródło