ストリング図とテンソル計算に関して僕が言えること、言いたいことは「やってみてください」です。ある意味“機械的な作業”なので、やれば出来ます。ボブ・クック教授に言わせれば「幼稚園児でも出来る」(「幼稚園児のための量子力学とその周辺」参照)。もっとも、この記事では、字を知らない園児ではとうてい出来そうにない作業も扱いますが。
内容:
関連する記事:
続きの記事:
例題:行列の転置
行列のインデックスが無限集合になると厄介なので、インデックスの集合 は有限集合だとします。例えば、 とかだと思ってかまいません。
行列としてのプロファイルが である実数係数行列 を考えます。成分表示は:
関数〈写像〉としてのプロファイルは なので、ラムダ式で次のように書いても同じです。
への引数〈インデックス〉渡しの書き方が色々ありますが、全部同じ意味です。
「インデックスが じゃないと気持ち悪い」とかはショーモナイ感情なので、そんなところには拘らない!
さて、行列 の転置を と書きます。すると:
行列の転置をストリング図で表すと次のようになります。
ちょっと形が 卍 に似てます(そんなに似てねーか)。この図がほんとに行列の転置になっていることを確認することが例題です。
特別なテンソル、象形文字と成分表示
行列を結合〈掛け算〉しても行列ですが、テンソル積すると行列の範囲に収まらないのでテンソル〈多行列 | polymatrix〉を考えます。テンソル のプロファイルは一般に、
ここで、 はすべて有限集合とします。このテンソルの関数〈写像〉としてのプロファイルは:
テンソルをストリング図に描くときは、テンソルの結合の方向を上から下、テンソルのテンソル積の方向を左から右にとります。これは僕の個人的な好みの描画方向で、人により描画方向の選択は色々です(「絵算(ストリング図)における池袋駅問題の真相」参照)。
描画方向「↓→」に関して、次の象形文字が使えます。
象形文字 | キーワード | 名称 |
---|---|---|
恒等 | ||
対称、入れ替え、スワップ、交差 | ||
対角、コピー、分岐 | ||
破棄、デリート、削除 | ||
または | 余評価、単位 | |
または | 評価、余単位 |
余評価〈単位〉と評価〈余単位〉は、描いたときの形状からベント〈bent(名詞)| 曲がり〉とも呼ばれます。ここでは、 は集合の共通部分/合併ではなくて、テンソルの名前〈固有名詞〉として使う象形文字です。
ボブ・クック教授が「幼稚園児でも出来る」と言っているのは、ストリング図をストリング図のまま変形する絵算〈{graphical | diagrammatic | pictorial} {calculus | computation}〉のことであって、テキストに書き下すとなると幼稚園児には無理です。園児は字が書けませんからね。
我々は大人なのでテキストに書き下すことにします。「絵で見れば簡単なことが、なんでこんなウジャウジャになってしまうんだ!?」と腹立たしいかも知れませんが、そこは大人なのだから我慢しましょう。大雑把な絵に対してテキスト記法は精密な情報を持っています。精密さと引き換えの煩雑さなのです。
最初は恒等。
はクロネッカーのデルタなので:
タプルが等しいことは成分ごとに等しいことなので:
次に余評価〈単位〉を書き下します。
評価〈余単位〉も同様です。
要するに、 の定義は全部クロネッカーのデルタです。 は今回使わないので書き下しません。
ワイヤーベンディング・オペレーター
行列(特別なタイプのテンソルとみなす) から を直接作ってもいいのですが、ここではワイヤーベンディング・オペレーターを適用して を作ってみます。
プロファイルが であるテンソルの全体の集合を と書きます。"FX" は "eXtended tensors on Finite sets" からです。
さて、下の絵で表されるオペレーター を考えます。この名前は "upper left bending" からなので、描画方向に依存したネーミングです。
ULBendする前が だとすると、ULBendした後は になります。したがって、写像としての のプロファイルは:
一般的な場合は:
は単一の写像なのではなくて、 ごとに存在する関数達の集まり、つまり総称関数〈多相関数〉です。そこまで正確に書けば:
正確に書くと添字が鬱陶しいので、次のように略記します。
最後の はもちろん象形文字です。特定のプロファイルに対して を書き下してみると:
以下は、オペレーター ("lower right bending")の絵です。もう同じことですね。
正確に書けば:
略記は:
特定のプロファイルに対して を書き下してみると:
この節で紹介したワイヤーベンディング・オペレーターは、余評価/評価/恒等を組み合わせて具体的に書けます。マルコフ圏の条件化オペレーター(「マルコフ圏におけるベイズの反転定理」参照)やトレース付き圏のトレース・オペレーター(「トレース付き対称モノイド圏とはこんなモノ」参照)は、そのような具体的な表示を持ちません。
転置行列の構成
が行列とします。行列は、プロファイルが単元リスト(長さ1のリスト)で与えられるようなテンソルと同一視します。つまり:
ワイヤーベンディング・オペレーター と をこの順で適用すると転置になる(はず)ですが、それは次のように描けます。
テキストで書くなら:
を絵に描けば以下のようです。全体が で、濃いオレンジ色の枠で囲まれた部分が です。
- 点線の丸の部分は余評価〈単位〉、評価〈余単位〉、恒等です。
- 黄色い縦棒はテンソル積を示します。
- 黄色い横棒は結合を示します。
- 下側は、ストリング図を色付き象形文字テキストに書き下したものです。
キーワードを使ったテキストで書くなら次のようです。
それにしても、これがほんとに転置なの?
成分表示と計算
テキストによる計算を実行するために、絵の情報を写し取ります。バカ正直に写し取ると、たくさんの変数が必要になります。ここは実際にバカ正直に写し取るので、型 の変数を4個、型 の変数を3個確保します。変数は番号で識別することにして、次のように番号を付けます。
- 青紫が
- 赤紫が
部品を列挙します。
部品を結合とテンソル積で組み立てます。
これは文字通りバカ正直/バカ丁寧(やるヤツはバカ)で、通常はここまで律儀に写し取らないで適宜省略します。慣れれば、どこを省略できるかは分かるようになります。
定義により展開します。
ここからは、クロネッカーのデルタを消去する公式と(総和に関する)フビニの定理を使って計算するだけです。たくさんあるクロネッカーのデルタはことごとく消えてくれます。やってみましょう。
最後にもう一度注意しますが; ここまでのプロセスは過剰に丁寧な記述・計算です。うまくサボることにより、もっと素早く記述・計算する方法があります。上下の添字を巧みにあやつる“インデックス・ジャグリング”としての古典テンソル計算は、サボるテクニックを洗練させたものです -- 技法として見事だとは思いますが、「何やってるかワカラン」弊害もあります。「何やってるか」をクソバカ丁寧に追ってみると、この記事のような記述・計算になります。
[追記]
今回扱った転置の図で を恒等 にすると、ワイヤーはうねったヘビの形になります。
ニョロニョロ〈snaky〉が真っすぐ〈straight〉に伸ばせるよ、という命題がニョロニョロ関係式〈snake {relation | equation | identity} 〉です。随伴や双対と呼ばれる構造は、ニョロニョロ関係式で支配されています。
[/追記]
関連する記事:
続きの記事: