क्यों पांच भोजन दार्शनिक?


18

मैं सोच रहा था कि डाइनिंग दार्शनिकों की समस्या पाँच दार्शनिकों के मामले पर आधारित क्यों है। चार क्यों नहीं?

मुझे लगता है कि हम उन सभी अप्रिय मुद्दों पर गौर कर सकते हैं जो पांच दार्शनिकों के उदाहरण पर चर्चा करते हुए हो सकते हैं जब हमें चार विचारक दिए जाते हैं। क्या यह केवल एक ऐतिहासिक कारण है?


1
मूल समस्या का वर्णन 1965 में डीजकस्ट्रा द्वारा किया गया था और डाइनिंग क्विंटुपल ( पेज 3 के शीर्ष पर नोट्स में पाया गया ) कहा जाता है।

मुझे चार खाने वाले दार्शनिकों को सीखते हुए याद आया ...
माइकल

16
यह 5 दार्शनिक है क्योंकि वह यह देखने की कोशिश कर रहा था कि क्या कोई भी कभी भी स्पष्ट रूप से नोटिस करेगा; 5 दार्शनिक एक साथ बात करेंगे जब तक कि रेस्तरां उन्हें बाहर नहीं निकालता है, वे कभी भी अपने चांदी के बर्तन नहीं उठाएंगे। 4 खाने की शुरुआत करने के लिए बातचीत में काफी देर तक ब्रेक हो सकता है। 5 के साथ जैसे ही किसी भी दो पल के लिए बात करना बंद हो जाता है, निरंतरता सुनिश्चित करने के लिए हस्तक्षेप करने की प्रतीक्षा में कतार में पहले से ही एक है।
जिमी होफा

1
@ जिमी होफा - + १। और इसका जवाब क्यों नहीं है?
SChepurin

जवाबों:


17

EWD310 में लिखा है "अनुक्रमिक प्रक्रियाओं के पदानुक्रमित" , ऐसा लगता है कि नंबर 5 को शैक्षिक उद्देश्यों के लिए चुना गया है, ताकि छात्रों को समस्या के समाधान को प्रदर्शित करने के लिए डिज़ाइन किए गए एल्गोरिदम को समझना आसान हो सके।

यह बहुत कागज आगे इस विचार का समर्थन करता है कि 5 वास्तव में सामान्य समस्या के लिए प्रासंगिक नहीं है, पहले स्पष्ट रूप से यह कहते हुए कि "समस्या 9 या 25 दार्शनिकों के लिए रखी जा सकती थी ..." और इसके बाद, दो समवर्ती संचालन के संदर्भ में इसका प्रतिनिधित्व करते हुए इकाइयाँ, "वर्ग ए और वर्ग बी, समान संसाधन साझा कर रहे हैं ..."

दिज्क्स्त्र द्वारा उपयोग किया जाने वाला समाधान "दार्शनिक की तीन अवस्थाओं" का परिचय देता है: सोच, भोजन, भूख। समस्या को हल करने के लिए प्रस्तुत कोड, इन तीन राज्यों को संचालित करता है, इसके साथ ही एक असंबंधित दार्शनिकों की संख्या भी है।

क्या लेखक ने दार्शनिकों की संख्या 2, 3 या 4 को चुना है, इससे छात्रों को कोड पढ़ने में भ्रम हो सकता है, चाहे चुना हुआ संख्या राज्यों की राशि से संबंधित हो या कुछ और। यह आसानी से विवरण में उल्लेख संख्या नीचे EWD310 से उद्धृत की कोशिश कर रहा द्वारा परीक्षण किया जा सकता है: उदाहरण के लिए टिप्पणी है कि यह कैसे बदल जाएगा [0:4]करने के लिए [0:3], [0:2], [0:1]को शामिल और बयानों mod

जैसा कि इसके विपरीत, नंबर 5 काफी निर्दोष दिखता है और अनावश्यक संघों को आमंत्रित नहीं करता है। कोई कह सकता है कि यह बेहतर चित्रण करने के लिए चुना गया है कि दार्शनिकों की राशि, अच्छी तरह से, मनमाना है


उल्लेखित एल्गोरिथ्म EWD310 में निम्नानुसार प्रस्तुत किया गया है:

... हम प्रत्येक दार्शनिक को एक राज्य चर के साथ जोड़ते हैं, "सी" कहते हैं, जहां

C[i] = 0का अर्थ है: दार्शनिक iसोच रहा है

C[i] = 2का अर्थ है: दार्शनिक iखा रहा है।

...

हम अंतिम संक्रमण के लिए एक मध्यवर्ती स्थिति का परिचय देते हैं

C[i] = 1का अर्थ है: दार्शनिक iभूख लगी है

अब प्रत्येक दार्शनिक 0, 1, 2, 0 ...... के माध्यम से चक्रीय रूप से जाएगा। पूछने वाला अगला प्रश्न है: दार्शनिक के लिए जगह लेने के लिए 1 से 2 तक (खतरनाक) संक्रमण कब हुआ है K?

...

ब्रह्मांड में हम घोषित घोषित

1) semaphore mutex, शुरू में = 1

2) integer array C[0:4], शुरू में सभी तत्व = 0 के साथ

3) semaphore array prisem[0:4]शुरू में सभी तत्वों के साथ = 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;

(यह प्रक्रिया, जो Kवर्तमान के लिए अस्थिरता को हल करती है , केवल एक महत्वपूर्ण खंड के भीतर से ही बुलाया जाएगा)।

इस ब्रह्मांड में दार्शनिक के जीवन को wअब कोडित किया जा सकता है

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

और यह उस समाधान को समाप्त करता है जिसका मैं लक्ष्य बना रहा था ...


2
मैं तब एक दार्शनिक नहीं हो सकता, क्योंकि मैं उसी समय सोच सकता हूं जब भोजन कर रहा हो या भूखा हो। और अधिक: उनमें से कोई भी शराब पीना या बात नहीं कर रहा है।
ott--

5

केवल दिक्जस्त्र निश्चित रूप से उत्तर दे सकता है, लेकिन मुझे पर्याप्त विश्वास होगा कि यह मनमाना है।

"यह मूल रूप से 1965 में एक एग्जेंडर दीजकस्ट्रा द्वारा एक छात्र परीक्षा अभ्यास के रूप में तैयार किया गया था, जो टेप ड्राइव बाह्य उपकरणों तक पहुंच के लिए प्रतिस्पर्धा करने वाले कंप्यूटरों के संदर्भ में प्रस्तुत किया गया था। जल्द ही, टोनी होरे ने समस्या को अपना वर्तमान स्वरूप दिया।"

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


2
पांच की तुलना में चार खाने वालों की समस्या पर विचार करें। समस्या कैसे बदलती है? क्या यह आसान या कठिन है? यह एक परीक्षा का प्रश्न था - कठिन वही है जो वह पूछना चाहता है।

2

क्योंकि यह अजीब है, नहीं भी। ताकि आप एक ऐसे अल्गोरिथम को तैयार करने की कोशिश न करें जो समरूपता या जोड़े बनाने पर निर्भर करता है, और केवल बहुत बाद में एहसास होता है कि यह सामान्य मामले के लिए काम नहीं करता है।

यह एक राय है; लेखक के दिमाग से क्या पार हुआ, इसका मुझे कोई ऐतिहासिक ज्ञान नहीं है।


यह बिंदु निर्णायक है। चार दार्शनिकों के साथ, उनमें से दो जोड़े भोजन कर सकते थे।
हारून ब्रिक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.