問題タブ [cartesian-product]
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.
java - Javaでデカルト積を見つける
要素集合のデカルト積を求めたい。これが例です
例 1:
デカルト積は次のとおりです。
例 2:
デカルト積は次のとおりです。
したがって、コンパイル時に定義された特定の量のグループのデカルト積を最初に見つけることができる Java で実行するアルゴリズムを考えています。
ssis - SSISのデカルト積
SQL Serverデータベースに2つのテーブル(Table1とTable2 )があり、2つのテーブルのすべての列ともちろんそれらのデータを含む3番目のテーブル( Table3 )を作成する必要があります。Table1の各行は、 Table2の各行に関連付けられています。
この操作はデカルト積ですが、SSISでは使用できないようです。誰かがそれを行う方法を知っていますか?
インターネットでデカルト積を使用することはパフォーマンスの観点からは良い習慣ではないことを読みましたが、Table2には1行しかないため、 Table3にはTable1と同じ数の行があります。
sql - Postgresql: 2 つ以上の集合のデカルト積を挿入する
定義として: 2 つのセットのデカルト積は、これらのセットのすべての可能なペアのセットであるため、{A,B} x {a,b} = {(A,a),(A,b),(B,a ),(B,b)}.
今、私はそのようなデカルト積をデータベーステーブルに挿入したいと思っています(各ペアを行として)。各ペアのデフォルト値をテーブルに入力することを目的としているため、この時点ではデータ、つまり 2 つのセットはデータベースに存在しません。
postgresqlでこれを達成する方法はありますか?
編集 :
Grzegorz Szpetkowski の回答の助けを借りて、私が達成したいことを行うクエリを作成することができましたが、実際には最も美しいものではありません。セット {1,2,3} と {'A','B','C'} のデカルト積を挿入するとします。
これを行うより良い方法はありますか?
EDIT2: 受け入れられた答えは問題ありませんが、より複雑になった場合に適切な別のバージョンを見つけました:
python - 効率的なアイテム ビニング アルゴリズム (itertools/numpy)
これは一般的な組み合わせ論の問題だと思いますが、名前や資料が見つからないようです。私はこれを Python と numpy で行っていますが、これに対する高速なマトリックス メソッドがあれば、おそらく翻訳できます。
基本的に、n 個のアイテムが与えられた場合、それらをm 個のビンに入れるにはすべての方法を生成する必要があります。例として、4 つのアイテムを 3 つのビンにビニングすると、次のようになり[(4, 0, 0), (3, 1, 0), (3, 0, 1), (2, 2, 0), (2, 1, 1), ...]
ます。合計金額が決まっている商品です。
これを itertools で実装するのは簡単です。
残念ながら、その後の計算をループで行うのは効率が悪いと思います。これを 2D numpy 配列として使用すると、後で高速になりますが、これを使用して配列を作成する効率的な方法がわかりません。ifilter の結果を反復処理して可能性のリストを作成し、これを使用して配列を作成することもできますが、それは非常に無駄に思えます。
これを行う最善の方法は、すべてを「派手な方法」で構築することだと思いますが、これを行う方法がわかりません。stackoverflow には迅速な製品の実装があります。numpy を使用して、2 つの配列のすべての組み合わせの配列を構築します。これを変更して、正しい合計の製品を出力することしかできないと思います。m-1 個のビン境界があるため、配列のサイズは ((m-1) + n) n を選択する必要があります。
何か案は?ベンチマークは大歓迎ですが、必須ではありません。
linq - プルーニングを使用したデカルト積の LINQ 実装
誰かが、少なくとも私にとって非常にトリッキーなアルゴリズムを手伝ってくれることを願っています.
問題
結合する必要があるリスト ( )のリスト( 1 <= size <= 5
、ただしサイズは実行時まで不明) があります。1 <= size <= 2
これが私が見ているものの例です:-
だから、私がする必要があることには2つの段階があります:-
(1)。すべての組み合わせが各リストから正確に 1 つの項目を持つように、内部リストを組み合わせる必要があります。つまり、ここでの結果セットで可能な組み合わせは次のようになります。
- 1,2,2,4,2
- 1,2,2,4,3
- 1,2,3,4,2
- 1,2,3,4,3
- 1,3,2,4,2
- 1,3,2,4,3
- 1,3,3,4,2
- 1,3,3,4,3
デカルト積がこれを処理するので、ステージ 1 が完了します.....今、ここに私が理解できないひねりがあります-少なくとも私はそれを行う LINQ の方法を理解できません (私はまだLINQ初心者)。
(2)。このデカルト積から重複する結果を除外する必要があります。この場合の重複は、別の行と同じ数の個別のリスト要素を持つ結果セット内の任意の行を構成します。つまり、
1,2,2,4,3 は 1,3,2,4,2 と「同じ」
最初のリスト内の個別の各項目は、両方のリストで同じ回数出現するためです (1 は各リストで 1 回、2 は各リストで 2 回、....
したがって、最終的な結果セットは次のようになります...
- 1,2,2,4,2
- 1,2,2,4,3
- --
- 1,2,3,4,3
- --
- --
- --
- 1,3,3,4,3
もう 1 つの例は、ListOfLists が {{2,3}、{2,3}、{2,3}、{2,3}、{2,3} である最悪のシナリオ (組み合わせの観点から) です。 }、つまり、最大サイズの内部リストを含むリスト - この場合、デカルト積の結果セットには明らかに 32 の結果がありますが、取得しようとしているプルーニングされた結果セットは次のようになります。
- 2,2,2,2,2
- 2,2,2,2,3 <-- 4 つの 2 と 1 つの 3 (任意の順序) を含む他のすべての結果は抑制されます
- 2,2,2,3,3 <-- 3 つの 2 と 2 つの 3 を含む他のすべての結果は抑制されます。
- 2,2,3,3,3
- 2,3,3,3,3
- 3,3,3,3,3
そこにいる数学に関心のある人々へ-あなたが助けてくれることを願っています. 私は実際にパート 2 の有効なソリューションを手に入れましたが、これは完全なハックであり、計算量が多いため、プルーニングの問題に対するよりエレガントで効率的な LINQ ソリューションを見つけるためのガイダンスを探しています。
読んでくれてありがとう。
ピップ
これまでに使用したいくつかのリソース (デカルト積を取得するため)
更新 - 解決策
これをすぐに投稿しないことをお詫びします...以下を参照してください
mysql - 複数のテーブルからデータを取得するには、複数のテーブルの基準を使用する必要があります
特定のSQLクエリに関して少し問題があります。2つのテーブルのデータを結合する必要がありますが、3番目のテーブルを使用してデータを制限します(必ずしもデータを取得する必要はありません)。表は次のとおりです。
特定のグループのすべてのメンバーのすべての料金を検索する必要がありますが、MEMBERSテーブルから名前と名前も取得したいと思います。私がこれまでに思いついたクエリは次のとおりです。
私も試しました:
…しかし、どちらも必要なデータを返しません。私はこれを考えすぎていると確信していますが、私は一生の間正しい値を取得することはできません。デカルト積のように見えるものを取得し続けます-それにもかかわらず、それは明らかに多すぎる行と悪いデータを返しています。
sql - 複数結合乗数
私は3つのテーブルを持っています:保険証券、請求および売掛金
ポリシーごとにポリシー期間ごとに1行を返すクエリが必要です。クエリには、ポリシーの開始日と終了日、各期間の合計請求額、各期間の合計支払額とO / S、および各期間の合計金額を含める必要があります。
私は何とか受信可能なもの以外のすべてを行うことができました。これがクエリに導入されると、すべてにそのテーブルの行数が掛けられます。
これが私のデータです
ポリシー
請求
売掛金
これが私の作業クエリです
結果:
クレームデータの乗数を取得していたため、クエリにTransTypeを追加する必要がありましたが、このクエリは機能します。
3番目のテーブルを追加すると、乗数が得られます。クレームからのすべては、その期間の売掛金の行数で乗算され、AmountRecvdはその期間のクレームの行数で乗算されます。
クエリは次のとおりです。
結果
売掛金とクレームを結合することが可能であることがわかりません。PolNoで参加してみましたが、同じ結果になりました。
誰かが解決策を見ることができますか?
乾杯
更新このクエリはClaimsCountを複数回は実行しませんが、AmountRevdは引き続きClaimsを乗算します(簡単にするためにTotPaidは削除されています)。
haskell - 無限リストのHaskellデカルト積
次のような基底ペアからベクトル空間を生成したいと思います。
ただし、出力を調べると、取得しているように見えます[0, e2, 2*e2,...]
(つまりx
、0を超えることはありません)。このリスト内包表記を行うためのコードをどのように書くかを考えると、どのような意味がありますか。
原点から拡張する「シェル」を取得するためのコードをいくつか作成しました(最初にノルム0のint、次にノルム1、次にノルム2 ...)が、これは一種の煩わしく、Z^2に固有です-私はZ ^3やZ[i]などに書き換えます。これを行うためのよりクリーンな方法はありますか?
oracle11g - トリガー @ 実行計画..デカルト積
アイデアは、ユーザーがクエリを実行し、コストが特定のしきい値を超えている悪いデカルトを持っている場合です。次に、オラクルはそれを私とユーザーに電子メールで送信します。私はいくつかのことを試しましたが、実行時に機能しません。toad と sql の開発者が実行計画を確認できる場合。それから私はそこに情報があると信じています。または、別のロジックを採用する必要があるかもしれません。
nhibernate - NHibernateFetchModeデカルト積
私のオブジェクトグラフでは、VendorServiceRateChangeには遅延ロードされたプロパティIList<VendorService>
VendorServiceListがあり、VendorServiceには遅延ロードされたプロパティがありますIList<ClientService>
。
次のコードを実行すると、VendorServiceListとClientServiceListの間にデカルト積が得られます。
私のVendorServiceListとしてデカルト積にならないCriteriaまたはDetachedCriteriaを使用してこのクエリを構造化する方法はありますか?「VendorServiceList.ClientServices」のフェッチをコメントアウトして、最初のクエリが戻った後にInitialize呼び出しでループする必要はありません。
前もって感謝します。