Là nhóm tuần hoàn?


21

Giới thiệu

Bạn có thể bỏ qua phần này nếu bạn đã biết một nhóm tuần hoàn là gì.

Một nhóm được xác định bởi một tập hợp và một phép toán hai ngôi kết hợp $(có nghĩa là, (a $ b) $ c = a $ (b $ c). Có tồn tại đúng một phần tử trong nhóm enơi a $ e = a = e $ acho tất cả atrong nhóm ( sắc ). Đối với mọi phần tử atrong nhóm có tồn tại đúng một bví dụ mà a $ b = e = b $ a( nghịch đảo ) Đối với mỗi hai yếu tố a, btrong nhóm, a $ blà trong nhóm ( đóng cửa ).

Chúng tôi có thể viết a^nthay cho a$a$a$...$a.

Các nhóm con cyclic được tạo ra bởi bất kỳ yếu tố atrong nhóm là <a> = {e, a, a^2, a^3, a^4, ..., a^(n-1)}nơi nlà thứ tự (kích thước) của phân nhóm (trừ khi nhóm con là vô hạn).

Một nhóm có chu kỳ nếu nó có thể được tạo bởi một trong các phần tử của nó.

Thử thách

Đưa ra bảng Cayley (bảng sản phẩm) cho một nhóm hữu hạn, xác định xem nó có theo chu kỳ hay không.

Thí dụ

Chúng ta hãy xem bảng Cayley sau đây:

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

(Đây là bảng Cayley cho Dih thờ Nhóm 3, D_3).

Đây là 1 lập chỉ mục, vì vậy nếu chúng ta muốn tìm giá trị của 5 $ 3, chúng ta nhìn vào cột thứ năm trên hàng thứ ba (lưu ý rằng các nhà điều hành là không nhất thiết phải giao hoán, vì vậy 5 $ 3không nhất thiết phải bằng đến 3 $ 5. Chúng tôi thấy ở đây 5 $ 3 = 6(cũng là 3 $ 5 = 4).

Chúng ta có thể tìm thấy <3>bằng cách bắt đầu với [3], và sau đó trong khi danh sách là duy nhất, hãy nối thêm sản phẩm của phần tử cuối cùng và trình tạo (3). Chúng tôi nhận được [3, 3 $ 3 = 2, 2 $ 3 = 1, 1 $ 3 = 3]. Chúng tôi dừng lại ở đây với các nhóm nhỏ {3, 2, 1}.

Nếu bạn tính toán <1>thông qua <6>bạn sẽ thấy rằng không có yếu tố nào trong nhóm tạo ra cả nhóm. Như vậy, nhóm này không tuần hoàn.

Các trường hợp thử nghiệm

Đầu vào sẽ được đưa ra dưới dạng ma trận, đầu ra dưới dạng giá trị quyết định trung thực / sai lệch.

[[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)

Bạn sẽ được đảm bảo rằng đầu vào luôn là một nhóm.

Bạn có thể lấy đầu vào là giá trị 0 được lập chỉ mục.


Đầu vào 0 chỉ mục có được phép không? (ví dụ [[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2]])?
Neil

@Neil Có; Tôi quên chỉ định. Cảm ơn!
HyperNeutrino

5
Bạn nên đặt trước nhãn của các thành phần nhóm của bạn nhiều hơn trong các trường hợp thử nghiệm. Ngay bây giờ, hàng và cột đầu tiên của bảng luôn [1..n]có thể ẩn các lỗ hổng trong một số câu trả lời.
Lynn

3
Có vẻ như kiểm tra nếu nhóm là abelian đủ để vượt qua các trường hợp thử nghiệm. Các trường hợp thử nghiệm như Z_2 * Z_2 sẽ khắc phục điều này.
xnor

2
@HyperNeutrino: Đó là sản phẩm trực tiếp của nhóm hai yếu tố với chính nó - còn được gọi là nhóm bốn nhóm Klein .
Henning Makholm

Câu trả lời:


8

J , 8 byte

1:e.#@C.

Hãy thử trực tuyến!

Giải trình

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?

Điều này cũng có thể là 1 e.#@C., fwiw
Conor O'Brien

Huh, J đánh bại Jelly‽
Adám

@ Adám Jelly không có nội dung tích hợp để chuyển đổi hoán vị giữa ký hiệu trực tiếp và chu kỳ. Tôi có thể có thể thêm chúng dưới dạng các nguyên tử sau này, tạo ra ŒCL€1e6 byte trong Jelly.
dặm

8

Husk , 11 10 9 byte

VS≡`ȯU¡!1

1 dựa. Trả về chỉ mục của trình tạo nếu tồn tại, 0 nếu không. Hãy thử trực tuyến!

Giải trình

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 byte

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


2

Thạch , 15 byte

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

Hãy thử trực tuyến!

Ý tưởng ngớ ngẩn đầu tiên xuất hiện trong đầu: kiểm tra sự đồng hình với Z n . (Mã này là 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 đây là một cách tiếp cận thú vị; không bao giờ nghĩ về điều đó! +1
HyperNeutrino

2

R , 101 97 byte

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

Xác nhận tất cả các trường hợp kiểm tra

Điều này chỉ đơn giản là tính toán <g>cho từng g \in Gvà sau đó kiểm tra nếu G \subseteq <g>, sau đó kiểm tra xem bất kỳ trong số đó là đúng. Tuy nhiên, vì chúng tôi luôn áp dụng $gở bên phải, chúng tôi sao chép m[g,]( ghàng thứ) và sau đó lập chỉ mục vào hàng đó với kết quả áp dụng $g, tích lũy kết quả thay vì sử dụng m[g,g$g]mỗi lần, tiết kiệm khoảng 4 byte.


1

Clojure, 68 byte

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

1

Python 2 , 82 byte

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

Hãy thử trực tuyến!

Bảng Cayley 0 được lập chỉ mục là đầu vào; Đầu ra đúng / sai cho nhóm tuần hoàn / không theo chu kỳ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.