很久以前,我使用专家系统语言 Egeria 开发系统。它有一个非常有用的功能,其中变量具有三个值,最小值、最大值和电流。以这种方式,可以计算部分已知值的概率,结果以一个范围结束。我不记得语法,但它是这样的:-
A.Min = 1;
A.Max = 5;
A.Current= 4;
B.Min = 2;
B.Max = 4;
B.Current= 4;
A * B = {2, 20, 16}
我的问题是,这种方法叫什么,当前的语言是否实现了它?
很久以前,我使用专家系统语言 Egeria 开发系统。它有一个非常有用的功能,其中变量具有三个值,最小值、最大值和电流。以这种方式,可以计算部分已知值的概率,结果以一个范围结束。我不记得语法,但它是这样的:-
A.Min = 1;
A.Max = 5;
A.Current= 4;
B.Min = 2;
B.Max = 4;
B.Current= 4;
A * B = {2, 20, 16}
我的问题是,这种方法叫什么,当前的语言是否实现了它?
听起来,作为一种“方法”,它可能是一种模糊逻辑。特别是当您描述它被概率使用时。
像您描述的那样的多值变量可以用于基于约束的编程。对于最近的一篇论文,请参阅 Radul 和 Sussman,“传播者的艺术”。
Radul 先生上周在 ILC 2009 上发表了演讲。他举了一个(人们可能会考虑的)多值变量的例子,这些变量代表了对“真相”的概率近似。(对于任何不实陈述,我提前道歉,我没有笔记。)
考虑一个必须协调来自两个热传感器的读数的系统。进一步假设每个传感器的读数都带有某种程度的不确定性:传感器 A 表示温度介于 A1 和 A2 之间,传感器 B 表示温度介于 B1 和 B2 之间。系统是否应该在尝试计算温度时失败?也许“真相”可以用读数重叠的范围来表达。
关于 Yacc 的原始论文的附录 C(发表于版本 7 的 UNIX 程序员手册的第 2 卷;该论文的日期为 1978-07-31)描述了一个“进行浮点区间运算的桌面计算器”。它使用带有符号 '( min, max )' 的区间并实现了基于范围的算术。您所描述的也是“当前”值的扩展。
大多数面向对象的语言使用类可以很容易地做到这一点。
例如,在 C++ 中,很容易创建一个模板类来为您处理任何基本类型。
不过,我不知道有任何语言支持它作为核心语言的一部分。