AF与RI的复习回顾

在第六讲中老师讲解了与Rep Invariant 和Abstraction Function相关的知识。在之前的实验过程中这部分就一直做的马马虎虎,始终没有完全理解。代码里的AF和RI写的也很不规范。这次期末复习正好回顾一遍这部分知识。

首先,在开发过程中,会存在两个数据空间。一个是R空间: the space of representation values,即表示空间。另一个是A空间: the space of abstract values,即抽象空间。我们程序员需要着重关注表示空间,因为这与我们ADT的实现方式有关。用户则关注抽象空间,因为这是他们需要使用并且唯一能够接触到的地方。

在这两个空间之间建立联系的便是抽象函数(Abstraction Function)。 AF : R → A。抽象函数一定
是满射,因为每一个抽象空间中的数据都必须在R中实现。抽象函数未必是单射或双射。
那么RI是什么呢?实际上RI就是R空间中的数据到一个布尔值的映射,RI : R → boolean 。即用RI来判断R空间中的某个值是否合法。
这样RI就可以看作R空间的一个子集,其中包含了所有合法的表示值。
   

即使R空间是相同的,RI也可能不同。如下图。

                                                

                                                

一个RI表示R空间中所有无重复字符的字符串,另一个RI表示R空间中所有字符按照ASCII值递增排列的字符串。

可是即使R,RI都相同,AF不同也会产生不同的映射关系。

                                                

下面我们来看几个AF和RI的例子,我们可以学习他们的格式,以期未来自己撰写。

可以是文字描述性的。

还可以像下面这种利用映射函数表示AF的。这种很自然,我个人偏向这种。 

还有复杂一些的。

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值