एक परिमित समूह के उपसमूहों की संख्या ज्ञात कीजिए


14

परिभाषाएं

यदि आप पहले से ही समूहों , परिमित समूहों और उपसमूहों की परिभाषा जानते हैं तो आप इस भाग को छोड़ सकते हैं ।

समूह

सार बीजगणित में, एक समूह एक टपल है (जी, *) है, जहां जी एक सेट है और * एक समारोह है जी × जी → जी ऐसा है कि निम्नलिखित रखती है:

  • बंद: सभी के लिए एक्स, वाई में जी , x * y भी है जी (तथ्य यह है कि से गर्भित * एक समारोह है जी × जी → जी )।

  • संबद्धता: सभी x, y, z के लिए G , (x ∗ y): z = x ∗ (y all z)

  • पहचान: जी में एक तत्व मौजूद है जैसे कि सभी एक्स के लिए जी , एक्स x ई = एक्स = ईएक्स

  • उलटा: प्रत्येक के लिए एक्स में जी , एक तत्व मौजूद है y में जी ऐसी है कि एक्स * y = ई = y * एक्स , जहां पहचान तत्व पिछले बुलेट बिंदु में वर्णित है।

परिमित समूह

एक परिमित समूह एक समूह (G, ite) है जहां G परिमित है, अर्थात इसमें कई तत्व हैं।

उपसमूहों

एक समूह (G, is ) का एक उपसमूह (H, H ) ऐसा है कि H , G का एक उपसमूह है (आवश्यक रूप से उचित उपसमुच्चय नहीं) और (H, ∗) भी एक समूह है (अर्थात उपरोक्त 4 मानदंड को संतुष्ट करता है)।

उदाहरण

पर विचार करें डिहेड्रल समूह डी 3 (जी, *) जहां जी = {1, ए, बी, सी, डी, ई} और * नीचे (इस तरह एक मेज एक कहा जाता है परिभाषित किया गया है केली तालिका ):

∗ | 1 एबीसीडीई
- + ----------------------
1 | 1 एबीसीडीई
ए | AB 1 DEC
B | बी 1 एईसीडी
सी | CED 1 बीए
डी | डीसीईए 1 बी
ई | EDCBA 1

इस समूह में, पहचान 1 है । इसके अलावा, एक और बी एक दूसरे के प्रतिलोम हैं, जबकि 1 , सी , डी , और क्रमशः खुद को के प्रतिलोम हैं (के प्रतिलोम 1 है 1 , का प्रतिलोम सी है सी , के प्रतिलोम डी है डी , और का प्रतिलोम है )।

अब, हम यह सत्यापित कर सकते हैं कि (H, ∗) जहाँ H = {1, A, B} (G, ( ) का उपसमूह है । बंद करने के लिए, नीचे दी गई तालिका देखें:

∗ | 1 एबी
- + ----------
1 | 1 एबी
ए | एबी १
B | बी 1 ए

जहां में तत्वों की हर संभव जोड़े एच के तहत * में एक सदस्य देना एच

एच । के तत्व जी के तत्व हैं , क्योंकि संघात को जांच की आवश्यकता नहीं है ।

पहचान 1 है । समूह की पहचान के साथ भी ऐसा ही होना चाहिए। साथ ही, समूह में पहचान अद्वितीय होनी चाहिए। (क्या आप यह साबित कर सकते हैं?)

व्युत्क्रम के लिए, जाँचें कि A का व्युत्क्रम B है , जो H का सदस्य है । B का विलोम A है , जो H का सदस्य भी है । 1 का उलटा अभी भी स्वयं है, जिसे जाँच की आवश्यकता नहीं है।


कार्य

विवरण

एक परिमित समूह (G, ∗) को देखते हुए , इसके उपसमूहों की संख्या ज्ञात कीजिए।

इनपुट

एक समूह (G, ∗) के लिए , आपको आकार n × n का एक 2D सरणी प्राप्त होगा , जहां n में तत्वों की संख्या G है । मान लें कि सूचकांक 0पहचान तत्व है। 2D सरणी गुणन तालिका का प्रतिनिधित्व करेगी। उदाहरण के लिए, ऊपर दिए गए समूह के लिए, आपको निम्न 2D सरणी प्राप्त होगी:

[[0, 1, 2, 3, 4, 5],
[1, 2, 0, 4, 5, 3],
[2, 0, 1, 5, 3, 4],
[3, 5, 4, 0, 2, 1],
[4, 3, 5, 1, 0, 2],
[5, 4, 3, 2, 1, 0]]

उदाहरण के लिए, आप देख सकते हैं कि 3 = 1 = 5 क्योंकि a[3][1] = 5, aऊपर 2 डी सरणी कहां है।

टिप्पणियाँ:

  • आप 1-अनुक्रमित 2D सरणी का उपयोग कर सकते हैं।
  • पहचान के लिए पंक्ति और स्तंभ को छोड़ा जा सकता है।
  • आप फिट होते हुए अन्य स्वरूपों का उपयोग कर सकते हैं, लेकिन यह सुसंगत होना चाहिए। (यानी आप चाहते हैं कि अंतिम सूचकांक इसके बजाय पहचान हो, आदि)

उत्पादन

एक सकारात्मक संख्या समूह में उपसमूहों की संख्या का प्रतिनिधित्व करती है।

उदाहरण के लिए, ऊपर के समूह के लिए, (H, is ) जब भी H = का उपसमूह (G, group ) होता है

  • {1}
  • {, ए, बी}
  • {1, सी}
  • {1, डी}
  • {1, ई}
  • {, ए, बी, सी, डी, ई}

इसलिए, 6 उपसमूह हैं, और इस उदाहरण के लिए आपका आउटपुट होना चाहिए 6


संकेत

आप उन लेखों को पढ़ सकते हैं जिनसे मैं जुड़ा था। उन लेखों में समूहों और उपसमूहों के बारे में प्रमेय शामिल हैं जो आपके लिए उपयोगी हो सकते हैं।


स्कोरिंग

यह । सबसे कम बाइट-काउंट जीत के साथ जवाब दें।


ओह, यह मुझे स्पष्ट नहीं था कि विशेष रूप से पहचान तत्व को संदर्भित करता है, न कि केवल किसी मध्यवर्ती परिणाम को।
orlp

@orlp ने स्पष्ट किया।
लीक नन

यदि आप 0पहचान तत्व को कॉल करने जा रहे हैं , तो यह ऑपरेटर को गुणन के रूप में वर्णित करने के लिए भ्रमित कर रहा है ...
नील

@ नील एह ... जब सम्मेलनों में टकराव होता है।
लीक नून

1
मैंने मान लिया कि 2 डी सूची में तत्व उनकी पंक्तियों / स्तंभों के सूचक के समान थे, अन्यथा आप यह भी कैसे पहचान पाएंगे कि कौन सी पंक्ति / स्तंभ किसके साथ जाता है?
अर्जन जोहान्सन

जवाबों:


8

गणितज्ञ, 62 48 बाइट्स

Count[Subsets@First@#,x_/;Union@@#[[x,x]]==x]-1&

शुद्ध कार्य 1-अनुक्रमित 2D सरणी की अपेक्षा करता है। समूह सरणी के तहत बंद किए गए इनपुट सरणी की पंक्ति की Countसंख्या । चूंकि इसमें खाली सेट शामिल होगा, इसलिए हम घटाते हैं । ध्यान दें कि समूह ऑपरेशन के तहत बंद किए गए एक परिमित समूह की एक गैर-रिक्त सबसेट वास्तव में एक उपसमूह है , (और इसके विपरीत, परिभाषा के अनुसार)।SubsetsFirst1

कड़ाई से बोलते हुए, मैं यह नहीं जाँचता कि xसमूह ऑपरेशन के तहत सबसेट बंद है, मैं गुणन तालिका को सबसेट तक सीमित रखता हूँ xऔर जाँचता हूँ कि इसमें ठीक तत्व हैं x। स्पष्ट रूप से इसका तात्पर्य है कि xसमूह संचालन के संबंध में बंद है। इसके विपरीत, किसी भी उपसमूह xमें समाहित होगा 1और इस प्रकार xप्रतिबंधित गुणा तालिका में दिखाई देने वाले तत्वों का एक सबसेट होगा, और चूंकि xसमूह ऑपरेशन के तहत बंद है, इसलिए इसे बराबर होना चाहिए x


4

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

मूल रूप से नेगीसिस की मैथेमेटिका विधि का एक बंदरगाह। (सिवाय मैं 0-अनुक्रमित सरणियों का उपयोग कर रहा हूं।)

cInts की सूचियों की सूची लेता है और पूर्णांक देता है।

c g=sum[1|l<-foldr(\r->([id,(r!!0:)]<*>))[[]]g,and[g!!x!!y`elem`l|x<-l,y<-l]]-1

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

यह माना जाता है कि Ints को पंक्तियों (बाहरी सूचियों) और स्तंभों को उनके गुणन के रूप में समान किया जाता है। इस प्रकार, चूंकि 0 पहचान है, पहला कॉलम पंक्तियों के सूचक के समान है। यह सबसे पहले कॉलम की प्रविष्टियों का उपयोग करके सबसेट बनाने की अनुमति देता है।

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

  • c मुख्य कार्य है।
  • g सूची की सूची के रूप में समूह सरणी है।
  • lतत्वों का एक सबसेट है। सबसेट की सूची इस प्रकार बनाई गई है:
    • foldr(\r->([id,(r!!0:)]<*>))[[]]gकी पंक्तियों पर एक समारोह सिलवटों g
    • rकी एक पंक्ति है g, जिसका पहला (0 वां) तत्व एक तत्व के रूप में निकाला जाता है जिसे शामिल किया जा सकता है ( (r!!0:)) या नहीं ( id)।
    • <*> इस पंक्ति के लिए विकल्पों को निम्नलिखित लोगों के साथ जोड़ता है।
  • and[g!!x!!y`elem`l|x<-l,y<-l]तत्वों की प्रत्येक जोड़ी के लिए परीक्षण lकि क्या उनके बहु में है l
  • sum[1|...]-1 एक, खाली सबसेट को छोड़कर, परीक्षा पास करने वाले सबसेट को गिना जाता है।

3

जेली , 17 16 बाइट्स

1 बाइट ETHproductions ( LR → J) के लिए धन्यवाद

ị³Z⁸ịFḟ
JŒPÇÐḟL’

JŒPÇÐḟL’  main link. one argument (2D array)
J         [1,2,3,...,length of argument]
 ŒP       power set of ^
    Ðḟ    throw away elements that pass the test...
   Ç      in the helper link
      L   length (number of elements that do not pass)
       ’  decrement (the empty set is still closed under
          multiplication, but it is not a subgroup, as
          the identity element does not exist.)

ị³Z⁸ịFḟ   helper link. one argument (1D indexing array)
ị³        elements at required indices of program input (2D array)
  Z       transpose
   ⁸ị     elements at required indices of ^
     F    flatten
      ḟ   remove elements of ^ that are in the argument given
          if the set is closed under multiplication, this will
          result in an empty set, which is considered falsey.

इसे ऑनलाइन आज़माएं! (1 अनुक्रमित)


आप बाइट को बचाने के Jबजाय कर सकते हैं LR:-)
ETHproductions

@ETHproductions वाह, इस बात के लिए धन्यवाद।
लीक नून

3

पायथन 2, 297 215 बाइट्स

from itertools import*
T=input()
G=T[0]
print sum(all(T[y][x]in g for x,y in product(g,g))*all(any(T[y][x]==G[0]==T[x][y]for y in g)for x in g)*(G[0]in g)for g in chain(*[combinations(G,n)for n in range(len(G)+1)]))

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

यह कार्यक्रम बिना उदाहरण समूह के लिए काम करता है ==T[x][y], लेकिन मुझे अभी भी यकीन है कि यह आवश्यक है।

संपादित करें: अब मानता है कि G का पहचान तत्व हमेशा पहला है।


Ungolfed:

from itertools import*
T=input()
G=T[0]
def f(x,y):return T[y][x]                                           # function
def C(g):return all(f(x,y)in g for x,y in product(g,g))             # closure
def E(g):return[all(f(x,y)==y for y in g)for x in g]                # identity

a=E(G)
e=any(a)
e=G[a.index(1)]if e else-1                                          # e in G

def I(G):return all(any(f(x,y)==e==f(y,x)for y in G)for x in G)     # inverse

#print e
#print C(G),any(E(G)),I(G)

#for g in chain(*[combinations(G,n)for n in range(len(G)+1)]):      # print all subgroups
#   if C(g)and I(g)and e in g:print g

print sum(C(g)*I(g)*(e in g)for g in chain(*[combinations(G,n)for n in range(len(G)+1)]))

अघोषित TIO

किसी भी कीमत पर नकारात्मक समूह तत्वों को बदलकर समर्थन किया जा सकता -1है ''


आप पहचान के लिए जाँच क्यों करते हैं? पहचान पहला तत्व होने की गारंटी है। बस पहले तत्व के बिना सभी संयोजन बनाते हैं और प्रत्येक संयोजन में पहला तत्व जोड़ते हैं।
orlp

"मान लें कि 0 पहचान तत्व है।"
orlp

हाँ, लेकिन इसका मतलब यह नहीं है कि यह सूची में पहले स्थान पर है। मुझे लगा कि यह 0उदाहरण के लिए संख्या के बारे में बात कर रहा था , न कि सूचकांक के बारे में।
mbomb007

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