TAILIEUCHUNG - Sáng tạo trong thuật toán và lập trình với ngôn ngữ Pascal và C# Tập 1 - Chương 6

PHƯƠNG PHÁP QUAY LUI Giả sử ta phải tìm trong một tập dữ liệu D cho trước một dãy dữ liệu: v = (v[1], v[2],., v[n]) thoả mãn đồng thời hai tính chất P và Q. Trước hết ta chọn một trong hai tính chất đã cho để làm nền, giả sử ta chọn tính chất P. Sau đó ta thực hiện các bước sau đây: Bước 1. (Khởi trị) Xuất phát từ một dãy ban đầu v = (v[1],., v[i]) nào đó của các phần tử trong D sao cho v thoả P. Bước 2. Nếu v thoả Q. | Sáng tạo trong Thuật toán và Lập trình Tập I 163 CHƯƠNG 6 PHƯƠNG PHÁP QUAY LUI Giả sử ta phải tìm trong một tập dữ liệu D cho trước một dãy dữ liệu v v 1 v 2 . v n thoả mãn đồng thời hai tính chất P và Q. Trước hết ta chọn một trong hai tính chất đã cho để làm nền giả sử ta chọn tính chất P. Sau đó ta thực hiện các bước sau đây Bước 1. Khởi trị Xuất phát từ một dãy ban đầu v v 1 . v i nào đó của các phần tử trong D sao cho v thoả P. Bước 2. Nếu v thoả Q ta dừng thuật toán và thông báo kết quả là dãy v ngược lại ta thực hiện Bước 3. Bước 3. Tìm tiếp một phần tử v i 1 để bổ sung cho v sao cho v v 1 . v i v i 1 thoả P. Có thể xảy ra các trường hợp sau đây . Tìm được phần tử v i 1 quay lại bước 2. . Không tìm được v i 1 như vậy tức là với mọi v i 1 có thể lấy trong D dãy v v 1 . v i v i 1 không thoả P. Điều này có nghĩa là đi theo đường v v 1 . v i sẽ không dẫn tới kết quả. Ta phải đổi hướng tại một vị trí nào đó. Để thoát khỏi ngõ cụt này ta tìm cách thay v i bằng một giá trị khác trong D. Nói cách khác ta loại v i khỏi dãy v giảm i đi một đơn vị rồi quay lại Bước 3. Cách làm như trên được gọi là quay lui lùi lại một bước. Dĩ nhiên ta phải đánh dấu v i là phần tử đã loại tại vị trí i để sau đó không đặt lại phần tử đó vào vị trí i trong dãy v. Khi nào thì có thể trả lời là không tồn tại dãy v thoả đồng thời hai tính chất P và Q Nói cách khác khi nào thì ta có thể trả lời là bài toán vô nghiệm Dễ thấy bài toán vô nghiệm khi ta đã duyệt hết mọi khả năng. Ta nói là đã vét cạn mọi khả năng. Chú ý rằng có thể đến một lúc nào đó ta phải lùi liên tiếp nhiều lần. Từ đó suy ra rằng thông thường bài toán vô nghiệm khi ta không còn có thể lùi được nữa. Có nhiều sơ đồ giải các bài toán quay lui dưới đây là hai sơ đồ khá đơn giản không đệ quy. Sơ đồ 1 Giải bài toán quay lui tìm 1 nghiệm Khởi trị v v thoả P repeat if v thoả Q then begin Ghi nhận nghiệm exit Sơ đồ 2 Giải bài toán quay lui tìm 1 nghiệm Khởi trị v v thoả P repeat if v thoả Q then begin Ghi nhận nghiệm exit Sáng

TỪ KHÓA LIÊN QUAN
TAILIEUCHUNG - Chia sẻ tài liệu không giới hạn
Địa chỉ : 444 Hoang Hoa Tham, Hanoi, Viet Nam
Website : tailieuchung.com
Email : tailieuchung20@gmail.com
Tailieuchung.com là thư viện tài liệu trực tuyến, nơi chia sẽ trao đổi hàng triệu tài liệu như luận văn đồ án, sách, giáo trình, đề thi.
Chúng tôi không chịu trách nhiệm liên quan đến các vấn đề bản quyền nội dung tài liệu được thành viên tự nguyện đăng tải lên, nếu phát hiện thấy tài liệu xấu hoặc tài liệu có bản quyền xin hãy email cho chúng tôi.
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.