क्या ये ब्रैड्स समान हैं?


13

यदि आप ब्रैड-थ्योरी से परिचित नहीं हैं तो मेरा सुझाव है कि आप इसे पहले पढ़ें । यह प्रश्न मानता है कि आप कम से कम हाथ में अवधारणाओं से परिचित हैं और मान लेते हैं कि आप समूह-सिद्धांत से अच्छी तरह परिचित हैं

हमें परिभाषित करते हैं σ n चोटी जिसमें होने के लिए n से अधिक शीर्ष पार से वें किनारा (एक अनुक्रमित) n + 1 वें किनारा, और σ n - का उल्टा होने की σ n (यही कारण है n + 1 वें स्ट्रैंड n वें स्ट्रैंड को पार करता है )।

चोटी समूह बी एन तब से उत्पन्न होता है 1 , σ 2 , σ 3 ,। । । ,, एन -1 > । इस प्रकार B n पर प्रत्येक ब्रैड को bra-braids के उत्पाद के रूप में लिखा जा सकता है। 1


यह निर्धारित करना कि एक समूह पर दो ब्रेड्स समान हैं, एक सरल कार्य नहीं है। यह बहुत स्पष्ट है कि हो सकता है σ 1 σ 3 = σ 3 σ 1 , लेकिन यह थोड़ा कम स्पष्ट है कि उदाहरण के लिए σ 2 σ 1 σ 2 = σ 1 σ 2 σ 12

तो सवाल यह है कि "हम कैसे निर्धारित कर सकते हैं कि दो ब्रैड समान हैं?"। वैसे प्रत्येक के ऊपर दो उदाहरण इस का एक सा प्रतिनिधित्व करते हैं। सामान्य रूप से निम्नलिखित संबंध, जिसे आर्टिन के संबंध कहा जाता है, सत्य हैं:

  • σ i σ j = σ j σ i ; मैं - ज> १

  • σ मैं σ i + 1 σ मैं = σ i + 1 σ मैं σ i + 1

हम इन दो संबंधों का उपयोग समूह स्वयंसिद्धों के साथ मिलकर यह साबित करने के लिए कर सकते हैं कि कोई समान ब्रेड्स समान हैं। इस प्रकार दो ब्रैड समान हैं यदि इन संबंधों के दोहराए गए अनुप्रयोग और समूह स्वयंसिद्ध प्रदर्शित कर सकते हैं।

कार्य

आप दो ब्रैड लेने के लिए एक प्रोग्राम या फ़ंक्शन लिखेंगे और यह निर्धारित करेंगे कि वे समान हैं या नहीं। आप वैकल्पिक रूप से समूह के आदेश का प्रतिनिधित्व करने वाला एक सकारात्मक पूर्णांक भी ले सकते हैं।

यह एक प्रश्न है, इसलिए उत्तर बाइट्स में दिए जाएंगे, कम बाइट्स बेहतर होने के साथ।

इनपुट और आउटपुट

आपको जनरेटर की एक आदेशित सूची के रूप में एक ब्रैड का प्रतिनिधित्व करना चाहिए, (या किसी भी समकक्ष संरचना, जैसे वेक्टर)। आप किसी भी उचित रूप में जनरेटर का प्रतिनिधित्व कर सकते हैं (जैसे एक पूर्णांक, एक सकारात्मक पूर्णांक और एक बूलियन का दो टुपल)।

मानक नियमों के साथ आपको दो अलग-अलग मूल्यों में से एक का उत्पादन करना चाहिए, एक अस्वीकार को स्वीकार करना चाहिए।

परीक्षण के मामलों

[],       []              -> True
[1,-1],   []              -> True
[1,2,1],  [2,1,2]         -> True
[1,3],    [3,1]           -> True
[1,3,2,1],[3,2,1,2]       -> True
[1,4,-4,3,2,1], [3,2,1,2] -> True
[2,2,1],  [2,1,2]         -> False
[1,2,-1], [-1,2,1]        -> False
[1,1,1,2],[1,1,2]         -> False

1: ध्यान दें कि जबकि B n एक समूह के सभी गुणों को संतुष्ट करता है, हमारे ब्रैड समूह पर ऑपरेशन सराहनीय नहीं है, और इस प्रकार हमारा समूह abelian नहीं है।

2: आप खुद के लिए इस की पुष्टि मैं लागू करने का सुझाव देते हैं करना चाहते हैं तो σ 1 - आप कागज पर दो को बाहर निकालने हैं, तो दोनों पक्षों के लिए, या उन्हें वास्तविक तार के साथ मॉडल यह क्यों यह मामला है स्पष्ट हो जाना चाहिए।


मैं चोटी के सिद्धांत से अपरिचित हूं, इसलिए मैं पूरी तरह से जिबरिश (सिर्फ मजाक कर रहा हूं) के रूप में वीटीसी कर रहा हूं
caird coinheringaahing

2
क्या हमारे पास कुछ परीक्षण मामले हो सकते हैं?
हाइपरनेत्रिनो

@HyperNeutrino क्षमा करें उन्हें जोड़ना भूल गए। अब जोड़ा गया। अधिक सुझाव देने के लिए स्वतंत्र महसूस करें।
तदर्थ गार्फ हंटर

@WheatWizard परीक्षण मामला सुझाव:[],[]
Pavel

प्रस्तावित टेस्ट केस:[1, 4, -4, 3, 2, 1], [3, 2, 1, 2] => TRUE
हाइपरन्यूट्रीनो

जवाबों:


11

हास्केल , 190 बाइट्स

i!j|j<0=reverse$map(0-)$i!(-j)|i==j=[i,i+1,-i]|i+1==j=[i]|i+j==0=[j+1]|i+j==1=[-j,-i,j]
_!j=[j]
j%(k:a)|j+k==0=a
j%a=j:a
i&a=foldr(%)[]$foldr((=<<).(!))[i]a
a?n=map(&a)[1..n]
(a#b)n=a?n==b?n

इसे ऑनलाइन आज़माएं!

यह काम किस प्रकार करता है

चलो एफ एन हो मुक्त समूह पर n जनरेटर एक्स 1 , ..., एक्स एन । चोटी सिद्धांत में पहला परिणाम (एमिल Artin, में से एक Theorie Zöpfe der , 1925) है कि हम एक injective है समरूपता : बी एनAut ( एफ एन ) जहां कार्रवाई σ मैं σ की मैं द्वारा परिभाषित किया गया है

σ मैं ( एक्स मैं ) = एक्स मैं एक्स मैं + 1 एक्स मैं -1 ,
σ मैं ( एक्स मैं + 1 ) = एक्स मैं ,
σ मैं ( एक्स जे ) = एक्स जे के लिए जे ∉ { मैं , मैं + 1}।

उलटा σ मैं -1 द्वारा दिया जाता है

σ मैं -1 ( एक्स मैं ) = एक्स मैं + 1 ,
σ मैं -1 ( एक्स मैं + 1 ) = एक्स मैं + 1 -1 एक्स मैं एक्स मैं + 1 ,
σ मैं -1 ( एक्स जे ) = एक्स जे के लिए जे ∉ { मैं , मैं + 1}

और निश्चित रूप से रचना द्वारा दिया जाता है अब = एकb

परीक्षण करने के लिए कि एक = बी एन , यह परीक्षण करने के लिए पर्याप्त होता है कि एक ( एक्स मैं ) = ( एक्स मैं सभी के लिए) मैं = 1, ..., एन । इस में एक बहुत सरल समस्या है एफ एन , जहां हम केवल पता करने के लिए बंद करने का तरीका जरूरत एक्स मैं के साथ एक्स मैं -1

कोड में:

  • i!jगणना करता है f utes i ( x j ) (जहां या तो नकारात्मक हो सकता है iया jएक व्युत्क्रम का प्रतिनिधित्व कर सकता है),
  • foldr(%)[] मुक्त समूह में कमी करता है,
  • i&acomputes एक ( एक्स मैं ),
  • a?nकंप्यूट्स [ f a ( x 1 ),…, f a ( x n )],
  • और B n में a = b के(a#b)n लिए समानता परीक्षण है ।

4

पायथन 2 , 270 263 260 250 249 241 बाइट्स

def g(b,i=0):
 while i<len(b)-1:
  R,s=b[i:i+2]
  if R<0<s:b[i:i+2]=[[],[s,-R,-s,R],[s,R]][min(abs(R+s),2)];i=-1
  i+=1
 return b
def f(a,b):
 b=g(a+[-v for v in b][::-1]);i=0
 while i<len(b)and b[0]>0:b=b[1:]+[b[0]];i+=1   
 return g(b)==[]

इसे ऑनलाइन आज़माएं!

ब्रैड समस्थानिक समस्या को हल करने के लिए 'सबवॉर्ड रिवर्सिंग' विधि का कार्यान्वयन: पहचान = ए = बी iff अब -1 = पहचान।

से लिया गया एल्गोरिथ्म: ब्रैड आइसोटोप समस्या के कुशल समाधान, पैट्रिक डेहोरनो ; वह कई अन्य एल्गोरिदम का वर्णन करता है जो ब्याज के हो सकते हैं ...

यह एल्गोरिथ्म सूची में बाएं से दाएं मार्च करते हुए काम करता है, एक सकारात्मक संख्या के बाद एक नकारात्मक संख्या की खोज करता है; यानी, i, j> 0 के साथ फॉर्म x i -1 x j का उप-शब्द ।

यह निम्नलिखित समकक्षों का उपयोग करता है:

x i -1 x j = x j x i x j -1 x i -1 यदि i = j + 1 या j = i + 1 है

x i -1 x j = पहचान (खाली सूची) यदि i == j

x i -1 x j = x j x i -1 अन्यथा।

बार-बार आवेदन करने से, हम फॉर्म की एक सूची के साथ समाप्त होते हैं w1 + w2, जहां हर तत्व w1सकारात्मक है और हर तत्व w2नकारात्मक है। (यह फ़ंक्शन की क्रिया है g)।

हम gसूची में दूसरी बार लागू होते हैं w2 + w1; परिणामी सूची खाली होनी चाहिए यदि मूल सूची पहचान के बराबर थी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.