Java 如果键开始支持“0”,我们如何压缩表中的条目数*&引用;基于最大匹配的检索
假设您有一个包含3个键(a、B、C)和1个值(D)的表,您希望获取它。我们将始终确保不存在具有相同键集和不同值的重复行。这种东西Java 如果键开始支持“0”,我们如何压缩表中的条目数*&引用;基于最大匹配的检索,java,algorithm,optimization,data-structures,compression,Java,Algorithm,Optimization,Data Structures,Compression,假设您有一个包含3个键(a、B、C)和1个值(D)的表,您希望获取它。我们将始终确保不存在具有相同键集和不同值的重复行。这种东西 A | B | C | D ======================== a1 | b1 | c1 | d1 a1 | b1 | c2 | d1 a3 | b2 | c3 | d1 a2 | b3 | c2 | d2 a2 | b1 | c2 | d2 a2 | b2 | c3
A | B | C | D
========================
a1 | b1 | c1 | d1
a1 | b1 | c2 | d1
a3 | b2 | c3 | d1
a2 | b3 | c2 | d2
a2 | b1 | c2 | d2
a2 | b2 | c3 | d3
(我们永远不会在表中同时显示“a1、b1、c1、d1”和“a1、b1、c1、d2”,因为这是相互冲突的)
目前有6个条目。现在假设我们开始支持在键中使用“star”(或“ALL”)。当我们尝试获取一组查询键的D值时,会选择最大匹配行(最大匹配是指a、B、C中的最大键数完全匹配的行,其余的与“星”匹配的行)
示例结果表(这只是一个选项,还有许多其他解决方案)
它只有3个条目,是初始表的一半。只有当我们开始增加表中的数据量和键数等时,压缩才会增加
有没有什么算法可以用来执行这种优化?即使是蛮力/次优解决方案也值得赞赏,因为我目前不知道如何做到这一点
谢谢
A | B | C | D
========================
* | * | * | d1
a2 | * | * | d2
a2 | b2 | c3 | d3