sitelogo
様々なデータ構造
MINERVA superseeded IF/Prolog. Please see http://www.ifcomputer.co.jp/MINERVA for details.

We discontinued to sell IF/Prolog Dec 31. 2003. For current customers, we continue to provide professional support for IF/Prolog until Dec 31, 2008.

$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(+木,-リスト) 木をリストに変換する。


戻る 続く..
冒頭へ managed with ubiCMS