- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个程序来检查学生程序是否可以实现某个目标。我可以做那个部分。现在,我想检查学生程序是否真的包含不必要的代码。为了解决这个案例,我想我需要知道学生程序是否包含对指定目标没有贡献的事实。但是,我无法弄清楚如何找到对目标没有贡献的事实。
为了更容易理解,让我们考虑一个更简单的例子。在这个例子中,指定的目标是:john 是 tomy 的祖父吗?
father(john, jim).
father(jim, tomy).
father(john, david).
father(bruce, anne).
mother(mary, jim).
grandfather(A,B) :- father(A, X), father(X,B).
goal:- grandfather(john, tomy).
实际上只有以下事实才能满足目标:
father(john, jim).
father(jim, tomy).
我想知道的是哪些事实实际上对目标没有帮助。答案将是以下所有事实:
father(john, david).
father(bruce, anne).
mother(mary, jim).
非常感谢任何帮助。谢谢
最佳答案
您的问题无法在 Prolog 中直接回答,但您可以使用 failure-slice 手动回答。 .只需将 false
目标添加到您的程序中,并始终测试 goal
是否仍然成功。这是我得到的最小程序。
father(john, jim).father(jim, tomy).father(john, david) :- false.father(bruce, anne) :- false.mother(mary, jim) :- false.grandfather(A,B) :- father(A, X), father(X,B).goal:- grandfather(john, tomy).
每次将目标 false
插入纯单调程序时,您肯定知道解决方案集会减少(或保持不变)。因此,找到这样的切片涉及的试验次数与设置此类目标的位置一样多。有时您可能想要添加目标 X = term
以进一步缩小程序范围。
当您想了解程序的终止属性时,故障切片特别有用,请参阅 failure-slice了解更多。
关于prolog - 如何找到对目标没有贡献的事实,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16786274/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!