我使用通用构造为无等待二叉搜索树设计算法。我有每个方法的线性化点。但我不确定如何正式证明该算法的正确性。
在搜索类似的论文时,我发现他们已经证明该算法是等待的,并且只生成可线性化的执行。这种情况是必要还是足够?
是否还有其他正式方法可以证明无等待算法的正确性?
答案 0 :(得分:0)
要正式证明某事,您需要以下内容:
对于大小为N的
BlockingQueue
,队列中元素的数量应始终为[0,N]。如果
BlockingQueue
为空,则添加项目的次数等于从中删除项目的次数。
好的,我们有定义或/和确切的描述。现在,有几种方法可以证明这一点:
Proof by contradiction
方法。考虑陈述是不正确的,最终得出一些不可能的结论。例如,我们想要证明Integer numbers can be negative
点。让我说明一下:所有整数都是正数。
这导致我们-1
是一个假数字的正数,因此该语句是错误的,并且证明了原始语句。
Сountable
集),或使用一些更复杂的逻辑语句和方法,通过检查所有可能的情况(通过检查所有可能的情况(对于有限集)来证明该语句是正确的。更具体的例子取决于我们要证明的定理。我还要根据我的经验补充一点,我上面写的Proof by contradiction
方法在很多情况下经常使用并且很合适,所以你可能应该首先考虑它。