代数值集的缩小
目录
简介
与逻辑编程一样,代数值集的缩小提供了一种对未解决或部分解决的方程中的数值进行推理的方法。在逻辑编程依赖解析的地方,代数值集依赖缩小规则。
缩小规则允许从解集中消除与被解方程不一致的值。与逻辑编程不同,代数值集的缩小不使用回溯法。相反,所有的值都包含在值集中,并被平行考虑。
这种方法也类似于约束逻辑编程中约束的使用,但没有逻辑处理的基础。概率值集是值集对演绎概率的自然延伸。值集构造持有根据初始值的概率来计算计算值的概率所需的信息。
代数值集的缩小的历史
早期的编程语言是命令式的。这些语言通过允许表示变化来实现功能。赋值语句允许一个变量改变其值。在数学中,一个变量的值可能不会改变。这是数学方法的基础。基于lambdacalculus的功能语言允许这种数学方法的编程。功能性语言的发展是通过实现懒惰评估,并允许将函数作为参数传递。
懒惰评估是现代函数式编程语言(如Haskell)的一个基本特征。Haskell是一系列基于lambdacalculus和let表达式的语言中最新的一种。
这些语言通过懒惰评估和使用类型推理的多态类型系统提供丰富的功能。函数式编程语言也自然支持高阶函数。基于Resolution的逻辑编程与函数式编程同时发展。
逻辑编程是关系编程的一种形式,它对数值进行推理。约束逻辑编程通过支持约束条件扩展了逻辑编程。约束逻辑编程语言,如ECLiPSe,提供了解决复杂逻辑问题的能力。然而ECLiPSe并不懒惰。
逻辑编程语言虽然有更大的推理能力,但从未获得函数式语言的力量和灵活性。窄化是一种允许逻辑推理的技术,具有功能语言的灵活性。
代数值集的缩小的引言
在数学中,一个表达式代表一个单一的值。一个函数将一个或多个值映射为一个xxx的值。函数的倒数并不总是很好地定义为函数。
有时需要额外的条件来使一个函数的倒数符合一个函数的定义。
一些布尔运算,特别是没有可以被定义为函数的逆运算。特别是disjunctionor有允许两个值的反相。在自然语言中,或代表替代的可能性。
缩小是基于允许多个值被打包并被视为单一值的值集。这允许函数的逆反值总是被视为函数。为了实现这一点,价值集必须记录一个值所属的背景。一个变量在每个可能的世界中只能有一个单一的值。
![代数值集的缩小](http://map.s-jl.com/wp-content/uploads/sites/14/2024/09/20240928000421-66f74805557b1.png)
值集用它所属的世界来标记值集中的每个值。可能的世界属于世界集。一个世界集是所有相互排斥的世界的集合。结合不同的可能世界的值是不可能的,因为那将意味着结合相互排斥的可能世界。
对价值集的应用创造了来自不同世界的价值集的组合。缩小规则通过消除来自同一世界集的不同世界的组合来减少这些世界。
缩小规则还可以检测出某些世界组合被证明是不可能的情况。在使用缩小规则的过程中,不需要回溯。通过将可能的值打包在一个值集中,所有的值的组合都可以同时被考虑。
评价的过程就像功能语言一样,在价值集合中结合各种价值组合,用缩小规则从集合中消除不可能的价值。
值集简介
值集是一个对象,它表示一个变量可能具有的值集。值集在数学上表现为一个单一的值,而在内部代表多个值。为了实现这一点,值集跟踪值以及它们发生的背景,或世界。
方程的多解
在数学中,一个表达式必须代表一个单一的值。例如,考虑方程。但这有点啰嗦,而且它不允许我们同时处理多个数值。