问题标签 [conjunctive-normal-form]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2355 浏览

conjunctive-normal-form - 如何将其转换为 CNF(联合范式)

我遇到了下面的表情

如何转换为 CNF(联合范式)?

0 投票
1 回答
510 浏览

list - 从 Racket 的列表中删除空格

我正在开发一个 PL 逻辑解析器,我需要确保输入没有空格或均匀间隔。我认为删除空格会更容易。所以我正在编写一个从输入中删除空格的函数。

到目前为止,我有:

但这显然给了我错误的输出。

不仅空间仍然存在,而且输出是输入的奇怪组合。有人可以帮我解决这个问题吗?

我想得到这样的东西:

谢谢阅读。

编辑:我正在尝试使输入格式统一。在新的示例输入中,(~ Boy) 被解析为 2 个符号,(~~Boy) 被解析为 1 个符号,(~ ~ Girl) 被解析为 3 个。我认为这将很难解析。尤其是符号/运算符/空格的不同变体。(即“Child^”是被解析为“Child”、“^”还是“Child^”是一个完整的符号?)

0 投票
0 回答
263 浏览

solr - 是否可以配置 Solr 以使 queryResponse.getFacetFields() 中的基数以合取范式反映查询?

用于分面搜索的 Apache Solr API 非常直观。使用 SolrQuery 类,可以轻松构建 AND 级联查询、针对存储库执行主题和处理结果。作为一个非常好的功能,Solr 发送回一个带有 FacetField 列表的 queryResponse 对象,该列表提供了剩余构面的调整基数。

我的问题是:是否可以配置 Solr,使这些返回的基数反映结合正则形式 (CNF) 中的查询,换句话说,查询不同构面字段的 AND 连接和相同构面字段的 OR 连接?

至少在默认配置中,似乎queryResponse.getFacetFields()只有 AND 连接的查询是假设的。我想在queryResponse.getFacetFields()没有解决方法的情况下使用,并希望问题是配置问题。

为了更好地理解这里一个具有 Solr API 的真实和预期返回值的具体用例:假设一组 1000 个项目。每个项目可能有多个概念分配和集合模式。因此,项目文档的 solr 模式具有c概念和moc收集模式两个字段。为这些字段启用了分面搜索。

希望容易理解,这里是伪代码中的相关查询和结果集的基数。F(c:position)指具有指定概念位置F(moc:postal)的项目集合, 指具有指定收件方式的项目集合。Qi显示查询和结果集,|Qi|是它的基数。

下图显示了集合和子集的基数:

分面搜索的维恩图

现在我们开始一个特定的搜索:Q9 是感兴趣的查询。选择任何构面。分面显示预期值:Q1 为 252,Q2 为 393,Q3 为 464。用户选择构面c:position并将结果集的基数从 1000 减少到 252。底层查询是 Q1。返回的方面显示 24 个项目moc:telefonic和 43 个项目moc:postal。这些值表明选择这些方面之一会将结果集限制为 24 (= 14 + 10) 或 43 (= 33 + 10) 项。在第二步中,用户另外选择了 facet moc:postal。基础查询是 Q5。结果集的真实基数和预期基数相互对应,为 43。到目前为止一切顺利!

moc:telefonic给定具有前一个选择的 CNF 查询,您现在希望返回的方面的基数是多少?我预计有 14 个项目。如果我选择方面,moc:telefonic我的结果集将从 43 项增加到 57 项。不幸的是,Solr 显示了 10 项。如果所有方面都是 AND 连接的,这将是正确的。作为用户,我感到困惑,因为我的结果集有 57 个而不是 53 个项目。

0 投票
1 回答
386 浏览

logic - 为什么不标准化变量只是违反解析的完整性

我一直在阅读一些关于将一阶逻辑 (FOL) 句子转换为连接范式 (CNF),然后执行解析的笔记。

转换为 CNF 的步骤之一是Standardize variables.

如果我不标准化变量,我一直在寻找为什么解析算法的完整条件违反并且健全性不违反。

任何人都可以添加细节,为什么只是违反完整性,而完整性仍然存在?

0 投票
1 回答
633 浏览

prolog - 用合取范式推理

我有这段代码,我需要将其翻译成 CNF(这是为考试做准备,所以不是家庭作业!):

这是我所做的:

我的推理正确吗?

这里还有一个问题:

你想用 r 查询数据库。您应该将什么子句添加到您的数据库中?

我完全不明白这一点。简化后的数据库基本上是r。r 是真的,不是吗?

0 投票
0 回答
144 浏览

logic - 转换为 CNF(卡住)

我设法将表达式简化为以下表达式(根据 WolphramAlpha,原始表达式和下面的版本都解析为相同的 CNF)。

接下来是什么?

0 投票
1 回答
738 浏览

algorithm - 可以用二叉树表示合取/析取范式吗?

我可以找到这个相对问题 Distributing AND over OR in a binary tree (Conjunctive Normal Form)

我不太确定这个表达式的 CNF 二叉树表示的结果是什么。A & B & C

这是正确的吗?我的基本问题是 CNF 二进制表示是否可以在树中有多个 AND 节点,而不仅仅是一个 AND 节点作为根。我的理解是,只要其父节点是 AND 节点,我们就可以有非根 AND 节点。

相关问题是?这种表示是最优的吗?或者用只有一个根 AND 节点的 n-nary 树来表示它们是有益的?我在这里寻找的最优性是树的构建和遍历。

// 根据评论进行编辑。为简单起见,假设not (~)运算符是叶节点 A、B 或 C 的一部分。这意味着您需要担心 ~ 运算符是非叶节点的一部分,这可能会在根据德摩根定律展开时改变树结构.

0 投票
1 回答
4512 浏览

formula - 如何将公式转换为 CNF?

我知道将公式转换为 CNF 的 4 条规则,但我不太确定如何将它们应用于此公式 ((xvy) ^ ¬ z) ->w

有人可以帮我解释一下吗?谢谢!

0 投票
1 回答
55 浏览

python - 在 SQL Alchemy 中使用连接查询

我正在尝试获取字符串列表并基于列表中所有字符串的组合或组合进行查询。我想知道这样的事情是否可以在下面完成。

所以基本上,我正在遍历列表中的每个项目并尝试通过连接来进行连接。关键是我不知道列表中有多少项目......但我想在逻辑上将它们按位与在一起,以便它们都形成合取。我最终收到以下错误:

TypeError: &: 'int' 和 BinaryExpression 的不支持的操作数类型

实际上,我的意思不是用按位或符号来写这个……“|” 但我想如果你可以为 AND 做到这一点,那么它也应该适用于 OR。

0 投票
1 回答
155 浏览

logic - 分辨率证明 - 人工智能

我正在做一个我需要展示的练习KB |= ~D

我知道知识库是:

转换为 CNF 后:

所以现在我已经转换为 CNF,但从那里开始,我不知道如何走得更远。将不胜感激任何帮助。谢谢!