फ्रैक्ट्रान

From Vigyanwiki
Revision as of 23:48, 8 February 2023 by alpha>Shahnawaz Alam

फ्रैक्ट्रान ट्यूरिंग-पूर्ण गूढ़ प्रोग्रामिंग भाषा है, जिसका आविष्कार गणितज्ञ जॉन हॉर्टन कॉनवे ने किया था। फ्रैक्ट्रान कार्यक्रम सकारात्मक अंश (गणित) का प्रारंभिक सकारात्मक पूर्णांक इनपुट N के साथ अनुक्रम है। कार्यक्रम निम्नानुसार पूर्णांक 'N' को अद्यतन करके चलाया जाता है।

  1. पहले अंश F के लिए सूची में जिसके लिए NF पूर्णांक है, N को NF से बदलें।
  2. इस नियम को तब तक करते रहे, जब तक कि सूची में कोई भी अंश N से गुणा करने पर पूर्णांक नहीं बनाता, फिर रुक जाता है।

कोनवे 1987 निम्नलिखित फ्रैक्ट्रान प्रोग्राम देता है, जिसे मुख्य खेल कहा जाता है, जो क्रमिक अभाज्य संख्याएँ पाता है।

N=2 से प्रारंभ होकर, यह फ्रैक्ट्रान प्रोग्राम पूर्णांकों के निम्नलिखित अनुक्रम उत्पन्न करता है।

  • 2, 15, 825, 725, 1925, 2275, 425, 390, 330, 290, 770, ... (sequence A007542 in the OEIS)

2 के बाद, इस क्रम में 2 की निम्नलिखित शक्तियाँ हैं।

(sequence A034785 in the OEIS) जो 2 की प्रधान शक्तियाँ हैं।

फ्रैक्ट्रान कार्यक्रम को समझना

फ्रैक्ट्रान प्रोग्राम को प्रकार की रजिस्टर मशीन के रूप में देखा जा सकता है जहाँ रजिस्टरों को तर्क n में प्रमुख घातांक में संग्रहीत किया जाता है।

गोडेल संख्या का उपयोग करते हुए, सकारात्मक पूर्णांक n मनमाने ढंग से बड़े सकारात्मक पूर्णांक चर की मनमानी संख्या को सांकेतिक शब्दों में बदल सकता है।[note 1] प्रत्येक चर का मान पूर्णांक के पूर्णांक गुणनखंड में अभाज्य संख्या के घातांक के रूप में एन्कोड किया गया है। उदाहरण के लिए, पूर्णांक

रजिस्टर स्थिति का प्रतिनिधित्व करता है जिसमें चर जिसे हम v2 कहेंगे का मान 2 है और दो अन्य चर (v3 और v5) का मान 1 है। अन्य सभी चर का मान 0 है।

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

परीक्षण v2 और v5। यदि और , फिर यह v2 से 2 और v5 से 1 घटाता है और 1 को v3 और 1 को v7 में जोड़ता है। उदाहरण के लिए,

चूँकि, फ्रैक्ट्रान प्रोग्राम केवल भिन्नों की सूची है। ये परीक्षण-कमी-वृद्धि निर्देश फ्रैक्ट्रान भाषा में केवल अनुमत निर्देश हैं। इसके अतिरिक्त निम्नलिखित प्रतिबंध लागू होते हैं।

  • हर बार निर्देश निष्पादित किया जाता है, परीक्षण किए गए चर भी कम हो जाते हैं।
  • चर को निर्देश में घटाया और बढ़ाया नहीं जा सकता हैं। अन्यथा उस निर्देश का प्रतिनिधित्व करने वाला अंश अपने निम्नतम शब्दों में नहीं होगा। इसलिए प्रत्येक फ्रैक्ट्रान निर्देश चर का उपभोग करता है क्योंकि यह उनका परीक्षण करता है।
  • यदि चर 0 है, तो फ्रैक्ट्रान निर्देश के लिए सीधे परीक्षण करना संभव नहीं है। चूंकि, अप्रत्यक्ष परीक्षण को व्यतिक्रम निर्देश बनाकर लागू किया जा सकता है जो किसी विशेष चर का परीक्षण करने वाले अन्य निर्देशों के बाद रखा जाता है।

सरल प्रोग्राम बनाना

जोड़

सबसे सरल फ्रैक्ट्रान प्रोग्राम ल निर्देश है जैसे

इस कार्यक्रम को निम्नानुसार (बहुत सरल) एल्गोरिथम के रूप में दर्शाया जा सकता है।

फ्रैक्ट्रान
instruction
Condition Action
v2 > 0 Subtract 1 from v2
Add 1 to v3
v2 = 0 Stop

प्रपत्र के प्रारंभिक इनपुट को देखते हुए , यह प्रोग्राम अनुक्रम की गणना करेगा , , आदि, अंततः, के बाद तक चरण, 2 का कोई कारक नहीं रहता है और उत्पाद के साथ अब कोई पूर्णांक नहीं देता है; मशीन तब के अंतिम आउटपुट के साथ बंद हो जाती है . इसलिए यह दो पूर्णांकों को साथ जोड़ता है।

गुणा

हम योजक के माध्यम से लूप करके गुणक बना सकते हैं। ऐसा करने के लिए हमें अपने एल्गोरिदम में राज्य (कंप्यूटर विज्ञान) पेश करने की आवश्यकता है। यह एल्गोरिदम नंबर लेगा और उत्पादन

Current state Condition Action Next state
A v7 > 0 Subtract 1 from v7
Add 1 to v3
A
v7 = 0 and
v2 > 0
Subtract 1 from v2 B
v7 = 0 and
v2 = 0 and
v3 > 0
Subtract 1 from v3 A
v7 = 0 and
v2 = 0 and
v3 = 0
Stop
B v3 > 0 Subtract 1 from v3
Add 1 to v5
Add 1 to v7
B
v3 = 0 None A

स्टेट बी लूप है जो v3 को v5 में जोड़ता है और v3 को v7 में भी ले जाता है, और स्टेट ए बाहरी कंट्रोल लूप है जो लूप को स्टेट बी v2 बार दोहराता है। स्टेट बी में लूप पूरा होने के बाद स्टेट ए भी v7 ​​से v3 के मान को पुनर्स्थापित करता है।

हम राज्य संकेतकों के रूप में नए चरों का उपयोग करके राज्यों को लागू कर सकते हैं। राज्य B के लिए राज्य संकेतक v11 और v13 होंगे। ध्यान दें कि हमें लूप के लिए दो राज्य नियंत्रण संकेतकों की आवश्यकता होती है; प्राथमिक ध्वज (v11) और द्वितीयक ध्वज (v13)। क्योंकि जब भी परीक्षण किया जाता है तो प्रत्येक संकेतक का उपभोग किया जाता है, हमें वर्तमान स्थिति में जारी रखने के लिए द्वितीयक संकेतक की आवश्यकता होती है; इस द्वितीयक संकेतक को अगले निर्देश में प्राथमिक संकेतक पर वापस स्वैप किया जाता है, और लूप जारी रहता है।

गुणन एल्गोरिथम तालिका में फ्रैक्ट्रान राज्य संकेतक और निर्देश जोड़ना, हमारे पास है।

फ्रैक्ट्रान
instruction
Current state State
indicators
Condition Action Next state
A None v7 > 0 Subtract 1 from v7
Add 1 to v3
A
v7 = 0 and
v2 > 0
Subtract 1 from v2 B
v7 = 0 and
v2 = 0 and
v3 > 0
Subtract 1 from v3 A
v7 = 0 and
v2 = 0 and
v3 = 0
Stop
B v11, v13 v3 > 0 Subtract 1 from v3
Add 1 to v5
Add 1 to v7
B
v3 = 0 None A

जब हम फ्रैक्ट्रान निर्देश लिखते हैं, तो हमें राज्य A निर्देश को अंतिम रखना चाहिए, क्योंकि राज्य A में कोई राज्य संकेतक नहीं है - यदि कोई राज्य संकेतक सेट नहीं है तो यह व्यतिक्रम स्थिति है। तो फ्रैक्ट्रान प्रोग्राम के रूप में, गुणक बन जाता है।

इनपुट के साथ 23b यह प्रोग्राम आउटपुट 5 उत्पन्न करता हैअब</सुप>. [note 2]

उपरोक्त फ्रैक्ट्रान कार्यक्रम, 3 गुना 2 की गणना (ताकि इसका इनपुट है और इसका आउटपुट होना चाहिए क्योंकि 3 गुना 2 बराबर 6.

घटाव और भाग

इसी तरह, हम फ्रैक्ट्रान सबट्रैक्टर बना सकते हैं, और बार-बार घटाव हमें भागफल और शेष एल्गोरिथम बनाने की अनुमति देता है।

फ्रैक्ट्रान
instruction
Current state State
indicators
Condition Action Next state
A v11, v13 v2 > 0 and
v3 > 0
Subtract 1 from v2
Subtract 1 from v3
Add 1 to v7
A
v2 = 0 and
v3 > 0
Subtract 1 from v3 X
v3 = 0 Add 1 to v5 B
B v17, v19 v7 > 0 Subtract 1 from v7
Add 1 to v3
B
v7 = 0 None A
X v3 > 0 Subtract 1 from v3 X
v3 = 0 Stop

फ्रैक्ट्रान प्रोग्राम को लिखते हुए, हमारे पास।

और इनपुट 2एन3d11 आउटपुट 5 उत्पन्न करता हैक्ष7r जहां n = qd + r और 0 ≤ r < d।

कॉनवे का प्रमुख एल्गोरिथम

उपरोक्त कॉनवे का प्राइम जनरेटिंग एल्गोरिथम अनिवार्य रूप से दो लूप के भीतर भागफल और शेष एल्गोरिथम है। प्रपत्र का इनपुट दिया गया जहाँ 0 ≤ m < n, एल्गोरिथम n+1 को प्रत्येक संख्या से n से 1 तक विभाजित करने का प्रयास करता है, जब तक कि यह सबसे बड़ी संख्या k नहीं पाता जो n+1 का भाजक है। यह फिर 2 लौटाता हैएन+1 7k-1 और दोहराता है। एल्गोरिदम द्वारा उत्पन्न राज्य संख्याओं का अनुक्रम केवल 2 की शक्ति उत्पन्न करता है जब के 1 होता है (ताकि 7 का ्सपोनेंट 0 हो), जो केवल तब होता है जब 2 का ्सपोनेंट प्राइम होता है। हैविल (2007) में कॉनवे के एल्गोरिथम की चरण-दर-चरण व्याख्या पाई जा सकती है।

इस प्रोग्राम के लिए अभाज्य संख्या 2, 3, 5, 7... तक पहुँचने के लिए क्रमशः 19, 69, 281, 710,... चरणों की आवश्यकता है (sequence A007547 in the OEIS).

कॉनवे के कार्यक्रम का प्रकार भी मौजूद है,[1] जो उपरोक्त संस्करण से दो अंशों से भिन्न है।

यह संस्करण थोड़ा तेज़ है। 2, 3, 5, 7... तक पहुँचने में इसे 19, 69, 280, 707... कदम लगते हैं (sequence A007546 in the OEIS). इस कार्यक्रम का ल पुनरावृत्ति, प्रधानता के लिए विशेष संख्या N की जाँच करते हुए, निम्नलिखित चरणों की संख्या लेता है।
कहाँ पे एन और का सबसे बड़ा पूर्णांक विभाजक है फर्श समारोह है।[2] 1999 में, डेविन किल्मिंस्टर ने छोटे, दस-निर्देश कार्यक्रम का प्रदर्शन किया।[3]
प्रारंभिक इनपुट n = 10 के लिए 10 की बाद की शक्तियों द्वारा क्रमिक अभाज्य उत्पन्न होते हैं।


अन्य उदाहरण

निम्नलिखित फ्रैक्ट्रान कार्यक्रम।

ए के बाइनरी विस्तार के हैमिंग वजन एच (ए) की गणना करता है यानी ए के बाइनरी विस्तार में 1 एस की संख्या।[4] दिया गया इनपुट 2a, इसका आउटपुट 13 हैएच(क)। कार्यक्रम का विश्लेषण इस प्रकार किया जा सकता है।

फ्रैक्ट्रान
instruction
Current state State
indicators
Condition Action Next state
A v5, v11 v2 > 1 Subtract 2 from v2
Add 1 to v3
A
v2 = 1 Subtract 1 from v2
Add 1 to v13
B
v2 = 0 None B
B None v3 > 0 Subtract 1 from v3
Add 1 to v2
B
v3 = 0 and
v7 > 0
Subtract 1 from v7
Add 1 to v2
A
v3 = 0 and
v7 = 0 and
v2 > 0
Subtract 1 from v2
add 1 to v7
B
v2 = 0 and
v3 = 0 and
v7 = 0
Stop


टिप्पणियाँ

  1. Gödel numbering cannot be directly used for negative integers, floating point numbers or text strings, although conventions could be adopted to represent these data types indirectly. Proposed extensions to FRACTRAN include FRACTRAN++ and Bag.
  2. A similar multiplier algorithm is described at the Esolang FRACTRAN page.


यह भी देखें

  • निर्देश सेट कंप्यूटर

संदर्भ

  1. Guy 1983, p. 26; Conway 1996, p. 147
  2. Guy 1983, p. 33
  3. Havil 2007, p. 176
  4. John Baez, Puzzle #4, The n-Category Café
  • Guy, Richard K. (1983). "Conway's Prime Producing Machine". Mathematics Magazine. Taylor & Francis. 56 (1): 26–33. doi:10.1080/0025570X.1983.11977011.
  • Conway, John H. (1987). "FRACTRAN: A simple universal programming language for arithmetic". Open Problems in Communication and Computation. Springer-Verlag New York, Inc.: 4–26. doi:10.1007/978-1-4612-4808-8_2. ISBN 978-1-4612-9162-6.
  • Conway, John H.; Guy, Richard K. (1996). The Book of Numbers. Springer-Verlag New York, Inc. ISBN 0-387-97993-X.
  • Havil, Julian (2007). Nonplussed!. Princeton University Press. ISBN 978-0-691-12056-0.
  • Roberts, Siobhan (2015). "Criteria of virtue". Genius At Play - The Curious Mind of John Horton Conway. Bloomsbury. pp. 115–119. ISBN 978-1-62040-593-2.


बाहरी कड़ियाँ