"SortedMultiset" (データ構造)
"SortedMultiset"
メンバが一般式であり,ソートされた順を保つマルチ集合を表す.
詳細
- ソートされたマルチ集合は,効率的な挿入と削除だけでなく,同じ要素が2回以上現れることができる場合のメンバシップ検定にも役立つ.
-
CreateDataStructure["SortedMultiset"] 標準的な順序付けを使う新しい空の"SortedMultiset"を作成する CreateDataStructure["SortedMultiset",elems] 要素 elems を持つ新しい"SortedMultiset"を作成する CreateDataStructure["SortedMultiset",elems,p] 指定の要素と順序関数 p を持つ新しい"SortedMultiset"を作成する Typed[x,"SortedMultiset"] x に"SortedMultiset"型を与える - "SortedMultiset"型のデータ構造には,以下の演算が使える.
-
ds["Cases",elem] elem にマッチするマルチ集合のメンバを返す time: O(log n) ds["Count", elem] elem にマッチする要素の数を返す time: O(log n) ds["Delete",x] x の1つのインスタンスを ds から削除する.x が実際に要素である場合にはTrueを返す time: O(log n) ds["DeleteAll"] ds からすべての要素を削除する time: O(n) ds["DeleteCases",x] x のすべてのインスタンスを ds; から削除する.x が実際に要素である場合にはTrueを返す time: O(log n) ds["Elements"] ds の要素のリストを返す time: O(n) ds["EmptyQ"] ds がメンバを持たない場合はTrue time: O(1) ds["Insert",x] x をマルチ集合に加える time: O(log n) ds["Length"] ds に保存されるメンバの数を返す time: O(1) ds["MemberQ",x] x が ds のメンバである場合はTrue time: O(log n) ds["Visualization"] ds の可視化を返す time: O(n) - 以下の関数もサポートする.
-
dsi===dsj dsi が dsj に等しい場合はTrue FullForm[ds] ds の完全形 Information[ds] ds についての情報 InputForm[ds] ds の入力形 Normal[ds] ds を通常の式に変換する
例題
すべて開くすべて閉じる例 (3)
新しい"SortedMultiset"は,CreateDataStructureを使って作成できる:
式が保存されていない場合には,Falseが返される:
要素を集合から削除する.何かが実際に削除された場合には,Trueを返す:
スコープ (1)
情報 (1)
新しい"SortedMultiset"は,CreateDataStructureを使って作成することができる:
考えられる問題 (1)
集合のメンバシップ (1)
順序関数が与えられると,これを使って集合のメンバシップが指定される:
順序関数は最初の要素だけを見るので,これはTrueを返す: