$PROROOT/library/data/miscディレクトリには、グラフ、ヒープ、ツリー、キュー、マップ、平坦リストなどのデータ構造を扱ういくつかの述語の定義があります。ファイルの名前が、その機能を表します。
以下に、それらの述語と手順を説明します。
flat.proファイル ---------------- and_to_list(+連言, -リスト) すべての`&'を取り除き、リストにして返す。
list_to_and(+リスト, -連言) リストを連結して連言項(関数子が`&'の項)にしたものを返す。
or_to_list(+選言, -リスト) すべての`;'を取り除き、リストにして返す。
list_to_or(+リスト,-選言項) リストを連結して選言項(関数子が`;'の項)にしたものを返す。
plus_to_list(+合計,-リスト) すべての`+'を取り除き、リストにして返す。
list_to_plus(+リスト,-合計) リストを連結して加算項(関数子が`+'の項)にしたものを返す。
times_to_list(+生成物,-リスト) すべての`*'を取り除き、リストにして返す。
list_to_times(+リスト,-生成物) リストを連結して、乗算項(関数子が`*'の項)にしたものを返す。
flatten(+リスト,-フラット) リストから入れ子構造を取り除き平坦にする。
graphs.proファイル ------------------ vertices(+S_グラフ,-頂点) S-表現から隣接節点を除いて頂点だけを取り出す。
p_to_s_graph(+P_グラフ,-S_グラフ) P-表現をS-表現に変換する。
s_to_p_graph(+S_グラフ,-P_グラフ) S-表現をP-表現に変換する。
s_to_p_trans(+S_グラフ,-P_グラフ) S-表現からP-表現に転置して変換する。
warshall(+グラフ,-閉じ部) S-表現のグラフの推移的閉包をとる。
p_transpose(+P_グラフ,-転置グラフ) P-表現のグラフを転置する。コストは、0(|E|)である。
s_transpose(+S_グラフ,-転置グラフ) S-表現のグラフを転置する。コストは、0(|V|^2)である。
p_member(?X,?Y,?P_グラフ) 辺(X,Y)がP_グラフ中にあるかどうかをチェックする。
s_member(?X,?Y,?S_グラフ) 辺(X,Y)がS_グラフ中にあるかどうかをチェックする。
compose(+G1,+G2,-Composition) 2つのS-表現グラフの合成を計算する。
top_sort(+グラフ,-ソート) グラフをソートする。
heaps.proファイル ----------------- add_to_heap(+旧ヒープ,+キー,+データ,-新ヒープ) 新しいキー・データの対を旧ヒープに挿入し、新ヒープとする。
get_from_heap(+旧ヒープ,?キー,?データ,-新ヒープ) 旧ヒープから、最小のキーを持つキー・データ対を取り出して返し、それを削除した新ヒープを作る。
heap_size(+ヒープ,?サイズ) 現在ヒープの中にある要素の数を報告する。
heap_to_list(+ヒープ,-リスト) ヒープ中のキー・データ対の集合をリストにして返す。
list_to_heap(+リスト,-ヒープ) キー・データ対のリストから、ヒープを作る。
min_of_heap(?ヒープ,+キー,+データ) ヒープの先頭にある (最小の) キー・データ対を返す。
min_of_heap(+ヒープ,?キー1,?データ1,?キー2,?データ2) ヒープの最小の対、及び2番目に小さい対を返す。
is_heap(+ヒープ) ヒープとして正しい構造を持っていれば真。
map.proファイル --------------- is_map(+マップ) マップとして正しい構造を持っていれば真。
list_to_map(+リスト,?マップ) キー・値リストからマップを作る。
map_agree(+マップ1,+マップ2) マップ1とマップ2に共通のキーがあれば真。
map_compose(+マップ1,+マップ2,?マップ3) マップ1とマップ2を合成してマップ3に返す。
map_disjoint(+マップ1,+マップ2) マップ1とマップ2の定義域に共通の要素を持たない時に、真になる。
map_domain(+マップ,?ドメイン) マップの定義域の順序集合表現をドメインに返す。
map_exclude(+マップ1,+順序集合,?マップ2) マップ1の定義域から順序集合の要素を落して制限したマップ2を作る。
map_include(+マップ1,+順序集合,?マップ2) 順序集合にないすべての要素をマップ1から落して制限したマップ2を作る。
map_invert(+マップ1,?マップ2) マップ1の有限可換写像を逆像をマップ2とする。
map_map(+関数述語,+マップ1,?マップ2) マップ1に関数述語を合成して得られるマップ2を作る。
map_range(+マップ,?順序集合) マップの値域を順序集合表現にして返す。
map_to_assoc(+マップ,?連想木) マップを連想木に変換する。
map_to_list(+マップ,?リスト) マップをキー・値対のリストにして返す。
map_union(+マップ1,+マップ2,?マップ3) マップ3は、マップ1とマップ2の写像和である。
map_update(+ベースマップ,+覆いマップ,?マップ3) map_union/3 と同様だが、同じキーに対して異なる値が定義されている場合、多いマップの値を採用する。
map_update(+マップ1,+キー,+「値」,?マップ2) マップ1の「キー」の像が「値」になるようにしたマップ2を作る。
map_value(+マップ,+引数,?結果) マップを引数に適用した結果を戻す。
portray_map(+マップ) マップを美しくプリントする。
queues.proファイル ------------------ make_queue(-列) 空の列を作る。
join_queue(+要素,+旧列,-新列) 列の末尾に要素を付け加える。
list_join_queue(+リスト,+旧列,-新列) 列の末尾に多くの要素を付け加える。
jump_queue(+要素,+旧列,-新列) 列の先頭に要素を加える。
list_jump_queue(+リスト,+旧列,-新列) 列の先頭に多くの要素を加える。
head_queue(+列,?先頭) 列の最初の要素を取り出す。
serve_queue(+旧列,?先頭,-新列) 列の最初の要素を取り除く。
empty_queue(+列) 列が空であるかどうかをテストする。
length_queue(+列,-長さ) 列の要素をカウントする。
list_to_queue(+リスト,-列) リストを列に変換する。
queue_to_list(+列,-リスト) 列をリストに変換する。
trees.proファイル ----------------- get_label(+インデックス,+木,?ラベル) 木をN個の要素の配列として扱い、インデックス番目の節点のラベルを返す。
list_to_tree(+リスト,-木) N要素のリストから2進木を構成する。
map_tree(+述語,+旧木,-新木) 旧木に述語を適用して新木を作成する。
put_label(+インデックス,+旧木,+ラベル,-新木) 旧木のインデックス番目の位置にラベルを置き、新木を返す。
tree_size(+木,?サイズ) 木の要素の数を計算する。
tree_to_list(+木,-リスト) 木をリストに変換する。
| scroll to top |
|