問題タブ [partial-ordering]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1199 参照

c++ - テンプレートが他のテンプレートよりも特化されているのはいつですか? 「および」/「または」論理との混同。

C++11 ドラフトの 14.8.2.4p10 には、

考慮されている型ごとに、特定のテンプレートが少なくともすべての型に特化しており、一部の型のセットに特化しており、もう一方のテンプレートがどの型にも特化していないか、少なくともどの型にも特化していない場合、指定されたテンプレートは、他のテンプレートよりも特化されています。

「または少なくともどのタイプにも特化されていない」があるのはなぜですか? 私が見る限り、タイプのリストがある場合

そして、すべての T が少なくとも同程度に専門化されており、一部がより専門化されている場合。そして、私たちのどれもより専門化されていないので、論理的に言えば、T の集合は全体として U の集合よりも専門化されているように思われます。では、対応する Ts ほど専門化された Us がいない場合に、前述のフォールバックがあるのはなぜですか?

0 投票する
1 に答える
2370 参照

c++ - PartialOrdering、StrictWeakOrdering、TotalOrdering、アプリケーションの主な違いは何ですか

【SGI公式ドキュメント】

非反射性と推移性のため、operator< は常に半順序の定義を満たします。厳密な弱順序の定義はより厳密であり、全順序の定義はさらに厳密です。

また、ドキュメントの厳密な弱い順序付けの定義も読みました: StrictWeakOrdering

最初の 3 つの公理、非反射性、反対称性、および推移性は、半順序の定義です。等価性の推移性は、厳密な弱い順序付けの定義によって必要とされます。全順序付けは、さらに強い条件を満たすものです: 同等性は同等性と同じでなければなりません。

これらの定義についてはよくわかりません。主な質問:

1.半順序付けは暗黙的に同値を定義しますか?

2.厳密な弱順序付け全順序付けについてはどうですか?

3.STL はソート アルゴリズムで厳密な弱い順序付けを必要としますが、なぜ部分的順序付けまたは全体的順序付けではないのですか? この質問について、非反射性、反対称性、半順序付けの定義である推移性の 3 つの公理を満たすことを証明することによって、有効な比較規則を証明するいくつかの教科書を読みました。ドキュメントでは、演算子 < は常にこの定義を満たすことを参照しています。部分的な順序付けを使用して、または同等に演算子を使用してオブジェクトを比較できないのはなぜですか

0 投票する
3 に答える
667 参照

algorithm - 順序付け情報の 2 つの部分的な (共に過剰決定された) セットのマージ

グリッドにデータを含む Web アプリがあります。ユーザーは列を並べ替えることができ、サーバーは存在する列を変更できます。ユーザーの列の順序を Cookie に保存し、ページの読み込み時に復元したいと考えています。

より正式には、 と と呼ばれる一意の ID (文字列) の 2 つの配列がuser_columnsありserver_columnsます。からのすべての注文情報を可能な限りserver_columns尊重するように再注文したいと思います。どうすればいいですか?「可能な限り」の合理的な正式な定義は何ですか?user_columnsserver_columns

これまでの私の分析:

問題の 1 つの側面は些細なことです。サーバーがいくつかの列を削除する場合は、対応するエントリを から削除しますuser_columns。もはや存在しない列の順序に関する情報は意味がありません。問題は、競合する可能性のある 2 つの順序付け情報セットをマージすることになります。

これは、投票理論の一連の問題に対応します。それぞれが候補間の半順序を含む一連の投票が与えられると、ある意味で投票を反映する候補者の完全な順序が生成されます。

これにより、シュルツ法またはランク付けされたペアuser_columnsなどを、およびに基づいて十分に不正に操作された投票セットに適用することで、実行可能な解決策が得られるのではないかと思いますserver_columns。UX の理由から、新しい列を最後 (右側) に挿入して関係を断ち切ることは、私には良い考えのように思えます。

これは正しい軌道に乗っているように聞こえますか?

また、3 種類の比較を考慮することができることにも注意してくださいuser_columns。前者と後者は簡単に解決できます (それぞれuser_columnsとを参照server_columns)。真ん中にあるものと、後者との相互作用は、注意が必要な部分です。

0 投票する
1 に答える
249 参照

algorithm - PartialOrdering でコレクションを注文するには?

封筒のコレクションを注文する必要があります。各エンベロープは、その高さと幅で記述されます。Envelope1 は、envelope2 に挿入できる場合、envelope2 より小さくなります。エンベロープ 1 をエンベロープ 2 に挿入できない場合、またはその逆の場合は比較できません。

これらのエンベロープを scala で注文するにはどうすればよいですか? 私はインターネット上でそれに関する情報を見つけることができませんでした。

ここに私が持っているいくつかのコードがあります:

0 投票する
2 に答える
312 参照

c++ - 2 つの関数テンプレートが部分的に順序付けられていると見なされるのはいつで、あいまいなのはいつですか?

How to make these std::function parameters unambiguous?という質問を読んだ後、私は完全に混乱しています。、これまでのところ、関数テンプレートの半順序付けとは何かを理解していると思っていましたが、その質問を読んだ後、コンパイラの動作を確認するために 3 つの例を書き留めましたが、受け取った結果は理解しにくいものです。

例 #1

質問:両方の関数が実行可能であることは明らかですが、T&より専門化されたものではありませんTか? 代わりに、コンパイラはあいまいな呼び出しエラーを発生させます。

例 #2

質問:T&例 1 でandTがあいまいな場合、なぜここで none 呼び出しがあいまいなのですか? X<int>から構築可能でX<int&>あり、提供されたX<int&>コンストラクターのX<int>おかげで から構築可能です。コンパイラによって生成されたX<int>::X(X<int> const&)コピー コンストラクターが ,よりも優れた変換シーケンスX<int>::X(X<int&> const&)であるためでしょうか (そうであれば、何が優れているか、引数が値によって渡されることに注意してください)、特殊化の順序はまったく問題ではありませんか?

例 #3

質問:これは、リンクされた質問からラムダ[](int){}std::function<void(int&)>および に一致させる」のと同様のシナリオです。std::function<void(int)>両方の呼び出しで、より特化した関数テンプレートが選択されるのはなぜですか? 変換シーケンスが同じなので、半順序が問題になり始めたからですか?

すべてのテストは GCC 4.9.0 で実行され-std=c++11、追加のフラグはありません。

0 投票する
2 に答える
6819 参照

sorting - Rust が f64 と f32 の Ord トレイトを介して全順序付けを実装しないのはなぜですか?

Rust のすべての整数型はOrd全体の順序付けを重視して実装していますが、浮動小数点型は のみを実装してPartialOrdいます。これは、比較できない浮動小数点値が存在する可能性があることを意味します。浮動小数点数はたまたま完全に順序付けられた実数の近似値と見なすことができるため、これを理解するのは難しいようです。正の無限大と負の無限大を追加しても、実数の集合は完全に順序付けられたままになります。なぜ Rust でこの奇妙な選択が行われるのでしょうか?

この制限は、一般的な並べ替え/検索アルゴリズムが数値の部分的な順序付けのみを想定できることを意味します。IEEE 754 標準は、完全な順序付け述語を提供しているようです。

NaN はジェネリック コードでそれほど大きな問題になるのでしょうか?