Definitionen
Sie können diesen Teil überspringen, wenn Sie bereits die Definitionen von Gruppen , endlichen Gruppen und Untergruppen kennen .
Gruppen
In der abstrakten Algebra ist eine Gruppe ein Tupel (G, ∗) , wobei G eine Menge und ∗ eine Funktion G × G → G ist, so dass gilt:
Abschluss: für alle x, y in G ist x ∗ y auch in G (impliziert durch die Tatsache, dass ∗ eine Funktion G × G → G ist ).
Assoziativität: für alle x, y, z in G ist (x ∗ y) ∗ z = x ∗ (y ∗ z) .
Identität: gibt es ein Element e in G so dass für alle x in G , x * e = x = e * x .
Invers: Für jedes x in G gibt es ein Element y in G, so dass x x y = e = y ∗ x ist , wobei e das Identitätselement ist, das im vorherigen Aufzählungspunkt erwähnt wurde.
Endliche Gruppen
Eine endliche Gruppe ist eine Gruppe (G, ∗), in der G endlich ist, dh endlich viele Elemente hat.
Untergruppen
Eine Untergruppe (H, ∗) einer Gruppe (G, ∗) ist so, dass H eine Untergruppe von G ist (nicht notwendigerweise eine richtige Untergruppe) und (H, ∗) ebenfalls eine Gruppe ist (dh die obigen 4 Kriterien erfüllt).
Beispiele
Betrachten Sie die Diedergruppe D 3 (G, ∗), wobei G = {1, A, B, C, D, E} und ∗ wie folgt definiert sind (eine Tabelle wie diese wird als Cayley-Tabelle bezeichnet ):
∗ | 1 ABCDE - + ---------------------- 1 | 1 ABCDE A | AB 1 DEZ B | B 1 AECD C | CED 1 BA D | DCEA 1 B E | EDCBA 1
In dieser Gruppe ist die Identität 1 . Auch A und B sind invers zueinander sind, während 1 , C , D und E die Inversen der sich jeweils (der Kehrwert sind 1 ist 1 , das Inverse von C ist , C , das Inverse von D ist D , und die Inverse von E ist E ).
Nun können wir überprüfen, dass (H, ∗) wobei H = {1, A, B} eine Untergruppe von (G, ∗) ist . Informationen zum Verschluss finden Sie in der folgenden Tabelle:
∗ | 1 AB - + ---------- 1 | 1 AB A | AB 1 B | B 1 A
wo alle möglichen Elementpaare in H unter ∗ ein Glied in H ergeben .
Die Assoziativität muss nicht überprüft werden, da Elemente von H Elemente von G sind .
Die Identität ist 1 . Dies muss mit der Gruppenidentität identisch sein. Außerdem muss die Identität in einer Gruppe eindeutig sein. (Können Sie das beweisen?)
Für die inversen prüfen , dass die Inverse von A ist , B , das ein Mitglied ist H . Die Umkehrung von B ist A , das auch ein Mitglied von H ist . Das Inverse von 1 ist immer noch selbst, was keine Überprüfung erfordert.
Aufgabe
Beschreibung
Bestimmen Sie bei einer endlichen Gruppe (G, ∗) die Anzahl ihrer Untergruppen.
Eingang
Für eine Gruppe (G, ∗) erhalten Sie ein 2D-Array der Größe n × n , wobei n die Anzahl der Elemente in G ist . Angenommen, der Index 0
ist das Identitätselement. Das 2D-Array repräsentiert die Multiplikationstabelle. Für die obige Gruppe erhalten Sie beispielsweise das folgende 2D-Array:
[[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]]
Zum Beispiel können Sie sehen, dass 3 ∗ 1 = 5 ist, weil a[3][1] = 5
, wo a
das 2D-Array oben ist.
Anmerkungen:
- Sie können ein 1-indiziertes 2D-Array verwenden.
- Die Zeile und die Spalte für die Identität können weggelassen werden.
- Sie können nach Belieben andere Formate verwenden, diese müssen jedoch konsistent sein. (dh Sie möchten möglicherweise, dass der letzte Index stattdessen Identität ist usw.)
Ausgabe
Eine positive Zahl, die die Anzahl der Untergruppen in der Gruppe darstellt.
Beispielsweise ist für die obige Gruppe (H, above ) eine Untergruppe von (G, ∗), wann immer H =
- {1}
- {1, A, B}
- {1, C}
- {1, D}
- {1, E}
- {1, A, B, C, D, E}
Daher gibt es 6 Untergruppen, und Ihre Ausgabe für dieses Beispiel sollte sein 6
.
Hinweise
Sie können die Artikel lesen, die ich verlinkt habe. Diese Artikel enthalten Theoreme über Gruppen und Untergruppen, die für Sie nützlich sein könnten.
Wertung
Das ist Code-Golf . Antwort mit der niedrigsten Anzahl an Bytes gewinnt.
quelle
0
das Identitätselement aufrufen , ist es verwirrend, den Operator als Multiplikation beschreiben zu lassen ...Antworten:
Mathematica,
6248 BytesReine Funktion, die ein 1-indiziertes 2D-Array erwartet.
Count
s die NummerSubsets
derFirst
Zeile des Eingabearrays, die unter der Gruppenoperation geschlossen wird. Da dies die leere Menge einschließt, subtrahieren wir1
. Beachten Sie, dass eine nicht leere Untergruppe einer endlichen Gruppe, die unter der Gruppenoperation geschlossen wird , per Definition eine Untergruppe ist (und umgekehrt).Streng genommen überprüfe ich nicht, ob die Teilmenge
x
unter der Gruppenoperation geschlossen istx
, sondern beschränke die Multiplikationstabelle auf die Teilmenge und überprüfe, ob sie genau die Elemente von enthältx
. Dies impliziert eindeutig, dassx
in Bezug auf die Gruppenoperation geschlossen ist. Im Gegensatz dazu jede Untergruppex
enthält1
und somitx
eine Teilmenge der Elemente in der eingeschränkten Multiplikationstabelle erscheinen wird, und dax
unter dem Gruppenbetrieb geschlossen ist, muss es gleichx
.quelle
Haskell , 79 Bytes
Grundsätzlich eine Portierung der Mathematica-Methode von ngenisis. (Außer ich verwende 0-indizierte Arrays.)
c
Nimmt eine Liste von Listen vonInt
s und gibt eine ganze Zahl zurück.Probieren Sie es online!
Es wird angenommen, dass die
Int
s genauso nummeriert sind wie die Zeilen (äußeren Listen) und Spalten, die ihre Multiplikation anzeigen. Da also 0 die Identität ist, entspricht die erste Spalte den Indizes der Zeilen. Dies ermöglicht die Verwendung der Einträge der ersten Spalte zum Aufbau der Teilmengen.Wie es funktioniert
c
ist die Hauptfunktion.g
ist das Gruppenarray als Liste von Listen.l
ist eine Teilmenge der Elemente. Die Liste der Teilmengen ist wie folgt aufgebaut:foldr(\r->([id,(r!!0:)]<*>))[[]]g
faltet eine Funktion über die Zeilen vong
.r
ist eine Zeile vong
, deren erstes (0.) Element als Element extrahiert wird, das eingeschlossen sein kann ((r!!0:)
) oder nicht (id
).<*>
kombiniert die Auswahlmöglichkeiten für diese Zeile mit den folgenden.and[g!!x!!y`elem`l|x<-l,y<-l]
testet für jedes Elementpaar,l
ob sein Vielfaches vorhanden istl
.sum[1|...]-1
zählt die Teilmengen, die den Test bestehen, mit Ausnahme einer leeren Teilmenge.quelle
Jelly ,
1716 Bytes1 Byte dank ETHproductions (
LR → J
)Probieren Sie es online! (1-indiziert)
quelle
J
anstattLR
ein Byte zu speichern :-)Python 2,
297215 BytesProbieren Sie es online aus
Dieses Programm funktioniert für die Beispielgruppe ohne
==T[x][y]
, aber ich bin mir ziemlich sicher, dass es notwendig ist.Bearbeiten: Nimmt nun an, dass das Identitätselement von G immer das erste ist.
Ungolfed:
Ungolfed TIO
Negative Gruppenelemente durch Veränderung ohne Kosten unterstützt werden
-1
zu''
.quelle
0
des Beispiels, nicht um den Index.