2009-11-23 88 views
0

我头脑风暴的想法是开发高级软件来操纵矩阵代数方程,张量操作是精确的,使用几个标准(如尺寸大小,系统上的可用内存等)生成优化的C++代码。写程序专家系统?

精神上类似于张量收缩引擎TCE的东西,但是专门针对生成优化代码而非通用代码。 所需的最终结果是在我的域中生成并行程序的专家。

  • 这种发展属于专家系统的范畴吗?
  • 什么其他项目在那里生产给定的约束代码的同一地区工作?

回答

1

它不会被称为专家系统,至少不是传统意义上的这个概念。

专家系统是基于规则的推理引擎,其中所涉及的专业知识显然是封装在规则。你所建议的系统虽然可能在各种线性代数模型内囊括关于问题领域本质的洞见,但它们会比专家系统更像黑盒子。一个专家系统的特点是,它们能产生自己的推理的“解释”,而这样的功能是可能的,部分原因是知识表示,虽然正式的,仍然接近自然语言简单的语句;矩阵和对它们的操作,虽然可能源于类似的现实观察,但透明度很差......

从问题描述中不清楚您提议的系统是否会优化现有代码(可能在有限域),或者是否会出品优化的代码,在这种情况下,推动海湾一些外部目标/功能...

0

井生产系统(规则系统)是四种一般的方法来计算一个(图灵机,教堂递归函数,后期制作系统和马尔可夫算法[和几个已被添加到列表])它们或多或少具有这些相应的实现:命令式编程,函数式编程,基于规则的编程 - 就我所知,马尔可夫算法没有独立的实现。这些都是图灵等价物。

所以基于规则的编程可用于所有写什么。此外,早期的数学/符号操作程序通常使用基于规则的编程,直到问题得到充分理解为止(随后将方法改为命令式或约束式编程 - 参见MACSYMA - 嗯,MACSYMA是用Lisp编写的,所以也许我有一个不同的程序或者他们最初在Lisp中为此实现了一个规则系统)。

你可以很容易地编写一个规则系统来执行矩阵操作。您可以根据逻辑支持记录实际发生的解决方案的规则(某些规则可能不会直接影响解决方案)。然后,对于每个规则,您都映射到一组C++指令(这些指令不必是“完整的” - 它们的行为更像一个半可执行的要求),它们作为中间语言输出。然后,解析器读取它以将其链接到所需的输入数据以及任何需要的修正。您可能会发现生成功能代码更容易 - 在修复之后,您可以更轻松地优化功能源代码中的输出代码。

说了这么多,其他的贡献者已经提出了一个领域特定语言的方法,那就是TED的人做了什么,太(我的建议是,太多只是使用规则)。