gpt4 book ai didi

user-interface - 需要评估 bool 逻辑树的指导

转载 作者:行者123 更新时间:2023-12-02 13:56:52 24 4
gpt4 key购买 nike

我似乎找不到正确方向的指针,我什至不确定我应该研究的术语是什么,但无数小时的谷歌搜索似乎让我在原地打转,所以希望集体 hive Stack Overflow 的智能可以提供帮助。

问题是这样的,我需要一种方法来过滤数据,我只能称之为复合逻辑树。目前该系统实现了一个简单的 AND 过滤系统。例如,假设我们有一个人员数据集。您添加了一堆过滤器,以便向所有人显示 (性别 = 女性) AND (年龄 > 23) AND (年龄 < 30) AND (状态 = 单例)。很简单,迭代每个项目,仅当每个条件都为真时才添加到有效的项目集合中。

我遇到的问题是如何处理用户能够构建涉及 and 和 or 的复杂查询?我正在考虑类似树的东西,其中每个节点代表和表达式评估其子节点的真或假。一个简单的例子是 - 过滤到 ((Sex == Male AND Age == 25) OR (Sex == Female AND St​​atus == Single)) AND IQ > 120。抱歉,我想不出更好的例子此时此刻。但是,您将如何表示这种类型的表达式树,并根据这些过滤器评估集合中的项目。有哪些引用资料可以提供帮助?天啊,有哪些该死的谷歌搜索可能会带来积极的方向?!

感谢任何可以提供帮助的人。

这是使用人员数据集以树形式进行复合查询的示例

  • 查询 - 向我显示性别为男性且眼睛为绿色的所有人,或者性别为女性、眼睛为蓝色或状态为单例的人。以Paren形式(性别==男性&&眼睛==绿色)|| (性别 == 女性 &&(眼睛 == 蓝色 || 状态 == 单例))

所以我以树的形式思考

o-Root Node
- And - Sex = Male
- And - Eyes = Blue
- Or - Sex = Female
- And Eyes = Blue
- Or Status = Single

我相信解决方案是用像这样的数据结构来表示每个节点

Node
{
OpType - AND or OR
ExpressionField - The field to evaluate
ExpressionOp - =, !=, >, >=, <, <=
ExpressionValue - the value to compare the field's value against

Function Evaluate() - returns a bool
}

因此,对于给定节点,计算子节点,如果您是 AND 节点,则如果您的表达式结果为 true 并且所有 AND 子节点计算结果为 true,或者任何 OR 子节点计算结果为 true 并向上递归,则返回 true。

似乎满足了我可以提出的每一个概念条件,但是一旦我实现了它,我们就会满足。稍后我将在其工作时发布真正的代码和图片,以帮助其他人更好地描述这个问题。

最佳答案

您对表达式 ((Sex == Male AND Age == 25) OR (Sex == Female AND St​​atus == Single)) AND IQ > 120 的解析看起来很奇怪。我将其解析为:

* And
* Or
* And
* ==
* Sex
* Male
* ==
* Eyes
* Blue
* And
* ==
* Sex
* Female
* ==
* Status
* Single
* >
* IQ
* 120

树的类型是:

Node
{
bool evaluate ()
}

AndNode : Node
{
Node left
Node right

bool evaluate ()
{
return left.evaluate () && right.evaluate ()
}
}

// OrNode is similar

EqualsNode : Node
{
Field field
Value value

bool evaluate ()
{
return field.value () == value
}
}

// Likewise for <, >, etc

关于user-interface - 需要评估 bool 逻辑树的指导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1830925/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com