Optimization 如何优化布尔函数?

Optimization 如何优化布尔函数?,optimization,theory,set,Optimization,Theory,Set,我面临着通过自动化机制优化数据库设计的挑战。 数据库将包括将任意数据与属性关联的表 e、 g.表A包含点击购买按钮的人员的所有id,表B包含没有退单的所有id 因此,给出了一些非常基本的主表,例如A、B、C、D,这些主表应该由集合论的并集、交集、补集操作组成,使用某种GUI,从而产生新的子表 随着创建的子集越来越多,它们之间的依赖性也越来越大,例如e=A和B,F=A和B以及C-两者都是布尔函数,并且一个人的id是否在这些集合中 现在,我尝试优化填充/查询我的表的数据库查询,以便查询不是F=A j

我面临着通过自动化机制优化数据库设计的挑战。 数据库将包括将任意数据与属性关联的表 e、 g.表A包含点击购买按钮的人员的所有id,表B包含没有退单的所有id

因此,给出了一些非常基本的主表,例如A、B、C、D,这些主表应该由集合论的并集、交集、补集操作组成,使用某种GUI,从而产生新的子表

随着创建的子集越来越多,它们之间的依赖性也越来越大,例如e=A和B,F=A和B以及C-两者都是布尔函数,并且一个人的id是否在这些集合中

现在,我尝试优化填充/查询我的表的数据库查询,以便查询不是F=A join B join C而是F=E join C,这是有意义的,因为E包含的行更少,因为它已经是一个子集了

最后,这意味着我要问,哪种数学/软件算法可以优化我的问题,有很多集合和子集,可能有几百个,这样我可以高效地查询和填充表格

我已经考虑过只使用MainSet的信息创建新的子集,并使用Karnaugh-Veitch算法优化GUI创建的子集,但这将导致A、B和C。我不知道如何采取优化的第二步,将A、B和C转换为e和C,并且更为复杂,导致找到子集的最有效组合的问题


thx对于任何建议

您无法更改表架构可能还有其他原因,但是如果您能够更改架构,我建议您使用一个包含所有人ID的表,并为每个数据设置布尔位列,例如:

ID  A  B  C
--- -- -- --
1   1  0  1
2   1  1  0
etc...
这意味着数据库服务器将为您进行所有优化:

-- Select all people in set A
SELECT * FROM MyTable WHERE A = 1

-- Select all people in set E
SELECT * FROM MyTable WHERE A = 1 AND B = 1

-- Select all people in set F
SELECT * FROM MyTable WHERE A = 1 AND B = 1 AND C = 1

我还建议给你的专栏起个更好的名字

我还不确定,但要想得到答案,我认为解决办法就在这个问题之内。我认为也可以使用KV进行此类优化。关键是在这个过程中也要包括所有子集。不仅是主机,例如A,B,C,e对A,B和C的电压,会产生e和C,因为这是一个很小的术语,但我不确定我说的是否正确