เป็นวงรอบหรือไม่?


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^na$a$a$...$a

กลุ่มย่อย cyclic ที่สร้างโดยองค์ประกอบใด ๆ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

(นี่คือตาราง Cayley สำหรับ Dihedral Group 3, D_3)

นี่คือดัชนี 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]])?
Neil

@ Neil ใช่; ฉันลืมระบุ ขอบคุณ!
HyperNeutrino

5
คุณควรจัดทำเลเบลขององค์ประกอบกลุ่มของคุณในกรณีทดสอบ ตอนนี้แถวและคอลัมน์แรกของตารางอยู่เสมอ[1..n]ซึ่งอาจซ่อนข้อบกพร่องในบางคำตอบ
ลินน์

3
ดูเหมือนว่าการตรวจสอบว่ากลุ่มมีความพอเพียงที่จะผ่านกรณีทดสอบ กรณีทดสอบเช่น Z_2 * Z_2 จะแก้ไขปัญหานี้
xnor

2
@HyperNeutrino: นั่นเป็นผลิตภัณฑ์โดยตรงของกลุ่มสององค์ประกอบด้วยตัวเอง - ยังเป็นที่รู้จักKlein สี่กลุ่ม
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
Conor โอไบรอัน

อืม, J beats Jelly‽
Sep17

@ Adám Jelly ไม่มีบิวอินในการแปลงพีชคณิตระหว่างสัญกรณ์โดยตรงและวนรอบ ฉันอาจจะเพิ่มพวกเขาเป็นอะตอมในภายหลังทำให้ŒCL€1eเป็น 6 ไบต์ในเยลลี่
ไมล์

8

Husk , 11 10 9 ไบต์

VS≡`ȯU¡!1

1-based ส่งคืนดัชนีของเครื่องกำเนิดไฟฟ้าหากมีอยู่เป็นอย่างอื่น 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.




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การทดสอบG \subseteq <g>แล้วตรวจสอบว่าสิ่งใดเป็นจริงหรือไม่ อย่างไรก็ตามเนื่องจากเราใช้$gงานทางด้านขวาเราจึงคัดลอกm[g,]( gแถวที่ th) จากนั้นทำดัชนีลงในแถวนั้นด้วยผลของการใช้$gรวบรวมผลลัพธ์มากกว่าการใช้m[g,g$g]ทุกครั้งที่บันทึกไว้ประมาณ 4 ไบต์



โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.