Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Đệ quy và phép khử đặc biệt
MIỄN PHÍ
Số trang
5
Kích thước
198.4 KB
Định dạng
PDF
Lượt xem
851

Đệ quy và phép khử đặc biệt

Nội dung xem thử

Mô tả chi tiết

Một vài phương pháp khử đệ quy đặc biệt

Trần Thành Thắng

Một số bài toán giải bằng phương pháp đệ quy cho ta lời giải rất gọn và có thể ra được lời

giải. Những bài toán giải bằng đệ quy truyền thống như: Tháp HÀ - NỘI, bài toán 8-HẬU,

bài toán MÃ ĐI TUẦN,... Tuy nhiên phương pháp đệ quy khi áp dụng chỉ giải được những

bài toán với cấu trúc dữ liệu nhỏ thường là với N < 30 (hay N x N < 30 x 30). Vì vậy bài

toán đặt ra là có thể giải quyết những bài toán như trên với dữ liệu lớn được hay không? Ví

dụ như: bài toán MÃ ĐI TUẦN và THÁP HÀ-NỘI với bàn cờ cỡ 80x80 hay không? Xin

trình bày một số phương pháp khử đệ quy để giải quyết những bài toán đệ quy truyền

thống.

1. Bài toán MÃ ĐI TUẦN:

Trên bàn cờ NxN (với 5 ≤ N ≤ 100) đặt một quân mã tại một vị trí bất kỳ. Hãy tìm cách

cho mã nhảy theo luật nhảy của quân mã và nhảy hết tất cả các ô trên bàn cờ đó, mỗi ô chỉ

nhảy vào đúng một lần.

2. Phân tích và xây dựng chương trình:

Khi quân mã nhảy hết tất cả các ô trên bàn cò, và tại ô cuối cùng quân mã có thể nhảy về vị

trí của ô xuất phát chính là một chu trình Euler (Nhảy qua tấtt cả các ô, mỗi ô đúng một lần

và nhảy về vị trí xuất phát). Còn nếu vị trí cuối cùng không thể nhảy về vị trí xuất phát

được chính là một đường đi Euler. Ta thử tìm cách bài toán tìm đường đi Euler qua tất cả

các ô của bàn cờ theo luật nhảy của quân mã, mỗi ô chỉ nhảy vào một lần

a. Phương pháp đệ quy truyền thống:

Với phương pháp đệ quy cho bài mã đi tuần này đã có nhiều bài báo đề cập và có nhiều

cảii tiến như số 6-2003, số 7-2003. Tuy nhiên chỉ giải quyết được với N < 30. Xin nhắc lại

sơ lược phương pháp truyền thống như sau:

Từ vị trí xuất phát trên bàn cờ NxN ta gán giá trị là 1, theo luật nhảy của quân mã có tối đa

là 8 vị trí kế tiếp để quân mã nhảy tới theo luật nhảy. Ta lần lượt kiểm tra 8 vị trí này xem

vị trí đó có nằm trong bàn cờ hay không, quân mã đã nhảy đến ô này hay chưa nếu chưa

nhảy đến và ô này nằm trong bàn cờ thì nhảy vào ô này. Sau đó dùng đệ quy để tiếp tục

quá trình trên cho đến khi quân mã nhảy hết tất cả các ô.

i. Mô tả:

Ta để ý rằng đáp án của bài toán là mội chuỗi những bước nhảy liên tiếp qua hết tất cả các

ô trên bàn cờ giống như một “đoạn gen” duy nhất gồm nhiền “nhiễm sắc thể” nối tiếp

nhau. Các nhiễm sắc thể tức là các ô của bàn cờ. Hai nhiễm sắc thể liên tiếp được nối với

nhau nếu thỏa mãn luật nhảy của quân mã. Như vậy ta có thể đưa bài toán về một bài toán

khác là từ những 'nhiễm sắc thế” đơn lẻ hãy tìm cách ghép nối chúng lại với nhau sao cho

tạo thàn một 'đoạn gen' duy nhất.

Ví dụ: Ta xem đáp án của bàn cờ 5x5 và “đoạn gen” hoàn chỉnh:

Tải ngay đi em, còn do dự, trời tối mất!