gpt4 book ai didi

algorithm - 我如何使用霍尔逻辑证明这种二进制搜索算法是正确的?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:50:05 24 4
gpt4 key购买 nike

这是算法:

// Precondition: n > 0

l = -1;
r = n;

while (l+1 != r) {
m = (l+r)/2;

// I && m == (l+r)/2

if (a[m] <= x) {
l = m;
} else {
r = m;
}
}
// Postcondition: -1 <= l < n

我做了一些研究并将不变量缩小到 if x is in a[0 .. n-1] then a[l] <= x < a[r] .

虽然我不知道如何从那里取得进展。前提条件似乎过于宽泛,所以我无法证明 P -> I .

非常感谢任何帮助。这些是可用于证明算法正确性的逻辑规则:

Logic rule for conditionals

Logic rule for loops

最佳答案

不变量是

-1 <= l and l + 1 < r <= n and a[l] <= x < a[r]

使用隐式约定 a[-1] = -∞ , a[n] = +∞ .

然后在if声明

a[l] <= x < a[r] and a[m] <= x implies a[m] <= x < a[r]

a[l] <= x < a[r] and x < a[m] implies a[l] <= x < a[m].

无论哪种情况,分配都会建立a[l] <= x < a[r] .

同时,-1 <= l and l + 1 < r <= n确保 -1 < m < n , 以便对 a[m] 的评价是可能的。

终止后,l + 1 = r并由不变量

-1 <= l < n and a[l] <= x < a[l + 1].

关于algorithm - 我如何使用霍尔逻辑证明这种二进制搜索算法是正确的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40262541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com