परिभाषित करें रन विभाजन संख्या क्रमपरिवर्तन की , निरूपित किया आर ( π ) , निम्नलिखित प्रक्रिया का उपयोग कर। चलो कश्मीर में इस तरह के पूर्णांक अधिक से अधिक है कि संख्या होना मिनट ( π ) , ... , कश्मीर में बढते क्रम में दिखाई देते हैं π । उन्हें π से निकालें , और प्रक्रिया को दोहराएं। राउंड की संख्या यह पूरे क्रमचय उपभोग करने के लिए ले जाता है आर ( π ) ।πr(π)kmin(π),…,kππr(π)
उदाहरण के लिए, की गणना करें । 6273584 प्राप्त करने के लिए हमने पहले 1 सेट किया । फिर हमने 234 को सेट किया , 6758 प्राप्त करने के लिए । फिर हमने 5 अलग सेट किया , 678 प्राप्त करने के लिए । अंत में, हमने खाली क्रमपरिवर्तन प्राप्त करने के लिए 678 को अलग रखा । यह चार राउंड लेता है, इसलिए आर ( 62735814 ) = 4 ।r(62735814)1627358423467585678678r(62735814)=4
यह प्रतिनिधित्व लिए कैसे उपयोगी है ? हर दूसरे रन यानी 234 , 678 को लें , और इन नंबरों को 51627384 पर ले जाने के लिए दाईं ओर ले जाएँ (संपादित करें: क्रम में वे क्रमचय में प्रकट होते हैं, यानी 627384 )। अब केवल दो रन हैं, अर्थात् 1234 , 5678 , और हम 5678 को दाईं ओर ले जाकर सूची को सॉर्ट कर सकते हैं ।62735814234,678516273846273841234,56785678
अब मेरा पीछा अनुमान करते हैं: एक क्रमपरिवर्तन के लिए , चलो Π सभी क्रमपरिवर्तन कि से पहुंचा जा सकता है के सेट हो π एक चाल के भीतर। तब मिनट अल्फा ∈ Π आर ( अल्फा ) = ⌈ आर ( π ) / 2 ⌉ ।πΠπminα∈Πr(α)=⌈r(π)/2⌉
इस अनुमान को देखते हुए यह दिखाने के लिए आसान है कि एक क्रमचय सॉर्ट करने के लिए की जरूरत चाल की न्यूनतम संख्या है ⌈ लोग इन 2 आर ( π ) ⌉ , और मैं में सभी क्रमपरिवर्तन के लिए इस सूत्र को सत्यापित किया है एसπ⌈log2r(π)⌉ के लिए n ≤ 8 ।Snn≤8
संपादित करें: यहाँ की एक अलग व्याख्या है चलाने के विभाजन संख्या है जो यह की गणना के लिए एक रेखीय समय एल्गोरिथ्म देता है, और इस प्रकार सूत्र की पुष्टि करने, मुझे मेरे अनुमान के प्रमाण के स्केच करने की अनुमति देता है ।⌈log2r(π)⌉
क्रमचय पर विचार करें फिर से। पहला रन 1 में समाप्त होने का कारण यह है कि 2 1 से पहले दिखाई देता है । इसी तरह, में इसके दूसरे भाग समाप्त होता है 4 के बाद से 5 प्रकट होता है से पहले 4 , और इतने पर। इसलिए रन-विभाजन संख्या एक क्रमपरिवर्तन की संख्या i s की संख्या है जो i + 1 i से पहले प्रकट होती है ।62735814121454ii+1i
यदि हम क्रमपरिवर्तन के व्युत्क्रम को देखें तो हम इसे और अधिक स्पष्ट रूप से कह सकते हैं। फिर से विचार करें । लो π - 1 = 72,485,136 । इस क्रमचय में तीन अवरोही हैं: 7 2 48 5 1 36 (एक वंश पूर्ववर्ती की तुलना में छोटा स्थिति है)। प्रत्येक अवरोही एक नए रन की शुरुआत से मेल खाती है। तो आर ( π ) एक प्लस में अवरोही की संख्या के बराबर है π - 1 ।π=62735814π−1=7248513672485136r(π)π−1
क्या करता है के मामले में की तरह आपरेशन नज़र ? आज्ञा देना बी संख्या है कि हम सही करने के लिए कदम है, और एक संख्या है कि बाईं ओर रहने का सेट हो। हम में संख्या की जगह एक पर एक क्रमचय के साथ { 1 , ... , | ए | } उनके रिश्तेदार आदेश का प्रतिनिधित्व करने, और में संख्या की जगह बी पर एक क्रमचय के साथ { | ए | + 1 , … , | ए | + | B | }π−1BAA{1,…,|A|}B{|A|+1,…,|A|+|B|} । उदाहरण के लिए, 6273 5 8 की चाल पर विचार करें । उलटा क्रमपरिवर्तन के संदर्भ में, यह 7 248 5 136 8 2 468 1 357 है । तो 75 को मैप किया गया था 21 और 248,136 से मैप किया गया था 468,357 ।62735814↦5162738472485136↦246813577521248136468357
एक वंश में π - 1 आपरेशन केवल तभी के बाद खत्म हो जाता है एक्स ∈ एक और y ∈ बी । इसके विपरीत, के मामले में π - 1 , में विभाजन एक और बी से मेल खाती है एक -runs और बी -runs; हर बार एक बी रन समाप्त होता है और एक एक रन शुरू होता है, वहाँ एक वंश है। एक वंश को "मारने" के लिए, हमें A -run से B तक स्विच करना होगा…xy…π−1x∈Ay∈Bπ−1ABABBAAB अरुण। यदि हम दो वंशों को मारते हैं, तो हम बीच से एक में बदल जाएंगेवंशों को मारतेअवरोह के लिए B -run से A -run।BA
यह तर्क है कि दिखाने के लिए है, तो औपचारिक रूप दिया जा सकता है से उत्पन्न होती है π एक ऑपरेशन के माध्यम से, तो घ ( α - 1 ) ≥ ⌊ घ ( π - 1 ) / 2 ⌋ , जहां घ ( ⋅ ) अवरोही की संख्या है। इस के बराबर है आर ( α ) ≥ ⌈ आर ( π ) / 2 ⌉απd(α−1)≥⌊d(π−1)/2⌋d(⋅)r(α)≥⌈r(π)/2⌉ , इस प्रकार मेरी अनुमान का एक ही दिशा साबित। दूसरी दिशा आसान है, और पहले से ही ऊपर उल्लिखित किया गया था: हम बस हर दूसरा रन लेते हैं और इन रनों को एक क्रमांक α प्राप्त करने के लिए दाईं ओर धकेलते हैंα satisfying r(α)=⌈r(π/2)⌉.