表示空间、抽象空间、表示不变量(RI)、抽象方法(AF)

        在复习的时候,遇到了一些令人头大的概念,包括rep、RI、AF等等,这篇文章就是为了整理相关概念,尽量把这些东西能够讲清楚。

1、表示空间和抽象空间

        我们使用R表示表示空间(值空间),由实际实现实体的值组成。

        ADT将作为单个对象实现,但更常见的是需要一个小的对象网络,因此值通常是相当复杂的东西。

        我们使用A表示抽象空间,由该类型设计支持的值组成。

        它们是理想的实体,并不像描述的那样存在,但它们是我们想要查看抽象类型元素的方式,作为该类型的客户端。例如,无界整数的抽象类型可能将整数作为其抽象值空间;它可能被实现为一个简单的(有界)整数的数组,这一事实与类型的用户无关。

        ADT开发者关注表示空间R,client关注抽象空间A。

        每个抽象值都会被一些表示值映射到,即从R到A的映射是满射。实现抽象类型的目的是支持对抽象值的操作。通常情况下,我们将需要能够创建和操作所有可能的抽象值,因此它们必须是可表示的。

        一些抽象值可能被多个表示值映射到,即从R到A未必是单射。这是因为表示不是一种严格的编码。如:将无序字符集表示为字符串的方法不止一种。

        不是所有的表示值都会被映射到,即从R到A未必是双射。假设我们定义字符串不应该包含重复项,因此“abbc”项是不会被映射到的。

2、AF(Abstraction Function)

        定义:抽象函数是R和A之间映射关系的函数,即如何将R中的每一个值解释为A中的每一个值。(AF:R→A)

        性质:AF是满射、非单射、未必双射的,即R中的部分值并非合法的,在A中无映射值。

        一般情况下,AF可以使用数学语言表示这种映射,也可以使用文字进行描述。比如如下文字:represents the set of characters found in s,只需要用自然语言你的表示值解释清楚即可。

3、RI(Rep Invariant)

        在了解RI之前,你首先需要解决rep的定义。rep指表示值,你可以简单地理解为你在class里定义的成员变量,就是你用来表示抽象值的具体实现。

        定义:表示不变量RI是一个从R到布尔值(boolean)的变量。对于一个表示值r,RI(r)为真,当且仅当r可以被AF映射到。换句话说,RI告诉我们给定的表示值是否“良好”。或者,你可以将RI看作是一个集合:它是定义AF的代表值的子集。

        (小声哔哔:不要被这个“表示不变量”迷惑到,RI表示的其实就是一个规则,满足这个规则的rep即为合法的,这个映射值为true)

        表示不变性RI:某个具体的“表示”是否是“合法的”。也可以将RI看作所有表示值的一个子集,包含了所有合法的表示值。也可以将RI看作一个条件,描述了什么是“合法”的表示值。

        一般情况下,你可以使用自然语言描述这样的条件(或者规则),比如如下文字:s contains no repeated characters,同样地,把事情讲述清楚即可。

        

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值