Sự khác biệt giữa tổng chính xác và đúng một phần là gì?


Câu trả lời 1:

Một đặc điểm kỹ thuật chính xác tổng thể cũng là một đặc điểm kỹ thuật chính xác một phần. Tính đúng đắn một phần yếu hơn bởi vì nó cần sự trợ giúp thêm của 'S chấm dứt' để đi đến kết luận: R giữ ở trạng thái cuối cùng.

Đối với thông số chính xác một phần {Q} S {R}, bạn có thể nhận được thông tin sau: Đưa ra trạng thái bắt đầu thỏa mãn Q, S có thể chấm dứt hoặc không. Nếu S chấm dứt, sau khi thực hiện S, bạn sẽ đạt đến trạng thái cuối cùng thỏa mãn R. Nếu không, R là vô dụng vì không có trạng thái cuối cùng.

Ví dụ:

{x == 10}
trong khi (y! = 0):
    y = y - 1
x = 0
{x == 0}

Đây là một đặc điểm kỹ thuật chính xác một phần. Nếu y được khởi tạo với một số nào đó bằng hoặc lớn hơn 0, S sẽ chấm dứt và sau đó x là 0. Trong khi nếu y bắt đầu bằng một số âm, S sẽ lặp lại mãi mãi và vì nó không chấm dứt, bạn sẽ không đạt đến trạng thái ' sau khi S thực hiện '.

Thật vậy, R có thể là bất cứ thứ gì nếu S là một vòng lặp chết. Ví dụ: đối với mọi Q và R:

{Q}
trong khi (đúng):
    y = y - 1
{R}

luôn luôn là một đặc điểm kỹ thuật chính xác một phần.

Nếu Q không đủ mạnh, bạn không thể đảm bảo chấm dứt S, chứ đừng nói đến lý do về trạng thái sau khi thực hiện S. Trong trường hợp này, bạn có thể tự thêm một điều kiện: S chấm dứt. Với Q và nó, lý luận có thể tiếp tục.

Đối với thông số kỹ thuật chính xác tổng {Q} S {R}, Q đủ mạnh để đảm bảo chấm dứt S, do đó bạn có thể kết luận rằng S sẽ chấm dứt và trạng thái cuối cùng thỏa mãn R.

Ví dụ:

{x == 10}
trong khi (x! = 0):
    x = x - 1
{x == 0}

là một đặc điểm kỹ thuật chính xác.

BTW: Tôi không chắc câu trả lời có đúng không vì câu hỏi được gắn thẻ Chính xác. Trong khi định nghĩa trong câu hỏi trông giống hệt như trong Khoa học máy tính.