序言问题使用否定运算符 \+ 查找最大值
我有一些值 H,我想使用 \+ 找到最大的值,我该怎么做?
maxValue(X) :-
Get(Id, X),
\+( Get(Id, Y), X < Y ).
不知道。。请帮忙,谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我有一些值 H,我想使用 \+ 找到最大的值,我该怎么做?
maxValue(X) :-
Get(Id, X),
\+( Get(Id, Y), X < Y ).
不知道。。请帮忙,谢谢!
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
使用否定是找到最大值的一种方法。它确实有效。
这是一个例子:
但复杂度为 O(n*n),其中 n 是
事实的数量。但最大可以是
在 O(n) 中确定。所以也许下面是
对于大型事实库更有效:
但是请注意,当您从多个线程使用它时,
你需要稍微调整一下,即设置 the_max
线程本地。
此致
Using negation is one way to find the maximum. And it really works.
Here is an example:
But the complexity will be O(n*n) where n is
the number of facts. But the maximum can be
determined in O(n). So maybe the following is
more efficient for large fact bases:
But watch out, when you use it from multiple threads,
you need to adapt it a little, i.e. make the_max
thread local.
Best Regards
另请参阅这些问题/答案:
See also these questions/answers: