循环不变式(loop invariant)

简介: 循环不变式,是指让每次循环都成立的逻辑表达式,用于证明整个算法的正确性。它通过证明循环体三条性质的正确性来证明整个算法的正确性。三条性质: 初始化:循环的第一次迭代前,循环不变式为真。

循环不变式,是指让每次循环都成立的逻辑表达式,用于证明整个算法的正确性。

它通过证明循环体三条性质的正确性来证明整个算法的正确性。

三条性质:
初始化:循环的第一次迭代前,循环不变式为真。
即初始化的数据结构与原始数据都是正确的。
保持:如果某次迭代前它为真,那么下次迭代之前它仍为真。
即每次迭代都保证正确的处理。
终止:在循环终止时,不变式为我们提供一个有用的性质,该性质有助于证明算法是正确的。
即研究在循环终止时发生了什么,并对循环结果进行判断。

在实际写算法的过程中,我们可以选择非形式化地通过分析循环不变式的真假来保证算法的正确性,也可以通过设置布尔值,并在每次循环前都利用某种判定规则得出布尔值并进行判断,来保证算法的正确性。

References:
《算法导论》第3版第10,11页
图灵社区-循环不变式

目录
相关文章
|
9月前
已解决 RuntimeError: There is no current event loop in thread ‘Thread-1‘.
Jetson Xavier NX 报错 RuntimeError: There is no current event loop in thread 'Thread-1'.异常错误,已解决
151 0
已解决 RuntimeError: There is no current event loop in thread ‘Thread-1‘.
|
4天前
|
存储 JavaScript 前端开发
说说你对Event Loop的理解是什么
Event Loop(事件循环)是JavaScript中处理异步操作的一种机制,它帮助我们协调和处理各种任务的执行顺序。
30 0
|
9月前
|
移动开发 JavaScript 前端开发
说说你对事件循环event loop的理解?
说说你对事件循环event loop的理解?
76 0
|
9月前
|
JavaScript
event loop的理解
event loop的理解
|
9月前
|
JavaScript
【说说你对事件循环event loop的理解】
【说说你对事件循环event loop的理解】
|
9月前
|
JavaScript 前端开发
说说你对事件循环的理解(event loop)
说说你对事件循环的理解(event loop)
|
10月前
浅析Event Loop(事件循环)
浅析Event Loop(事件循环)
67 0
|
10月前
|
移动开发 前端开发 JavaScript
事件循环(Event Loop)
JavaScript 是一门单线程语言,这意味着它只有一个主线程来执行代码。这个主线程会按照代码的顺序执行任务,而且同一时间只能执行一个任务。
|
JavaScript 前端开发
我不知道的Event Loop(事件循环)
我不知道的Event Loop(事件循环)
我不知道的Event Loop(事件循环)
|
消息中间件 JavaScript 前端开发
Event loop事件循环
线程 javascript是单线程语言,也就是说同一个时间只能做一件事情,而这个单线程的特性与它的用途相关,作为浏览器脚本语言,javascript的主要用途是与用户互动,以及操作DOM。
1360 0