我尝试用 C 语言实现一些 AI 规划算法,但在基本概念上遇到了问题 🙂
在深入主要问题之前,我尝试实现一些支持命题逻辑的小框架:
FORMULA f = PROPOSITION(a + 3 > 0);FORMULA g = PROPOSITION(is_smaller_than(b, c));f = AND(NOT(f), g);
现在的问题是,我不想在定义公式时立即评估像 ‘a + 3 > 0’ 这样的表达式,而是在稍后的阶段:
bool res = EVALUATE(f);
我想在这种情况下,闭包会很方便,但不幸的是,我也想坚持使用 C99。
有什么想法吗?
如何将其扩展到谓词逻辑?
最终目标(理想情况下)是构建一个 AI 规划库,它可以直接插入到应用程序中,而不是接收 STRIPS 程序字符串形式的问题。
谢谢
回答:
好的,
正如上面评论所说,我通过使用包含方法指针和数据的结构体解决了这个问题。 这是在 C 中模拟闭包最常见的方式。
我的实现可以在这里找到:https://github.com/pmilosev/clumsy