问题标签 [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.

0 投票
3 回答
3980 浏览

java - 在 Java 中查找笛卡尔积

我想找到一组元素的笛卡尔积。这是一个例子

示例 1:

笛卡尔积是:

示例 2:

笛卡尔积是:

因此,我正在考虑一种在 Java 中执行的算法,它可以在开始时找到在编译时定义的特定数量的组的笛卡尔积。

0 投票
1 回答
232 浏览

ssis - SSIS中的笛卡尔积

我在 SQL Server 数据库中有两个表(Table1Table2),我需要创建第三个表(Table3),其中包含两个表中的所有列,当然还有它们的数据。Table1的每一行都与Table2的每一行相关联。

此操作是笛卡尔积,但显然它在 SSIS 中不可用。有人知道该怎么做吗?

我在网上读到,使用笛卡尔积在性能方面不是一个好习惯,但Table2只有一行,这意味着Table3的行数将与Table1一样多

0 投票
1 回答
8179 浏览

sql - Postgresql:插入两组或更多组的笛卡尔积

如定义:两个集合的笛卡尔积是这些集合的所有可能对的集合,所以 {A,B} x {a,b} = {(A,a),(A,b),(B,a ),(B,b)}。

现在我想将这样的笛卡尔积插入数据库表(每对作为一行)。它旨在用每对的默认值填充表,因此此时数据库中不存在数据,即两个集合。

知道如何使用 postgresql 实现这一目标吗?

编辑 :

在 Grzegorz Szpetkowski 的回答的帮助下,我能够生成一个可以实现我想要实现的查询,但它确实不是最漂亮的。假设我想插入集合 {1,2,3} 和 {'A','B','C'} 的笛卡尔积。

有没有更好的方法来做到这一点?

EDIT2: 接受的答案很好,但我找到了另一个版本,如果它变得更复杂,它可能是合适的:

0 投票
2 回答
2521 浏览

python - 高效的项目分箱算法(itertools/numpy)

我认为这是一个常见的组合问题,但我似乎无法找到它的名称或任何关于它的材料。我在 Python 和 numpy 中这样做,但如果有一个快速的矩阵方法,我可能可以翻译。

基本上,给定n 个项目,我需要生成将它们放入m个bin 的所有方法。例如,将 4 个项目分箱到 3 个箱中会得到类似[(4, 0, 0), (3, 1, 0), (3, 0, 1), (2, 2, 0), (2, 1, 1), ...]. 这是一个有固定总数的产品。

使用 itertools 实现这一点很简单。

不幸的是,我认为在循环中进行后续计算效率低下。稍后将其用作 2D numpy 数组会更快,但我无法找到一种有效的方法来构建数组。我可以遍历 ifilter 结果,构建一个可能性列表,并使用它来构建数组,但这似乎是一种巨大的浪费。

我猜最好的方法是“以 numpy 的方式”构建所有东西,但我不确定如何做到这一点。stackoverflow 上有一个快速的产品实现:使用 numpy 构建两个数组的所有组合的数组。我猜你只能修改它以输出具有正确总和的产品。数组的大小应该是 ((m-1) + n) 选择 n,因为有 m-1 个 bin 边界。

有任何想法吗?基准非常受欢迎,但不是必需的。

0 投票
3 回答
634 浏览

linq - 带有修剪的笛卡尔积的 LINQ 实现

我希望有人能够帮助我,至少对我来说,这是一个相当棘手的算法。

问题

我有一个 List ( 1 <= size <= 5,但直到运行时大小未知) List ( 1 <= size <= 2) 需要组合。这是我正在查看的示例:-

所以,我需要做的有两个阶段:-

(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 在每个列表中出现一次,2 在每个列表中出现两次,...

因此,最终结果集应如下所示...

  • 1,2,2,4,2
  • 1,2,2,4,3
  • --
  • 1,2,3,4,3
  • --
  • --
  • --
  • 1,3,3,4,3

另一个例子是最坏的情况(从组合的角度来看)ListOfLists 是 {{2,3}, {2,3}, {2,3}, {2,3}, {2,3} },即包含最大大小的内部列表的列表 - 在这种情况下,笛卡尔积结果集中显然会有 32 个结果,但我试图得到的修剪结果集只是: -

  • 2,2,2,2,2
  • 2,2,2,2,3 <-- 所有其他带有四个 2 和一个 3(以任何顺序)的结果都被抑制
  • 2,2,2,3,3 <-- 三个 2 和两个 3 的所有其他结果都被抑制,等等
  • 2,2,3,3,3
  • 2,3,3,3,3
  • 3,3,3,3,3

对于任何有数学头脑的人-我希望你能提供帮助。实际上,我已经为第 2 部分找到了一个可行的解决方案,但它完全是 hack,并且计算量很大,我正在寻找指导以找到更优雅、更有效的 LINQ 解决方案来解决修剪问题。

谢谢阅读。

点子

到目前为止使用的一些资源(获取笛卡尔积)

更新 - 解决方案

抱歉没有早点发布……见下文

0 投票
1 回答
140 浏览

mysql - 需要使用多个表中的条件从多个表中获取数据

我对特定的 SQL 查询有点打嗝。我需要连接来自两个表的数据,同时还通过第三个表来限制数据(但不一定要抓取它)。表格如下:

我需要查找特定组的所有成员的所有费用,但我还想从 MEMBERS 表中获取名字和姓氏。到目前为止,我提出的查询是:

我也试过:

…但两者都没有返回我需要的数据。我确定我想太多了,但我无法终生获得正确的价值观。我不断得到似乎是笛卡尔积的东西——无论如何,它显然返回了太多的行和错误的数据。

0 投票
1 回答
301 浏览

sql - 多重连接乘数

我有 3 张表:保险单、索赔和应收账款

我需要一个查询,该查询将在每个策略的每个策略周期返回一行。查询需要包括保单开始和结束日期、每个时期的总索赔、每个时期的总支付和 O/S 以及每个时期的总收到金额。

除了应收账款,我什么都做了。当这被引入查询时,所有内容都乘以该表中的行数。

这是我的数据

政策

索赔

应收账款

这是我的工作查询

结果:

当我获得索赔数据的乘数时,我必须将 TransType 添加到查询中,但此查询有效。

现在,当我添加第三个表时,我得到了一个乘数。Claims 中的所有内容都乘以该期间应收账款中的行数,而 AmountRecvd 乘以该期间 Claims 中的行数。

这是查询:

结果

我看不到可以将应收账款与索赔结合起来。我尝试在 PolNo 上加入他们,但结果相同。

谁能看到解决方案?

干杯

更新了此查询不会乘以 ClaimsCount,但 AmountRevd 仍乘以 Claims(为简单起见,删除了 TotPaid):

0 投票
4 回答
2061 浏览

haskell - 无限列表的 Haskell 笛卡尔积

我想从一个基对生成一个向量空间,它看起来像:

但是,当我检查输出时,似乎我得到了[0, e2, 2*e2,...](即x永远不会超过 0)。当我考虑如何编写代码来执行此列表理解时,哪种方式是有意义的。

我写了一些代码来从原点扩展“shell”(首先是范数为 0 的整数,然后是范数 1,然后是范数 2...),但这有点烦人,而且是 Z^2 特有的——我会有为 Z^3 或 Z[i] 等重写它。有没有更清洁的方法呢?

0 投票
1 回答
381 浏览

oracle11g - 触发@执行计划..笛卡尔积

这个想法是当用户运行查询并且有一个坏的笛卡尔坐标,其成本高于某个阈值。然后 oracle 将其通过电子邮件发送给我和用户。我尝试了几件事,但它们在运行时不起作用。如果toad和sql developer可以看到执行计划。然后我相信那里有我刚刚找到的信息。或者我可能不得不采用另一种逻辑。

0 投票
2 回答
1258 浏览

nhibernate - NHibernate FetchMode 笛卡尔积

在我的对象图中, VendorServiceRateChange 有一个延迟加载的属性IList<VendorService>VendorServiceList ,而 VendorService 有一个延迟加载的属性IList<ClientService>

当我运行以下代码时,我在 VendorServiceList 和 ClientServiceList 之间得到一个笛卡尔积。

有没有办法使用 Criteria 或 DetachedCriteria 来构造这个查询,这不会导致笛卡尔积作为我的 VendorServiceList?我不想诉诸于注释掉“VendorServiceList.ClientServices”上的获取并在初始查询返回后使用 Initialize 调用循环。

提前致谢。