日記(アルカナやスキップリストについて)
love-neniye
今日見た夢は思い出せず。歩行者の鈴の音がちりんちりんと鳴っていたので、それに注意を持っていかれてしまった。
大アルカナと小アルカナ
いわゆるスピリチュアル方面に興味があるというわけではないけれど、タロットカードに興味があり、ウェイト版といわれるカードを持っている。
本になっているような解説書は読んだことがないけれど、カード購入時に付属していた解説書によれば、タロットカードの起源は14世紀後半のトランプだそう。
タロットカードの分類としては大アルカナ(22枚)と小アルカナ(56枚)という二種類があり、小アルカナがトランプのカード構成と似ている。トランプの4種類のスート(クラブ、ハート、スペード、ダイヤ)に対応するものが小アルカナにも同様に4種類(ワンド、カップ、ソード、ペンタクル)ある。また、小アルカナにはトランプと同様の数字のカードの他にもキングやクイーンといったカードもあるが、トランプの「ジャック」に対しタロットには「ペイジ」と「ナイト」があり、完全な一対一対応にはなっていない。トランプがタロットの起源だとすれば、タロット(の小アルカナ)が作られたときにカードの種類を増やしたということになる。
大アルカナと小アルカナの明確な違いは、大アルカナにはカードごとに名前というかタイトルが付いていることだ。たとえば有名どころだと吊るされた男(金田一少年の事件簿の雪山山荘殺人事件)や、他のマンガでいえば、ジョジョの奇妙な冒険の第3部でも、大アルカナのカードがいくつか出てきたはず。
名前の有無の影響は、カードの解釈をするにあたり、かなり大きな影響がある。例えばハーミットであれば、老人が佇んでいる絵にも見えるが、これに「隠者」というタイトルがあると、どうしてもタイトルの影響から逃れるのは難しくなってしまう気がする。マグリット的というかなんというか。
もちろん名前があるからこそ広がるイメージや解釈もあるだろうけど、少なくとも自分にとっては、解釈の自由さでいえば小アルカナのほうが自由度は高いように思う。
本格的なスプレッド(カードの置き方にもいろいろあるらしい)などをやっているわけではないが、適当にペロっとめくって出てきたカードを眺めるくらいはしたりする。同じカードであったりしても、自分のコンディションで見方が変わるというか、以前は気がつかなかったことだったり、気にならなかったような部分に注目していたりすることは確かにある。
あまりスピリチュアル方面に興味があるわけではないけれど、物事の多面性を見る訓練にはなるのかもしれない。
結局のところ、それはタロットカードでなくてもよいと言われればそうなんだけど。
スキップリスト
Kosshiのドキュメントを読んでいてテキストエディタ(を含むアウトラインエディタ)が扱うデータ構造について興味が湧いてきた。扱う対象が大量になってくるとどうしてもパフォーマンス上の問題が出てくるので、データをいくつかのチャンクにわけて管理するのは色々なエディタで共通のようだが、それぞれに独自の工夫があったりするようで面白い。
たとえば piece tableを双方向リストで管理するPiece chainsのような方法がある。ただ単純なリスト構造だとノードの探索の計算量がO(n)なってしまうので、例えばVisual Studio Codeとかはpiece tableを平衡二分木で扱うようにしているらしい。
バランスのいいツリー(平衡木)にするためには、データを挿入したり削除したときにリバランスという操作が必要になる。ただ、平衡木の1つである赤黒木の場合でも、結構複雑なように思える。
平衡木の代替として、スキップリストというデータ構造もあるらしいということだが、ざっと調べたところだとそもそもあんまり使われていないような印象。Webにある記事にもいくつかヒットするけれど、なんとなくリンク切れが多いような。
1990年のオリジナルのスキップリストは乱択アルゴリズムを使ったデータ構造なので、最悪時のパフォーマンスがよくないことが(確率としてはまれだけど)あるかもしというのが採用をためらわせる理由にもなっているのだろうか。
しかし、その後にdeterministic skip listというのも提案されているので、「スキップリスト=乱択アルゴリズム」というわけではないようだ。さらにalternating skip listというのも考えられているみたい(階層が変わるにつれ、スキップするリンクの向きを変えているようだ)。ただ、ここまで来ると双方向リストにTree構造が付属しているデータ構造のような気もしてくる。
ちゃんとは理解していないけれど、完全なランダムよりはゆるやかな制限の1-2(-3) skip listと平衡二分木を比較して、挿入・削除時のリバランス処理の複雑さを許容できるかどうかというところなのだろうか。採用実績の有無は大きいと思う。
ただの妄想だけれど、1-2(-3) skip listはTreeでいう2-3(-4) treeみたいなものだから、赤黒木みたいにデータ構造に何か属性を付加して、構造を制限する手法もあるのかもしれないなどと考えた(たとえば赤黒スキップリストみたいなもの)。しかしそもそもスキップリスト自体がわりと素直(なように感じられる)な構造なので、あえて赤とか黒とかの属性を導入する必要性は少ないかもしれない。コーディングのしやすさ次第だろうけど。あとは拡張のしやすさがあるかどうかも重要なんだろう。
そもそもあまり慣れていないというのもあるけれど、big O記法の定数部分や係数部分って実際にどれくらいなのかを気にしてしまう。あと、big Θ記法ってなんだっけ、となったりした。
夢日記なら見た夢を書けばいいだけだけど、ふつうの日記ってどこまで書くか、何を書かないのか、それが難しい。これは日記なのだろうか。