0

XSB ドキュメントには、マニュアル ボリューム 2 セクション 1.16.5 に、ヒープ データ構造ライブラリに関する段落があります。しかし、ソース、バージョン履歴、または Google 経由で、ライブラリの兆候を見つけることができません。このライブラリが実際にまだ存在するかどうかのアイデアはありますか?

私が持っている唯一のリードは、明らかに同じオリジナルから供給されている logtalk のライブラリです。しかし、私は Prolog で作業しているので、logtalk を Prolog に移植する必要があります。

4

2 に答える 2

1

XSB(またはサポートされている他のPrologコンパイラ)でLogtalkを別のライブラリとして使用し、そのリソースをプレーンなPrologまたはPrologモジュールから呼び出すことができます。Logtalkのヒープライブラリのサポートに関しては、(ドキュメントに記載されているように)元のRichard O'Keefeコードに基づいていますが、最小ヒープと最大ヒープの両方を提供するように拡張されています。ヒープインターフェイスは、たとえばここで参照できます。

http://logtalk.org/library/heapp_0.html

http://logtalk.org/library/heap_1.html

簡単な使用例:

?- heap(<)::(new(Heap), insert_all([1-a,4-d,2-b,5-e,6-f,3-c,7-g], Heap, UpdatedHeap), top(UpdatedHeap, Key, Value)).
Heap = t(0, [], t),
UpdatedHeap = t(7, [], t(1, a, t(3, c, t(5, e, t, t), t(4, d, t, t)), t(2, b, t(6, f, t, t), t(7, g, t, t)))),
Key = 1,
Value = a.

?- heap(>)::(new(Heap), insert_all([1-a,4-d,2-b,5-e,6-f,3-c,7-g], Heap, UpdatedHeap), top(UpdatedHeap, Key, Value)).
Heap = t(0, [], t),
UpdatedHeap = t(7, [], t(7, g, t(4, d, t(1, a, t, t), t(3, c, t, t)), t(6, f, t(2, b, t, t), t(5, e, t, t)))),
Key = 7,
Value = g.

ただし、注意点が1つあります。:: / 2呼び出しは、Logtalkオブジェクト(またはLogtalkカテゴリ)内から行われた場合にのみ、プレーンなPrologと比較してパフォーマンスを提供します。トップレベルのインタープリターまたはPrologモジュール内からのクエリは、コンパイル(コンパイル時にメッセージが解決される)ではなく、解釈されます(メッセージが実行時に解決されることを意味します)。パフォーマンスヒットがアプリケーションにとって意味があるかどうかは、あなただけが知ることができます(term-expansionをサポートするPrologコンパイラでは、モジュール内からの:: / 2呼び出しのパフォーマンスヒットを簡単に減らすことができます)。

于 2012-04-28T12:43:21.590 に答える
0

Googleはいくつかの場所を示しています:

ヒープ

ヒープ

于 2012-04-26T06:15:18.003 に答える