データ構造同型


20

免責事項:私はCS理論家ではありません。

抽象代数から来て、私は同型に等しいものを扱うことに慣れていますが、この概念をデータ構造に変換するのに問題があります。最初に、まっすぐに設定された理論的な全単射射影で十分だと思っていましたが、私は非常に急速に壁にぶつかりました。

より制限的な(しかしより便利な)定義はありますか?(そうでない場合、なぜですか?)「構築されたデータ構造」のカテゴリの標準的な定義はありますか?

回答:


16

標準的なそのようなカテゴリはありません。同じ理由で、計算の標準的なカテゴリはありません。ただし、データ構造には大きくて有用な代数構造があります。

それでもなお有用である、より一般的なこのような構造の1つは、組み合わせ種の理論です。種はファンクタ。ここで、Bは有限集合とそれらの間の全単射のカテゴリです。種は、抽象的な場所のセットによってインデックス付けされた構造のファミリーであると考えることができます。これは、B上の機能性を説明します-そのようなファミリは、抽象ラベルの名前変更に関して不変でなければなりません。次に、種の計算は基本的に機能レベルで関数メソッドを生成し、カウントではなくデータ構造のセットを生成します。FBBBB

この理論がプログラミング言語で実装されているのを見るには、Brent YorgeyのHaskell Symposium論文、Species and functors and types、oh my!。セージには種のパッケージもあると思いますが、もちろんプログラミングではなくコンピュータ代数を対象としています。


14

実際、プログラミングでより有用な同型とは異なる概念があります。これは「振る舞いの等価性」(「観測的等価性」とも呼ばれます)と呼ばれ、全単射ではなくデータ構造間の「シミュレーション関係」を与えることによって確立されます。代数論者がやって来て、コンピュータサイエンスの「代数データ型」と呼ばれる領域を確立しました。そこで、同型と初期代数をしばらくの間押しました。最終的に、コンピューター科学者は、彼らが誤解されていることに気づきました。これらの問題について語る良い論文は、SannellaとTarleckiによる 「観測的等価性と代数的仕様について」です。

論理関係とシミュレーションに関するcstheoryの別の質問への回答を書きました。これは、コンピューターサイエンスにおけるシミュレーション関係のより一般的な歴史について語っています。あなたはそれを読んで、そこで与えられた参考文献をフォローアップすることを歓迎します。Reynoldsの「Craft of Programming」の第5章は特に啓発的です。

代数オートマトン理論の教科書Holcombeによるは、次の興味深い引用があります(p。42)。

準同型と商に関係する他の多くの結果があります...それらは独立した代数的関心の対象ですが、オートマトンおよび関連分野の研究で特に有用であるとはまだ証明されていません。実際、機械の代数理論は、1つの重要な点で他の代数理論の方向とは異なります。しかし、オートマトン理論の重要性は、機械が「見える」ことではなく、「できること」です。 。2台のマシンが両方とも「同じことを行う」ことができる場合、非常に密接に関連していると見なしますが、代数的に同型ではない場合があります。


Holcombeの引用をもう少し考えてみると、彼は基本的に伝統的な代数が「見える」もの、すなわちその構造を扱っているが、「彼らができること」、すなわちその振る舞いについてはハンドルを持っていないことに気づく。これは、コンピュータサイエンスに関する従来の代数の基本的な制限を指しているようです。悲しいことに、カテゴリ理論も同じキャンプに属していると思います。しかし、カテゴリー理論は「聖なる牛」の地位にあり、その限界について話すことはクールではないと考えられています。うまくいけば、コンピューター科学者がもっと大声で言うのに十分な勇気を集めるでしょう。
ウダイレディ

ええと、カテゴリー理論のどのように(非対称性?)がうまく適合しないように見えるかについて、もう少し詳しく説明していただけますか?
ルカシュルー

@ŁukaszLew、カテゴリー理論が適切であれば、型変数Xを持つすべての型付きラムダ計算型式はファンクターであると言えます。ただし、F(X)=(X-> X)はファンクターではありません。
ウダイレディ

7

同型の概念をどのように強化/弱めることができるかを尋ねるのではなく、計算構造間の等価性の正しい概念は何ですか、この概念の基礎となる数学的な構造は何ですか?

構造の大きなファミリーの1つは、代数です。リスト、ツリー、オートマトン、有限および無限の両方の多様性などの構造は、代数として記述できます。その後、代数間の準同型または同型を調べることができます。

ただし、代数間の準同型でさえ、全体を語るわけではありません。シミュレーション、バイシミュレーション、その他の論理関係を調べると役立つ場合があります。代数的アプローチを厳密に好む場合(リレーショナルアプローチではなく)、ガロア接続は1つのオプションです。ここにいくつかの出発点があります。


2

免責事項:あなたの質問を理解したかどうかわかりません。2つのデータ構造間、または2つの「データ構造仕様」間の同型について説明しますか?(これらは抽象データ型と呼ばれることもあります。)

セルプローブモデルを検討すると、同型の概念が簡単に生じると思います。これは、セルプローブモデルが決定木による計算をモデル化するため、同型を定義するのが簡単だからです。セルプローブモデルは、データ構造の実装間の同型を考慮する場合と、データ構造の仕様を考慮する場合の両方に役立つと思います。

セルプローブモデルの詳細については、Miltersenの調査などを参照してください。(セルプローブの複雑さ:調査

データ構造間で同型を定義する必要がある理由について詳しく説明する場合は、さらにヘルプを提供できる可能性があります。私にメッセージを送ってください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.