カテゴリー理論、計算の複雑さ、組み合わせ論的接続?


17

私は「機能アルゴリズム設計の真珠」を読み、続いて「プログラミングの代数」を読み込もうとしましたが、同じ再帰定義を持ち、その後に導くコンビナトリアル種の紹介に示されているように、同じ形式のべき級数(または関数を生成)に(「種とファンクターと型、Oh My!」を読みました)。

それで、最初の質問について、べき級数から生成(再帰)方程式を回復する方法はありますか?しかし、それは再考です。

私は、「データ構造に関する手順を定義する」一種の初期代数と最終共代数の概念にもっと興味がありました。関数型プログラミングには、合成、代数間のマッピングの生成物などに関する実用的なルールがいくつかあります。これについては、このチュートリアルで例として説明します。これは複雑さにアプローチするための非常に強力な方法である可能性があり、たとえば、そのようなコンテキストでマスターの定理を回復することはかなり簡単に見えます(つまり、同じインスタンスを行う必要があるので、このインスタンスではあまり利益がありません)そして、初期代数からのユニークなカタモルフィズムと、F多項式ファンクターのAとFAの間の代数が同型であるという事実(私は間違っていますか?)は、そのようなアプローチがデータ構造に対する操作。

実用的な観点から見ると、融合ルールのように見えます(基本的に、代数型射を相互に合成する方法、合同型射、一般型型)は、プログラム変換とリファクタリングのための非常に強力な最適化手法です。これらのルールを最大限に活用することで最適なプログラムを作成できると思います(不要な中間データ構造やその他の余分な操作はありません)。

ここに何か(そして何)がありますか?このように計算の複雑さを調べることは(学習の観点から)受益者ですか?「素敵な」初期代数を持つことができる構造は、いくつかの問題に対して何らかの形で制限されすぎていますか?

私は主に、検索空間の構造、および「検索空間」と「検索アルゴリズム」がファンクターの初期代数のような「素敵な」オブジェクトを介して相互作用する方法に関して複雑さを考える方法を見つけようとしています。より複雑な構造を見るときに、物事をこのように見ようとすることが有用かどうかを理解する。


5
これを読みやすくするために再フォーマットできますか?
レフレイジン

11
あなたのアイデアには2つの潜在的な問題があります。まず、すべてのデータ構造が初期代数を使用して表現できるわけではありません。一般的なグラフや複雑なポインター構造は、ファンクターの初期代数にはなりません。第二に、融合規則などは一般に、アルゴリズムのO(-)効率を変更するのではなく、コードの効率を向上させるだけです(例外は知っていますが)。
デイブクラーク

おかげで、デイブ、私はアルゴリズムゲーム理論の本を読もうとしていますが、伝統的な治療法のアルゴリズムは、いわば操作上ほとんど指定されています。しかし、一般的なデータ構造とファンクター間の対応の欠如は問題です。@sclv:ありがとう、見ます!
ステファンペトロフ

グラフを表現する方法は、複雑なポインター構造以外にもあることを指摘したいと思います。特に、一連の変更または追加@DaveClarkeによって、それらを帰納的に表すことができます。このような他の構造についても同じことが当てはまりますが、初期代数とそれらの制限の専門家ではないので、明確に言いたくはありません。
サミュエルシュレシンガー

回答:


7

Dave Clarkeのコメントは非常に重要です。一般に、融合はO(-)効率を変更しません。ただし、特に興味深いのは、因果交換矢印に関するLiu、Cheng、およびHudakの研究です。それらで書かれたプログラムは、部分的にストリームの融合により、動的メモリ割り当てや中間構造のない単一ループに最適化できます:http : //haskell.cs.yale.edu/?post_type=publication & p=72


6

Joyalの組み合わせ種、Sedgwick / FalojetのAnalytic Combinatoricsの「許容構造」、およびYorgeyのHaskell Speciesはすべて優れています。

UNIX diff名声のMcIlroyによるPower Series Power Seriousも読んでおく必要があります。また、The Haskell Road to Logic Maths and Programmingのcorecursionの章も読んでください。

Saunders MacLaneとChomsky /Schützenbergerによって編集されたBuchiの歴史的な作品は、べき級数、代数、木、および有限状態オートマトンを結び付けます。スタンレーで説明されている伝達行列法は、重み付きオートマトンから生成関数を計算する方法を示しています。

ドメイン(GF、重み付きオートマトン、代数、ツリー、再帰)を効率的に変換するための最善の方法を今も取り組んでいます。Haskellの優れたシンボリックパッケージがまだないため、今はSymPyを使用しています。

個人的に、私は、その後、拘束正確なブラックボックス検索を取得することでセットを支配分を計算しendofuctionの反復グラフを撮影した http://oeis.org/A186202、あなたが探していたものを複雑結果の型ではありませんしかし、この手法は、有限集合に対するエンドオークションを調べる際に非常に強力です。

-元の14年10月2日15:37の答え-

あなたが引用した彼の論文に続くブレント・ヨージーの論文を見てください。http://www.cis.upenn.edu/%7Ebyorgey/hosted/thesis.pdf

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