問題タブ [equivalence]

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 に答える
393 参照

automata - automata: Equivalence クラスのみを使用して規則性を証明する

私はいくつかの方法でこの問題に取り組もうとしましたが、いくつかの場所を調べても答えがありませんでした。質問は次のとおりです。

[質問]
2 つの正規言語 (有限記述言語 idk と呼ばれる場合があります) と が与えられた場合L1L2新しい言語を次のように定義します。

を使用して表示することになってL is regularいますが、次の制限があります。

  • Equivalence クラスを使用する必要があり、他に方法はありません

  • Rank(L)同等クラスの数に制限を表示するように使用できません。代わりに、それらを表示する必要があります

  • すべての通常の言語が保持する Closure プロパティを使用できます

私は完全な証明を期待しているわけではありませんが (それはありがたいです)、そのようなことを行う方法についての説明です。
前もって感謝します。

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

termination - Agda: サブコリストの同値関係

CoList (Maybe Nat)s のみjustを考慮した sの等価性を定義したいと思います。もちろん、単に からCoList (Maybe A)に移動することはできませんCoList A。それは必ずしも生産的ではないからです。

では、私の質問は、そのような等価関係を (決定可能性に目を向けずに) どのように定義できるかということです。just無限の尾を非同等と見なすことができれば、それは役に立ちますか?

以下の@gallaisは、この関係を単純に定義できるはずだと示唆しています。

しかし、それが推移的であることを証明すると、終了チェッカーから (予想される) 問題が発生します。

nothingそこで、 @Vitusが提案したように、両側があまり曖昧でないケースを作成してみました:

transしかし、問題のあるケース(穴を残したケース) を定義する方法がわかりません。

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

javascript - JavaScript におけるプリミティブとオブジェクト ラッパーの等価性

編集:全員のフィードバックに基づいて、この質問の元のバージョンは、標準に関連するものではなく、設計に関連するものです。より SO フレンドリーに。


オリジナル:

JS プリミティブは、ECMA 標準に従って、そのプリミティブのオブジェクト ラップ バージョンと「同等」と見なされるべきですか?


改訂された質問

現在の JavaScript でプリミティブにラップされたオブジェクトを比較する方法について、普遍的な合意はありますか?


編集:

@Pointy がコメントしたように、ECMA 仕様 (262、S15.1.2.4)にはNumber.isNaN()、次のように動作するメソッドが記述されています。

どうやら、この動作の正当な理由は、IF the argument coerces toisNaNを返すことです。ネイティブの操作方法に基づいて直接強制することはありません。trueNaNnew Number(NaN)isNaN

現時点では、プリミティブではなくネイティブ オブジェクト ラッパーを直接使用することによるパフォーマンス ヒットや型変換などのトリッキーさが、セマンティックなメリットを上回っているようです。

この JSPerf を参照してください。

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

java - == 演算子によるコンパイル エラー

エラーを次の行に切り分けました: string.getClass() == jojo.getClass() この行は 2 つの Class オブジェクトを作成し、それらが (2 つの参照のように) 同じオブジェクトを指しているかどうかをチェックするべきではありませんか? false の値を返すのではなく、コードは実行されません。

このコメントは隠されているようなもので、初心者(私のような)にとって最も意味があるので、言及する価値があると思います

-JLSによると、「キャスト変換によっていずれかのオペランドの型をもう一方の型に変換できない場合はコンパイル時エラーです」したがって、型AとBの2つの参照を比較できるのは、 A を B にキャストできるか、B を A にキャストできる場合 – パトリシア シャナハン

0 投票する
0 に答える
170 参照

coq - モーフィズム - Coq の非変換項の Setoid

Coqには次の機能があります。ここで、以下のようにインスタンスを定義したいと思います。私の場合、型 [nat] の等価性 [==] は定義されていますが、[StringMap.t String.t] では定義されていません。Instace SC_Proper を解決してください。ありがとう。

0 投票する
4 に答える
318 参照

c++ - C++Stlセットの動作

以下のコードを実行しようとしました。私が見つけたのは、出力に違いがあるということです。コンパレータ機能で使用される順序付けメカニズムに問題があることを理解しています。私が基本的に探しているのは次のとおりです。1)Setはどのようにデータを内部に保存しますか。2)この問題を解決するにはどうすればよいですか、またはデータを別のセットにコピーするための最良の方法です。3)注文がこの問題をどの程度正確に引き起こしているか。

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

c++ - ベクトルの複数引数コンストラクターが「明示的」とマークされていない構築パラメーターを取るのはなぜですか?

標準 C++ ライブラリで次のベクター コンストラクターを確認しました。

2 番目のコンストラクターがマークされていない理由はありexplicitますか? これはコンパイルされ、気分が悪くなります

を省略する"foo"とコンパイルされず、文字列のベクトルを必要とする関数に int と文字列のペア (複合) 値を渡すと、それが期待されます。

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

java - Javaで等価クラスを実装するには?

Javaで等価クラスを実装する簡単な方法は何ですか? その目的のためのライブラリはありますか?

厄介な部分は、効率的でナイーブでない "equal" 演算子の書き方です。

しましょうS = {x,y,z,w,h}x->1, y->1, z->1, w->2, h->2S の等価クラスのマッピングを使用する場合、マッピングをx->10, y->10, z->10, w->20, h->20同じ等価クラスと見なす必要があります。

セット S の基数が大きくなると、素朴な「等しい」演算子はすぐに時間がかかるようになります。

簡単な方法は何でしょうか?何か案が?

[編集]明確にするために、特定の問題は次のように形式化できます。

S を空でない集合とします。V から整数への部分写像の集合を M で表す。以下で定義される二項関係 \sim が M 上の同値関係を導出することを示すのは比較的簡単です。

m1 と m2 の場合、M の 2 つの部分写像 m1 \sim m2

  1. V の任意の a に対して、m2(a) が定義されている場合にのみ、m1(a) が定義されます。
  2. V の任意の a,b について、m2(a) と m2(b) が両方とも同じ整数値に定義されている場合に限り、m1(a) と m1(b) は両方とも同じ整数値 'z1' であると定義されます。 'z2' ('z1' と異なる場合とない場合があります)

    例。

    a->9,b->9,w->1 \sim a->10,b->10,w->0

    しかし、言うのは正しくありません

    a->5 \sim b->9

ありがとう。

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

php - PHPで再現できるjQueryによる独自ハッシュ

PHP関数と同様のことができるjQueryで一意のハッシュを作成する必要があるスクリプトを使用していますuniqid()

助けはありますか?

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

python - Cの2つの「単純な」ifステートメントが同等かどうかを確認します

同じ条件をおそらく異なる方法で実装しようとする2つの異なるソースからの「ifステートメント」があります。「ifステートメント」はCです。可能であれば、条件のペアが同等かどうかを判断できるPythonスクリプトが必要です。基本的な例:

source1:((op1 != v1) || ((op2 != v2) || (op3 != v3)))

source2:((op2 != v2) || (op1 != v1) || (op3 != v3))

もちろん、すべての演算子、関数呼び出し、そしてもちろん括弧が許可されます。

どんなアイデアでも大歓迎です。

編集1:関数呼び出しには副作用はありません。