为什么 sum 是一个简洁的约束?

数据挖掘 数据挖掘
2022-02-28 09:03:01

我是数据挖掘的新手,最近一直在进行基于约束的查询挖掘。我遇到了简洁的概念,它基本上将约束详细描述为简洁,如果我们可以基于满足约束的项目集精确地生成所有候选项目集。

更正式的定义是:

给定 A1,满足简洁性约束 C 的项目集,那么任何满足 C 的集合 S 都是基于 A1 的,即 S 包含属于 A1 的子集

例子,min(S.Price) <= v 简洁
但是,sum(S.Price) >= v 不简洁

我理解为什么前者是一个简洁的约束 => 因为可以通过确保其中一个子集满足该约束来生成所有候选者。但我不明白为什么后者不是一个简洁的约束。对此的任何指示都会有所帮助!

1个回答

我们可以通过提供一个反例来证明“总和高于阈值”并不简洁。

正如你所写的定义是

给定 A1,满足简洁性约束 C 的项目集,那么任何满足 C 的集合 S 都是基于 A1 的,即 S 包含属于 A1 的子集

因此,我们可以提供一个反例,提供一个满足约束的集合 A1,而它的子集都不满足它。

考虑三个项目,a、b 和 c,使得它们上的每个成本为 1。让约束 C 为sum(S.Price) >= 3

对于集合 {a, b, c},价格之和为 3,因此满足约束 C。对于 {a, b, c} 的每个子集,价格总和低于 3,因此不满足 C。我们发现了一个反例,其中一个集合满足“总和高于阈值”,而它的子集都没有满足它。因此,“总和高于阈值”并不简洁。