ブレイド群の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 2024 ExpyDoc