私は「機能アルゴリズム設計の真珠」を読み、続いて「プログラミングの代数」を読み込もうとしましたが、同じ再帰定義を持ち、その後に導くコンビナトリアル種の紹介に示されているように、同じ形式のべき級数(または関数を生成)に(「種とファンクターと型、Oh My!」を読みました)。
それで、最初の質問について、べき級数から生成(再帰)方程式を回復する方法はありますか?しかし、それは再考です。
私は、「データ構造に関する手順を定義する」一種の初期代数と最終共代数の概念にもっと興味がありました。関数型プログラミングには、合成、代数間のマッピングの生成物などに関する実用的なルールがいくつかあります。これについては、このチュートリアルで例として説明します。これは複雑さにアプローチするための非常に強力な方法である可能性があり、たとえば、そのようなコンテキストでマスターの定理を回復することはかなり簡単に見えます(つまり、同じインスタンスを行う必要があるので、このインスタンスではあまり利益がありません)そして、初期代数からのユニークなカタモルフィズムと、F多項式ファンクターのAとFAの間の代数が同型であるという事実(私は間違っていますか?)は、そのようなアプローチがデータ構造に対する操作。
実用的な観点から見ると、融合ルールのように見えます(基本的に、代数型射を相互に合成する方法、合同型射、一般型型)は、プログラム変換とリファクタリングのための非常に強力な最適化手法です。これらのルールを最大限に活用することで最適なプログラムを作成できると思います(不要な中間データ構造やその他の余分な操作はありません)。
ここに何か(そして何)がありますか?このように計算の複雑さを調べることは(学習の観点から)受益者ですか?「素敵な」初期代数を持つことができる構造は、いくつかの問題に対して何らかの形で制限されすぎていますか?
私は主に、検索空間の構造、および「検索空間」と「検索アルゴリズム」がファンクターの初期代数のような「素敵な」オブジェクトを介して相互作用する方法に関して複雑さを考える方法を見つけようとしています。より複雑な構造を見るときに、物事をこのように見ようとすることが有用かどうかを理解する。