Skip to content
Yunhan's Lab
Go back

Binary Chop 9步走

Edit page

Binary Chop 9步走

1. Pre Post

Pre: 题中信息

Post: 要满足的条件 i的范围

2. Rewrite Post

改成Binary形式:

Post第一部分j = i+10 ≤ i < j ≤ N(或者给定数字)

3. Choose invariants

P0: Re-Post

P1: Re-Post

4. Establish

i,j:=0,N(或者给定数字)i, j := 0, N(或者给定数字)

5. Guard

ji+1j ≠ i+1

6. vf.

jij – i

7. Loop body

<h:i<h<j><∃ h : i < h < j>

Case i := hCase j := h
(i := h).P0
= { text substitution }
Post①中i替换成h
(j := h).P0
= { text substitution }
Post①中j替换成h

8. Putting it together

i, j := 0, 1000
;do j ≠ i+1 →
        “choose h so that i < h < j”
        ;if Post①中i替换成h → i := h
        [] Post①中j替换成h → j := h
        fi
od

9. The finished algorithm

h := (i+j) div 2 替换 “choose h so that i < h < j”,剩下照抄

i, j := 0, 1000
;do j ≠ i+1 →
        h := (i+j) div 2
        ;if Post①中i替换成h → i := h
        [] Post①中j替换成h → j := h
        fi
od

Edit page
Share this post on:

Previous Post
Comp3030J参考视频
Next Post
Fibonacci-like 6步走