यहाँ एक अलग दृष्टिकोण है, जो पुनरावृत्तियों को खोजने के आधार पर बीच प्रकट नहीं हो सकता है । एक सेट कॉल के एक से अधिक सन्निकटन 's अगर हम जानते हैं कि । इसी तरह, के एक overapproximation है अगर हम जानते हैं कि s ' । जाहिर है, छोटा है, इस अति-सन्निकटन में जितना उपयोगी है, और उतना ही लिए जाता है । मेरा दृष्टिकोण इन अति-सन्निकटनों को पुनरावृत्त करने वाले पुनरावृत्ति पर आधारित है, अर्थात, इन सेटों के आकार को कम करके (जैसा कि हम अधिक से अधिक मूल्यों को असंभव मानते हैं)।एक एक { एक 1 , ... , एक 6 } ⊆ एक बी बी { ख 1 , ... , ख 6 } ⊆ बी ए बी{ ए1, … , ए6}एए{ ए1, … , ए6} ⊆ एबीख{ बी1, ... , ख6} ⊆ बीएबी
इस दृष्टिकोण के कोर के लिए एक विधि है शोधन : एक से अधिक सन्निकटन दिया के लिए की और एक से अधिक सन्निकटन के लिए 'है, एक नया ओवर-सन्निकटन लगता है के लिए की ऐसी है कि । विशेष रूप से, सामान्य रूप से से छोटा होगा है, तो यह हमारे लिए अति-सन्निकटन को निखारने की सुविधा देता है के।एक बी बी ए * एक एक * ⊊ एक एक * एक एकएएबीखए*एA∗⊊AA∗Aa
समरूपता करके, मूलतः एक ही चाल चल जाएगा हमारे लिए हमारे अति-सन्निकटन को परिष्कृत की: एक से अधिक सन्निकटन दिया के लिए की और एक से अधिक सन्निकटन के लिए की, यह एक नई से अधिक का उत्पादन करेगा -approximation के लिए की।एक एक बी बी बी * खbAaBbB∗b
तो, मैं आपको बताता हूं कि शोधन कैसे किया जाता है, तो मैं इस समस्या के लिए एक पूर्ण एल्गोरिथ्म प्राप्त करने के लिए सब कुछ एक साथ रखूंगा। निम्न बातों में, , अंतर के बहु-सेट को निरूपित करता है, अर्थात, ; हम देखते हुए एक परिष्कृत अति-सन्निकटन खोजने पर ध्यान केंद्रित करेंगे ।डी = { एक मैं - बी जे : 1 ≤ मैं , जे ≤ 6 } एक * एक , बीDD={ai−bj:1≤i,j≤6}A∗A,B
कैसे परिशोधित करें। एक एकल अंतर पर विचार करें । सेट पर विचार करें । हमारे ज्ञान के आधार पर कि , का अति-सन्निकटन है , हम जानते हैं कि का कम से कम एक तत्व का एक तत्व होना चाहिए । इसलिए, हम में प्रत्येक तत्व को संभवतः में शामिल करने के लिए एक संख्या के लिए "सुझाव" के रूप में मान सकते हैं । तो, आइए और सभी अंतरों पर स्वीप करें , प्रत्येक के लिए, पहचानें कि कौन सी संख्या द्वारा "सुझाई गई" है ।डी + बी = { घ + y : y ∈ बी } बी बी डी + बी { एक 1 , ... , एक 6 } घ + बी ए डी ∈ डी घd∈Dd+B={d+y:y∈B}Bbd+B{a1,…,a6}d+BAd∈Dd
अब मैं यह देखने जा रहा हूं कि इस प्रक्रिया के दौरान को कम से कम 6 बार सुझाव दिया जाना निश्चित है। क्यों? क्योंकि अंतर में है , और जब हम इसे संसाधित, संख्या यह पता चलता है में से एक होगी (क्योंकि हम चाहते हैं कि इसकी गारंटी रहे , निश्चित रूप से शामिल होंगे )। इसी तरह, का अंतर में कहीं दिखाई देता है , और इससे को फिर से सुझाव दिया जाएगा। इस तरह, हम देखते हैं कि का सही मूल्य सुझाव दिया जाएगा कम से कम 6 बार। वही , और लिए रखता हैएक 1 - बी 1 डी एक 1 ख 1 ∈ बी ( एक 1 - बी 1 ) + बी एक 1 एक 1 - बी 2 डी एक 1 एक 1 एक 2 एक 3a1a1−b1Da1b1∈B(a1−b1)+Ba1a1−b2Da1a1a2a3, और इसी तरह।
तो, को संख्याओं का सेट करें जो कम से कम 6 बार सुझाया गया है। इस के एक से अधिक सन्निकटन होना निश्चित है की, ऊपर टिप्पणी से।एक * एकA∗a∗a
एक अनुकूलन के रूप में, हम सभी सुझावों कि में मौजूद नहीं हैं फ़िल्टर कर सकते हैं तुरंत: दूसरे शब्दों में, हम अंतर इलाज कर सकते हैं मूल्यों के सभी सुझाव के रूप में । यह सुनिश्चित करता है कि हमारे पास । हम उम्मीद कर रहे हैं कि से सख्ती से छोटा होता है ; कोई गारंटी नहीं है, लेकिन अगर सब ठीक हो जाता है, तो शायद यह होगा।घ ( घ + बी ) ∩ एक एक * ⊆ एक एक * एकAd(d+B)∩AA∗⊆AA∗A
इसे एक साथ रखकर, को को परिष्कृत करने के लिए एल्गोरिथ्म इस प्रकार है:ए *A,BA∗
चलो । यह सुझावों का बहु-सेट है।S=∪d∈D(d+B)∩A
गणना करें कि में प्रत्येक मान कितनी बार आता है । चलो प्रकट होने में कम से कम 6 बार मूल्यों का वह समूह होना । (यह एक सरणी का निर्माण करके कुशलता से लागू किया जा सकता शुरू में सब शून्य 251 की, शुरू में, और हर बार संख्या का सुझाव दिया है, तो आप को बढ़ा देते ; अंत में आप के माध्यम से स्वीप तत्व जिसका मूल्य है 6 या की तलाश में बड़ा)एक * एस एक है एक [ रों ] एकSA∗Sasa[s]a
A को प्राप्त करने के लिए एक समान विधि का निर्माण किया जा सकता है । आप मूल रूप से ऊपर की चीजों को उलटते हैं और कुछ संकेतों को फ्लिप करते हैं: जैसे, बजाय , आप ।बी * घ + बी - डी + एकA,BB∗d+B−d+A
एक प्रारंभिक अति-सन्निकटन की गणना कैसे करें। हमारे प्रारंभिक अति-सन्निकटन को प्राप्त करने के लिए, एक विचार यह माना जाता है (wlog) कि । यह इस प्रकार है कि प्रत्येक मान के बीच कहीं भी दिखाई देना चाहिए इस प्रकार मतभेद की सूची, के लिए हमारी प्रारंभिक ओवर-सन्निकटन के रूप में इस्तेमाल किया जा सकता के। दुर्भाग्य से, यह हमें लिए एक बहुत उपयोगी अति-सन्निकटन नहीं देता है ।एक मैं डी डी एक खb1=0aiDDab
एक बेहतर दृष्टिकोण अतिरिक्त में से एक के मूल्य का अनुमान लगाना है के। दूसरे शब्दों में, हम यह मान (wlog) कि , और प्रयोग के बारे में हमारी प्रारंभिक ओवर-सन्निकटन के रूप में के। फिर, हम लगता है कि जो इन 36 में से एक मान वास्तव में से एक है रों कहते हैं, ' । यही कारण है कि फिर हमें एक से अधिक सन्निकटन देता के लिए की। हम इस प्रारंभिक अति-सन्निकटन , फिर अभिसरण तक इसे पुन: परिष्कृत करते हैं, और परीक्षण करते हैं कि परिणाम सही है या नहीं। हम 36 बार दोहराते हैं, पर 36 अलग-अलग अनुमानों के साथ (औसतन 6 अनुमानों को पर्याप्त होना चाहिए) जब तक हम एक काम नहीं करते।ख 1 = 0 ए = डी एक एक एक 1 बी = एक 1 - डी बी ए , बी एक 1ab1=0A=Daaa1B=a1−DbA,Ba1
एक पूर्ण एल्गोरिथ्म। अब हमारे पास गणना करने के लिए एक पूर्ण एल्गोरिथ्म हो सकता है । मूल रूप से, हम और लिए प्रारंभिक अति-सन्निकटन प्राप्त करते हैं , फिर पुनरावृत्त रूप से परिष्कृत करते हैं। ए बीa1,…,a6,b1,…,b6AB
एक अनुमान : प्रत्येक , अनुमान कि । निम्न कार्य करें:एक 1 = zz∈Da1=z
प्रारंभिक अति-सन्निकटन: और परिभाषित करें ।बी = जेड - डीA=DB=z−D
Iterative शोधन: अभिसरण तक निम्नलिखित को लागू करें:
- परिष्कृत एक नया ओवर-सन्निकटन प्राप्त करने के लिए के 'है।बी * खA,BB∗b
- परिष्कृत एक नया ओवर-सन्निकटन प्राप्त करने के लिए की के।ए ∗ एA,B∗A∗a
- चलो और । बी : = बी *A:=A∗B:=B∗
सफलता के लिए जाँच करें: यदि परिणामी प्रत्येक का आकार 6 है, तो परीक्षण करें कि क्या वे समस्या का एक वैध समाधान हैं। अगर वे हैं, तो रुकें। यदि नहीं, तो उम्मीदवार के मूल्यों पर लूप जारी रखें ।जेडA,Bz
विश्लेषण।
यह काम करेगा? क्या यह अंततः और होगा, या यह पूरी तरह से समस्या को हल किए बिना अटक जाएगा? इसका पता लगाने का सबसे अच्छा तरीका शायद इसका परीक्षण करना है। हालांकि, आपके मापदंडों के लिए, हां, मुझे उम्मीद है कि यह प्रभावी होगा।बी = { बी १ , … , बी ६ }A={a1,…,a6}B={b1,…,b6}
अगर हम # 1 विधि का उपयोग करते हैं, जब तकबहुत बड़े नहीं हैं, हेयुरिस्टिकली मुझे उम्मीद है कि सेट्स के साइज एकरस होकर सिकुड़ जाएंगे। से व्युत्पन्न पर विचार करें । प्रत्येक अंतर सुझावमूल्यों; उनमें से एक सही है, और अन्य को यादृच्छिक संख्याओं के रूप में माना जा सकता है। अगर एक नंबर है कि बीच में प्रकट नहीं होता है के, क्या संभावना है कि यह छानने बच जाते हैं और में जोड़ा जाता है है ? खैर, हम उम्मीद करते हैं कि बारे में सुझाव दिया जाएगाएक * एक , बी डी | B | | B | - 1 एक्स एक एक * एक ( | बी | - 1 ) × 36 / 251 | B | ≤ 36 x p = 0.4 | B | | B | = 30 पी ≈ 0.25 ए । पी|A|,|B|A∗A,Bd|B||B|−1xaA∗a(|B|−1)×36/251कुल में समय (औसत पर, उस के वर्गमूल के बारे में मानक विचलन के साथ)। अगर , संभावना है कि एक गलत फ़िल्टरिंग से बच जाता है, या तो के बारे में होना चाहिए (द्विपद के लिए सामान्य सन्निकटन का उपयोग, निरंतरता सुधार के साथ)। (संभावना छोटी है अगर छोटा है; उदाहरण के लिए, जैसे , मुझे उम्मीद है।) मुझे उम्मीद है कि का आकार बारे में होगा , जो सख्ती से अति-सन्निकटन में सुधार करेगा क्योंकि यह कड़ाई से छोटा है। उदाहरण के लिए, अगर , तो इन अनुमानों के आधार पर मुझे उम्मीद है|B|≤36xp=0.4|B||B|=30p≈0.25A∗| ए | | ए | = | B | = 36 | A ∗ | ≈ 18 | ए |p(|A|−6)+6|A||A|=|B|=36|A∗|≈18 , जो एक बड़ा सुधार है।|A|
इसलिए, मैं भविष्यवाणी करता हूं कि दौड़ने का समय बहुत तेज होगा। मैं परिशोधन के 3-5 पुनरावृत्तियों के बारे में उम्मीद करता हूं कि अभिसरण के लिए पर्याप्त है, आमतौर पर, और पर लगभग 6 अनुमान शायद पर्याप्त होना चाहिए। प्रत्येक परिशोधन ऑपरेशन में शायद कुछ हज़ार मेमोरी पढ़ी / लिखी जाती हैं, और हम ऐसा करते हैं कि शायद 20-30 बार। इसलिए, मैं आपके द्वारा निर्दिष्ट मापदंडों के लिए यह बहुत तेज होने की उम्मीद करता हूं। हालांकि, यह सुनिश्चित करने का एकमात्र तरीका यह है कि इसे आज़माएं और देखें कि यह अच्छी तरह से काम करता है या नहीं।z