Mengapa lima filsuf makan?


18

Saya bertanya-tanya mengapa masalah filsuf Makan didasarkan pada kasus lima filsuf. Kenapa tidak empat?

Saya kira kita bisa mengamati semua masalah tidak menyenangkan yang dapat terjadi ketika membahas lima filsuf, contohnya juga ketika kita diberi empat pemikir. Apakah itu hanya karena alasan historis?


1
Masalah aslinya dideskripsikan oleh Dijkstra pada tahun 1965 dan dinamakan Dining Quintuple (ditemukan dalam catatan di bagian atas halaman 3).

Sepertinya saya ingat belajar aobut empat filsuf makan ...
Michael Borgwardt

16
Ini 5 filsuf karena dia mencoba untuk melihat apakah ada orang yang akan memperhatikan yang jelas; 5 filsuf bersama akan berbicara sampai restoran menendang mereka, mereka bahkan tidak akan pernah mengambil perak mereka. 4 mungkin memiliki istirahat dalam percakapan yang cukup lama bagi mereka untuk mulai makan. Dengan 5 segera setelah dua berhenti bicara sejenak, sudah ada satu dalam antrian menunggu untuk menyela untuk memastikan kontinuitas.
Jimmy Hoffa

1
@Jimmy Hoffa - +1 Dan mengapa itu tidak menjawab?
SChepurin

Jawaban:


17

Per apa yang tertulis dalam EWD310 "Hierarchical Ordering of Sequences Processes" , sepertinya nomor 5 telah dipilih untuk tujuan pendidikan, untuk memudahkan siswa memahami algoritma yang dirancang untuk menunjukkan solusi dari masalah.

Makalah ini lebih jauh mendukung gagasan bahwa 5 tidak benar-benar relevan dengan masalah umum, pertama dengan secara eksplisit menyatakan bahwa "masalahnya bisa diajukan untuk 9 atau 25 filsuf ..." dan selanjutnya, dengan mewakili dalam hal dua operasi bersamaan entitas, "kelas A dan kelas B, berbagi sumber daya yang sama ..."

Solusi yang digunakan oleh Dijkstra memperkenalkan tiga "keadaan filsuf": berpikir, makan, lapar. Kode disajikan untuk memecahkan masalah, beroperasi ini tiga negara, bersama dengan yang tidak terkait dengan itu sejumlah filsuf.

Apakah penulis telah memilih sejumlah filsuf 2, 3 atau 4, ini dapat menyebabkan kebingungan para siswa membaca kode, apakah nomor yang dipilih terkait dengan jumlah negara atau sesuatu yang lain. Hal ini dapat dengan mudah diuji dengan mencoba angka yang disebutkan dalam deskripsi dikutip dari EWD310 bawah: catatan misalnya bagaimana ini akan berubah [0:4]untuk [0:3], [0:2], [0:1]dan pernyataan yang melibatkan mod.

Berbeda dengan ini, nomor 5 terlihat cukup polos dan tidak meminta asosiasi yang tidak dibutuhkan. Orang dapat mengatakan bahwa telah dipilih untuk lebih menggambarkan bahwa jumlah filsuf, yah, sewenang-wenang .


Algoritma yang disebutkan disajikan dalam EWD310 sebagai berikut:

... kita asosiasikan dengan masing-masing filsuf variabel negara, "C" katakanlah, di mana

C[i] = 0berarti: filsuf iberpikir

C[i] = 2berarti: filsuf isedang makan.

...

kami memperkenalkan untuk transisi terakhir keadaan perantara

C[i] = 1artinya: filsuf ilapar

Sekarang setiap filsuf akan melalui siklus negara-negara 0, 1, 2, 0 ...... Pertanyaan berikutnya untuk bertanya adalah: kapan transisi (berbahaya) dari 1 ke 2 terjadi untuk filsuf K?

...

Di alam semesta kita asumsikan dinyatakan

1) itu semaphore mutex, awalnya = 1

2) integer array C[0:4], dengan awalnya semua elemen = 0

3) semaphore array prisem[0:4]dengan awalnya semua elemen = 0

4) procedure test (integer value K);

if C[(K-1) mod 5] ≠ 2 and C[K]= 1
    and C[(K+1) mod 5] ≠ 2 do
      begin C[K]:= 2; V(prisem[K]) end;

(Prosedur ini, yang mengatasi ketidakstabilan Kketika ada, hanya akan dipanggil dari dalam bagian kritis).

Di alam semesta ini kehidupan filsuf wsekarang dapat dikodekan

cycle begin think;
            P (mutex);
               C[w]:= 1; test (w);
            V(mutex);
            P(prisem[w]); eat
            P(mutex);
               C[w]:= 0; test [(w+l) mod 5];
               test [(w-1) mod 5];
            V(mutex)
      end

Dan ini menyimpulkan solusi yang saya tuju ...


2
Saya mungkin tidak menjadi filsuf, karena saya dapat berpikir pada saat yang sama ketika makan atau lapar. Dan banyak lagi: tidak ada dari mereka yang minum atau bahkan berbicara.
ott--

5

Hanya Dijkstra yang bisa menjawab dengan pasti, tetapi saya cukup yakin bahwa itu arbitrer.

"Awalnya dirumuskan pada tahun 1965 oleh Edsger Dijkstra sebagai latihan ujian siswa, disajikan dalam bentuk komputer yang bersaing untuk akses ke periferal tape drive. Segera setelah itu, Tony Hoare memberikan masalah formulasi yang sekarang."

http://en.wikipedia.org/wiki/Dining_philosophers_problem


2
Pertimbangkan masalah empat pengunjung dibandingkan dengan lima. Bagaimana masalahnya berubah? Apakah lebih mudah atau lebih sulit? Ini adalah pertanyaan ujian - yang lebih sulit kemungkinan yang ingin ditanyakan.

2

Karena itu aneh, bahkan tidak. Sehingga Anda tidak mencoba untuk merancang algorythm yang bergantung pada simetri atau membentuk pasangan, dan baru kemudian menyadari itu tidak bekerja untuk kasus umum.

Ini adalah opini; Saya tidak memiliki pengetahuan sejarah tentang apa yang terlintas dalam pikiran penulis.


Poin ini sangat penting. Dengan empat filsuf, dua pasang dari mereka bisa bergiliran makan.
Aaron Brick
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.