λ€μ°μ 맀λκ³Ό κ·Έ κ΅μ°¨μ νκΈ°λ²μ κ³ λ €νμ¬ λκ΄νΈ λ€νμμ κ³μ°νμμμ€.
λ λ§μ κΈ°μ μ μ μκ° μμ§λ§,μ΄ λμ μμλ 맀λ μ λμ λ λμ ν¨κ» μ°κ²°νμ¬ λ¬Όλ¦¬μ μΌλ‘ λ§λ κ²μΌλ‘ μκ°νλ©΄ μΆ©λΆ ν©λλ€. 맀λμ 3 μ°¨μμΌλ‘ μ‘΄μ¬νκΈ° λλ¬Έμ μ’ μ΄μ 그릴 λ 맀λ λ€μ΄μ΄κ·Έλ¨ μ μ¬μ©ν©λλ€. 맀λ λ€μ΄μ΄κ·Έλ¨ μ κ΅μ°¨μ μ΄ μ νν λ μ€, ν μ€κ³Ό ν μ€μ λλ€.
μ¬κΈ°μμ (b)μ (c)λ κ°μ 맀λμ λ€λ₯Έ λ€μ΄μ΄κ·Έλ¨μ λλ€.
μ’ μ΄μ 맀λ λ€μ΄μ΄κ·Έλ¨μ μ΄λ»κ² ννν©λκΉ? μ°λ¦¬ λλΆλΆμ λ λΈλνΈκ° μλλ― λ‘ λ€μκ³Ό κ°μ΄ μλνλ Dowker νκΈ°λ²μ μμ‘΄ ν©λλ€.
맀λμμ μμμ μμμ μ μ§μ νμμμ€. λ€μ μμ κ³Ό, 맀λκ³Ό μ«μ 1λΆν° λ°μν ν‘λ¨μ λ°λΌ μμμ λ°©ν₯μΌλ‘ μ΄λ :μ΄ μ§μμ΄κ³ νμ¬λ €κ³ νλ κ²½μ°μ μ΄μ μ§μ κ·Έ κ΅μ°¨, 무ν¨νν©λλ€. λ§μ§λ§μΌλ‘ 1, 3, 5 λ±μ ν΄λΉνλ μ§μλ₯Ό μ ννμμμ€.
μλ₯Ό λ€μ΄ λ΄ μλ€ :
μ΄ λ§€λμμ μ°λ¦¬λ μμ μ§μ μΌλ‘ β1βμ μ ννκ³ μ€λ₯Έμͺ½μΌλ‘ μ΄λνμ΅λλ€. λλ§λ€ μ°λ¦¬κ° κ°λ€ μ΄μ λλ μλμ λ‘νμ λ λ€λ₯Έ μ‘°κ°, μ°λ¦¬λ κ΅μ°¨μ μ λ€μ μμ°μλ₯Ό ν λΉν©λλ€. μλ₯Ό λ€μ΄ [3,-12]
λ€μ΄μ΄κ·Έλ¨μμ κ΅μ°¨μ μ ν΄λΉνλ μ€νΈλλμ ν΄λΉνλ μ§μλ₯Ό 무μν©λλ€ . λ°λΌμμ΄ λ€μ΄μ΄κ·Έλ¨μλ‘ νμλ©λλ€ [[1,6],[2,5],[3,-12],[-4,9],[7,8],[-10,11]]
. 1, 3, 5, 7 λ±μ μΉκ΅¬λ₯Ό λμ΄νλ©΄ μ°λ¦¬μκ² μ 곡 [6,-12,2,8,-4,-10]
λ©λλ€.
μ¬κΈ° λͺ κ°μ§μ£Όμ ν μ¬νμ΄ μμ΅λλ€. μ°μ , Dowker νκΈ°λ²μ μμμ μμμ κ³Ό λ°©ν₯μ μ νν μ μμΌλ―λ‘ μ£Όμ΄μ§ 맀λλ§λ€ κ³ μ νμ§ μμ΅λλ€ . κ·Έλ¬λ, νκΈ°λ²μ΄ μ£Όμ΄μ§λ©΄ 맀λμ ꡬ쑰 (κΈ°μ μ μΌλ‘λ μ£Όμ 맀λ κ΅¬μ± μμμ λ°μκΉμ§)λ₯Ό μμ ν κ²°μ ν μ μμ΅λλ€. λͺ¨λ Dowker νκΈ°λ²μ΄ κ°λ₯ν 맀λμ νμ± ββν μμλ κ²μ μλμ§λ§μ΄ λ¬Έμ μμλ μ λ ₯μ΄ μ€μ 맀λμ λνλ΄λ κ²μΌλ‘ κ°μ ν μ μμ΅λλ€.
맀λμ λ°μ¬ μ¬μ΄μ λͺ¨νΈμ±μ νΌνκ³ λ¬Έμ λ₯Ό μ½κ² ν΄κ²°νκΈ° μν΄ κ΅μ°¨ νμ λͺ©λ‘μ μ λ ₯μΌλ‘ μ 곡ν©λλ€.
μμ κ΅μ°¨μμ νλ¨ μ μ μλ¨ μ μ κ΄μ μμ μΌμͺ½μΌλ‘ μ΄λν©λλ€. λΆμ μ μΈ κ΅μ°¨μ μμλ μ€λ₯Έμͺ½μΌλ‘κ°λλ€. 맀λ μ£Όμλ₯Ό μ΄λνλ λ°©ν₯μ λ°κΎΈλ κ² (μ¦, μ€λ² λΌμΈκ³Ό μΈλ λΌμΈμ λ°λλ‘νλ κ² )μ κ΅μ°¨ νμλ₯Ό λ°κΎΈμ§ μμ΅λλ€. μ΄ μμμ κ΅μ°¨ νμλ [-1,-1,-1,1,-1,1]
μ
λλ€. κ·Έκ²λ€μ λ€μ° 컀 νκΈ°λ²κ³Ό κ°μ μμλ‘ μ£Όμ΄μ§λλ€. μ¦ 1, 3, 5, 7 λ²μ κ΅μ°¨μ μ λν κ²μ
λλ€.
A
D
β¨Dβ©
μμ μ΄λ―Έμ§μμ 첫 λ²μ§Έ λ€μ΄μ΄κ·Έλ¨μ μ€κ³½μ΄ κ΅μ°¨ λ νν λ λ λ²μ§Έ κ·Έλ¦Ό ( μμ ννν ) λλ μΈ λ²μ§Έ κ·Έλ¦Ό ( μμ ννν ) κ³Ό κ°μ΄
A
Aβ1
μμ§ νΌλμ€λ¬μ? λκ΄νΈ λ€νμμ μ°ΎμΌλ €κ³ μλνλ μλ₯Ό λ€μ΄ λ³΄κ² μ΅λλ€
μ°λ¦¬λ λ¨Όμ κ·μΉ 3μ μ¬μ©ν©λλ€
μ°λ¦¬λ μλ‘μ΄ λ§€λ λͺ¨λμμ κ·μΉ 3μ λ€μ μ¬μ©ν©λλ€.
μ΄ 4 κ°μ μλ‘μ΄ λ§€λμ 첫 λ²μ§Έ λ°©μ μμΌλ‘ λμΉν©λλ€.
μ΄ 4μ κ·μΉ 1κ³Ό 2λ₯Ό μ μ©νλ©΄
μ, μ΄κ²μ μ°λ¦¬μκ² λ§ν΄
맀λ μ΄λ‘ μ λν κ°λ΅ν μκ°λ₯Ό μλ£ ν κ²μ μΆνν©λλ€!
μ λ ₯
λ λͺ©λ‘ :
-
λ€μ° 컀 νκΈ°λ² (μ π
[6,-12,2,8,-4,-10]
. κ΅μ°¨ λ²νΈλ 1λΆν° μμν΄μΌν©λλ€. ν΄λΉ νμ[1,3,5,7,...]
λ μμ μ μ΄λ©° μ λ ₯μΌλ‘ μ 곡 ν΄μλ μλ©λλ€ . -
λ€μ° 컀 νκΈ°λ²μ ν΄λΉνλ κ΅μ°¨μ μ λν λΆνΈ (
1
/-1
λλ μνλ κ²½μ°0
/1
λλfalse
/true
λλ'+'
/'-'
)[-1,-1,-1,1,-1,1]
.
ν μμ λͺ©λ‘ λμ μ ν μμ λͺ©λ‘μ κ°μ§ μ μμ΅λλ€. [[6,-1],[-12,-1],...
μ°μΆ
Aβ2+5+AβA3
[[1,-2],[5,0],[1,1],[-1,3]]
βkβ¦k
kβN
[0,1,0,5,1,0,-1]
κ·μΉ
μ΄κ²μ μ½λ 골ν λμ μ λλ€. νμ€ νμ μ μ¬μ©ν μ μμΌλ©° Dowker νκΈ°λ² λλ λκ΄νΈ λ€νμμ κ³μ°νλ λꡬκ°μλ λΌμ΄λΈλ¬λ¦¬λ μ¬μ©ν μ μμ΅λλ€. (μ΄λ¬ν λΌμ΄λΈλ¬λ¦¬λ₯Ό ν¬ν¨νλ μΈμ΄λ λΌμ΄λΈλ¬λ¦¬ / ν¨ν€μ§κ° μλ μ¬μ ν μ¬μ©ν μ μμ΅λλ€).
ν μ€νΈ
// 4-tuples of [dowker_notation, crossing_signs, expected_result, description]
[
[[],[],[[1,0]],"unknot"],
[[2],[1],[[-1,3]],"unknot with a half-twist (positive crossing)"],
[[2],[-1],[[-1,-3]],"unknot with a half-twist (negative crossing)"],
[[2,4],[1,1],[[1,6]],"unknot with two half-twists (positive crossings)"],
[[4,6,2],[1,1,1],[[1,-7],[-1,-3],[-1,5]],"right-handed trefoil knot, 3_1"],
[[4,6,2,8],[-1,1,-1,1],[[1,-8],[-1,-4],[1,0],[-1,4],[1,8]],"figure-eight knot, 4_1"],
[[6,8,10,2,4],[-1,-1,-1,-1,-1],[[-1,-7],[-1,1],[1,5],[-1,9],[1,13]],"pentafoil knot, 5_1"],
[[6,8,10,4,2],[-1,-1,-1,-1,-1],[[-1,-11],[1,-7],[-2,-3],[1,1],[-1,5],[1,9]],"three-twist knot, 5_2"],
[[4,8,10,2,12,6],[1,1,-1,1,-1,-1],[[-1,-12],[2,-8],[-2,-4],[3,0],[-2,4],[2,8],[-1,12]],"6_3"],
[[4,6,2,10,12,8],[-1,-1,-1,-1,-1,-1],[[1,-10],[2,-2],[-2,2],[1,6],[-2,10],[1,14]],"granny knot (sum of two identical trefoils)"],
[[4,6,2,-10,-12,-8],[1,1,1,1,1,1],[[1,-14],[-2,-10],[1,-6],[-2,-2],[2,2],[1,10]],"square knot (sum of two mirrored trefoils)"],
[[6,-12,2,8,-4,-10],[-1,-1,-1,1,-1,1],[[1,-2],[1,6],[-1,10]],"example knot"]
]
μΈλΆ μμ
λμ μ νμνμ§λ μμ§λ§ κ΄μ¬μ΄μλ κ²½μ° :
μλ λ°μ€ κ²μλ¬Ό : 1 , 2
Dowker νκΈ°λ²μ μ μμμ μ€μλ₯Ό μ‘μ @ChasBrown λ° @ H.Pwizμκ² κ°μ¬λ립λλ€.
λ΅λ³
K (ngn / k) , 196 193 λ°μ΄νΈ
{!N::2*n:#x;{+/d,'x,'d:&:'-2!(|/n)-n:#:'x}(+/1-2*s){j::+,/y;,/(&0|2*x;(-1+#?{x[j]&:x@|j;x}/!N){-(d,x)+x,d:&4}/,1;&0|-2*x)}'(N!{(x,'|1+x;x+/:!2)}'((2*!n),'-1+x|-x)@'0 1=/:x>0)@'/:+~(y<0)=s:!n#2}
λ΅λ³
Brain-Flak , 1316 λ°μ΄νΈ
(({})<({()<(({}<>))><>}){(({})[()()]<{([{}]({})<>({}<>))}{}(([({}<>)]<<>({}<>)<>((({})<<>{({}<>)<>}<>>))>)){({}<>)<>}<>{}(({}<{}(({}<{({}<>)<>}>))>))<>{({}<>)<>}>)}<>>){(({}){}()<({}<>)>)<>{}(({}){}<>)<>}<>{}{}(()){(<({}<({}<>)>)>)<>((){[()](<(({})<>){({}[({})]<>({}<>))}{}({}<>({}<{}<>{({}<>)<>}>)[()])<>({}({})[()])(([()]{()(<({}[({})]())>)}{})<{(<{}{}>)}{}><>{()((<({}()[({}<>)])<>>))}{}<{}{}>)((){[()]<({}()<({}<({}<<>({()<({}<>)<>>}<>){({}[()]<(({})<({()<({}<>)<>>})<>>)<>{({}[()]<<>({}<>)>)}{}>)}<>>)<>>)>)((){[()](<{}(({})<<>(({})<(<<>({}<<>({}<(()()){({}[()]<([{}]()<>)<>({}<<>{({}({})<>[({}<>)])}{}{}>){({}<>)<>}<>>)}{}>{})>)>)<>{}{({}<>)<>}<>([({}<>)]<((()))>)(())<>({}<>)<>{}({}[()]){<>({}<<>(()()){({}[()]<({}<<>{({}<>)<>}>){({}[({})]<>({}<>))}{}(({})<<>({}<>)<>([{}])>)>)}{}{}>)<>({}<(({})())>[()]<>)}{}({}<<>{}([{}]()<{({}<>)<>}>){({}({})<>[({}<>)])}{}{}>){({}<>)<>}<>{}{}{}>{})>)>)}{}){(<{}(({})<<>(({}{})<<>(<({}<>)>)<>{}{({}<>)<>}<>>(({}){}){})>)>)}>}{}){(<{}([{}]<({}<<>([{}]()<>)<>({}<<>{({}({})<>[({}<>)])}{}{}>){({}<>)<>}<>>({})({}){})>)>)}{}>)}{}){{}(([{}]){}<>{}{}<<>({}<>{}){([{}]({}()()<{}({}<>)(())<>>))}{}{}{}>{})(())<>{{}({}<>)(())<>}(<>)<>}{}}{}{}<>{}{}({}<{{}({}<>)(())<>}<>{{}{((<(())>))}{}}{}{{}({}<>)(())<>}>)<>{{}({}<(<()>)<>([]){{}({}<>)(())<>([])}{}>)<>{{}({}<>)<>}{}{}({}<>)<>}<>
μ¨λΌμΈμΌλ‘ μ¬μ©ν΄λ³΄μμμ€!
λ μ무κ²λ νννμ§ μλλ€. μ λ ₯μ ννν μμ λͺ©λ‘μ λλ€.
# Part 1: extract edges
(({})<
({()<(({}<>))><>}){
(({})[()()]<
{([{}]({})<>({}<>))}{}(([({}<>)]<<>({}<>)<>((({})<<>{({}<>)<>}<>>))>)){({}<>)<>}
<>{}(({}<{}(({}<{({}<>)<>}>))>))<>{({}<>)<>}
>)}
<>>){(({}){}()<({}<>)>)<>{}(({}){}<>)<>}<>
{}{}(())
# Part 2: Compute bracket polynomial
{
# Move degree/sign to other stack
(<({}<({}<>)>)>)<>
# If current shape has crossings:
((){[()](<
# Consider first currently listed edge in set
# Find the other edge leaving same crossing
(({})<>){({}[({})]<>({}<>))}{}
# Move to top of other stack
# Also check for twist
({}<>({}<{}<>{({}<>)<>}>)[()])
# Check for twist in current edge
<>({}({})[()])
(
# Remove current edge if twist
([()]{()(<({}[({})]())>)}{})<{(<{}{}>)}{}>
# Remove matching edge if twist
<>{()((<({}()[({}<>)])<>>))}{}<{}{}>
# Push 1 minus number of twists from current vertex.
)
# If number of twists is not 1:
((){[()]<
# While testing whether number of twists is 2:
({}()<
# Keep sign/degree on third stack:
({}<({}<
# Duplicate current configuration
<>({()<({}<>)<>>}<>){({}[()]<(({})<({()<({}<>)<>>})<>>)<>{({}[()]<<>({}<>)>)}{}>)}
# Push sign and degree on separate stacks
<>>)<>>)
# If number of twists is not 2: (i.e., no twists)
>)((){[()](<{}
# Make first copy of sign/degree
(({})<<>(({})<
# Make second copy of sign/degree
(<<>({}<<>({}<
# Do twice:
(()()){({}[()]<
# Prepare search for vertex leading into crossing on other side
([{}]()<>)
# While keeping destination on third stack:
<>({}<
# Search for matching edge
<>{({}({})<>[({}<>)])}{}
# Replace old destination
{}>)
# Move back to original stack
{({}<>)<>}<>
>)}{}
# Add orientation to degree
>{})>)>)
# Move duplicate to left stack
<>{}{({}<>)<>}<>
# Create "fake" edges from current crossing as termination conditions
([({}<>)]<((()))>)(())<>
# Create representation of "top" new edge
({}<>)<>{}({}[()])
# While didn't reach initial crossing again:
{
# Keep destination of new edge on third stack
<>({}<<>
# Do twice:
(()()){({}[()]<
# Search for crossing
({}<<>{({}<>)<>}>){({}[({})]<>({}<>))}{}
# Reverse orientation of crossing
(({})<<>({}<>)<>([{}])>)
>)}{}
# Remove extraneous search term
{}
# Push new destination for edge
>)
# Set up next edge
<>({}<(({})())>[()]<>)
}
# Get destination of last edge to link up
{}({}<
# Find edge headed toward original crossing
<>{}([{}]()<{({}<>)<>}>){({}({})<>[({}<>)])}
# Replace destination
{}{}>)
# Move everything to left stack
{({}<>)<>}
# Clean up temporary data
<>{}{}{}
# Push new sign/degree of negatively smoothed knot
>{})>)
# Else (two twists)
# i.e., crossing is the twist in unknot with one half-twist
>)}{}){(<{}
# Copy sign and degree+orientation
(({})<<>(({}{})<
# Move sign to left stack
<>(<({}<>)>)
# Move copy of configuration to left stack
<>{}{({}<>)<>}
# Add an additional 4*orientation to degree
<>>(({}){}){})>)
>)}
# Else (one twist)
>}{}){(<
# Invert sign and get degree
{}([{}]<({}<
# Search term for other edge leading to this crossing
<>([{}]()<>)
# With destination on third stack:
<>({}<
# Find matching edge
<>{({}({})<>[({}<>)])}{}
# Replace destination
{}>)
# Move stuff back to left stack
{({}<>)<>}<>
# Add 3*orientation to degree
>({})({}){})>)
>)}{}
# Else (no crossings)
>)}{}){{}
# If this came from the 2-twist case, undo splitting.
# If this came from an initial empty input, use implicit zeros to not join anything
# New sign = sign - 2 * next entry sign
(([{}]){}<>{}{}<
# New degree = average of both degrees
<>({}<>{})
# Find coefficient corresponding to degree
{([{}]({}()()<{}({}<>)(())<>>))}{}{}
# Add sign to coefficient
{}>{})
# Move rest of polynomial back to right stack
(())<>{{}({}<>)(())<>}
# Set up next configuration
(<>)<>
}{}
}{}{}<>{}
# Step 3: Put polynomial in correct form
# Keeping constant term:
{}({}<
# Move to other stack to get access to terms of highest absolute degree
{{}({}<>)(())<>}<>
# Remove outer zeros
{{}{((<(())>))}{}}
# Move back to right stack to get access to lower order terms
{}{{}({}<>)(())<>}
>)<>
# While terms remain:
{
# Move term with positive coefficient
{}({}<(<()>)<>([]){{}({}<>)(())<>([])}{}>)<>{{}({}<>)<>}{}
# Move term with negative coefficient
{}({}<>)<>
}<>