问题 - 序言中的形式语言

2024-05-07

我正在尝试构建一个 DCG,它可以识别与此形式匹配的所有列表:a^n b^2m c^2m d^n.
我写下了以下规则:
s --> [].
s --> ad.
ad --> a, ad, d.
ad --> bc.
bc --> b, b, bc, c, c.
bc --> [].
a --> [a].
b --> [b].
c --> [c].
d --> [d].

当我尝试使用这些规范评估字符串时,例如列表[a,b,b,c,c,d], 有用。但是当我尝试评估查询时phrase(s, X)这样我就可以看到该语法返回的所有可能的字符串,它会无限循环。

我构建 DCG 的方式有问题吗?


您可以通过迭代加深来公平地枚举字符串:

?- length(Ls, _), phrase(s, Ls).
Ls = [] ;
Ls = [] ;
Ls = [a, d] ;
Ls = [a, a, d, d] ;
Ls = [b, b, c, c] ;
etc.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

问题 - 序言中的形式语言 的相关文章

  • Antlr3:无法匹配词法分析器规则中使用的解析器规则中的标记

    我在 Antlr3 中的词法分析器规则为 HYPHEN TOKEN HYPHEN CHARS CHARS a z 解析器规则如下 exp CHARS some complex expression parser rule exp HYPHE
  • 如何使用 Prolog 查找二叉树的深度

    我正在学习 Prolog 并试图找到一个深度二叉树使用 Prolog 我代表一棵树是这样的 nil is a tree tree 1 nil nil this is a leaf tree 1 tree 1 nil nil nil this
  • current_prolog_flag double_quotes DCG(代码或字符)?

    在使用 SWI Prolog DCG 时 我注意到有些人注意到 set prolog flag double quotes codes Jan http www swi prolog org pldoc man section string
  • 依赖规则顺序

    为了计算两个相同长度列表之间的汉明距离 我使用foldl hamm A B 0 R 有了这个定义hamm 4 hamm A A V V hamm A B V0 V1 A B V1 is V0 1 第一条规则的删减可以防止不必要的回溯 然而
  • 执行树元解释

    我有根据我之前的问题制作的跟踪元解释器here https stackoverflow com questions 27235148 implementing cut in tracing meta interpreter prolog 我
  • 如何实现 not_all_equal/1 谓词

    如何实施not all equal 1谓词 如果给定列表包含至少 2 个不同的元素 则该谓词成功 否则失败 这是我的尝试 不是很纯粹的尝试 not all equal L member H1 L member H2 L H1 H2 gt t
  • 如何在 Prolog 中为变量(如字符串)分配多个值?

    今天早些时候 我寻求帮助以在序言中构建数据库以及如何通过参数搜索 有人提出了这个 您还可以向每个处理器添加术语列表 例如 processor pentium g4400 brand intel family pentium series g
  • 如何从序言中的列表中删除列表?

    我想在序言中实现以下问题 Given L1 1 2 3 4 and L2 2 3 4 调用名为remove list L1 L2 L 的函数将从L1中删除L2 所以L将是 1 但是 如果第二个列表的元素与 L1 中的元素顺序不同 或者更准确
  • 在序言中减去或添加列表的列表?

    我对序言相当陌生 正在尝试摆弄列表列表 我很好奇如何添加两个列表列表或减去它们从而得到一个列表列表 如果我有两个列表 可以说 SomeList 1 2 3 4 5 6 7 8 SomeList2 1 2 3 4 5 6 7 8 我该如何添加
  • Prolog 中的迷你数独求解器中途停止

    我正在学习 七周七种语言 我只是想从书中找到一个例子 它解决迷你数独网格 4x4 作者使用的是 gprolog 但我使用的是 swi prolog 无论出于何种原因 我都无法让 gprolog 在我的虚拟机上工作 但 swi prolog
  • Prolog 匹配 vs miniKanren 统一

    在 Prolog 人工智能编程中 Bratko 在第 58 页说了以下内容 Prolog 中的匹配对应于逻辑中所谓的统一 但是 我们避免使用 统一 这个词 因为出于效率原因 在大多数 Prolog 系统中 匹配的实现方式并不完全对应于统一
  • 在 Prolog 中动态拆分列表

    我从序言开始几周 但我看到了更深入的操作列表的递归谓词的构造 我的问题是 是否可以构建一个谓词 将给定列表拆分为给定数量的其他列表 比如我想象的 split H T NumberLists Lists 递归实现 split 1 2 3 4
  • Prolog 实现 and/2、or/2、nand/2、nor/2、xor/2 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在序言中实现以下谓词并将它们用于真值表 and 2 or 2 nand 2 nor 2 xor 2 也许有人可以告诉我如何实现和
  • 在 prolog 中读取用户输入的字符串

    我是 Prolog 初学者 我正在使用 swi prolog 刚刚开始使用它 我需要将用户输入字符串拆分到列表中 我尝试了以下代码 但出现错误 指出 在子句正文中完全停止 无法重新定义 2 write Enter the String nl
  • 列表中的连续元素

    我正在阻止一个谓词来编码Prolog 我需要对两个谓词进行编码 如果我打电话 u a b c d e f X 它会给X a b X b c X c d 如果我打电话 v a b c d e f X 它会给X a b X c d X e f
  • 控制 Prolog 变量值选择

    灵感来自之前的一个问题 https stackoverflow com questions 41595786 using operator to save variables in a list我尝试实现一些可以枚举布尔表达式可能性的东西
  • 无法弄清楚为什么 Bison 抛出“由于冲突,规则在解析器中无用”

    我正在为一种非常简单的编程语言编写 BNF 语法 并使用 Flex 和 Bison 进行编译 我只有 3 种变量和常量类型 实数 整数 字符串 我的 l 文件具有 ID 的标记定义 如下所示 DIGIT 0 9 LETTER a zA Z
  • 如何在 Prolog 中解决这个算术表达式难题?

    我有一个编程问题 https blog svpino com 2015 05 08 solution to problem 5 and some other thoughts about this type of questions htt
  • Prolog:子句在源文件中不在一起

    我有这段代码 Family tree female pen male tom male bob female liz female pat female ann male jim parent pam bob parent tom bob
  • Same_length/2 更好的纯版本

    鉴于频繁的纯定义same length 2 as same length same length As Bs same length As Bs same length L L loops 是否有一个纯粹的定义不会在这种情况下循环 类似于纯

随机推荐

  • 在网页中显示 Google 工作表单元格的内容

    我有一个包含 html 代码的单元格的 google 工作表 我想知道在网页中显示此 html 的最佳方式 我尝试过谷歌电子表格 API 和谷歌可视化 API 以下是如何使用 Javascript 图表 API 显示单个单元格中的信息 也许
  • 用更有意义的文本替换 GCC 输出中的 a-hats [重复]

    这个问题在这里已经有答案了 可能的重复 为什么 gcc 的所有错误消息中都有 https stackoverflow com questions 547071 why does gcc have a in all its error mes
  • const_iterator 和 iterator 有什么区别? [复制]

    这个问题在这里已经有答案了 这两者在 STL 内部的实现方面有什么区别 性能方面有什么区别 我想当我们以 只读方式 遍历向量时 我们更喜欢const iterator right 谢谢 没有性能差异 A const iterator是一个指
  • 在 C 中使用 fgets 和 strcmp [重复]

    这个问题在这里已经有答案了 我试图从用户那里获取字符串输入 然后根据他们输入的输入运行不同的函数 例如 假设我问 你最喜欢的水果是什么 我希望程序根据他们输入的内容进行评论 我不知道该怎么做 这是我到目前为止所拥有的 include
  • 不支持使用微风在同一查询中执行选择和扩展

    我使用 Durandal breeze 开发了一个 asp net 解决方案 这是我获取所有托运人的代码 var query EntityQuery from Shippers select id name street city retu
  • 在 Spring MVC 中使用一系列项目处理表单发布

    我正在尝试将一些数据从客户端发送到服务器 并将其处理为文件下载 我使用简单的 HTML 表单 因为我想初始化文件下载 而不是 AJAX 其中一个表单字段是一组项目 另外两个是名称和描述字符串 在提交表单之前 我将此字段序列化为字符串 JSO
  • Spark SQL / PySpark 中的逆透视

    我手头有一个问题陈述 其中我想在 Spark SQL PySpark 中取消透视表 我已经浏览了文档 我可以看到仅支持pivot 但到目前为止还不支持取消透视 有什么方法可以实现这个目标吗 让我的初始表如下所示 When I pivotPy
  • Windows.Automation 中的旧版 IAccessible

    如何使用C 获取AutomationElement的LegacyIAccessible State和其他LegacyIAccessibles 就像工具中的 Inspect exe 一样 The LegacyIAccessible是新的 并且
  • 如何编写凯撒密码 Python

    我不知道如何开始编写程序 input input Input the text you would like encrypted def cipher text letter code for i in input number code
  • 将 XML 反序列化为对象数组

    我正在尝试将 XML 文件反序列化为对象数组 但收到空对象 我的问题看起来与此类似 如何将 xml 反序列化为对象数组 https stackoverflow com questions 7541899 how to deserialize
  • 分布式设置中的 Django SECRET_KEY

    如果我在负载均衡器后面设置多个 django 服务器 我希望 SECRET KEY 相同 不同还是有关系 该文档对于这个值的具体用途有点薄弱 我想一定是一样的 这是相关问题 Django SECRET KEY https stackover
  • 使用 php 在没有“manage_pages”权限的情况下发布到 Facebook 页面

    我有一个包含博客文章的网站 我们需要自动将博客发布到 Facebook 页面 目前我可以发布到我的时间线 但我无法发布到 Facebook 页面 我在谷歌搜索过 许多代码说我们需要manage pages权限 我的应用程序 Facebook
  • 如何使用 Prometheus Alert Manager 在 Kubernetes 中触发警报

    我在集群中设置了 kube prometheus https github com coreos prometheus operator tree master contrib kube prometheus https github co
  • == 在 R 中,精度为 .Machine$double.eps [重复]

    这个问题在这里已经有答案了 在 R 中 我发现必须转换易于阅读的代码有点烦人 例如 if det A 1 not always working because of floating point precision to if abs de
  • C 在函数中返回数组

    我对 C 比较陌生 我习惯用 Java 编程 所以我发现 C 在涉及数组的方面有点困难 我仍然对这些案例感到困惑 int a int a int a 在java中 我会做这样的事情来在函数中返回一个数组 int returnArr int
  • 如何检查 postgres 的 psql 是否自动提交

    我使用的是 postgres 9 5 如何检查自动提交是否打开或关闭 我试过SHOW AUTOCOMMIT我在哪里得到的ERROR unrecognized configuration parameter autocommit 然后我做了一
  • typeof() 表达式内的副作用

    在 GNUC C 中 您可以使用typeof expression 并且使用内部带有副作用的表达式是合法的 例如 您可以使用以下 C 代码 int x 0 typeof x y 在这种情况下 副作用被忽略 并且 x 之后仍然为零 这是有道理
  • AWS Glue 3.0 容器不适用于 Jupyter 笔记本本地开发

    我正在 AWS 中开发 Glue 并尝试在本地开发中进行测试和调试 我按照这里的说明进行操作https aws amazon com blogs big data developing aws glue etl jobs locally u
  • 为什么我的操作系统在启动 VS Code 时/之后变得非常慢,除非在禁用扩展的情况下启动?

    今天 当我启动 Visual Studio Code 时 我的Debian 9 https en wikipedia org wiki Debian version history Debian 9 Stretch 伸展 变得非常慢 但是当
  • 问题 - 序言中的形式语言

    我正在尝试构建一个 DCG 它可以识别与此形式匹配的所有列表 a n b 2m c 2m d n 我写下了以下规则 s gt s gt ad ad gt a ad d ad gt bc bc gt b b bc c c bc gt a gt