यह @ ais523 के उत्तर का एक और विकास है , इसे केवल दो सेट कोष्ठक में बदल दिया गया है, और साथ ही गोलम शासक सिद्धांत पर आधारित एक अधिक कॉम्पैक्ट सेल प्लेसमेंट का उपयोग कर रहा है। ais523 ने इस निर्माण के लिए एक कंपाइलर बनाया है , साथ ही इस TIO सत्र में एक नमूना दिखाया गया है जिसके परिणामस्वरूप BF प्रोग्राम TWM काउंटरों के डिबग ट्रेसिंग के साथ चल रहा है।
मूल की तरह, यह द वाटरफॉल मॉडल में एक कार्यक्रम से शुरू होता है , जिसमें कुछ प्रतिबंध हैं जो सामान्यता नहीं खोते हैं:
- सभी काउंटरों में समान स्व-रीसेट मूल्य ; अर्थात्, TWM ट्रिगर मैप में वह संपत्ति है जो सभी लिए ।Rff(x,x)=Rx
- एक एकल रुक काउंटर ।h
- काउंटरों की संख्या कुछ अभाज्य संख्या ।c(p−1)/2p
गोलमोल शासक
हम आवश्यक गुणों के साथ एक गोलमोल शासक प्राप्त करने के लिए एक वेल्च-कोस्टास सरणी के क्रमांकन समारोह के साथ एर्दो-तुरान निर्माण का संयोजन करते हैं।
(मुझे यकीन है कि यह संयुक्त निर्माण एक नया विचार नहीं हो सकता है, लेकिन हमने विकिपीडिया से इन दो टुकड़ों को एक साथ पाया और फिट किया है।)
आज्ञा देना एक आदिम जड़ । फ़ंक्शन को परिभाषित करेंrp=2c+1
g(k)=4ck−((rk−1)mod(2c+1)),k=0,…,2c−1.
- g , ऑर्डर का एक गोलाकार शासक है । यही है, अंतर प्रत्येक विशिष्ट संख्या लिए अद्वितीय है ।2cg(i)−g(j)i,j∈{0,…,2c−1}
- g(k)mod(2c) प्रत्येक मान एक बार लेता है ।0,…,2c−1
टेप संरचना
प्रत्येक TWM काउंटर , हम दो BF टेप सेल पोज़िशन, एक फ़ॉलबैक सेल और एक वैल्यू सेल :x∈{0,…,c−1} u(x) v(x)
u(x)=g(k1)<v(x)=g(k2) with u(x)≡v(x)≡x(modc)
की दूसरी संपत्ति के चुनने के लिए दो अलग-अलग मान हैं।gk1,k2
एक फ़ॉलबैक सेल की सामग्री को अधिकांश समय पर रखा जाएगा , सिवाय इसके जब काउंटर पर अभी-अभी दौरा किया गया है, जब यह पर होगा , दो बार काउंटर सेल्फ-रीसेट मूल्य। एक मूल्य सेल को संबंधित TWM काउंटर के मूल्य से दोगुना रखा जाएगा।02R
अन्य सभी कोशिकाएं जिन्हें बीएफ प्रोग्राम निष्पादन (एक परिमित संख्या) तक पहुंचाया जा सकता है, उन्हें विषम मूल्यों पर रखा जाएगा, ताकि वे हमेशा नॉनजेरो के रूप में परीक्षण करें। इनिशियलाइज़ेशन के बाद यह ऑटोमैटिक होता है क्योंकि सभी सेल एडजस्टमेंट समान मात्रा में होते हैं।
यदि वांछित है, तो प्रारंभिक बीएफ टेप स्थिति के बाईं ओर जाने से बचने के लिए सभी सेल पदों को एक निरंतर द्वारा दाईं ओर स्थानांतरित किया जा सकता है।
बीएफ कार्यक्रम संरचना
मान लें कि काउंटर की वैल्यू और फ़ॉलबैक सेल के बीच की दूरी है, और को एक संख्या में काफी बड़ा होने दें जो कि सभी काउंटरों के लिए । फिर मूल बीएफ प्रोग्राम संरचना हैH=v(h)−u(h)NcN+1≥v((x+1)modc)−u(x)x
आरंभीकरण समायोजन[
>
×(H+cN+1) [
<
×c ]
<
×H ]
प्रारंभ
आरंभीकरण चरण सेट सभी कोशिकाओं, उनकी प्रारंभिक मूल्यों के लिए इस कार्यक्रम के द्वारा पहुंचा जा सकता एक राज्य में पिछले काउंटर के रूप में करता है, तो बस का दौरा किया गया था और सिर्फ सक्रिय कक्ष इसके वापस आने सेल था :u(c−1)
- मूल्य कोशिकाओं को संबंधित TWM काउंटर की प्रारंभिक सामग्री से दो बार शुरू किया जाता है, सिवाय इसके कि काउंटर पूर्व-विघटित है।0
- सेल को छोड़कर, फॉलबैक सेल सेट हैं , जो सेट है ।0u(c−1)2R
- कार्यक्रम (एक परिमित संख्या) द्वारा उपलब्ध सभी अन्य कोशिकाएं सेट हैं ।1
तब टेप पॉइंटर को (एक हमेशा गैर-शून्य सेल) स्थिति में ले जाया जाता है, इससे पहले कि हम कार्यक्रम के पहले पहुंचें ।u(c−1)−H[
बाहरी लूप की शुरुआत
बाहरी लूप की पुनरावृत्ति की शुरुआत में, टेप पॉइंटर एक काउंटर लिए या ।u(x)−Hv(x)−Hx
चलो यात्रा के लिए अगला काउंटर होगा।y=((x+1)modc)
आंदोलन टेप पॉइंटर को एक ऐसी स्थिति पर रखता है जो कि और के बाईं ओर नहीं है ।>
×(H+cN+1)≡y(modc)v(y)
आंतरिक लूप _ अब शून्य सेल के लिए चरणों में बाईं ओर खोज करता है। यदि काउंटर शून्य है, तो यह (शून्य) मान सेल पर बंद हो जाएगा ; अन्यथा यह फॉलबैक सेल मिलेगा ।[
<
×c ]
cyv(y)u(y)
जो भी सेल पाया जाता है वह नया सक्रिय सेल बन जाता है ।
समायोजन
समायोजन चरण सक्रिय कक्ष के लिए उनके सापेक्ष स्थिति के आधार पर टेप पर विभिन्न कोशिकाओं समायोजित करता है। इस खंड में केवल +-><
आदेश होते हैं और इसलिए ये समायोजन बिना शर्त के होते हैं। हालाँकि, क्योंकि सभी काउंटर-संबंधित कोशिकाएं एक गोलमोल शासक पैटर्न में हैं, कोई भी समायोजन जो वर्तमान सक्रिय सेल के लिए उचित नहीं है, सभी महत्वपूर्ण कोशिकाओं को याद करेगा और इसके बजाय कुछ अप्रासंगिक सेल को समायोजित करेगा (जबकि इसे विषम रखते हुए)।
इस प्रकार अलग कोड सक्रिय और समायोजित सेल के प्रत्येक संभावित आवश्यक जोड़े के लिए कार्यक्रम में शामिल होना चाहिए, एक सक्रिय सेल के आत्म-समायोजन को छोड़कर , जो, क्योंकि समायोजन केवल सापेक्ष स्थिति पर आधारित है, उन सभी के बीच साझा किया जाना चाहिए।
आवश्यक समायोजन हैं:
- पिछले काउंटर के सेल को द्वारा ।u(x)−2R
- वर्तमान काउंटर के वापस आने सेल समायोजित द्वारा , को छोड़कर यदि वर्तमान सक्रिय कक्ष है और इसलिए हम को रोकने चाहिए।u(y)2Rv(h)
- अगले काउंटर के वैल्यू सेल को समायोजित करें काउंटर को )।v((y+1)modc)−2
- जब सक्रिय सेल एक वैल्यू सेल (तो काउंटर शून्य तक पहुंच गया है), TWM ट्रिगर मैप से सभी वैल्यू सेल को से समायोजित करें। स्वयं द्वारा समायोजित हो जाता है ।v(y)yv(z)2f(y,z)v(y)2R
उपरोक्त पहला और दूसरा समायोजन इस तथ्य से आवश्यक हो जाता है कि सभी सक्रिय कोशिकाओं को स्वयं को उसी मूल्य से समायोजित करना चाहिए , जो मूल्य कोशिकाओं के लिए , और इस प्रकार भी फ़ॉलबैक कोशिकाओं के लिए है। इसके लिए फ़ॉलबैक कोशिकाओं को तैयार करने और उनकी सफाई करने की आवश्यकता होती है ताकि यह सुनिश्चित किया जा सके कि वे मूल्य और फ़ॉलबैक दोनों शाखाओं में वापस आ जाएँ ।2R0
बाहरी लूप का अंत
आंदोलन के प्रतिनिधित्व करता है कि समायोजन चरण के अंत में, टेप पॉइंटर को सक्रिय सेल के बाईं ओर स्थानों पर ले जाया जाता है ।<
×HH
सभी सक्रिय कोशिकाओं के लिए अन्य हॉल्टिंग काउंटर के मूल्य सेल से , यह एक अप्रासंगिक सेल, और इतने अजीब और गैर-शून्य है, और बाहरी पाश एक और यात्रा के लिए जारी है।v(h)
के लिए , सूचक के बजाय उससे संबंधित फ़ॉलबैक सेल पर रखा गया है अंतिम के माध्यम से ऐसा कार्यक्रम बाहर निकलता है, जिसके लिए हम एक अपवाद यह शून्य रखने के लिए ऊपर बना दिया है, और और रुक जाता है।v(h)u(h)]