「59049年カウンター」はステージ上の上手・下手の2つの正方形領域を設け、そのそれぞれの領域で「桁人」と名付けられた各5人のパフォーマーが正方形の4つの頂点の間を「蛇居拳舞楽」と名付けられた規則に従って移動するパフォーマンスを行う作品です。4つの頂点に対してパフォーマーが5人なので、常にどこか1つの頂点で2人のパフォーマーが出会うことになりますが、出会った2人のパフォーマーが「蛇居拳算」と名付けられた演算を行うことで次の移動方向を決定することで各領域の状態が遷移していきます。用いる規則は2つの領域で同一ですが、異なる初期値を用いることによって、上手側では系列長156の周期を持つシーケンスが、下手側では系列長54の周期を持つシーケンスが同時に上演されます。上手側が3ステップ進むうちに下手側が1ステップ進むことにより、いずれも1周期分のシーケンスが実行されたところで作品は終了となります。
作品の詳細については「59049年カウンター」の楽譜(マザーアース, 2014)を参照して頂ければと思いますが、本稿の説明のために必要な部分については、楽譜の記載内容に基づきつつ、以下でも説明します。また、初演の記録については本ブログの別の記事「「59049年カウンター」世界初演を聴いて」として公開していますので、そちらもご覧頂ければ幸いです。
分析は「59049年カウンター」の状態遷移規則(蛇居拳舞楽)から生成される状態遷移の系列が全部で何パターンあるか、どのようなパターンが存在するかを調べることを目的にし、まずは対象となる系(全連結された4つのノード、アークを辿って移動する5人のパフォーマー、移動方向を決める演算(蛇居拳算))の持つ構造について分析を行った後、その結果に基づいて検証用のプログラムを作成して計算機実験を実施しました。
分析結果を先に述べると、「59049年カウンター」の状態遷移規則から生成される状態遷移パターンは、一周期の系列長が、それぞれ6,20,22,52,54,156の6種類しかありません。そして「59049年カウンター」という作品では、6種類ある状態遷移パターンのうち、系列長が長いパターン2つ(楽譜では系列長54のものとMST、系列長156のものをLSTと呼んでいます)を使っていることになります。また、各状態遷移のシーケンスの内部構造についても興味深い対称性が確認できています。
「59049年カウンター」で用いられている状態遷移パターンのような極めて長い周期のパターンは、それを直接、意識的に知覚・認識することはできないと思われますが、それでもなお、何らかの仕方で作品が持つ「美しさ」に寄与しているものと思われ、報告に値すると考えたため本稿を起こして報告することにしました。一見して複雑に見える系が豊かな対称性を持ち、結果的に極めて少数の制約されたパターンのみを持つこと、その一方で、その少ないパターンの中には156ステップで一周期といったような非常に複雑なものが含まれており、更にそのパターンの中にも豊かな対称性が潜んでいるというように、この作品において対称性が生み出す単純さと、偶々定めれらた初期値によって決まる状態遷移過程の複雑さが幾重にも重なりあっている様は極めて印象的に感じられます。
- 5人のうち4人は四角形の各頂点にいます。
- 残りの1人は四角形のある頂点から別の頂点に移動し、移動が済んだら 次の移動までその頂点に留まります。
- 移動する「桁人」の移動先の頂点にいる「桁人」は、移動する「桁人」の 移動元起点の移動方向、自分が現在いる頂点に移動してきた時の移動方向を もとに、「蛇居拳算」と呼ばれる演算により、移動先を決定します。(以下、移動する「桁人」をvisitor、移動先にいて次に移動を行う「桁人」をmoverと呼びます。)
「蛇居拳算」は以下のように定義されます。
移動する「桁人」(visitor)の移動元起点の移動方向、移動先の頂点にいる「桁人」(mover)が自分が現在いる頂点に移動してきた時の(やはり移動元起点の)移動方向を比較して、次に移動する方向を以下に従って決定します。
- 同じ移動方向であれば、同じ移動方向に移動します。
- 異なれば、そのいずれでもない方向に移動します。
上記の「蛇居拳算」の演算規則を、
visitorの移動方向, moverの前の移動方向 → moverの次の移動方向
という形式で書くと以下のようになります。但し移動方向は、既述の通り、辺に沿って右回り:0 / 対角線方向:1 / 辺に沿って左回り:2とします。また、この演算は可換であり、visitorの移動方向, moverの前の移動方向の順序を入れ替えても結果として得られる次の移動方向は同じになります。
0,0→0
1,1→1
2,2→2
0,1→2
0,2→1
1,2→0
上記の演算に基づき、moverが現在居る頂点から移動先の頂点を求めると以下のようになります。但し以下では、四角形の各頂点の位置を1,2,3,4という数でラベルづけすることにし、
moverの次の移動方向 × moverの現在位置 → moverの次の位置
という形式で記載します。
0×4→1
1×4→2
2×4→3
0×3→4
1×3→1
2×3→2
0×2→3
1×2→4
2×2→1
0×1→2
1×1→3
2×1→4
上記の規則に対して、各「桁人」の現在の「位置」の情報と過去に現在位置に移動した時の移動方向の情報(以下、「状態」と呼びます)を初期値として与えると、以降の状態遷移の系列が計算されます。規則は決定的であるため、現時点での位置情報と状態情報を1つ決めれば、以降の状態遷移系列は一意に定まります。
3.計算機実験に向けての考察
そこで、位置情報と状態情報の初期値を変えることによって、どのような状態遷移系列のパターンが生成されるかをシミュレートして確認するプログラムを作成することを念頭に更にモデル化を進めます。初期値として与える現在の各「桁人」の位置情報を、四角形の頂点のラベル1,2,3,4を値とするベクトル(例えば[4,2,1,4,3])で、各「桁人」の状態の情報を移動元起点の移動方向のラベル0,1,2を値とするベクトル(例えば[2,2,1,2,1])という形式で与えることを考えます。
このとき位置情報のベクトルを見ると、位置4を持つ「桁人」が2人いることから、位置4で状態の変化が起きていることはわかりますが、本来は2人のうちどちらかが、値の位置に移動中のvisitorであり、もう一方が同じ位置に既にいて、次に他の位置に移動することになるmoverである筈なのに、その区別がつかないため、どちらがvisitorでどちらがmoverかは別途与えてやる必要があります。
ここでvisitorとmoverを入れ替えることの意味を考えてみると、「蛇居拳算」の演算が可換であることに思い当たります。そのためvisitorとmoverを入れ替えても、次にmoverが移動する方向については同じ結果を得ます。どちらがmoverになるかは変わるので、移動する「桁人」は入れ替わることになりますが、状態遷移パターンとしては同一のパターンが生成されることになります。従ってvisitorの指定については、任意の一方を指定した場合のみを考慮すればいいことになります。
次に位置の入替(つまり四角形の頂点のラベル付けの入替)、人の入替(つまり「桁人」のラベル付けの入替)についても同様に考えてみます。上で採用したベクトルによる表現では、位置の入替は位置情報の値の数字の入替(4を1に、1を2に…というような入替)に対応し、人の入替は位置情報の添え字の入替(0番目と1番目を入れ替える…というような入替)に対応していますが、頂点4の完全グラフであり各頂点は対称であること、「桁人」についても同様に対称であることから、いずれの入替を行っても状態遷移パターンは不変です。
それでは位置と「桁人」の対応づけはどうでしょうか?四角形の4つの頂点のうち、どこか1つに常に二人いて、残りは常に一人という対応づけは固定されており、位置情報における位置の分布のパターンは位置の番号を入れ替えても不変です(つまり1,2,3,4のどれかがどこかに2回出現し、残りは1回ずつ出現する)。結果として位置情報は、例えば[4,2,1,4,3]のような任意の一つだけ考えれば良いことになります。
それでは位置情報と状態情報の対応づけについてはどうでしょうか?ここで状態とは、ある「桁人」が現在いる位置に移動した時の移動方向(但し、移動起点基準であることに注意する必要があります)を表すことから、状態情報のベクトルは、各「桁人」がどのような軌道を通って現在の位置に至ったかの履歴であり、その移動が起きた時点の情報こそ喪われていますが、過去の状態遷移パターンに対応しています。状態情報が記憶している移動の発生が過去に何ステップ遡るかは各「桁人」毎に独立であり、また、一度に一箇所でしか移動が起きないことから、同時であることはありえません。一方、現在の状態情報が違えば次以降の状態遷移系列は異なったものになり、「桁人」の軌道は違ったものになります。逆に状態情報を一つ決めれば軌道は一意に決まることになります。
そこで位置情報については任意の一つを選択し、取り得るすべての状態情報を列挙して、それぞれの場合について軌道を計算し、一周して位置と状態が初期状態に戻るまでの周期の長さを求めるために検証用プログラムを作成することにしました。この時一周するとは、位置情報と状態情報のどちらもが同じ値をとることとして定義します。位置情報だけだと異なる軌道をとって偶々初期状態と同じ位置を占めることがあり得ます。(これも検証用プログラムを少し書き変えるだけで簡単に確認することができます。)
状態情報は5人の「桁人」に対応する5桁の3進数で表されるので、状態の組み合わせは3^5=243通りとなります。但し移動方向は四角形の辺に沿った右向き(0)/左向き(2)の移動についての対称性がある(移動の方向が左右反転するだけで後は同じ状態遷移パターンになる場合がある)ので、これを事前に考慮して、初期値とする状態のパターンを更に減らすことも可能ですが、規模的に見て、検証対象とする場合の数は計算機実験の実施に関して既に問題ないレベルのため、243通り全てについて計算することにしました。プログラムはPythonを用いて作成し、実験はGoogle Colaboratory上で行いました。プログラムは簡単なもので、特に公開するまでもないと思いますが、以下におおまかな流れを疑似コード的に記載します。
系列長(状態ベクトル, 位置ベクトル, visitor, mover):
位置と状態の両方が初期状態に一致するまで系列長をカウント:
moverの次の移動方向 = 次の移動方向(visitorの移動方向,moverの直近の移動方向)
moverの次の位置 = 次の位置(moverの次の移動方向, moveの現在位置)
visitor = mover
mover = 次のmover(位置ベクトル, moverの次の位置)
visitorの状態情報をmoverの状態情報で更新
visitorの位置情報をmoverの位置情報で更新
return 系列長
なお一般には、系列長が同一であることは、状態遷移パターンが同一であることを必ずしも意味しません。そして現時点では、ここで対象としている問題について系列長が同一であれば状態遷移パターンが一意に定まるかどうかについては証明も検証もできていません。従って、上記のプログラムで検証できるのは、ここで対象としている状態遷移規則から生成される状態遷移の系列について、系列長が異なるものが何種類あるかに過ぎず、状態遷移の系列のパターンが何種類あるかについては確認できておらず、系列長が異なる状態遷移パターンのそれぞれについて任意のものを一種類ずつ選択して、その内部構造を確認することまでが今回の報告の内容となります。
状態遷移の系列のパターンが何種類あるかについての確認は今後の課題としたいと思いますが、残された様々な対称性を除去した上で状態遷移系列の同一性を判定する方法として、例えば各「桁人」の軌道において、位置の系列で同じ値が何回続くか(その位置に何ステップ留まるか)を計算して、その結果を系列として、求まった滞留回数の系列の組(各「桁人」について1系列で、「桁人」は5人いるので5系列で1組)を比較する方法が考えられます。
たとえば、LSTの1人目を例にとると、場所の系列は長さ156の
1444222223333331111...11
という文字列となります。同じ位置の値が連続する数を計算して、その系列を文字列とすると、
3356...
のようになり、滞留回数(同じ位置に何ステップ留まるか)の系列が得られたことになります。ここで最初の3は155番目、156番目の1と最初の1で長さ3というように循環的に計算します。これからわかる通り、系列は循環的で巡回的な対称性がある(系列を円形に並べれば、状態遷移の各ステップについて回転対称性がある)ので、開始位置は任意です。実際、この文字列をある状態遷移系列のパターンの各「桁人」について求めると、同じ系列を周期をずらして動く(つまり位相がずれている)「桁人」がいる場合があります。
こうした位相のずれを考慮しつつ対称性を除去した上で状態遷移系列間の比較を行い、結局、滞留回数の系列の組が同一であれば、同一の状態遷移パターンであることが確認できます。
実はこの点についても、既に243通りのうちの一部については確認しており、確認した限りでは同一の系列長で状態遷移系列のパターンが異なるケースはこれまでのところ見つかっていません。また後述のように、今回の調査で得られた6種類の状態遷移パターンのそれぞれについて、各「桁人」が同じ位置に何ステップ留まるかについての系列の計算も実施済ですので、今後、そこで獲られた結果を用いて比較を行うことでこの点の検証を行うことは可能です。
4.実験結果
実験結果として公開しているのは以下の4ファイルです。
以下、順次ファイルの内容を説明しながら実験の結果を報告します。
59049-全状態-系列長.pdf
位置情報の初期値[4,2,1,4,3]に対して、状態情報を[0,0,0,0,0]~[2,2,2,2,2]の243通り与えて軌道を計算して、一周して位置と状態が最初に戻るまでの長さを計算した結果です。系列長は6,20,22,52,54,156で一周期の6種類のパターンしかないことが確認できます。また、前節で述べたように、移動方向は四角形の辺に沿った右向き(0)/左向き(2)の移動についての対称性があり、移動の方向が左右反転するだけで後は同じ状態遷移パターンになりますが、この点については、[0,0,0,0,0]から[1,1,1,1,1]までの系列長を、[2,2,2,2,2]から[1,1,1,1,1]までのベクトルを反転させた上で系列長も逆向きに並べたものが一致することで対称性が確認できます。
59049-遷移パターン-実現例-遷移.pdf
6種類の状態遷移パターンについて、「59049年カウンター」の楽譜(pp.11~15)に記載された形式で位置情報・状態情報の系列の実現例の1つを示し、併せて、moverとなった「桁人」、移動位置および状態遷移パターンを記載したものです。また各「桁人」の移動回数(位置の変更が何回起きたか)を示すとともに、状態遷移系列に含まれる対称性に関する情報を記載しています。
例えばLST(系列長156)を例にとると、
- 一番左の桁がステップ番号(0起点)、5人の桁人の2列目から6列目が位置情報と状態情報を表します。ここでは楽譜に合わせて10の位が位置情報、1の位が状態情報という表記となっていますので、'10'であれば位置が1、状態(移動方向)が0ということになります。また位置のラベルが重複している人の背景色を黄色にしており、visitor, moverであることを表しています。定義により次のステップも背景色が黄色の人がmoverであり、moverが次のステップではvisitorとなることを示しています。7桁目はmoverを、8桁目が移動が起きる位置(visitorにとっては移動先、moverにとっては移動元)を、9行目が計算に用いられる移動についての計算規則を示しています。100の位がvisitorの移動方向)、10の位がmoverの過去の移動方向、1の位がmoverの次の移動方向を示します。文字色が赤の部分は単なるマーカーで、上記の例では一人だけ異なるパターンの軌道を持つCタイプの人がmoverとなるステップに色をつけて他と区別しています。
- 「桁人」の移動パターンにはA型(2人)、B型(2人)、C型(1人)の3タイプがあり、それぞれの移動回数は30、31。34です。
- 全体で156ステップありますが、78ステップのブロックの繰り返し(2回)で構成されています。移動位置と状態遷移パターンは全く同一のシーケンスが繰り返されるのに対して、A1とA2, B1とB2が交替して、1回目のA1の経路を2回目はA2が辿るというような規則性が見られます。
系列長52のパターンは13ステップのブロックを4回繰り返しますが、その際、同じ経路パターンを持つ桁人の間での交替が起きるだけではなく、位置についても一つずつずれて4回で元に戻る他、遷移パターンについても左右の反転が起きているなど興味深い特徴が確認できます。以下では最初の2ブロック分のみ示します。桁人についてはB11→B12, B12→B21, B21→B22, B22→B11と一つずつシフトし、移動パターンについて021→201、102→120のように0(右方向への移動)と2(左方向への移動)の間での反転が起きていることがわかります。また移動が起きる位置については、1→2,3→4というように一つずつ右方向にずれていることがわかります。これを4回繰り返して一周ということになります。
系列長6のパターンは「桁人」の移動についてはトリヴィアルであり、A1/A2/A3の3人が対角線方向に順番に移動を繰り返す一方で、残りの対角線方向の2名は同じ位置に留まって移動を行いません。
59049-遷移パターン-実現例.pdf
このファイルも6種類の状態遷移パターンについて実現例を1つ示していますが、状態情報は割愛し、各桁人の位置情報の変化のみに注目し、同一位置にいる区間を同じ背景色で塗ることで、各桁人の時間方向の経路を強調しています。特にこのファイルでわかるのは、或る状態遷移パターンにおいて、桁人の経路パターンが何通りかのグループに分かれることで、このファイルでは2行目のType行が、その経路パターンのタイプ分けを表しています。
例えば系列長20の状態遷移パターンでは、経路パターン上はA(2人)/B(1人)/C(2人)に分かれます。A1とA2は互いに直交する対角線方向の移動を1度だけ行いますが、位相は丁度5ステップずれており、このグループの移動のタイミングについて5ステップ毎に移動が代わる代わる発生するような動きになっていることがわかります。
59049-遷移パターン-移動回数.pdf
6種類の状態遷移パターンについて、各桁人の位置の移動の時系列パターンのみにフォーカスしたものです。3行目のMoveが移動回数を表し、各系列の数字は、各位置に留まるステップ数を表しています。黄色の背景色は単なるマーカーであり、滞留回数のパターンがわかるように滞留ステップ数が大きいものに色をつけています。以下はMST(系列長54)の場合ですが、9回の移動を行うA2名と12回の移動を行うBグループ3人に分かれ、それぞれのグループ内で滞留回数についての位相のずれが確認できます。
59049-遷移パターン-実現例.pdfとの対応を示すために、系列長20の場合を以下に示します。こちらではAとBについては滞留回数が同じものが繰り返されているだけなので、位相のずれは確認できなくなってしまっています。
[ご利用にあたっての注意] 公開するデータは自由に利用頂いて構いません。あくまでも実験的な試みを公開するものであり、作成者は結果の正しさは保証しません。このデータを用いることによって発生する如何なるトラブルに対しても、作成者は責任を負いません。分析の不十分さや不正確さに起因する間違い、検証プログラムの不具合に起因する間違いなど、各種の間違いが含まれる可能性があることをご了承の上、ご利用ください。
(2024.10.6 公開)