純粋に機能的なデータ構造の未解決の質問は何ですか?


51

この質問は、1998年に岡崎の本が出版されてからのPFDSの新機能に関する別の質問に触発されたものです。

まず、次の2つの質問から始めます。

  • ハッシュテーブルの速度に近づく純粋に機能的なセットデータ構造はありますか?試行錯誤はまだありません。
  • O(1)が追加された純粋に機能的なフィンガーツリーはありますか?これまでのベストは、カプランとタージャンによって考案されたO(lg lg n)です。

他に純粋に機能するデータ構造の問題は何ですか?


私は、シーケンスであるキーを持つより一般的な辞書ではなく、ハッシュツリーのような試みを意味すると思いますか?FWIW、ここで古き良きハッシュテーブルにアプローチすることは不可能だと思います。
ジョンハロップ

回答:


19

質問をいくぶん自由に解釈します。岡崎スタイルのデータ構造の場合、メモ化は実行時間に副作用のある暗黙的な突然変異の形式です。したがって、前者のサブセットである純粋に機能的な実装を備えたデータ構造ではなく、厳密な意味での永続的なデータ構造に関する問題に取りかかります。厳密には、ペナルティなしで古いバージョンのデータ構造にアクセスできること、バージョンのツリーが任意に分岐できることなどを意味します。

その文脈では、永続的なUNION-FINDは重要な未解決の問題であると考えています。他のスレッドで言及されたConchon-Filliâtre論文があります。コメンターは、いわゆる永続配列に関する問題をすでに提起しました。それは、実際には半永続的です。しかし、それをハッシュトライまたは他の真に永続的な配列に置き換えると仮定します。この配列は、最悪(およびほぼ間違いなく平均)の場合はより良く、最良の場合はより悪い動作をします。それでも、重要な問題は未解決のままです。

この論文は、Coqの正しさの形式的な証明を与えます。しかし、彼らは正式にまたは非公式に償却された複雑さに対処することができません。それはあまりだではない複雑なことを私に明らか舞台裏すべての場合に予想される償却複雑で突然変異の結果。私が最後にそれについて考えたとき、私はそれに努力をすれば反例を構築できると幾分自信を感じました。たとえその最後の部分について間違っていても、適切な分析の欠如は大きなギャップです。トラヤヌスのUNION-FINDの古典的な償却分析が直接転送されないことは明らかです。


5
完全に永続的な(ただし、コンフルエントに永続的ではない)配列の候補の1つは、Confluently Persistent Tries for Efficient Version Controlに示されています。著者は、O(lg lg n)のスローダウンを主張し、DietzらのO(lg lg m)のスローダウンを打ち負かしています。ここで、mはアレイで実行された操作の数です。
jbapple

1
また、岡崎の怠mortな償却構造は多くの場合、代替よりもはるかに単純ですが、実装できないデータ構造(同じ時間範囲では実装できません)を知りません最悪の場合)本当に純粋に機能的な方法で。
jbapple

12

他に純粋に機能するデータ構造の問題は何ですか?

以下がその1つです。

弱いハッシュテーブルの機能的に同等なものは何ですか?


15
ええと... OPは未回答の質問を求めているので、これはOPの質問に対する潜在的な回答とみなされます。
ジェイソンS

6
さて、噛みます。弱いハッシュテーブルとは何ですか?
ジェフ

4
これは、そのテーブル(および他の脆弱なマップ)のみがその要素への参照を含む場合に、その要素をガベージコレクションできるようにするハッシュテーブルです。
Havvy

3
@JonHarrop:弱い参照は言語のセマンティクスを非決定的であり、純粋に機能的な言語は決定的であるため、純粋なバージョンの弱い参照が不可能であることを証明するのは簡単です。型に非決定性を追加でマークすると、通常の実装が機能します。効果を安全にマスクする場合は、依存型が必要です(参照の内容に関係なく実装が同じ答えを与えることを証明するため)。
ニールクリシュナスワミ

5
@NeelKrishnaswami、私はそうではないと思います。列挙(またはカウント)をサポートしない弱いテーブルなど、非決定論を作成しない弱いデータ構造を作成できます。例については、wiki.ecmascript.org / doku.php?id = harmony:weak_mapsを参照してください。
サムトービンホッホシュタット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.