Prolog是否不被认为是人工智能工具?

我在Prolog中设计了一个基于规则的引擎,它基本上是一套用来在纸牌游戏中击败真实玩家的规则。每当我发现我的算法存在弱点,导致测试者利用这些弱点获得优势时,我就会修改规则以便在下一个版本中修复这些问题。

我在Prolog中用不到500行代码完成的工作,如果用C++或C#来做,可能需要约10,000行代码,包括大量的嵌套if-else语句,修复逻辑问题将是一场噩梦。

我的一个朋友告诉我,我的纸牌游戏不涉及人工智能,因为同样的事情可以用函数式或面向对象的编程语言来完成(当然需要更多的努力)。他认为这更像是基于案例的推理(Case-based Reasoning)。

这是真的吗?Prolog不是人工智能工具吗?我见过有人用Prolog编写自然语言处理代码的例子。

还有哪些其他被认为是人工智能工具的工具?


回答:

好吧,让我们争论一下语义学吧。

首先,Prolog不是一个工具,而是一种编程语言。你可以用这种语言来描述一个程序,但你还需要其他东西(编译器、运行时等)来实际运行它。但这可能不是你朋友所指的重点。

其次,Prolog是图灵完备的[需要引用]。这意味着它可以做所有其他图灵完备语言能做的事情(这包括几乎所有曾经存在的编程语言),而所有其他语言也可以做Prolog所做的事情。(如果你在想:你的大脑也是图灵完备的)。唯一的区别在于描述一个算法的难易程度。但观察到你的算法也可以用其他语言表达,这显然是毫无意义的。此外,计算机是图灵完备的。因此,即使你能够表达比图灵完备更好的东西,你也无法执行它。

第三,你说他声称这不是人工智能,因为它是“基于案例的推理”。“推理”已经暗示了一些智能,而且没有规则禁止人工智能是“基于案例的”。

“智能”这个词的定义非常广泛。你的程序能够解决一个问题:在纸牌游戏中击败某人。因此,它是一种专用的人工智能。

但你最初的问题是Prolog是否是人工智能工具。“用于X的工具”是指使“X”变得更容易的东西。虽然Prolog在编写神经网络方面帮助不大,但它使编写基于规则的决策引擎变得非常容易(你自己也这么说)。所以,至少它是这方面的工具。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注