如何快速将元素组合映射到另一个向量

How to quickly map a combination of elements to another vector

假设我有两组元素,X 和 Y。两组都包含数万(或更多)独特的元素。 X 中元素的任意组合,如(X1、X4、X6、X100、...),可以映射到 Y 中的零个、一个或多个元素。

我应该如何将数据存储在 SQL 数据库中,或者通过算法确定 Y 是否包含与给定的一组 X 元素相对应的元素,以及哪些元素?

如有任何想法,我们将不胜感激。

您面临的主要问题是您映射的其中一个集合是幂集 (2X),它有 2| X| 个元素。如果 2X 被密集使用(例如,如果 Y 中的每个元素对应于 X 的任意大且不规则数量的子集),那么你将有 |Y|*2|X| 映射中的边,这在计算上无法以任何方式表示。

可解决案例的两个示例:

  1. 如果 Y 中的每个 y 仅对应于 X 的一个子集,则可以用 Y 的单个元素和 X 的单个元素在 table 中表示关系,同时在 X 和 Y 上建立索引。最大table 的大小将为 O(|Y|*|X|)。查询将是 table 自身的一系列连接(匹配 ys),其中 x 是子集中的每个元素。
  2. 如果对于 X 中的每个 x 和 Y 中的 y,y 要么映射到任何包含 x 的子集,要么映射到不包含 x 的子集,那么这可以用相同的 table 表示,但查询将是容易多了。