Grup döngüsel midir?


21

Giriş

Döngüsel bir grubun ne olduğunu zaten biliyorsanız, bu bölümü geçebilirsiniz.

Bir grup bir dizi ve bir birleştirici ikili işlem ile tanımlanır $(olduğunu (a $ b) $ c = a $ (b $ c)grubu tam olarak bir tane elemanı vardır. eBurada a $ e = a = e $ atüm agrupta ( kimlik ). Her eleman için agrupta vardır tam olarak bir bşekilde a $ b = e = b $ a( ters ) a, bGruptaki her iki element için ise grup içindedira $ b ( kapanma ).

a^nYerine yazabiliriz a$a$a$...$a.

aGruptaki herhangi bir eleman tarafından oluşturulan döngüsel alt grup, alt grubun (alt grup sonsuz değilse) sırasının (büyüklüğünün) olduğu <a> = {e, a, a^2, a^3, a^4, ..., a^(n-1)}yerdir n.

Bir grup, elemanlarından biri tarafından oluşturulabilirse döngüseldir.

Meydan okuma

Sonlu bir grup için Cayley tablosu (ürün tablosu) göz önüne alındığında, döngüsel olup olmadığını belirleyin.

Örnek

Aşağıdaki Cayley tablosuna bir göz atalım:

1 2 3 4 5 6
2 3 1 6 4 5
3 1 2 5 6 4
4 5 6 1 2 3
5 6 4 3 1 2
6 4 5 2 3 1

(Bu, Dihedral Grup 3, D_3 için Cayley masasıdır).

Bu, biz değerini bulmak istediğiniz eğer öyleyse, 1-endeksli olduğu 5 $ 3, bu yüzden biz operatör mutlaka değişmeli olmadığını (not üçüncü satırda beşinci sütununa bakın, 5 $ 3hiç eşit olması gerekmez 3 $ 5. Biz burada görürsünüz 5 $ 3 = 6(Ayrıca 3 $ 5 = 4).

Biz bulabilirsiniz <3>başlayarak [3]ve liste benzersiz iken sonra, geçen eleman ve jeneratör (3) ürününü ekleyin. Anlaştık [3, 3 $ 3 = 2, 2 $ 3 = 1, 1 $ 3 = 3]. Burada alt grupla duruyoruz {3, 2, 1}.

Eğer hesaplaması <1>yoluyla <6>göreceğiniz gruptaki elementlerin hiçbirinin tüm grubu oluşturur. Dolayısıyla bu grup döngüsel değildir.

Test Kılıfları

Girdi bir matris olarak verilecek, çıktısı bir hakikat / sahte karar değeri olarak verilecektir.

[[1,2,3,4,5,6],[2,3,1,6,4,5],[3,1,2,5,6,4],[4,5,6,1,2,3],[5,6,4,3,1,2],[6,4,5,2,3,1]] -> False (D_3)
[[1]] -> True ({e})
[[1,2,3,4],[2,3,4,1],[3,4,1,2],[4,1,2,3]] -> True ({1, i, -1, -i})
[[3,2,4,1],[2,4,1,3],[4,1,3,2],[1,3,2,4]] -> True ({-1, i, -i, 1})
[[1,2],[2,1]] -> True ({e, a} with a^-1=a)
[[1,2,3,4,5,6,7,8],[2,3,4,1,6,7,8,5],[3,4,1,2,7,8,5,6],[4,1,2,3,8,5,6,7],[5,8,7,6,1,4,3,2],[6,5,8,7,2,1,4,3],[7,6,5,8,3,2,1,4],[8,7,6,5,4,3,2,1]] -> False (D_4)
[[1,2,3,4,5,6],[2,1,4,3,6,5],[3,4,5,6,1,2],[4,3,6,5,2,1],[5,‌​6,1,2,3,4],[6,5,2,1,‌​4,3]] -> True (product of cyclic subgroups of order 2 and 3, thanks to Zgarb)
[[1,2,3,4],[2,1,4,3],[3,4,1,2],[4,3,1,2]] -> False (Abelian but not cyclic; thanks to xnor)

Girişin her zaman bir grup olduğu garanti edilir.

Girdiyi 0 indeksli değerler olarak alabilirsiniz.


0 indeksli girişe izin verilir mi? (örneğin [[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2]])?
Neil

@Neil Evet; Belirtmeyi unuttum. Teşekkürler!
HyperNeutrino 24:17

5
Test öğelerinde, grup öğelerinizin etiketlerini daha çok yerleştirmelisiniz. Şu anda tablonun ilk satırı ve sütunu her zaman [1..n]bazı cevaplardaki kusurları gizliyor olabilir.
Lynn,

3
Grubun abelian olup olmadığını test etmek için yeterli olup olmadığını kontrol etmek gibi görünüyor. Z_2 * Z_2 gibi test durumları bunu düzeltirdi.
xnor

2
@HyperNeutrino: İki element grubunun kendisi ile doğrudan ürünü - Klein dörtlü grup olarak da bilinir .
Henning Makholm

Yanıtlar:


8

J , 8 bayt

1:e.#@C.

Çevrimiçi deneyin!

açıklama

1:e.#@C.  Input: matrix M
      C.  Convert each row from a permutation to a list of cycles
    #@    Number of cycles in each row
1:        Constant function 1
  e.      Is 1 a member of the cycle lengths?

Bu da olabilir 1 e.#@C., fwiw
Conor O'Brien

Huh, J Jelly‽'i yeniyor
Adám

@ Adám Jelly, doğrudan ve döngü notasyonu arasındaki permütasyonları dönüştürmek için bir yapıya sahip değildir. Muhtemelen bunları daha sonra atom olarak ekleyebilirim ŒCL€1e, Jelly'de 6 byte üretebilirim .
mil

8

Kabuğu , 11 10 9 bayt

VS≡`ȯU¡!1

1 tabanlı. Varsa bir jeneratörün indeksini, aksi takdirde 0 döndürür. Çevrimiçi deneyin!

açıklama

V          Does any row r of the input satisfy this:
      ¡!    If you iterate indexing into r
   `    1   starting with 1
    ȯU      until a repetition is encountered,
 S≡         the result has the same length as r.


3

JavaScript (ES6), 52 bayt

a=>a.some(b=>!a[new Set(a.map(_=>r=b[r],r=0)).size])


2

Jöle , 15 bayt

JŒ!ị@€µṂ⁼Jṙ'’$$

Çevrimiçi deneyin!

Akla gelen ilk saçma fikir: için eşbiçimlilik onay Z n . (Bu kod O (n!)…)

JŒ!ị@€             Generate all ways to denote this group.
                     (by indexing into every permutation of 1…n)
      µṂ⁼          Is the smallest one equal to this?
         Jṙ'’$$      [[1 2 …  n ]
                      [2 3 …  1 ]    (the group table for Z_n)
                      [… … …  … ]
                      [n 1 … n-1]]

Huh, bu ilginç bir yaklaşım; bunu asla düşünmedim! +1
HyperNeutrino

2

R , 101 97 bayt

function(m)any(sapply(1:(n=nrow(m)),function(x)all(1:n%in%Reduce(`[`,rep(list(m[x,]),n),x,T,T))))

Tüm test durumlarını doğrulayın

Bu sadece <g>her biri için hesaplanır g \in Gve sonra test edilip edilmediğini G \subseteq <g>kontrol eder, sonra doğru olup olmadığını kontrol eder. Ancak, her zaman $gsağa doğru uygulayacağımız için , her seferinde yaklaşık 4 baytlık tasarruf kullanmak yerine sonuçları biriktirerek m[g,]( gth satırını) çoğalttıktan sonra o satırın içine endeksleriz .$gm[g,g$g]


1

Clojure, 68 bayt

#(seq(for[l % :when(apply distinct?(take(count l)(iterate l 0)))]l))

1

Python 2 , 82 bayt

lambda A:len(A)in[len(set(reduce(lambda a,c:a+[A[a[-1]][n]],A,[n])))for n in A[0]]

Çevrimiçi deneyin!

0 indeksli Cayley tablosu girişidir; Döngüsel / döngüsel olmayan grup için doğru / yanlış çıktı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.