ブレイド群のband generatorを
用いた標準形を構成する
アルゴリズムの実装
谷 研究室
冨士 英恵
目次
1.はじめに
2.背景
3.ブレイドの様々な定義
4.Javaにおける実装
5.今後の課題
1.はじめに
ブレイドとは(定義)
2つの平行な平面に接続したn本の紐から
なる集合
左側から1つの紐をたどっていくと必ず右
側につく
1.はじめに
ブレイドとは(定義)
2つの平行な平面に接続したn本の紐から
なる集合
左側から1つの紐をたどっていくと必ず右
側につく
1.はじめに
同値関係
V,Wが同値
Vの端点を固定し、紐を出さずに上下関係
を維持したまま動かしWに一致させること
が出来る時
1.はじめに
同値関係
V,Wが同値
Vの端点を固定し、紐を出さずに上下関係
を維持したまま動かしWに一致させること
が出来る時
V
W
1.はじめに
定義(積)
任意のブレイドV,Wの積VWとはVの右端
とWの左端を繋げたもの
V
W
1.はじめに
定義(積)
任意のブレイドV,Wの積VWとはVの右端
とWの左端を繋げたもの
V
W
VW
2.背景
共役問題
2つのブレイドV,Wが共役
∃α: V=αWα
-1
2.背景
共役問題
2つのブレイドV,Wが共役
∃α: V=αWα
V
-1
W
2.背景
共役問題
2つのブレイドV,Wが共役
∃α: V=αWα
V
-1
α
W
α
-1
2.背景
共役問題
2つのブレイドV,Wが共役
-1
∃α: V=αWα
与えられた2つのブレイドが共役かどうかを
判定する問題→共役問題
共役問題は難しい→公開鍵暗号への利用
(K.H. Ko, S.J. Lee 等)
2.背景
共役問題
2つのブレイドV,Wが共役
-1
∃α: V=αWα
与えられた2つのブレイドが共役かどうかを
判定する問題→共役問題
共役問題は難しい→公開鍵暗号への利用
標準形の利用
2.背景
標準形について
ブレイド問題を考える上で一番基本となる
もの
J.S. Birman,K.H. Ko,等によって標準形
構成アルゴリズムの提案
田邉による上記アルゴリズムの改善
2.背景
標準形について
ブレイド問題を考える上で一番基本となる
もの
J.S. Birman,K.H. Ko,等によって標準形
構成アルゴリズムの提案
田邉による上記アルゴリズムの改善
このアルゴリズムを実装
(j2sdk1.4.0_01)
3.ブレイドの様々な定義
定義(単位元)
ブレイドの単位元e(1度も交差しないもの)
3.ブレイドの様々な定義
定義(σi)
σiを
i と i+1 番目の紐を1度だけ入れ替え
たブレイド
4
3
2
1
3.ブレイドの様々な定義
定義(σi)
σiを
i と i+1 番目の紐を1度だけ入れ替え
たブレイド
この時負の傾きを持
つ方が上に来る!!
σ1
4
3
2
1
3.ブレイドの様々な定義
定義(σi)
σiを
i と i+1 番目の紐を1度だけ入れ替え
たブレイド
σ1 = a21と表記
4
3
2
1
3.ブレイドの様々な定義
定義(σi)
σiを
i と i+1 番目の紐を1度だけ入れ替え
たブレイド
この時σ1の逆元
になっている!!
σ1
4
3
2
1
-1
3.ブレイドの様々な定義
定義(σi)
σiを
i と i+1 番目の紐を1度だけ入れ替え
たブレイド
σ1
4
3
2
1
σ1
-1
3.ブレイドの様々な定義
band generatorとは
複数の紐の交差を一まとめにした生成元
3.ブレイドの様々な定義
band generatorとは
複数の紐の交差を一まとめにした生成元
a61
6
5
4
3
2
1
3.ブレイドの様々な定義
band generatorとは
複数の紐の交差を一まとめにした生成元
a61 = (σ5 σ4 σ3 σ2 )σ1 (σ2 σ3 σ-14 σ5 -1)
6
5
4
3
2
1
-1
-1
3.ブレイドの様々な定義
band generatorとは
複数の紐の交差を一まとめにした生成元
a61 = (σ5 σ4 σ3 σ2 )σ1 (σ2 σ3 σ-14 σ5 -1)
6
5
4
3
2
1
-1
-1
3.ブレイドの様々な定義
+
定義(BBn)
正ブレイド(aijにおいて、i>jが成り立つ)で作
られた集合
3.ブレイドの様々な定義
Braidの同値性に関する性質1
atsarq≡arqats ((t-r)(t-q)(s-r)(s-q)>0)
3.ブレイドの様々な定義
Braidの同値性に関する性質1
atsarq≡arqats ((t-r)(t-q)(s-r)(s-q)>0)
…
…
t
t
…
…
r
r
q
…
…
s
…
…
s
…
…
q
3.ブレイドの様々な定義
Braidの同値性に関する性質2
atsasr≡atrats≡asratr (∀t,s,r(n≧t>s>r≧1))
3.ブレイドの様々な定義
Braidの同値性に関する性質2
atsasr≡atrats≡asratr (∀t,s,r(n≧t>s>r≧1))
t
…
s
s
…
…
…
r
r
…
…
…
r
t
…
…
s
…
…
…
t
3.ブレイドの様々な定義
Braidの同値性に関する性質3
at(t+1)as(s+1)≡as(s+1)at(t+1) (|t-s|>1)
3.ブレイドの様々な定義
Braidの同値性に関する性質3
at(t+1)as(s+1)≡as(s+1)at(t+1) (|t-s|>1)
…
…
t
t
s
s
…
s+1
…
s+1
…
t+1
…
t+1
3.ブレイドの様々な定義
Braidの同値性に関する性質4
as(s+1)a(s+1)(s+2) as(s+1)
≡a(s+1)(s+2)as(s+1)a(s+1)(s+2)
3.ブレイドの様々な定義
Braidの同値性に関する性質4
as(s+1)a(s+1)(s+2) as(s+1)
≡a(s+1)(s+2)as(s+1)a(s+1)(s+2)
…
…
s+2
s+2
s+1
s+1
s
s
…
…
3.ブレイドの様々な定義
正同値
これらの4つの性質を有限回適用させるこ
とによって得られるブレイド
3.ブレイドの様々な定義
Fundamental wordδの定義
an(n-1)a(n-1)(n-2)・・・a21と正同値であるブレ
イド
3.ブレイドの様々な定義
Fundamental wordδの定義
an(n-1)a(n-1)(n-2)・・・a21と正同値であるブレ
イド
3.ブレイドの様々な定義
≦の定義
V,W:BBn
V≦W
V
+
(∃P1,P2∈BBn)[W=P1VP2]
W
3.ブレイドの様々な定義
≦の定義
V,W:BBn
V≦W
P1
V
+
(∃P1,P2∈BBn)[W=P1VP2]
P2
W
3.ブレイドの様々な定義
[r,s]nの定義
+
r
{W∈BBn|δ≦W≦δ
}
s
3.ブレイドの様々な定義
[r,s]nの定義
+
r
{W∈BBn|δ≦W≦δ
δ
0
W
}
s
δ
1
3.ブレイドの様々な定義
Left-weightedの定義
X∈[0,1]n
+
P∈BBnに対してPの分割XAが任意のPの
X’A’に対してX’≦Xとなるとき
と表す
X¬A
3.ブレイドの様々な定義
Left-weightedの定義
X∈[0,1]n
+
P∈BBnに対してPの分割XAが任意のPの
×
X’A’に対してX’≦Xとなるとき
X¬Aと表す
X
A
3.ブレイドの様々な定義
Left-weightedの定義
X∈[0,1]n
+
P∈BBnに対してPの分割XAが任意のPの
×
X’A’に対してX’≦Xとなるとき
X¬Aと表す
X
A
○
X
A
3.ブレイドの様々な定義
標準形とは
W∈BBnに対して
u
W=δA1A2・・・Apという形式の表現が
一存在する
唯
但、 1≦i≦p-1となる各iに対してAi∈[0,1]n
Ai¬Ai+1 が成り立つ
u∈ Z
3.ブレイドの様々な定義
標準形を作るには?
maximal
headとtailにわける
更にtailをmaximal headとtailにわける
それを繰り返す
3.ブレイドの様々な定義
maximal headとtail
headとtail
3.ブレイドの様々な定義
maximal headとtail
headとtail
a
b
head
tail
=
c
3.ブレイドの様々な定義
maximal headとtail
Pのhead
Hがmaximal headであるとは
HとHを取り除いたPのtailがleft-weighted
となるとき
3.ブレイドの様々な定義
maximal headとtail
Pのhead
Hがmaximal headであるとは
HとHを取り除いたPのtailがleft-weighted
となるとき
P
×
H
tail
3.ブレイドの様々な定義
maximal headとtail
Pのhead
Hがmaximal headであるとは
HとHを取り除いたPのtailがleft-weighted
となるとき
P
○
H
tail
4.Javaにおける実装
作成したクラスファイル
BGList
Enum_equiv
Procedure_01
Find_max_head_12
Procedure_find_max_head
BandGenerator
4.Javaにおける実装
BGList
ブレイドの基本情報をオブジェクトとして
記憶
基本情報
☆入力ブレイドの本数
☆BandGenerator
4.Javaにおける実装
Enum_equiv
(入力)V∈BBn
(出力)Vの同値類全て
4.Javaにおける実装
Procedure_01
+
(入力)V∈BBn
if V ∈ [0,1]n
False if V ∈ [0,1]n
(出力)True
4.Javaにおける実装
Find_max_head_12
(入力)V∈[1,2]n
(出力)Vのmaximal_headと
そのtailの対(H,T)
4.Javaにおける実装
Procedure_find_max_head
+
∈BBn
(出力)Vのmaximal_headと
そのtailの対(H,T)
(入力)V=x1,x2,… xm
4.Javaにおける実装
BandGenerator
+
(入力)V∈BBn
(出力)δ
u
A1 A2 … Ap (=V)
(u∈Z,∀ Ai∈[0,1]k 、
Ai¬Ai+1が成り立つ)
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
α←{(V,λ)}
Repeat do
β←φ
for each (H,T)∈α do
H←Enum_equiv(H)
for each H’∈H do
x←H’の最右のband generator
H’’←H’から最右のxを取り除いたブレイド
β←β∪{(H’’,xT)}
od
od
for each (H,T) ∈ βdo
if (H∈[0,1] k) return(H,T)
od
α←β
od
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
α ・・・
α←{(V,λ)}
・・・
Repeat do
β←φ
for each (H,T)∈α do
H←Enum_equiv(H)
・・・
for each H’∈H do
x←H’の最右のband generator
H’’←H’から最右のxを取り除いたブレイド
β←β∪{(H’’,xT)}
od
・・・
od
for each (H,T) ∈ βdo
if (H∈[0,1] k) return(H,T)
od
α←β
od
β ・・・
H
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
V
α
α←{(V,λ)}
・・・
Repeat do
β←φ
for each (H,T)∈α do
H←Enum_equiv(H)
・・・
for each H’∈H do
x←H’の最右のband generator
H’’←H’から最右のxを取り除いたブレイド
β←β∪{(H’’,xT)}
od
・・・
od
for each (H,T) ∈ βdo
if (H∈[0,1] k) return(H,T)
od
α←β
od
λ
・・・
β ・・・
H
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
V
α
α←{(V,λ)}
・・・
Repeat do
β←φ
for each (H,T)∈α do
H←Enum_equiv(H)
・・・
for each H’∈H do
x←H’の最右のband generator
H’’←H’から最右のxを取り除いたブレイド
β←β∪{(H’’,xT)}
od
・・・
od
for each (H,T) ∈ βdo
if (H∈[0,1] k) return(H,T)
od
α←β
od
λ
・・・
β ・・・
H
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
V
α
α←{(V,λ)}
・・・
Repeat do
β←φ
for each (H,T)∈α do
H←Enum_equiv(H)
・・・
for each H’∈H do
x←H’の最右のband generator
H’’←H’から最右のxを取り除いたブレイド
β←β∪{(H’’,xT)}
od
・・・
od
for each (H,T) ∈ βdo
if (H∈[0,1] k) return(H,T)
od
α←β
od
λ
・・・
β ・・・
H
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
V
α
α←{(V,λ)}
・・・
Repeat do
β←φ
for each (H,T)∈α do
H←Enum_equiv(H)
・・・
for each H’∈H do
x←H’の最右のband generator
H’’←H’から最右のxを取り除いたブレイド
β←β∪{(H’’,xT)}
od
・・・
od
for each (H,T) ∈ βdo
if (H∈[0,1] k) return(H,T)
od
α←β
od
λ
・・・
β ・・・
H
→
x
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
V
α
α←{(V,λ)}
・・・
Repeat do
β←φ
for each (H,T)∈α do
H←Enum_equiv(H)
・・・
for each H’∈H do
x←H’の最右のband generator
H’’←H’から最右のxを取り除いたブレイド
β←β∪{(H’’,xT)}
od
・・・
od
for each (H,T) ∈ βdo
if (H∈[0,1] k) return(H,T)
od
α←β
od
λ
・・・
β ・・・
H
H’’
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
V
α
α←{(V,λ)}
・・・
Repeat do
β←φ
for each (H,T)∈α do
H←Enum_equiv(H)
・・・
for each H’∈H do
x←H’の最右のband generator
H’’←H’から最右のxを取り除いたブレイド
β←β∪{(H’’,xT)}
od
・・・
od
for each (H,T) ∈ βdo
if (H∈[0,1] k) return(H,T)
od
α←β
od
λ
・・・
β ・・・
H
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
V
α
α←{(V,λ)}
・・・
Repeat do
β←φ
for each (H,T)∈α do
H←Enum_equiv(H)
・・・
for each H’∈H do
x←H’の最右のband generator
H’’←H’から最右のxを取り除いたブレイド
β←β∪{(H’’,xT)}
od
・・・
od
for each (H,T) ∈ βdo
if (H∈[0,1] k) return(H,T)
od
α←β
od
λ
・・・
β ・・・
H
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
V
α
α←{(V,λ)}
・・・
Repeat do
β←φ
for each (H,T)∈α do
H←Enum_equiv(H)
・・・
for each H’∈H do
x←H’の最右のband generator
H’’←H’から最右のxを取り除いたブレイド
β←β∪{(H’’,xT)}
od
・・・
od
for each (H,T) ∈ βdo
if (H∈[0,1] k) return(H,T)
od
α←β
od
λ
・・・
β ・・・
H
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
V
α
α←{(V,λ)}
・・・
Repeat do
β←φ
for each (H,T)∈α do
H←Enum_equiv(H)
・・・
for each H’∈H do
x←H’の最右のband generator
H’’←H’から最右のxを取り除いたブレイド
β←β∪{(H’’,xT)}
od
・・・
od
for each (H,T) ∈ βdo
if (H∈[0,1] k) return(H,T)
od
α←β
od
λ
・・・
β ・・・
H
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
V
α
α←{(V,λ)}
・・・
Repeat do
β←φ
for each (H,T)∈α do
H←Enum_equiv(H)
・・・
for each H’∈H do
x←H’の最右のband generator
H’’←H’から最右のxを取り除いたブレイド
β←β∪{(H’’,xT)}
od
・・・
od
for each (H,T) ∈ βdo
if (H∈[0,1] k) return(H,T)
od
α←β
od
λ
・・・
β ・・・
H
[0,1]kに入
っている
かCHECK
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
V
α
α←{(V,λ)}
・・・
Repeat do
β←φ
for each (H,T)∈α do
H←Enum_equiv(H)
・・・
for each H’∈H do
x←H’の最右のband generator
H’’←H’から最右のxを取り除いたブレイド
β←β∪{(H’’,xT)}
od
・・・
od
for each (H,T) ∈ βdo
if (H∈[0,1] k) return(H,T)
od
α←β
od
λ
・・・
β ・・・
H
[0,1]kに入
っている
かCHECK
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
V
α
λ
・・・
β
・・・
α←{(V,λ)}
・・・
Repeat do
β←φ
for each (H,T)∈α do
H←Enum_equiv(H)
・・・
for each H’∈H do
x←H’の最右のband generator
H’’←H’から最右のxを取り除いたブレイド
β←β∪{(H’’,xT)}
od
・・・
od
for each (H,T) ∈ βdo
if (H∈[0,1] k) return(H,T)
od
α←β
od
H
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
V
α
α←{(V,λ)}
・・・
Repeat do
β←φ
for each (H,T)∈α do
H←Enum_equiv(H)
・・・
for each H’∈H do
x←H’の最右のband generator
H’’←H’から最右のxを取り除いたブレイド
β←β∪{(H’’,xT)}
od
・・・
od
for each (H,T) ∈ βdo
if (H∈[0,1] k) return(H,T)
od
α←β
od
λ
・・・
β ・・・
H
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
V
α
α←{(V,λ)}
・・・
Repeat do
β←φ
for each (H,T)∈α do
H←Enum_equiv(H)
・・・
for each H’∈H do
x←H’の最右のband generator
H’’←H’から最右のxを取り除いたブレイド
β←β∪{(H’’,xT)}
od
・・・
od
for each (H,T) ∈ βdo
if (H∈[0,1] k) return(H,T)
od
α←β
od
λ
・・・
β ・・・
H
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
α←{(V,λ)}
Repeat do
β←φ
for each (H,T)∈α do
H←Enum_equiv(H)
for each H’∈H do
x←H’の最右のband generator
H’’←H’から最右のxを取り除いたブレイド
β←β∪{(H’’,xT)}
od
od
for each (H,T) ∈ βdo
if (H∈[0,1] k) return(H,T)
od
α←β
od
←入力Braid
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
α←{(V,λ)}
Repeat do
β←φ
for each (H,T)∈α do
H←Enum_equiv(H)
for each H’∈H do
x←H’の最右のband generator
H’’←H’から最右のxを取り除いたブレイド
β←β∪{(H’’,xT)}
od
od
for each (H,T) ∈ βdo
if (H∈[0,1] k) return(H,T)
od
α←β
od
←Enum_equiv
・・・・・・
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
α←{(V,λ)}
Repeat do
β←φ
for each (H,T)∈α do
H←Enum_equiv(H)
for each H’∈H do
x←H’の最右のband generator
H’’←H’から最右のxを取り除いたブレイド
β←β∪{(H’’,xT)}
od
od
for each (H,T) ∈ βdo
if (H∈[0,1] k) return(H,T)
od
α←β
od
←Enum_equiv
・・・・・・
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
α←{(V,λ)}
Repeat do
β←φ
for each (H,T)∈α do
H←Enum_equiv(H)
for each H’∈H do
x←H’の最右のband generator
H’’←H’から最右のxを取り除いたブレイド
β←β∪{(H’’,xT)}
od
od
for each (H,T) ∈ βdo
if (H∈[0,1] k) return(H,T)
od
α←β
od
←Enum_equiv
・・・・・・
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
α←{(V,λ)}
Repeat do
β←φ
for each (H,T)∈α do
H←Enum_equiv(H)
for each H’∈H do
x←H’の最右のband generator
H’’←H’から最右のxを
取り除いたブレイド
od
β←β∪{(H’’,xT)}
od
od
for each (H,T) ∈ βdo
if (H∈[0,1] k) return(H,T)
od
α←β
α←Enum_equiv(V)
for (i=1;i<交点数;i++) do
for each H∈α do
x←Hの右からi個のband generator
H’←Hからxを取り除いたブレイド
if (H’∈[0,1] k) return(H’,x)
od
od
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
α←Enum_equiv(V)
for (i=1;i<交点数;i++) do
for each H∈α do
x←Hの右からi個のband generator
H’←Hからxを取り除いたブレイド
if (H’∈[0,1] k) return(H’,x)
od
od
←V
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
α←Enum_equiv(V)
for (i=1;i<交点数;i++) do
for each H∈α do
x←Hの右からi個のband generator
H’←Hからxを取り除いたブレイド
if (H’∈[0,1] k) return(H’,x)
od
od
←V
←Enum_equiv
α
・・・・・・
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
α←Enum_equiv(V)
for (i=1;i<交点数;i++) do
for each H∈α do
x←Hの右からi個のband generator
H’←Hからxを取り除いたブレイド
if (H’∈[0,1] k) return(H’,x)
od
od
α
H’
・・・・・・
x
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
α←Enum_equiv(V)
for (i=1;i<交点数;i++) do
for each H∈α do
x←Hの右からi個のband generator
H’←Hからxを取り除いたブレイド
if (H’∈[0,1] k) return(H’,x)
od
od
α
H’
・・・・・・
x
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
α←Enum_equiv(V)
for (i=1;i<交点数;i++) do
for each H∈α do
x←Hの右からi個のband generator
H’←Hからxを取り除いたブレイド
if (H’∈[0,1] k) return(H’,x)
od
od
α
・・・・・・
H’
x
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
α←Enum_equiv(V)
for (i=1;i<交点数;i++) do
for each H∈α do
x←Hの右からi個のband generator
H’←Hからxを取り除いたブレイド
if (H’∈[0,1] k) return(H’,x)
od
od
α
H’
・・・・・・
x
4.Javaにおける実装
Procedure Find_max_head[1,2]n
<Procedure Find_max_head[1,2]n>
(入力)V∈[1,2]k
(出力)Vのmaximal headとそのtailの対(H,T)
α←Enum_equiv(V)
for (i=1;i<交点数;i++) do
for each H∈α do
x←Hの右からi個のband generator
H’←Hからxを取り除いたブレイド
if (H’∈[0,1] k) return(H’,x)
od
od
α
・・・・・・
H’
x
5.今後の課題
今後の課題
n
の入力からの標準形作成
Braidの可視化
parallelのより良い判定法(現在は6
重ループ)
BB
置換 π
ブレイドの右点列から左点列への紐の動
きを追うことで,ブレイドに対応した置換が
得られる
4
4
3
3
2
2
1
1
π=
1234 =4213
3142
descedingcycle
長さjの{1,2,…,n}上の巡回置換
π={tj,tj-1,…,t1}に対して
tj>tj-1>…>t1となるとき
○ π=4321,321 etc
× π=4132, 423,4123 etc
parallel
descedingcycleの任意の対
{tj,tj-1,…,t1}{si,si-1,…,s1}において
(ta-sc)(ta-sd)(tb-sc)(tb-sd)>0を満たすとき
但,1≦a<b ≦ j,1 ≦ c<d ≦ i
群の定義
結合律
単位元
逆元
結合律
∀x,y,z∈G
(x・y)z=x(y・z)
x
y
z
x
y
z
定義(単位元)
ブレイドの単位元e(1度も交差しないもの)
定義(σi)
σiを
i と i+1 番目の紐を1度だけ入れ替え
たブレイド
この時σ1の逆元
になっている!!
σ1
4
3
2
1
-1
定義(σi)
σiを
i と i+1 番目の紐を1度だけ入れ替え
たブレイド
σ1
4
3
2
1
σ1
-1
標準形構成アルゴリズムの計算量
J.S.Birman,
K.H.Ko等
Ο(|W| 2p)時間で構成
田邉
Ο(|W| 2)時間で構成
u
W∈BBn: δ A1 A2 …Ap
標準形
4
4
3
3
2
2
1
1
標準形
○
4
4
3
3
2
2
1
1
43 32 21
42 43 21
32 42 21
43 31 32
43 21 31
42 21 43
32 41 42
32 21 41
41 43 32
31 41 32
21 43 31
41 42 43
21 41 43
41 32 42
31 32 41
21 31 41
標準形
○
4
4
3
3
2
2
1
1
43 32 21
42 43 21
32 42 21
43 31 32
43 21 31
42 21 43
32 41 42
32 21 41
41 43 32
31 41 32
21 43 31
41 42 43
21 41 43
41 32 42
31 32 41
21 31 41
Left-weightedの定義
X∈[0,1]n
+
P∈BBnに対してPの分割XAが任意のPの
×
X’A’に対してX’≦Xとなるとき
X¬Aと表す
X
A
○
X
A
≦の定義
V,W:BBn
V≦W
P1
V
+
(∃P1,P2∈BBn)[W=P1VP2]
P2
W
実行時一覧表
real
紐の本数 交点数
メモリ(M)
50
55.8s 16-32
100
4m49.0s 16-32
150
4m40.1s 16-32
200
14m 4.4s 16-32
4本
300
2m41.0s 128-256
400
4m35.8s 128-256
500
50m14.8s 128-256
1000 3h15m50.2s 128-512
50
50.2s 16-32
100
3m30.5s 128-256
150
7m41.6s 128-256
5本
200
14m26.5s 128-256 CPU : Pentium4 2.4G
300 1h31m20.9s 128-256 メモリ : 1G
400 2h47m 8.4s 128-512
OS : RedHat Linux8.0
ねじれているかの判定
Cの巡回置換の全ての分割{}に対して,(j-
1)の合計がband generatorの合計(交点
数)より小さいとき⇒ねじれている
ex) ブレイドCが(41)(32)という置換で表されているとき
band generatorの合計数>(2-1)+(2-1)⇒ねじれている
band generatorの合計数=(2-1)+(2-1)⇒ねじれていない
[0,1]に入るか判定する定理
A braid
word A is in [0,1] if and only if
A=δ πδ
...δ
for
1
π
2
πk some parallel,
desceding cycles π1 ,π2 ,... ,πK in Σn
-
BBnのある時の標準形作成
δ
ー
を考え、必要ならばband generatorを
付け足して考える
-
BBnのある時の標準形作成
δ
ー
を考え、必要ならばband generatorを
付け足して考える
-
BBnのある時の標準形作成
δ
ー
を考え、必要ならばband generatorを
付け足して考える
δ
-1
同値関係
V,Wが同値
Vの端点を固定し、紐を出さずに上下関係
を維持したまま動かしWに一致させること
が出来る時
V
W
正同値
ブレイドの同値性に関する性質を有限回
適用させることによって得られるブレイド
同値
正同値
巡回置換の実装
1
2
3
4
1
2
3
4
π=
1234 =4213
3142
4
4
3
3
2
2
1
1
巡回置換の実装
1
2
3
4
1
3
2
4
π=
1234 =4213
3142
4
4
3
3
2
2
1
1
巡回置換の実装
1
2
3
4
3
1
2
4
π=
1234 =4213
3142
4
4
3
3
2
2
1
1
巡回置換の実装
1
2
3
4
3
1
4
2
π=
1234 =4213
3142
4
4
3
3
2
2
1
1
巡回置換の実装
1
2
3
4
3
1
4
2
π=
1234 =4213
3142
4
4
3
3
2
2
1
1
巡回置換の実装
1
2
3
4
3
1
4
2
π=
1234 =4213
3142
4
4
3
3
2
2
1
1
procedure Canonical_form
(入力) V∈BBk
(出力) δ uA1 A2 ... Ap (=V)(u∈ Z ∀Ai∈[0,1]k)
STEP0 同値類の表を作成
u
STEP1 V=δ Pとなるu∈ ,P∈BBk を構成
STEP2 T←P, i←0
while(T=λ) do
i←i+1
(Ai,T)←Find_max_head(T)
od
u
return δ A1 A2 ... Ap
procedure Canonical_form
(入力) V∈BBk
(出力) δ uA1 A2 ... Ap (=V)(u∈ Z ∀Ai∈[0,1]k)
STEP0 同値類の表を作成
u
STEP1 V=δ Pとなるu∈ ,P∈BBk を構成
STEP2 T←P, i←0
while(T=λ) do
i←i+1
(Ai,T)←Find_max_head(T)
od
u
return δ A1 A2 ... Ap
その都度行うことに
よって、メモリ使用を
抑えることができる
© Copyright 2026 ExpyDoc