दो अलग-अलग उत्पन्न करने के लिए कुशल एल्गोरिथ्म, यादृच्छिक पर एक मल्टीसेट के विक्षिप्त क्रम


13

पृष्ठभूमि

मान लीजिए कि मेरे पास पत्थर के दो समान बैच हैं । प्रत्येक संगमरमर रंगों में से एक हो सकता है , जहां । चलो रंग के पत्थर की संख्या को निरूपित प्रत्येक बैच में।n n मैं मैंnccnnii

Let multiset एक बैच का प्रतिनिधित्व करता है। में आवृत्ति प्रतिनिधित्व , के रूप में भी लिखा जा सकता है ।{ n 1 1 , ... , 1 ,S{1,,1n1,2,,2n2,,1c,,cnc} ( एन १)S(1n12n2cnc)

के विशिष्ट क्रमपरिवर्तन की संख्या द्वारा दिया जाता है बहुपद : \ left | \ मुचुअल फंड _ {\ एमएसएस} \ right | = \ binom {n} {N_1, n_2, \ डॉट्स, n_c} = \ frac {! N} { n_1! \, n_2! \ cdots n_c!} = n \ prod_ {i = 1} ^ c \ frac1 {n_i!}।S

|SS|=(nn1,n2,,nc)=n!n1!n2!nc!=n!i=1c1ni!.

सवाल

वहाँ एक कुशल एल्गोरिथ्म उत्पन्न करने के लिए दो फैलाना, विच्छेदित क्रमपरिवर्तन P और Q के यादृच्छिक पर है? (वितरण समान होना चाहिए।)S

  • एक क्रमपरिवर्तन P है फैलाना हर विशिष्ट तत्व के लिए करता है, तो i के P , के उदाहरण i में लगभग समान रूप से बाहर स्थान दिया गया है P

    उदाहरण के लिए, मान लें कि S=(1424)={1,1,1,1,2,2,2,2}

    • {1,1,1,2,2,2,2,1} फैलाना नहीं है
    • {1,2,1,2,1,2,1,2} निश्चित रूप से होगा

    अधिक कठोरता से:

    • यदि , तो में से "स्पेस आउट" करने का केवल एक उदाहरण है , इसलिए let ।i P Δ ( i ) = 0ni=1iPΔ(i)=0
    • अन्यथा, में उदाहरण और उदाहरण  के बीच की दूरी हो  । उदाहरणों के बीच अपेक्षित दूरी को घटाएं , निम्न को परिभाषित करते हुए: यदि समान रूप से में , तो शून्य होना चाहिए, या पर शून्य के बहुत पास होना चाहिए ।जे जे + 1 मैं पी मैं δ ( मैं , जे ) = ( मैं , जे ) - nd(i,j)jj+1iPi
      δ(i,j)=d(i,j)nniΔ(i)=j=1ni1δ(i,j)2
      iPΔ(i)nin

    अब सांख्यिकीय को मापने के लिए परिभाषित करें कि हर कितना समान रूप से में रखा गया है । हम डिफ्यूज़ कहते हैं यदि शून्य के करीब है, या लगभग । (कोई एक थ्रेशोल्ड विशिष्ट to ताकि विसरित हो अगर )s(P)=i=1cΔ(i)iPPs(P)s(P)n2k1SPs(P)<kn2

    इस बाधा एक सख्त वास्तविक समय शेड्यूलिंग बुलाया समस्या याद करते हैं पिनव्हील समस्या मल्टीसेट साथ (ताकि ) और घनत्व । उद्देश्य यह है कि चक्रीय अनंत अनुक्रम को शेड्यूल किया जाए ताकि लंबाई किसी भी क्रम में कम से कम एक उदाहरण । दूसरे शब्दों में, एक व्यवहार्य अनुसूची के लिए सभी आवश्यकता होती है ; if घना ( ) है, तो और । पिनव्हील की समस्या एनपी-पूर्ण प्रतीत होती है।A=n/Sai=n/niρ=i=1cni/n=1Paiid(i,j)aiAρ=1d(i,j)=ais(P)=0

  • यदि की व्युत्पत्ति है, तो दो क्रमपरिवर्तन और विक्षिप्त हैं ; वह है, हर इंडेक्स लिए ।PQPQPiQii[n]

    उदाहरण के लिए, मान लें कि ।S=(1222)={1,1,2,2}

    • {1,2,1,2} और विक्षिप्त नहीं हैं{1,1,2,2}
    • {1,2,1,2} और विक्षिप्त हैं।{2,1,2,1}

खोजपूर्ण विश्लेषण

मैं और के साथ मल्टीसेट्स के परिवार में दिलचस्पी रखता । विशेष रूप से, ।n=20ni=4i4D=(1424344352617181)

  • संभावना है कि दो यादृच्छिक क्रमपरिवर्तन और की रहे विक्षिप्त 3% के बारे में है।PQD

    यह, के रूप में इस प्रकार है जहां गणना की जा सकती है वें Laguerre बहुपद: स्पष्टीकरण के लिए यहां देखें ।Lkk

    |DD|=0dteti=1cLni(t)=0dtet(L4(t))3(L3(t))(L2(t))(L1(t))3=4.5×1011|SD|=n!i=1c1ni!=20!(4!)3(3!)(2!)(1!)3=1.5×1013p=|DD|/|SD|0.03
  • संभावना है कि एक यादृच्छिक क्रमपरिवर्तन के है फैलाना , 0.01% के बारे में है मोटे तौर पर पर मनमाने ढंग से सीमा की स्थापना ।PDs(P)<25

    नीचे के 100,000 नमूनों की एक अनुभवजन्य संभाव्यता का प्लॉट है जहां का एक यादृच्छिक क्रमपरिवर्तन है ।s(P)PD

    मध्यम नमूना आकारों में, ।s(P)Gamma(α8,β18)

    Ps(P)cdf(s(P)){1,8,2,3,4,1,5,2,3,6,1,4,2,3,7,1,5,2,4,3}1191<105{8,2,3,4,1,6,5,2,3,4,1,7,1,2,3,5,4,1,2,3}140916<104{3,6,5,1,3,4,2,1,2,7,8,5,2,4,1,3,3,2,1,4}650972<10.05{3,1,3,4,8,2,2,1,1,5,3,3,2,6,4,4,2,1,7,5}12239136<10.45{4,1,1,4,5,5,1,3,3,7,1,2,2,4,3,3,8,2,2,6}16979189<10.80

संभावना है कि दो यादृच्छिक क्रमपरिवर्तन वैध हैं (दोनों विसरित और विक्षिप्त) ।v(0.03)(0.0001)21010

अक्षम एल्गोरिदम

एक सेट का एक यादृच्छिक व्युत्पन्न उत्पन्न करने के लिए एक आम "तेज" एल्गोरिदम अस्वीकृति-आधारित है:

कर
     पी ← random_permutation ( डी )
जब तक is_derangement ( D , P )पी 
वापस

लगभग पुनरावृत्तियों लेता है , क्योंकि वहाँ लगभग संभावित derangements हैं। हालाँकि एक अस्वीकृति-आधारित यादृच्छिक एल्गोरिथ्म इस समस्या के लिए कारगर नहीं होगा, क्योंकि यह पुनरावृत्तियों के आदेश पर ले जाएगा ।en!/e1/v1010

ऋषि द्वारा उपयोग किए गए एल्गोरिथ्म में , एक मल्टीसेट का एक यादृच्छिक व्युत्पन्न "सभी संभावित व्युत्पत्तियों की सूची से यादृच्छिक पर एक तत्व चुनने से बनता है।" फिर भी यह अकुशल है, क्योंकि इसमें मान्य क्रमपरिवर्तन की गणना है, और इसके अलावा, किसी को भी कुछ भी करने के लिए एक एल्गोरिथ्म की आवश्यकता होगी।v|SD|21016

आगे के प्रश्न

इस समस्या की जटिलता क्या है? क्या यह किसी भी परिचित प्रतिमान को कम किया जा सकता है, जैसे कि नेटवर्क प्रवाह, ग्राफ़ रंग, या रैखिक प्रोग्रामिंग?


"Spaced out" की आपकी परिभाषा के बारे में, आपको के लिए , प्रहरी के रूप में? यह कहना है, एक एकल तत्व मध्य में होना चाहिए, दो को तिहाई में विभाजन का विभाजन करना चाहिए, और इसी तरह। d(i,j)n/(ni+1)0ijn+1P0=Pn+1=i
राफेल

यदि बुराई (छोटे, लेकिन बड़े पर्याप्त) के लिए हो तो क्या होगा ; क्या हम भी अनुमति से फैलाना है? हम निश्चित रूप से दो विक्षिप्त लोगों को खोजने के लिए एक बदलाव नहीं करते हैं! ऐसा लगता है कि कोई भी तत्व बार से अधिक नहीं हो सकता है । S={1nk,2k}kn/2
राफेल

1
फैलाना क्रमपरिवर्तन के सभी जोड़े के बीच विक्षिप्त क्रमपरिवर्तन के सभी जोड़े का अनुपात क्या है ? इसी प्रकार, विच्छेदित क्रमपरिवर्तन के सभी जोड़ियों में से, दो में से कितने में अंतर होता है? (या तो अनुपात "उच्च" है, तो हम हमारे प्रयास की प्रक्रिया का एक आधा करने पर ध्यान केंद्रित कर सकते हैं, अस्वीकृति पर अन्य छोड़कर।)
राफेल

1
@ 1 मिलियन यादृच्छिक क्रमपरिवर्तन के #Raphael (# 3a) , इन 561 लोगों के पास । जोड़े विक्षिप्त हैं। Ds(P)306118/(5612)=6118/1570803.9%
hftf

1
@ के क्रमपरिवर्तन के 10 मिलियन यादृच्छिक जोड़े के @ राफेल (# 3 बी) , 306893 जोड़े विक्षिप्त थे। उन जोड़ियों में से केवल 29 के पास साथ दोनों क्रमपरिवर्तन । यहाँ एक हिस्टोग्राम ( मान ) है। Ds(P)50
hftf

जवाबों:


3

एक दृष्टिकोण: आपको निम्न समस्या को यह कम कर सकते हैं: यह देखते हुए एक बूलियन सूत्र , चुनें एक काम के सभी संतोषजनक कार्य के बीच में से यादृच्छिक पर समान रूप से । यह समस्या एनपी-हार्ड है, लेकिन एक उत्पन्न करने के लिए मानक एल्गोरिदम हैं जो लगभग समान रूप से वितरित हैं, #S एल्गोरिदम से उधार लेने के तरीके। उदाहरण के लिए, एक तकनीक हैश फंक्शन लेने की है, जिसकी रेंज का सावधानी से चुना हुआ आकार है (लगभग एक ही आकार के बारे में, के संतोषजनक असाइनमेंट की संख्या ), समान रूप से की सीमा के भीतर से वेल्यूφ(x)xφ(x)xhφyh, और फिर सूत्र लिए एक संतोषजनक असाइनमेंट खोजने के लिए SAT सॉल्वर का उपयोग करें । इसे कुशल बनाने के लिए, आप को एक विरल रैखिक मानचित्र चुन सकते हैं ।φ(x)(h(x)=y)h

यह तोप के साथ पिस्सू की शूटिंग हो सकती है, लेकिन यदि आपके पास कोई अन्य दृष्टिकोण नहीं है जो काम करने योग्य लगता है, तो यह वह है जिसे आप कोशिश कर सकते हैं।


इसका पालन करना कठिन है। एक बूलियन मान है और एक बाइनरी स्ट्रिंग (बाइनरी चर का सेट) है? तो अंतिम समीकरण का मतलब है ...? φ(x)h(x)
vzn

0

इस समस्या की कुछ विस्तारित चर्चा / विश्लेषण आगे की पृष्ठभूमि के साथ सीएस चैट में शुरू हुई , जिसने समस्या की जटिल आवश्यकताओं में कुछ विषयवस्तु को उजागर किया, लेकिन कोई सटीक त्रुटियां या ओवरसाइट्स नहीं मिले। 1

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

व्युत्पन्न एल्गोरिदम में कुछ शोध है [4] जैसे कि SAGE [5] में उपयोग किया जाता है, लेकिन वे मल्टीसेट के आसपास उन्मुख नहीं होते हैं।

साधारण गड़बड़ी केवल दो पदों की "अदला-बदली" की है। कार्यान्वयन माणिक में है। निम्नलिखित संख्याओं के साथ कुछ अवलोकन / नोट्स हैं।

qb2.rb (gist-github)

यहाँ दृष्टिकोण दो विक्षिप्त टुपल्स (# 106) के साथ शुरू करना है और फिर स्थानीय रूप से / लालच से फैलाव (# 107) में सुधार होता है, जिसे एक अवधारणा derangesperse(# 97) में संयुक्त किया गया है , जो अपमान को संरक्षित करता है। ध्यान दें कि टपल जोड़ी में दो समान पदों की अदला-बदली से बचाव होता है और फैलाव में सुधार हो सकता है और यह फैलाव विधि / रणनीति का हिस्सा है।

derangeसबरूटीन सरणी (मल्टीसेट) और बाद में सरणी जहां स्वैप एक ही तत्व (# 10) के साथ नहीं है में तत्वों के साथ अदला-बदली पर बाएं से दाएं काम करता है। एल्गोरिथ्म सफल होता है, यदि अंतिम स्थिति में कोई और स्वैप नहीं होता है, तो दो ट्यूपल अभी भी विक्षिप्त हैं (# 16)।

प्रारंभिक ट्यूपल्स को निकालने के लिए 3 अलग-अलग दृष्टिकोण हैं। 2 टपल p2हमेशा फेरबदल किया जाता है। कोई "उच्चतम शक्तियों 1 आदेश" (# 128), फेरबदल आदेश (# 127), और "निम्नतम शक्तियों 1 आदेश" ("उच्चतम शक्तियों अंतिम आदेश") (# 126) p1द्वारा टपल 1 ( ) के साथ शुरू कर सकता है ।a.b.c.

फैलाव दिनचर्या disperseअधिक शामिल है, लेकिन वैचारिक रूप से इतना मुश्किल नहीं है। फिर से यह स्वैप का उपयोग करता है। सभी तत्वों पर सामान्य रूप से फैलाव को अनुकूलित करने की कोशिश करने के बजाय यह वर्तमान सबसे खराब स्थिति को पुनरावृत्त करने की कोशिश करता है। विचार 1 को मिल रहा है सेंट कम से कम फैलाने तत्वों, सही करने के लिए छोड़ दिया है। गड़बड़ी या तो x, yअन्य तत्वों के साथ कम से कम फैलाव जोड़ी के बाएं या दाएं तत्वों ( अनुक्रमित) को स्वैप करना है, लेकिन जोड़ी (जो हमेशा फैलाव को कम करेगा) के बीच कोई भी नहीं है, और समान तत्वों ( select# 71) के साथ स्वैप करने का प्रयास भी छोड़ें । mजोड़ी का मध्यबिंदु सूचकांक (# 65) है।

हालाँकि, फैलाव को दोनों युग्मों में मापा जाता है / दोनों (# 40) प्रत्येक जोड़ी में "कम से कम / सबसे बाईं ओर" फैलाव का उपयोग करके अनुकूलित (# 25, # 44)।

एल्गोरिथ्म "सबसे दूर" तत्वों को 1 सेंट ( sort_by / reverse# 71) स्वैप करने का प्रयास करता है ।

true, falseयह तय करने के लिए दो अलग-अलग रणनीतियाँ हैं कि क्या कम से कम फैलने वाली जोड़ी (# 80) के बाएँ या दाएँ तत्व को स्वैप करना है, या तो बाएँ तत्व को स्वैप स्थिति के लिए बाएँ / दाएँ तत्व को दाईं ओर, या सबसे बाएँ या दाएँ तत्व को छोड़ना है स्वैप तत्व से फैलाव जोड़ी में।

एल्गोरिथ्म (# 91) समाप्त हो जाता है जब यह फैलाव में सुधार नहीं कर सकता है (या तो सबसे खराब फैलाव स्थान सही बढ़ रहा है या संपूर्ण टपल जोड़ी (# 85) पर अधिकतम फैलाव)।

आंकड़े c3 दृष्टिकोणों (# 116) और c= 1000 अतिरंजकों (# 97) से अधिक = 1000 उपहास को खारिज करने के लिए आउटपुट हैं , अस्वीकृति से विचलित जोड़ी (# 19, # 106) के लिए 2 फैलाव एल्गोरिदम को देखते हुए। बाद के ट्रैक कुल औसत फैलाव (गारंटी विचलन के बाद) को ट्रैक करते हैं। एक उदाहरण रन इस प्रकार है

c       0.661000
b       0.824000
a       0.927000
[2.484, 2, 4]
[2.668, 2, 4]

इससे पता चलता है कि a-trueएल्गोरिथ्म ~ 92% गैर-अस्वीकृति के साथ सर्वोत्तम परिणाम देता है और ~ 2.6 की औसत सबसे खराब फैलाव दूरी, और 1000 से अधिक परीक्षणों में से 2 की न्यूनतम गारंटी देता है, अर्थात सभी समान-तत्व जोड़े के बीच कम से कम 1 कोई नहीं। यह 3 noqual हस्तक्षेप तत्वों के रूप में उच्च के रूप में समाधान पाया।

derangement एल्गोरिथ्म रैखिक समय पूर्व अस्वीकृति है, और फैलाव एल्गोरिथ्म (विक्षिप्त इनपुट पर चल रहा है) संभवतः प्रतीत होता है ~ ।O(nlogn)

1 समस्या क्विज़बो पैकेट व्यवस्थाओं को खोजने के लिए है जो तथाकथित "फेंग शुई" [1] या एक "अच्छा" यादृच्छिक क्रम को संतुष्ट करती है जहां "अच्छा" कुछ व्यक्तिपरक है और अभी तक "आधिकारिक तौर पर" मात्राबद्ध नहीं है; समस्या के लेखक ने शोध / प्रश्नोत्तरी समुदाय और "फेंग शुई विशेषज्ञों" पर आधारित व्युत्पन्न / फैलाव मानदंड का विश्लेषण / कम किया है। [२] "फेंग शुई नियमों" पर अलग-अलग विचार हैं। कुछ "प्रकाशित" शोध एल्गोरिदम पर किए गए हैं लेकिन यह प्रारंभिक अवस्था में दिखाई देता है। [3]

[१] पैकेट फेंग शुई / QBWiki

[२] क्विज़ेलो पैकेट और फेंग शुई / लाइफशिट

[३] प्रश्न प्लेसमेंट , HSQuizbowl संसाधन केंद्र मंच

[४] रैंडम डेरेंजमेंट्स / मार्टिनेज, पैनहोलजर, प्रोडिंगर जनरेट करना

[५] सेज डिरेंजमेंट एल्गोरिथ्म (अजगर) / मैकएंड्रू


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