算法导论----------基础部分--------循环不变式

本文深入解析循环不变式的三个关键属性:初始化、保持和终止。通过具体实例,如插入排序过程,阐述了这些属性如何确保算法的正确性和效率,强调了归纳法在迭代问题解决中的重要角色。

1.定义:书中举出A[1..j-1]这个已排序数组的例子,将其性质具有的性质归纳为循环不变式

那么有哪些性质呢:

(1)在执行最外层for循环的每次迭代开始时,子数组A[1..j-1]由原来在A[1..j-1]中的元素组成,但已按序排列。

(2)循环不变式主要用来帮我们理解算法的正确性。

(3)三条性质:

         初始化:循环的第一次迭代之前,它为真。

         保持:如果循环的某次迭代之前它为真,那么下次迭代之前它仍为真。

         终止:在循环终止时,不变式为我们提供一个有用的性质,该性质有助于证明算法是正确的。

2.自我理解:

主要写第三条,即三条性质。

       首先,初始化是对于某个循环中的主要操作对象在最开始进入for类似的循环之前,即for条件的第一步开始,操作对象满足当前循环所追求的一种不变的性质,例如我追求所有操作对象有序,那么你的第一步的初始化对象就得是有序的,不然怎么也达不到最终目的。类似于归纳法的第一步。

      其次,保持是为了让操作对象在执行每一次循环操作过后,其性质与前一次循环操作过后的对象性质保持一致,比如插入排序中第3次循环过后的排序数组其前3项,与第2次循环过后的排序数组的前2项,都得是有序的,依此类推。类似于归纳法的第二步。

     再者,终止是为了验证算法正确的一个结果,即执行完所有循环后返回的结果必须与我们追求的结果是一致的。类似于归纳法的第三步。

而我们设计算法时,是根据结果是否具有我们所追求的性质来判断算法的正确性的。此时觉得归纳法在解决迭代式相关问题的重要性。

初次学习,望指正。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值