問題タブ [combinatorics]

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 投票する
8 に答える
749 参照

algorithm - 複雑な組み合わせアルゴリズム

したがって、ウェンディーズはサンドイッチに 256 の組み合わせがあると宣伝しています。

一般化されたアプローチにより、各選択のさまざまな状態を掛け合わせることができ、より複雑な組み合わせが可能になります。この場合、Wendy のアイテムは含めるか除外することしかできません。ただし、一部のサンドイッチには、2 種類のマスタードのオプションがある場合があります (コストを節約するため、両方ではありません)。

これらはかなり簡単です。オプションの数を掛け合わせると、Wendy's の場合は次のようになります。

2*2*2*2*2*2*2*2 = 256

上記のようにマスタードの選択を多様化すると、次のようになります。

2*2*3*2*2*2*2*2 = 384

さらに先に進むのは難しいようです。

ごまを別のアイテムにする場合は、パンのアイテムが必要です。饅頭を入れるとごまのみ、饅頭なしでも食べられますが、饅頭なしではごまは食べられません。これは、3 つの状態 (なし、種ありのパン、種なしのバン) を持つ 1 つのパン アイテムに単純化できますが、それができない状況もあります。

たとえば、Dell のコンピュータ コンフィギュレータでは、特定の組み合わせが許可されていません (スロットがすべて埋まっている、アイテムを同じシステムに入れると互換性がないなど)。

  • アイテムが競合する可能性がある、非常に複雑なシステムを扱う場合の適切な組み合わせアプローチは何ですか?
  • 製品/組み合わせ/アイテムごとにコードを作成して競合をキャッチすることなく、そのような情報を保存するための優れた一般化されたアプローチは何ですか?
  • システムが複雑な競合する組み合わせに対処する必要がある場合、「システム/サンドイッチを構成する方法は X 通りあります」と言う簡単な方法はありますか?
0 投票する
4 に答える
1661 参照

java - 個々の数字の合計で並べられた n 桁の数字の生成 (再帰なし)

次の順序で、n 桁の数値のすべての可能な値を生成しようとしています。ここで、シーケンスは個々の数字の合計によって決定されます。

たとえば、次の場合n = 3:

合計グループ内の順序は重要ではありません。

どんな助け、アイデアもいただければ幸いです

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

c++ - Number から作成された可能な文字列を出力する

10 桁の電話番号が与えられた場合、そこから作成される可能性のあるすべての文字列を出力する必要があります。数字のマッピングは、電話のキーパッドとまったく同じです。

つまり、1,0 の場合 -> 2 の場合は文字なし -> A、B、C

たとえば、1230 ADG BDG CDG AEG....

この問題に対する c/c++ での最善の解決策は何ですか?

0 投票する
6 に答える
7476 参照

hash - ファイルの内容から計算された MD5 ハッシュの最初の 4 バイトが衝突する確率は?

これは、必要なハッシュアルゴリズムの理論を伴う組み合わせ論の問題です。

入力が 30 kB から 5 MB のサイズのバイトの任意のランダムなシーケンスであるとしましょう (これにより、かなりの数の入力値の組み合わせが作成されると思います :))

バイト シーケンスから計算された MD5 ハッシュの最初の 4 バイト (または最初の n バイト) が異なるファイルで同じになる確率は?

これが MD5 ハッシュ専用に計算できない場合、一様に分散された m バイト ハッシュを生成するハッシュ関数が、指定された入力範囲の最初の n バイトで衝突を伴うハッシュを計算する確率はどれくらいですか?

0 投票する
6 に答える
6948 参照

math - N番目の組み合わせ

nCrのすべての組み合わせの順序集合のN番目の組み合わせを取得する直接的な方法はありますか?

例:[6、4、2、1]の4つの要素があります。一度に3つを取ることによって可能なすべての組み合わせは次のようになります:[[6、4、2]、[6、4、1]、[6、2、1]、[4、2、1]]。

以前のすべての回答を列挙せずに、順序付けられた結果セットの3番目の回答[6、2、1]などを取得するアルゴリズムはありますか?

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

set - 組み合わせ問題の設定

宿題としてこれを手に入れましたが、どこから始めればいいのか本当にわかりません!

set が与えられると、{1,2,3,4}そのセットから長さ 2 の 6 つの組み合わせを形成できます。

組み合わせの 1 つを選択した場合 ({1,2}たとえば)、他の組み合わせのどれがそれとばらばらではないかをどのように判断できますか? この場合は次の 4 つです。{1,3},{1,4},{2,3}{2,4}

これを数学的にどのように進めるかについてはよくわかりませんが、正しい方向へのポインタは大歓迎です。

0 投票する
7 に答える
4407 参照

algorithm - リスト内の一致するペアを見つけるアルゴリズム

以下に、私が望む正確な形式で問題を表現します。

与えられた :同じ長さ(は 2 の倍数) の 2つNの浮動小数点リスト。すべての場合、 が存在することが知られています。(ゼロベースのインデックスを使用しています)Dkki=0,...,k-1j != iD[j]*D[i] == N[i]*N[j]

戻り値: (長さ) のようなk/2ペアのリスト。返されるペアは一意ではない可能性があります (ペアの有効なリストは問題ありません)。(i,j)D[j]*D[i] == N[i]*N[j]

このアルゴリズムのアプリケーションは、一般化回文固有値問題の固有値の逆ペアを見つけることです。等式条件は と同等ですがN[i]/D[i] == D[j]/N[j]、分母がゼロの場合にも機能します (これは確実な可能性です)。固有値問題の縮退により、ペアが一意ではなくなります。

より一般的には、アルゴリズムは次と同等です。

指定X:長さのリストk(kは 2 の倍数)。すべての に対して、 がtrue を返すようなものi=0,...,k-1が存在することが知られています。ここで、 はすべての に対して少なくとも 1 つに対して true を返すことが保証されているブール一致関数です。j != iIsMatch(X[i],X[j])IsMatchj != ii

戻り値 : リスト内のすべてのペアの (長さk/2)ペアのリスト。返されるペアは一意ではない可能性があります (ペアの有効なリストは問題ありません)。(i,j)IsMatch(i,j) == true

明らかに、私の最初の問題は を使って 2 番目の問題で定式化できますIsMatch(u,v) := { (u - 1/v) == 0 }。現在、浮動小数点精度の制限により、正確に等しいことはありません。そのため、一致エラーを最小限に抑えるソリューションが必要です。つまり、IsMatch(u,v)が値u - 1/vを返し、IsMatch がエラーの最小セットを返すリストをアルゴリズムが返すようにしたいとします。これは組み合わせ最適化問題です。最初に、考えられるすべてのインデックスiとのペア間の一致エラーを単純に計算できると考えてjいましたが、次に最小エラーのセットを選択する必要があり、どうすればよいかわかりません。

明確化

IsMatch関数は再帰的 ( をIsMatch(a,b)意味する) ですが、推移的ではIsMatch(b,a)ありません。しかし、それは 3 推移的です: をIsMatch(a,b) && IsMatch(b,c) && IsMatch(c,d)意味しIsMatch(a,d)ます。

補遺

この問題は明らかに、グラフ理論における最小重み完全一致問題と同じです。ただし、私の場合、「適切な」完全な一致が必要であることを知っているため、エッジの重みの分布は完全にランダムではありません。この情報は何らかの形で利用されるべきだと思います。ここでの問題は、検索の早い段階で私の以前の知識を使用して解決策に到達する、最小重量完全一致問題の適切な実装があるかどうかです。また、そのようなアルゴリズムの単純な実装への指針にもオープンです。

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

math - M個の異なるボックスとN個の同一のボールがある場合

これらのボールを箱に入れる必要があります。

州にはいくつの州がありますか?

これはコンピュータシミュレーションパズルの一部です。私は数学の知識をほとんど忘れてしまいました。

0 投票する
10 に答える
24167 参照

c++ - 組み合わせの量を計算する

乾杯、

次の式で組み合わせの量を取得できることはわかっています(繰り返しなしで、順序は重要ではありません):

ただし、これを C++ で実装する方法がわかりません。

unsigned __int64(または)に対しても数が大きくなりすぎunsigned long longます。サードパーティの「bigint」ライブラリなしで式を実装するための回避策はありますか?