なぜ関数型プログラミングは動的ツリーを研究していないのですか?


19

動的ツリーは、ネットワークフロー、動的グラフ、組み合わせの問題(TarjanおよびWerneckによる「Dynamic Trees in Practice」)や最近の辞書のマージ(Adam Karczmarzによる「A Simple Mergeable Dictionary」)などの問題の解決に重要な役割を果たします。

動的ツリーについては、1983年のSleator&Tarjanの論文「動的ツリーのデータ構造」に記載されている定義を参照します。

  1. Edward Kmettは、主にC ++の対応物の翻訳として、STツリーのバージョンを実装しました。リンクカットツリーを参照してください。
  2. クリス・オカサキは、著名な著書「純粋に機能的なデータ構造」に、スプレイツリーの限定的な実装を書いています。
  3. Ralf HinzeとRoss Patersonは、2〜3本のフィンガーツリーと呼ばれる機能的なデータ構造を導入しましたが、動的ツリーの元の定義とは多少異なる目的があります。

動的ツリーの実装(およびパフォーマンス)は、次の3つのアプローチに従って分割されます。

  1. ETツリー(オイラーツアー)が重要な役割を果たす線形化。純粋に機能的な研究は見つかりませんでした。
  2. STツリーが主力であるパス分解では、Kmettのバージョンが見つかりました。
  3. ツリーの収縮。トップツリー、トポロジツリー、およびRCツリーがプレーヤーです。純粋に機能的な研究は見つかりませんでした。

純粋に機能的な分析と実装は、Splay、AVL、赤黒木で見つけることができますが、それらは動的な木ではありません。前者は後者のシャドウ(仮想または補助とも呼ばれる)データ構造と見なされます。

だから、私の質問は:

関数型プログラミング研究コミュニティが動的ツリーデータ構造に参加しない理由(欠点、弱点)は何ですか?


14
公式意見を形成するための権威ある関数型プログラミングコミュニティ委員会を結成せずにこれにどのように答えることができるかはわかりません。ここで答えられるものがあるように、質問を再定式化することはできませんか?私の知る限り、OPはHaskellなどで動的なツリーを実装し、ここに戻ってやったことを報告する必要があります。
アンドレイバウアー

@AndrejBauerの更新:OPは消えて、Haskellで動的ツリーを実装しました:arxiv.org/abs/1908.11105
jbapple

回答:


-1

「コンピューターサイエンスでは、関数型プログラミングはプログラミングパラダイムです。計算を数学関数の評価として扱い、状態や可変データの変更を回避するコンピュータープログラムの構造と要素を構築するスタイルです。」-ウィキペディア

「状態と可変データの変更」、つまり「動的」。

したがって、あなたの質問は、なぜ左が正しくないのかを尋ねるようなものです。


1
機能プログラムは、永続的なデータ構造を使用して動的データを表すことができます。この質問は、特定の問題に対する永続的なデータ構造の開発が研究されていない理由を尋ねています。質問は理にかなっています。
モニカを
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.