braids เหล่านี้เท่ากันหรือไม่


13

หากคุณยังไม่คุ้นเคยกับการถักเปียทฤษฎีผมขอแนะนำให้คุณอ่านนี้เป็นครั้งแรก คำถามนี้สมมติว่าคุณมีความคุ้นเคยกับแนวคิดในมือและอย่างน้อยคุณก็คุ้นเคยกับทฤษฎีกลุ่ม

ขอให้เรานิยามσ nให้เป็นถักเปียที่เส้นที่n (หนึ่งดัชนี) จากด้านบนข้ามเหนือเส้นที่n + 1 th และσ n -จะเป็นอินเวอร์สของσ n (นั่นคือn + 1 th เกลียวข้ามเส้นที่n )

กลุ่มถักเปียB nถูกสร้างขึ้นโดย1 , σ 2 , σ 3 , . . , σ n-1 > ดังนั้นทุกถักเปียในB nสามารถเขียนเป็นผลิตภัณฑ์ของ bra-braids 1


การพิจารณาว่า braids สองตัวในกลุ่มเท่ากันนั้นไม่ใช่งานง่าย มันอาจจะเห็นได้ชัดสวยที่σ 1 σ 3 = σ 3 σ 1แต่มันเป็นเรื่องเล็ก ๆ น้อย ๆ ที่เห็นได้ชัดน้อยกว่าที่เช่นσ 2 σ 1 σ 2 = σ 1 σ 2 σ 1 2

ดังนั้นคำถามคือ "เราจะทราบได้อย่างไรว่าถักเปียสองเส้นเหมือนกันหรือไม่" ตัวอย่างสองตัวอย่างด้านบนเป็นตัวแทนของบิตนี้ โดยทั่วไปความสัมพันธ์ต่อไปนี้เรียกว่าความสัมพันธ์ของอาร์ทินนั้นเป็นจริง:

  • σ i σ j = σ j σ i ; i - j> 1

  • σ i σ i + 1 σ i = σ i + 1 σ i σ i + 1

เราสามารถใช้ความสัมพันธ์ทั้งสองนี้ร่วมกับสัจพจน์กลุ่มเพื่อพิสูจน์ว่า braids ที่เท่ากันมีค่าเท่ากัน ดังนั้นสอง braids จะเท่ากับ iff การใช้งานซ้ำของความสัมพันธ์เหล่านี้และสัจพจน์กลุ่มสามารถแสดงให้เห็นดังนั้น

งาน

คุณจะเขียนโปรแกรมหรือฟังก์ชั่นเพื่อถักเปียสองอันและตรวจสอบว่าพวกมันเท่ากันหรือไม่ คุณอาจเลือกที่จะใช้จำนวนเต็มบวกแทนคำสั่งของกลุ่ม

นี่เป็นคำถามเกี่ยวกับดังนั้นคำตอบจะได้คะแนนเป็นไบต์โดยไบต์น้อยจะดีขึ้น

อินพุตและเอาต์พุต

คุณควรแสดง Braid เป็นรายการกำเนิดของเครื่องปั่นไฟ (หรือโครงสร้างที่เทียบเท่าเช่น vector) คุณอาจเป็นตัวแทนของเครื่องกำเนิดไฟฟ้าในรูปแบบที่สมเหตุสมผล (เช่นจำนวนเต็มสองตัว tuple ของจำนวนเต็มบวกและบูลีน)

เสมอกับกฎมาตรฐานคุณควรส่งออกหนึ่งในสองค่าที่แตกต่างกันยอมรับการปฏิเสธ

กรณีทดสอบ

[],       []              -> True
[1,-1],   []              -> True
[1,2,1],  [2,1,2]         -> True
[1,3],    [3,1]           -> True
[1,3,2,1],[3,2,1,2]       -> True
[1,4,-4,3,2,1], [3,2,1,2] -> True
[2,2,1],  [2,1,2]         -> False
[1,2,-1], [-1,2,1]        -> False
[1,1,1,2],[1,1,2]         -> False

1: โปรดทราบว่าในขณะที่B nเป็นไปตามคุณสมบัติทั้งหมดของกลุ่มการดำเนินการในกลุ่มถักเปียของเราไม่ได้เป็นแบบสับเปลี่ยนดังนั้นกลุ่มของเราจึงไม่ได้เป็นศาสนาคริสต์

2: หากคุณต้องการตรวจสอบสิ่งนี้ด้วยตัวเองฉันขอแนะนำให้ใช้σ 1 -กับทั้งสองฝ่าย, ถ้าคุณวาดทั้งสองออกมาบนกระดาษ, หรือทำแบบจำลองพวกมันด้วยสายอักขระที่แท้จริง


ฉันไม่คุ้นเคยกับทฤษฎีการถักเปียดังนั้นฉันจึง VTCing เป็นคำพูดที่ไร้สาระที่สุด (ล้อเล่น)
caird coinheringaahing

2
เรามีกรณีทดสอบได้ไหม
HyperNeutrino

@HyperNeutrino ขออภัยลืมที่จะเพิ่มพวกเขา เพิ่มตอนนี้ อย่าลังเลที่จะแนะนำเพิ่มเติม
Ad Hoc Garf Hunter

@WheatWizard คำแนะนำกรณีทดสอบ:[],[]
Pavel

กรณีทดสอบที่เสนอ:[1, 4, -4, 3, 2, 1], [3, 2, 1, 2] => TRUE
HyperNeutrino

คำตอบ:


11

Haskell , 190 ไบต์

i!j|j<0=reverse$map(0-)$i!(-j)|i==j=[i,i+1,-i]|i+1==j=[i]|i+j==0=[j+1]|i+j==1=[-j,-i,j]
_!j=[j]
j%(k:a)|j+k==0=a
j%a=j:a
i&a=foldr(%)[]$foldr((=<<).(!))[i]a
a?n=map(&a)[1..n]
(a#b)n=a?n==b?n

ลองออนไลน์!

มันทำงานอย่างไร

ให้F nเป็นกลุ่มฟรีบนnปั่นไฟx 1 , ... , x n หนึ่งในผลลัพธ์แรกในทฤษฎีการถักเปีย (Emil Artin, Theorie der Zöpfe , 1925) คือการที่เรามีโฮโมมอร์ฟิซึม แบบฉีดf : B nAut ( F n )ซึ่งการกระทำของ f σ iของσ iถูกกำหนดโดย

f σ i ( x i ) = x i x i + 1 x i −1 ,
f σ i ( x i + 1 ) = x i ,
f σ ฉัน ( x j ) = x jสำหรับj ∉ { i , i + i + 1}

ค่าผกผันของf σ i −1นั้นถูกกำหนดโดย

f σ ฉัน −1 ( x i ) = x ฉัน + 1 ,
f σ ฉัน −1 ( x i + 1 ) = x ฉัน + 1 −1 x ฉัน x i + 1 ,
f σ ฉัน −1 ( x j ) = x jสำหรับj ∉ { i , i + 1}

และองค์ประกอบของหลักสูตรจะได้รับโดยAB =

เพื่อทดสอบว่า= B nก็พอเพียงที่จะทดสอบที่ ( x ฉัน ) = ( x ผม ) สำหรับทุกฉัน = 1, ... , n นี่เป็นปัญหาที่ง่ายกว่ามากในF nซึ่งเราจำเป็นต้องรู้วิธียกเลิกx iด้วยx i −1เท่านั้น

ในรหัส:

  • i!jคำนวณf σ i ( x j ) (ที่ใดก็ได้iหรือjอาจเป็นลบ, แทนอินเวอร์ส)
  • foldr(%)[] ทำการลดในกลุ่มฟรี
  • i&aคำนวณf a ( x i )
  • a?nคำนวณ [ f a ( x 1 ), …, f a ( x n )],
  • และ(a#b)nคือการทดสอบความเสมอภาค= ในB n

4

Python 2 , 270 263 260 250 249 241 ไบต์

def g(b,i=0):
 while i<len(b)-1:
  R,s=b[i:i+2]
  if R<0<s:b[i:i+2]=[[],[s,-R,-s,R],[s,R]][min(abs(R+s),2)];i=-1
  i+=1
 return b
def f(a,b):
 b=g(a+[-v for v in b][::-1]);i=0
 while i<len(b)and b[0]>0:b=b[1:]+[b[0]];i+=1   
 return g(b)==[]

ลองออนไลน์!

การดำเนินการตาม 'subword reverseing' วิธีการแก้ปัญหาไอโซโทปถักเปีย: a = b iff ab ^ -1 = ตัวตน

ขั้นตอนวิธีการที่นำมาจาก: การแก้ปัญหาที่มีประสิทธิภาพเพื่อปัญหาถักเปีย Isotopy, แพทริกดฮอร์น อย ; เขาอธิบายอัลกอริทึมอื่น ๆ ที่อาจเป็นที่สนใจ ...

อัลกอริธึมนี้ทำงานโดยการเดินจากซ้ายไปขวาในรายการค้นหาหมายเลขติดลบตามด้วยจำนวนบวก คือคำย่อยของแบบฟอร์ม x i -1 x jกับ i, j> 0

มันใช้ความเท่าเทียมกันดังต่อไปนี้:

x i -1 x j = x j x i x j -1 x i -1ถ้า i = j + 1 หรือ j = i + 1

x i -1 x j = identity (รายการว่าง) ถ้า i == j

x i -1 x j = x j x i -1 เป็นอย่างอื่น

โดยการใช้งานซ้ำ ๆ เราจะจบลงด้วยรายการของแบบฟอร์มw1 + w2ที่ทุกองค์ประกอบของw1เป็นบวกและทุกองค์ประกอบของw2เป็นลบ (นี่คือการกระทำของฟังก์ชั่นg)

จากนั้นเราจะนำไปใช้gเป็นครั้งที่สองในรายการw2 + w1; รายการผลลัพธ์ควรว่างเปล่าถ้ารายการเดิมเท่ากับข้อมูลประจำตัว

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