Što je problem Dining Philosophers?

Problem filozofa blagovaonice je misaoni eksperiment ili primjer korišten u području računalne znanosti. Problem koristi analogiju kako bi ilustrirao probleme sinkronizacije koji mogu nastati kada računala dijele resurse. Računalni znanstvenici koriste probleme filozofa blagovaonice kako bi poučili studente o algoritmima koji se koriste za rješavanje ovih problema.

Scenarij problema filozofa u blagovaonici je kružni stol za kojim sjedi pet filozofa. U sredini stola je zdjela s rezancima ili drugom hranom. Svaki filozof ima jednu vilicu ili štapić s obje strane, što znači da ima ukupno pet vilica ili štapića. Da bi jeo, filozofu su potrebna dva pribora. Svaki filozof također mora provesti neko vrijeme razmišljajući, a ne može misliti i jesti u isto vrijeme. Srž problema filozofa blagovaonice je poteškoća u sprječavanju zastoja.

Zastoj u ovom problemu nastaje kada se filozofi dovedu u poziciju u kojoj ne mogu ni misliti ni jesti. Na primjer, kada bi svaki filozof podigao pribor s njegove lijeve strane, nitko ne bi mogao jesti, jer bi sve posuđe bilo u upotrebi, ali nijedan filozof ne bi imao dva. Kako bi omogućio svim filozofima da jedu, učenik mora stvoriti algoritam koji osigurava da neki filozofi jedu dok drugi razmišljaju. To omogućuje nastavak jedenja i razmišljanja bez odugovlačenja.

Postoji niz mogućih rješenja za problem filozofa blagovaonice. Jedno rješenje uključuje stvaranje šestog lika, konobara, koji daje ili uskraćuje dopuštenje filozofima da uzmu vilice. Drugi uključuju reguliranje redoslijeda kojim filozofi podižu i spuštaju svoje vilice kako bi povećali dostupnost. Drugi uključuju govorenje filozofima da provjere jedu li njihovi susjedi prije nego što pokušaju jesti. U biti, svako rješenje uključuje razvoj skupa pravila, nazvanih algoritam, koji upravlja kada filozofi misle, jedu ili uzimaju i odlažu svoje posuđe.

Problem filozofa u blagovaonici prvi je izrazio nizozemski informatičar Edsger Dijkstra 1965. godine kao ispitno pitanje za studente. Od tada je problem doživio niz promjena. Pojavljuje se u brojnim malo drugačijim formatima, od kojih neki samo mijenjaju detalje priče, ali drugi koji predlažu dodatna ograničenja na problem kako bi se demonstrirali teški koncepti. Najčešću modernu verziju stvorio je Tony Hoare.