Chứng minh dừng của một chương trình

Một phần của tài liệu Đại cương về công nghệ phần mềm (Trang 69 - 70)

Một chương trình khơng là đệ quy, khơng chứa lệnh goto sẽ chỉ cĩ thể một dãy vơ hạn tính tốn nếu nĩ thực hiện vơ hạn lần thân một vịng lặp. Việc chứng minh một chương trình như vậy dừng với mọi dữ liệu d ∈ D dẫn đến việc chứng minh rằng mỗi vịng lặp của chương trình chỉ cĩ thể thực hiện một số hữu hạn lần ∀

d∈D.

Cho vịng lặp :

while B do P

với x1, x2, ..., xn là các biến của chương trình. Gọi WE là tập hợp các giá trị của vectơ :

w = < x1, x2, ..., xn >

sao cho các biến thoả mãn điều kiện E.

Giả thiết rằng điều kiện E là bất biến với vịng lặp đang xét và thoả mãn trước khi thực hiện vịng lặp này.

Nếu w = w1 ∈ WE ∧ B trước khi thực hiện vịng lặp, khi đĩ w = w2 ∈ WE sau khi thực hiện thân vịng lặp P.

Nếu w2 ∈ WE ∧ ¬B, vịng lặp dừng ; nếu khơng w = w3 ∈ WE, sau khi thực hiện P, v.v...

Như vậy để chứng minh vịng lặp dừng, chỉ cần chỉ ra rằng mọi dãy w1, w2, w3, ... đã xây dựng là hữu hạn.

Phương pháp để chứng minh là định nghĩa một hàm m từ WE ∧ B vào N sao cho cĩ thể chỉ ra rằng :

E ∧ B ∧ (m(w) = m0) { P } ¬B ∧ (m(w) < m0) ∀ m0 ∈ N

Chú ý :

Phát biểu trên cĩ nghĩa rằng nếu w = wi trước khi thực hiện P, thì sau khi thực hiện P, hoặc vịng lặp dừng, hoặc m(wi+1) < m(wi).

Trong trường hợp này (đã chứng minh được P dừng), ta cĩ thể khẳng định rằng với mọi dãy w1, w2, w3, ..., dãy m(w1), m(w)2, m(w)3 ... giảm dần thực sự trong N, là hữu hạn.

Một phần của tài liệu Đại cương về công nghệ phần mềm (Trang 69 - 70)

Tải bản đầy đủ (PDF)

(154 trang)