問題タブ [bijection]

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

matlab - Matlabで2つのセットのすべての全単射を生成するにはどうすればよいですか?

私がやりたいのは、Matlabで最も簡単な方法で次のことを行うことです

2つの配列{1,2,3}{4,5,6}があるとしましょう。

アルゴリズムは私にすべての全単射を与えるはずです:

1-4 2-5 3-6 / 1-4 2-6 3-5 / 1-5 2-4 3-6 / 1-5 2-6 3-4 / 1-6 2-5 3-4 / 1-6 2-43-5

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

haskell - 有限全単射の効率的な関数データ構造

空間効率と時間効率に優れた、2 つの型の間の有限全単射を表す関数データ構造を探しています。

たとえば、サイズ n の全単射 f を考えると、次のようになれば幸いです。

  • 新しい要素のペアで f を拡張すると、複雑さが O(ln n) になります。
  • f(x) または f^-1(x) のクエリの複雑さ O(ln n)
  • f の内部表現は、2 つの有限マップ (f とその逆を表す) を持つよりも空間効率が良い

この論文のように順列の効率的な表現を認識していますが、それは私の問題を解決していないようです。

0 投票する
5 に答える
2680 参照

python - 文字と数字の間の可能な全単射を見つける

len(S)= len(L)のように、リストLに文字列Sと一連の数字があるとします。

文字列の文字とシーケンス内の数字との間に全単射があり、各文字が1桁だけに一致するかどうかを確認する最もクリーンな方法は何でしょうか。

たとえば、「aabbcc」は115522と一致する必要がありますが、123456または111111とは一致しません。

2つのdictとループを含む複雑なセットアップがありますが、Pythonライブラリの関数を使用して、これを行うためのクリーンな方法があるかどうか疑問に思っています。

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

algorithm - 変革のコストを最小限に抑える

次の問題が発生しましたが、解決策を見つけることができません。

声明:

N 個のワイングラスがあります。各ワイングラスの容量は無限であると仮定されます。各グラスのワインの量は、0 以外の正の整数で、単位は ml です。タイプ 1 の移動は、ガラス i からガラス j への 1 ml の移動として定義されます。タイプ 2 の移動は、グラス i から 1 ml を捨てることと定義されます。タイプ 1 のすべての Move のコストは 1 です。タイプ 2 のすべての手のコストは k です。各グラスのワインの初期量が与えられた場合、各グラスのワインの量が素数 (またはゼロ) になるように、2 種類の動きをいくつか行う必要があります。このような変換の最小コストを出力します。

この問題にどう取り組むか?可能な解決策のアイデアはありますか?

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

algorithm - 疑似ランダムに見える1対1のint32->int32関数

私はint32->int32関数を探しています

  • 全単射(1対1対応)
  • 少なくとも一方向で計算するのは安い
  • 増加するシーケンス0、1、2、3、...を、適切な疑似乱数シーケンスのように見えるシーケンスに変換します(引数が小さい数だけ変化すると、約半分のビットが反転します。明らかなパターンはありません)
0 投票する
1 に答える
2062 参照

c++ - 整数の全単射写像

英語は私の母国語ではありません。私の間違いで申し訳ありません。ご回答ありがとうございます。

私は C++ を学んでおり、同じ数の整数を持つ 2 つのセット (順序は問わない) がどの程度全単射であるかを確認しようとしています。

例 :

ArrayA と ArrayB は全単射です。

私の実装は素朴です。

x == 0 の場合、2 つのセットは全単射です。簡単。

私の問題は次のとおりです。ArrayA と ArrayB の間の関係のプロパティ全体だけでなく、セット間の全単射の数を数えたいと思います。

例 :

集合は全体として全単射ですか? いいえ。しかし、2 つの全単射 (0 と 0、1 と 1) があります。

私のコードでは、出力は 1 バイジェクションになります。実際、配列をソートすると、次のようになります。

配列 A = 0、0、0、1; 配列 B = 0、1、3、3。

並べて比較すると、0 と 0 の間の全単射のみが示されます。

次に、私の質問は次 のとおりです。整数の順序に関係なく、同じサイズの 2 つのセット間で要素をマップし、全単射の数をカウントする方法を知っていますか?

解決しました!

Ivaylo Strandjev の答えは次のとおりです。

  1. セットを並べ替え、
  2. std::set_intersection関数を使用し、
  3. 利益。