Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果键开始支持“0”,我们如何压缩表中的条目数*&引用;基于最大匹配的检索_Java_Algorithm_Optimization_Data Structures_Compression - Fatal编程技术网

Java 如果键开始支持“0”,我们如何压缩表中的条目数*&引用;基于最大匹配的检索

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

假设您有一个包含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   | 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