그룹이 주기적입니까?


21

소개

사이 클릭 그룹이 무엇인지 이미 알고 있으면이 부분을 건너 뛸 수 있습니다.

그룹은 세트와 연관 이진 연산에 의해 정의된다 $(이라고 (a $ b) $ c = a $ (b $ c)군에서 정확히 하나 개의 요소가 존재한다. e여기서, a $ e = a = e $ a모든 a그룹 (의 아이덴티티 ). 요소마다 a그룹의 존재 정확히 하나 b되도록 a $ b = e = b $ a( ) a, b그룹의 모든 두 요소 에 대해 그룹에 있습니다 a $ b( 클로저 ).

a^n대신에 쓸 수 있습니다 a$a$a$...$a.

모든 요소에 의해 생성 된 서브 그룹 환상 a그룹의은 <a> = {e, a, a^2, a^3, a^4, ..., a^(n-1)}여기서 n(하위 군이 무한 않는) 서브 그룹의 순서 (크기)이다.

그룹은 요소 중 하나에 의해 생성 될 수있는 경우 주기적입니다.

도전

유한 그룹에 대한 Cayley 테이블 (제품 테이블)이 주어지면 주기적인지 판별하십시오.

다음 Cayley 테이블을 살펴 보겠습니다.

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

(Dhedral Group 3, D_3의 Cayley 테이블입니다).

이것은 우리가 값 찾으려 그렇다면, 1 인덱스입니다 5 $ 3그래서, 우리는 운영자가 반드시 교환 법칙이 성립 아니라고 (주 세 번째 행의 다섯 번째 열에서 보면,이 5 $ 3동일한 필요는 없다 3 $ 5. 우리는 여기에서 볼 5 $ 3 = 6(또한 3 $ 5 = 4).

<3>로 시작하여 찾을 수 [3]있으며 목록이 고유 한 동안 마지막 요소와 생성기의 제품을 추가합니다 (3). 우리는 얻는다 [3, 3 $ 3 = 2, 2 $ 3 = 1, 1 $ 3 = 3]. 우리는 하위 그룹과 함께 여기서 멈 춥니 다 {3, 2, 1}.

계산 하면 그룹의 어떤 요소도 전체 그룹을 생성하지 않음 <1><6>알 수 있습니다. 따라서이 그룹은 주기적이 아닙니다.

테스트 사례

입력은 매트릭스로 제공되고, 진실 / 거짓 결정 값으로 출력됩니다.

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

입력이 항상 그룹임을 보장 할 것입니다.

0 인덱스 값으로 입력 할 수 있습니다.


0 인덱스 입력이 허용됩니까? (예 [[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2]])?

@ 닐 네; 지정하는 것을 잊었습니다. 감사!
HyperNeutrino

5
테스트 사례에서 그룹 요소의 레이블을 더 많이 전제해야합니다. 현재 테이블의 첫 번째 행과 열은 항상 [1..n]일부 답변에서 결함을 숨길 수 있습니다.
Lynn

3
그룹이 아벨 리안인지 확인하면 테스트 케이스를 통과 할 수 있습니다. Z_2 * Z_2와 같은 테스트 사례가이 문제를 해결합니다.
xnor

2
@HyperNeutrino : 이는 클라인 (Clein) 4 그룹 으로도 알려진 2 요소 그룹의 직접적인 산물입니다 .
Henning Makholm

답변:


8

J , 8 바이트

1:e.#@C.

온라인으로 사용해보십시오!

설명

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?

이것은 또한 수 1 e.#@C.FWIW,
코너 오브라이언

허, J는 Jelly‽을 이겼습니다
Adám

@ Adám Jelly에는 직접 표기법과주기 표기법 사이에서 순열을 변환하는 내장 기능이 없습니다. 나중에 원자로 추가하여 ŒCL€1eJelly에서 6 바이트를 만들 수 있습니다.
마일

8

껍질 , 11 10 9 바이트

VS≡`ȯU¡!1

1 기반. 생성기 (있는 경우)의 색인을 리턴하고 그렇지 않으면 0을 리턴합니다. 온라인으로 사용해보십시오!

설명

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

자바 스크립트 (ES6), 52 바이트

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


2

젤리 , 15 바이트

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

온라인으로 사용해보십시오!

염두에 둔 첫 번째 어리석은 아이디어 : Z n에 대한 동형화를 확인하십시오 . (이 코드는 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]]

허, 이것은 흥미로운 접근법입니다. 그런 생각은하지 않았다! +1
HyperNeutrino

2

R , 101 97 바이트

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

모든 테스트 사례 확인

이것은 단순히 <g>각각에 대해 계산 g \in G한 다음 if인지 테스트 G \subseteq <g>한 다음 true인지 확인합니다. 그러나 우리는 항상 $g오른쪽에 적용하기 때문에 m[g,]( g번째 행)을 복제 한 다음 적용 결과로 해당 행에 색인을 생성 $g하여 m[g,g$g]매번 사용하는 대신 결과를 누적하여 약 4 바이트를 절약했습니다.


1

클로저, 68 바이트

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.