そこには膨大な数のソートアルゴリズムがありますが、それらのほとんどは、2つの要素が同等であると仮定しているため完全に順序付けされたセットでのみ動作します。しかし、いくつかの要素が比較できないposetsをソートするための優れたアルゴリズムはありますか?すなわち、posetから引き出された要素の集合Sが与えられると、ある出力するための最良の方法は何か順序X は、、...、 X X NようにX I ≤ Xならj、i ≤j?posetをソートする?
9
A
答えて
6
arxiv.orgにはSorting and Selection in Posetsというタイトルの論文があり、オーダーO((w^2)nlog(n/w))のソート方法について説明しています。ここでwはposetの「幅」です。私は論文を読んでいないが、あなたが探しているものをカバーしているようだ。
+0
リンクありがとうございます!これは非常に有望に見えます! – templatetypedef
0
私は選択交換ソートから始めます。それはO(n^2)だと私はあなたがそれよりもうまくいくとは思わない。
1
Topological sortは、部分的に順序付けされたセットをソートするのに適しています。ほとんどのアルゴリズムはO(n^2)です。ここにはWikipediaのアルゴリズムがあります。
L ← Empty list that will contain the sorted elements
S ← Set of all nodes with no incoming edges
while S is non-empty do
remove a node n from S
add n to tail of L
for each node m with an edge e from n to m do
remove edge e from the graph
if m has no other incoming edges then
insert m into S
if graph has edges then
return error (graph has at least one cycle)
else
return L (a topologically sorted order)
helpful video exampleがあります。ほとんどのUnixライクなシステムにはtsort
コマンドがあります。あなたはtsort
でビデオのブラウニーの例を次のように解決できます:
$ cat brownies.txt
preheat bake
water mix
dry_ingredients mix
grease pour
mix pour
pour bake
$ tsort brownies.txt
grease
dry_ingredients
water
preheat
mix
pour
bake
関連する問題
- 1. poset反復実装の正確
- 2. 厳密な関数プログラミングを使用してposetからDAGを生成する
- 3. 1行だけをソートするUnixソート
- 4. maxHeapソートをminHeapソートに変更する
- 5. Cでリンクリストをソートする(選択ソート)
- 6. 負の整数でソートをソートする
- 7. グループのソート、ソート、ソートの値をマップする方法
- 8. アソシエーションをソートする
- 9. LinkedHashMapをソートする
- 10. NSMutableDictionaryをソートする
- 11. NSMutableSetをソートする
- 12. LinkedHashSetをソートする
- 13. NSTableViewをソートする
- 14. ソートをソートする理由累積を使用する理由
- 15. ソートにNSArrayをソート
- 16. グラフ変数をターゲット変数でソートした後にソート変数をソートする
- 17. 配列を使ってデータをソートするC++でリンクリストをソート
- 18. 同じソートを返すソート関数
- 19. MySqlはソートをソートしますか?
- 20. データフレームの列をソートしてエラーをソートする
- 21. MYSQLグループ内の項目をソートしてグループをソートする
- 22. iソートを使用してjson出力をソートする
- 23. FileListオブジェクトをソートする
- 24. Cでリストをソートする
- 25. Java-8コレクションをソートする
- 26. WPFでリストボックスをソートする
- 27. ルックアップをソートするには?
- 28. ListViewグループをソートする?
- 29. データベースをソートする方法
- 30. 要素をソートするJavascript
これはちょうどトポロジカルな並べ替えですか? –
@ jleedev-トポロジカルな並べ替えでそれを行うことができるのは、Sの要素のすべてのペアが互いに先験的にどのように比較されているかを知っている場合のみです。それ以外の場合は、すべての比較をO(| S |^2)時間行う必要があります。 – templatetypedef