जोसेफस समस्या

कंप्यूटर विज्ञान और गणित में, जोसेफस समस्या (या जोसेफस क्रमचय) एक निश्चित काउंटिंग-आउट (बाहरी गणना) खेल से संबंधित एक सैद्धांतिक समस्या है। इस तरह के खेलों का उपयोग किसी समूह से किसी व्यक्ति को चयन करने के लिए किया जाता है, उदाहरण- ईनी, मिनी, मिनी, मो।

जोसेफस समस्या को उत्पन्न करने वाले विशेष काउंट-आउट खेल में, बहुत से लोग एक वृत्त में खड़े होकर मारने की प्रतीक्षा कर रहे हैं। गणना वृत्त में निर्दिष्ट बिंदु से प्रारंभ होती है और वृत्त के चारों ओर एक निर्दिष्ट दिशा में आगे बढ़ती है। एक निर्दिष्ट संख्या में लोगों को छोड़ दिए जाने के बाद, अगले व्यक्ति को मार दिया जाता है। प्रक्रिया को शेष लोगों के साथ दोहराया जाता है, अगले व्यक्ति से प्रारंभ करते हुए, उसी दिशा में जाते हुए और उसी संख्या में लोगों को छोड़ते हुए, जब तक कि केवल एक व्यक्ति शेष न रह जाए और मुक्त न हो जाए।

समस्या - लोगों की संख्या, प्रारम्भिक बिंदु, दिशा और छोड़ी जाने वाली संख्या को देखते हुए - फांसी से बचने के लिए प्रारंभिक वृत्त में स्थिति का चयन करना है।

इतिहास
समस्या का नाम पहली शताब्दी में रहने वाले एक यहूदी इतिहासकार फ्लेवियस जोसेफस के नाम पर रखा गया है। योदफत के पकड़ने के बाद जोसेफस के प्रत्यक्ष रूप से स्पष्टीकरण के अनुसार, वह और उसके 40 सैनिक रोमन सैनिकों द्वारा एक गुफा में फंस गए थे। उन्होंने अधिकृत करने के स्थान पर आत्महत्या को चयन किया, और चिट्ठी डालकर आत्महत्या करने की एक क्रमिक पद्धति पर समझौता कर लिया। जोसेफस कहते हैं कि भाग्य से या संभवतः भगवान के हाथ से, वह और एक अन्य व्यक्ति अंत तक बने रहे और खुद को मारने के अतिरिक्त रोमनों के सामने आत्मसमर्पण कर दिया। जोसिफस के यहूदी युद्ध (तीसरे व्यक्ति में स्वयं को लिखना) की किताब 3, अध्याय 8, भाग 7 में यह कहानी दी गई है:

इस कार्य में प्रयुक्त तंत्र का विवरण बल्कि अस्पष्ट है। जेम्स डाउडी और माइकल मेस के अनुसार, 1612 में क्लॉड गैसपार्ड बाचेत डी मेजिरियाक ने उन्मूलन के क्रम को निर्धारित करने के लिए पुरुषों को एक समूह में व्यवस्थित करने और तीन से गणना करने के विशिष्ट तंत्र का सुझाव दिया। यह कहानी प्रायः दोहरायी गई है और विशिष्ट विवरण स्रोत से स्रोत में अधिकतम भिन्न होते हैं। उदाहरण के लिए, इज़राइल नाथन हर्स्टीन और इरविंग कपलान्स्की (1974) ने जोसिफस और 39 सहयोगी को एक वृत्त में खड़ा कर दिया है और प्रत्येक सातवें आदमी को मार दिया गया है। समस्या का इतिहास फाइबोनैचि क्वार्टरली के संपादक को एस एल ज़ाबेल के पत्र में पाया जा सकता है।

साभिप्रायता के रूप में, जोसीफस ने पूछा: "क्या हम इसे ईश्वरीय विधान पर छोड़ दें या केवल भाग्य पर छोड़ दे?" लेकिन जोसिफस का एक अपरिष्कृत प्रारुप एक अलग कहानी बताता है: कि उसने "चालाकी से संख्याओं की गणना की और इस तरह शेष सभी को धोख़ा देने में सफल रहा"। जोसेफस का एक सहयोगी था; तब समस्या यह थी कि बचे हुए दो अंतिम बचे लोगों (जिनकी साजिश उनके जीवित रहने को सुनिश्चित करेगी) के स्थानों का पता लगाना था। यह आरोप लगाया जाता है कि उसने स्वयं को और दूसरे व्यक्ति को क्रमशः 31वें और 16वें स्थान (के लिए $k$ = 3 नीचे) पर रखा।

विविधताएं और सामान्यीकरण
जोसेफस समस्या के एक मध्ययुगीन संस्करण में 15 तुर्क और 15 ईसाई सम्मिलित हैं जो एक तूफान में एक जहाज पर सवार हैं जो तब तक डूब जाएगा जब तक कि आधे यात्रियों को पानी में नहीं फेंक दिया जाता। सभी 30 एक वृत्त में खड़े हैं और हर नौवें व्यक्ति को समुद्र में फेंक देना है। ईसाइयों को यह निर्धारित करने की आवश्यकता है कि केवल तुर्कों को फेंकने के लिए कहां खड़ा होना चाहिए। अन्य संस्करणों में तुर्कों और ईसाइयों की भूमिकाओं को आपस में परिवर्तित कर दिया गया है।

ग्राहम, नुथ और पटाशनिक 1989, पी 8 एक "मानक" संस्करण का वर्णन और अध्ययन करता है निर्धारित करें कि अंतिम बचे हुए कहां स्थित है यदि प्रारंभ करने के लिए n लोग हैं और प्रत्येक दूसरा व्यक्ति (k = 2 नीचे) मार दिया गया है।

इस समस्या का सामान्यीकरण इस प्रकार है। माना जाता है कि प्रत्येक $m$वें व्यक्ति को आकार $n$ के समूह से निष्पादित किया जाएगा, जिसमें $p$वां व्यक्ति बचे हुए है। यदि समूह कोई में x लोगों को जोड़ा जाता है, तो बचे हुए p + mx-वें स्थान पर होता है यदि यह n + x से कम या उसके बराबर है। यदि x सबसे छोटा मान है जिसके लिए (p + mx) > (n + x), तो बचे हुए स्थिति (p + mx) - (n + x) में है।

समाधान
निम्नलिखित में, n प्रारंभिक चक्र में लोगों की संख्या को दर्शाता है, और k प्रत्येक चरण के लिए गणना को दर्शाता है, अर्थात, k-1 लोगों को छोड़ दिया जाता है और k-वे को मार दिया जाता है। वृत्त में लोगों को 1 से n तक क्रमांकित किया जाता है, प्रारंभिक स्थिति 1 होती है और गणना समावेशी होती है।

k=2
समस्या स्पष्ट रूप से संशोधित हो जाती है जब प्रत्येक दूसरा व्यक्ति मारा जाएगा (प्रत्येक व्यक्ति अपने बाएं या दाएं व्यक्ति को मारता है), अर्थात $$k=2$$(अधिक सामान्य स्थिति $$k\neq 2$$ के लिए, एक समाधान नीचे दिया गया है।)। समाधान पुनरावर्ती रूप से व्यक्त किया गया है। मान लीजिए $$f(n)$$ बचे हुए की स्थिति को निरूपित करें जब प्रारंभ में हो $n$ लोग और $$k=2$$) होते है। वृत्त के चारों ओर पहली बार, सभी सम-संख्या वाले लोग मर जाते हैं। दूसरी बार वृत्त के चारों ओर, नए द्वितीय व्यक्ति, फिर नए 4-वें व्यक्ति मर दिया जाता है, आदि; यह ऐसा है जैसे कि वृत्त के आसपास कोई प्रथम नहीं था।

यदि लोगों की प्रारंभिक संख्या सम थी, तो स्थिति $x$ में व्यक्ति मूल रूप से स्थिति $$2x - 1$$ ( $x$ के प्रत्येक चयन के लिए) में था। मान लीजिए $$n=2j$$ पर व्यक्ति $$f(j)$$ जो अब जीवित रहेगा मूल रूप से स्थिति $$2f(j) - 1$$ में था। यह पुनरावृत्ति उत्पन्न करता है


 * $$f(2j)=2f(j)-1\;.$$

यदि लोगों की प्रारंभिक संख्या विषम थी, तो व्यक्ति 1 को चक्र के चारों ओर पहली बार के अंत में मरने के रूप में माना जा सकता है। पुनः, वृत्त के चारों ओर दूसरी बार, नए द्वितीय व्यक्ति, फिर नए 4-वें व्यक्ति मार दिया जाता है। इस स्थिति में, स्थिति में व्यक्ति $x$ मूल रूप से स्थिति $$2x+1$$ में था। यह पुनरावृत्ति उत्पन्न करता है


 * $$f(2j+1)=2f(j)+1\;.$$

जब मानों को $n$ और $$f(n)$$ से सारणीबद्ध किया जाता है और (, ऊपर की आकृति में नीली संख्याओ का सबसे बायाँ कॉलम भी) प्रतिदर्श निकलता है:

इससे पता चलता है $$f(n)$$ एक बढ़ता हुआ विषम क्रम है जो $$f(n)=1$$ के साथ फिर से प्रारंभ होता है जब भी सूचकांक n 2 की घात है। इसलिए, यदि m और $n$ को चयन किया जाता है ताकि $$n=2^m+l$$ और $$0\leq l<2^m$$, तब $$f(n)=2 \cdot l+1$$ समान हो। यह स्पष्ट है कि सारणी में मान इस समीकरण को संतुष्ट करते हैं। या यह विचार किया जा सकता है कि $l$ लोगों के मरने के बाद केवल $$2^m$$ लोग रह जाते हैं और यह $$2l+1$$वें व्यक्ति के पास चला जाता है। यह व्यक्ति अवश्य ही बचे हुए होंगे। इसलिए $$f(n)=2l+1$$ नीचे, अनुमान द्वारा एक प्रमाण दिया गया है।

प्रमेय: यदि $$n=2^m+l$$ और $$0\leq l<2^m$$, तब $$f(n) = 2l+1$$.

प्रमाण : प्रबल अनुमान पर $l$ प्रयोग किया जाता है आधार स्थिति $$n=1$$ सत्य है। स्थितियों को अलग से विचार किया जाता है जब $n$ सम होता है और जब $n$ विषम होता है।

यदि $n$ सम है, तो $$l_1$$ और $$m_1$$चयन करे इसलिए $$n/2 = 2^{m_1}+l_1$$ और $$0\leq l_1 < 2^{m_1}$$है।  ध्यान दें कि $$l_1 = l/2$$ और $$f(n) = 2f(n/2)-1=2((2l_1)+1) - 1=2l+1$$ क्रम है जहाँ दूसरी समानता अनुमान परिकल्पना से अनुसरण करती है।

यदि $n$ विषम है, तो $$l_1$$ और $$m_1$$ का चयन करे इसलिए कि $$(n-1)/2 = 2^{m_1}+l_1$$ और $$0\leq l_1 < 2^{m_1}$$है। ध्यान दें कि $$l_1 = (l-1)/2$$ और $$f(n) = 2f((n-1)/2)+1=2((2l_1)+1) + 1=2l+1$$ वहाँ है जहाँ दूसरी समानता अनुमान परिकल्पना से अनुसरण करती है। यह प्रमाण को पूरा करता है।

$n$ के लिए एक स्पष्ट पद प्राप्त करने के लिए $$f(n)$$ को संशोधित किया जा सकता है:


 * $$f(n) = 2(n-2^{\lfloor \log_2(n) \rfloor})+1$$

उत्तर के सबसे सामान्य रूप में आकार $l$ का बाइनरी प्रतिनिधित्व सम्मिलित है: $$f(n)$$ के $n$ एक-बिट बाएँ चक्रीय परिवर्तन से प्राप्त किया जा सकता है। यदि  $n$ को बाइनरी में $$n=1 b_1 b_2 b_3\dots b_m$$ के रूप में दर्शाया गया है तो $$f(n)=b_1 b_2 b_3 \dots b_m 1$$ द्वारा समाधान दिया जाता है। इसका प्रमाण $$2^m+l$$ के रूप मे $n$ के निरूपण या $$f(n)$$ के लिए उपरोक्त पदों से मिलता है।

कार्यान्वयन: यदि n लोगों की संख्या को दर्शाता है, तो सुरक्षित स्थिति फलन $$f(n) = 2l+1$$,जहां $$n=2^m+l$$ और $$0\leq l<2^m$$ द्वारा दी गई है।

अब यदि संख्या को बाइनरी प्रारूप में दर्शाया गया है, तो पहला बिट $$2^m$$ को दर्शाता है और शेष बिट्स $n$ को दर्शाता है। उदाहरण के लिए, जब $l$, इसका बाइनरी निरूपण है

n   = 1   0   1   0   0   1 2m  = 1   0   0   0   0   0

l   =     0   1   0   0   1

बिटवाइज
बिटवाइज़ संक्रियक का उपयोग करके सुरक्षित स्थिति खोजने का सबसे आसान तरीका है। इस दृष्टिकोण में, n के सबसे महत्वपूर्ण सेट बिट को कम से कम महत्वपूर्ण बिट में स्थानांतरित करने से सुरक्षित स्थिति वापस आ जाएगी। इनपुट एक धनात्मक पूर्णांक होना चाहिए। n   = 1   0   1   0   0   1 n   = 0   1   0   0   1   1

k = 3
1997 में, लॉरेंज हाल्बिसन और नॉर्बर्ट हंगरबुहलर ने स्थिति $$k=3$$ के लिए एक संवृत रूप की खोज की उन्होंने दिखाया कि एक निश्चित स्थिरांक है


 * $$\alpha \approx 0.8111...$$

जिसे एकपक्षीय रूप से परिदशुद्ध गणना की जा सकती है। इस स्थिरांक को देखते हुए $n=41$ को ऐसे सबसे बड़े पूर्णांक के रूप में चयन करे, जैसे कि $$\operatorname{round}(\alpha \cdot (3/2)^m) \le n$$ (यह या $$m^\prime = \operatorname{round}(\log_{3/2} n/\alpha)$$ तब $$m^\prime - 1$$) होगा। जब, अंतिम बचे हुए


 * $$f(n) = 3(n - \operatorname{round}(\alpha \cdot (3/2)^m)) + 2$$ है, यदि और $m$

सभी के लिए $$n \ge 5$$ पूर्णांकित किया जाता है।

गणना के उदाहरण के रूप में हैलबिसन और हंगरबुहलर $$n = 41, k = 3$$ देते हैं (जो वास्तव में जोसिफस की समस्या का मूल सूत्रीकरण है)। वे गणना करते हैं:


 * $$m^\prime \approx \operatorname{round}(\log_{3/2} 41/0.8111) \approx \operatorname{round}(9.68) = 10$$
 * $$\operatorname{round}(\alpha \cdot (3/2)^{m^\prime}) \approx \operatorname{round}(0.8111 \cdot (3/2)^{10}) = 47$$ और इसलिए $$m = 9$$
 * $$\operatorname{round}(0.8111 \cdot (3/2)^9) \approx \operatorname{round}(31.18) = 31$$ (ध्यान दें कि इसे पूर्णांकित कर दिया गया है)
 * $$f(n) = 3(41 - 31) + 1 = 31$$

यह संख्या 1 से 41 तक प्रत्येक क्रमिक पास को देखकर सत्यापित किया जा सकता है:


 * 1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, 32, 34, 35, 37, 38, 40, 41
 * 2, 4, 7, 8, 11, 13, 16, 17, 20, 22, 25, 26, 29, 31, 34, 35, 38, 40
 * 2, 4, 8, 11, 16, 17, 22, 25, 29, 31, 35, 38
 * 2, 4, 11, 16, 22, 25, 31, 35
 * 2, 4, 16, 22, 31, 35
 * 4, 16, 31, 35
 * 16, 31

सामान्य स्थिति
डायनेमिक प्रोग्रामिंग का उपयोग इस समस्या को हल करने के लिए सामान्य मामले में पहले चरण का प्रदर्शन करके और फिर शेष समस्या के समाधान का उपयोग करके किया जाता है। जब सूचकांक एक से शुरू होता है, तो पहले व्यक्ति से s परिवर्तन होने वाला व्यक्ति स्थिति $$((s-1)\bmod n)+1$$ है, जहां n व्यक्तियों की कुल संख्या है। मान लीजिए $$f(n,k)$$ बचे हुए की स्थिति को निरूपित करें। $$k$$-वें व्यक्ति के मारे जाने के बाद, $$n-1$$ का एक चक्र बना रहता है, और अगली गिनती उस व्यक्ति से प्रारंभ होती है जिसकी मूल समस्या में संख्या $$(k\bmod n)+1$$ थी। यदि गणना $$1$$ से प्रारंभ की जाती है तो बचे हुए की स्थिति शेष समूह में $$f(n-1,k)$$ होगी ; इसे इस तथ्य के लिए गणना में स्थानांतरित करना कि प्रारंभिक बिंदु $$(k\bmod n)+1$$ पुनरावृत्ति देता है


 * $$f(n,k)=((f(n-1,k)+k-1) \bmod n)+1,\text{ with }f(1,k)=1\,,$$

जो सरल रूप लेता है


 * $$g(n,k)=(g(n-1,k)+k) \bmod n,\text{ with }g(1,k)=0$$

यदि पदों $$0$$ को $$n-1$$ अतिरिक्त से क्रमांकित हैं।

इस दृष्टिकोण में संचालन का समय $$O(n)$$ है, लेकिन छोटे $$k$$ और बड़े $$n$$ के लिए एक और तरीका है। दूसरा दृष्टिकोण गतिशील प्रोग्रामिंग का भी उपयोग करता है लेकिन इसमें संचालन का समय $$O(k\log n)$$ होता है। यह k-th, 2k-th, ... को मारने पर विचार करने पर आधारित है। $$(\lfloor n/k \rfloor k)$$-वें लोग एक चरण के रूप में, फिर संख्या बदल रहे हैं।

यह संशोधित दृष्टिकोण रूप लेता है


 * $$g(n,k) = \begin{cases}

0 & \text{if } n=1\\ (g(n-1,k)+k) \bmod n & \text{if } 1 < n < k\\ \begin{Bmatrix} g(n- \left \lfloor \frac{n}{k} \right \rfloor,k)-n \bmod k + n & \text{if } g(n- \left \lfloor \frac{n}{k} \right \rfloor,k)< n \bmod k \\ \lfloor \frac{k(g(n- \left \lfloor \frac{n}{k} \right \rfloor,k)-n \bmod k) }{k-1} \rfloor & \text{if } g(n- \left \lfloor \frac{n}{k} \right \rfloor,k) \ge n \bmod k   \end{Bmatrix}  & \text{if } k \le n\\ \end{cases} $$

अग्रिम पठन

 * FUN2010
 * FUN2010
 * FUN2010
 * FUN2010
 * FUN2010
 * FUN2010
 * FUN2010

बाहरी संबंध

 * Josephus Flavius game (Java Applet) at cut-the-knot allowing selection of every nth out of 50 (maximum).
 * Generalized Josephus Problem
 * Generalized Josephus Problem
 * Generalized Josephus Problem