gpt4 book ai didi

Prolog 初学者 - 这是一个坏主意吗?

转载 作者:行者123 更新时间:2023-12-01 20:26:27 25 4
gpt4 key购买 nike

我正在开发的应用程序是一种“配置器”。它是用 C# 编写的,我什至编写了一个规则引擎来配合它。这个想法是有一堆命题逻辑语句,用户可以做出选择。根据他们的选择,其他一些项目将变得必需或完全不可用。

命题逻辑语句一般采用以下形式:

A => ~X 
ABC => ~(X+Y)
A+B => Q
A(~(B+C)) => ~Q A <=> B

符号:

=>  -- Implication
<=> -- Material Equivalence
~ -- Not
+ -- Or
Two letters side-by-side -- And

我对 Prolog 很陌生,但它似乎能够为我处理所有“规则处理”,使我能够摆脱当前的规则引擎(它可以工作,但速度不那么快)或者按照我的意愿易于维护)。

此外,所有可用选项都位于一个层次结构中。例如:

Outside
Color
Red
Blue
Green
Material
Wood
Metal

如果隐含了第二级的项目(特征,例如颜色),则必须选择第三级的项目(选项,例如红色)。同样,如果我们知道某个功能是错误的,那么它下面的所有选项也都是错误的。

问题是每种产品都有自己的一套规则。建立一个包含这些运算符作为谓词的知识库,然后在运行时开始构建产品的所有规则,这是一种合理的方法吗?

我想象它的工作方式是建立组件、功能和选项的想法。然后建立 then 之间的关系(例如,如果该特征为 false,则其所有选项均为 false)。在运行时,添加产品的特定规则。然后将所有用户的选择传递给一个函数,检索哪些项目为 true,哪些项目为 false 作为输出。

我不知道我所问的问题的所有含义,因为我刚刚进入 Prolog,但我试图避免走上一条糟糕的道路并在此过程中浪费大量时间。

一些可能有助于确定我想要找出的问题的问题:

  1. 这听起来可行吗?
  2. 我是不是找错了树?
  3. 尝试在运行时创建所有这些规则是否有任何缺点或问题?
  4. 是否有更好的系统可以处理此类事情,我可以将其放入 C# 应用程序(确切地说是 Silverlight)中?
  5. 我还应该检查其他竞争系统吗?
  6. 您对此类事情有什么一般性建议吗?

预先感谢您的建议!

最佳答案

  1. 当然可以,但是 Prolog 有一个学习曲线。
  2. 基于规则的推理是 Prolog 的游戏,尽管您可能必须将许多规则重写为 Horn clausesA+B => Q 是可行的(它变成 q :- a.q :- b.q :- (a;b). code>),但您的其他示例必须重写,包括 A => ~X
  3. 取决于您的 Prolog 编译器,特别是它是否支持动态谓词索引。
  4. 搜索“前向检查”、“推理引擎”和“业务规则”等术语。各个社区不断为这个问题发明不同的术语。
  5. Constraint Handling Rules (CHR)是一种逻辑编程语言,作为 Prolog 扩展实现,更接近于基于规则的推理/前向链接/业务规则引擎。不过,如果您想使用它,您仍然需要学习基本的 Prolog。
  6. 请记住,Prolog 是一种编程语言,而不是逻辑推理的 Elixir 。它削减了一阶逻辑的一些角落,以保持事物的高效可计算性。这就是为什么它只处理 Horn 子句:它们可以与过程/子例程一对一映射。

关于Prolog 初学者 - 这是一个坏主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6776587/

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