Giải bài toán tồn tại bằng lập trình

Một phần của tài liệu Bài 2: Bài toán đếm và bài toán tồn tại tổ hợp doc (Trang 29 - 30)

Để trả lời câu hỏi “có hay không có cấu hình?” người ta phải chọn lựa một trong hai hướng: hoặc cố gắng tìm cách chỉ ra một cấu hình, hoặc cố gắng chứng minh cấu hình

đó không tồn tại. Tuy nhiên tình huống thường gặp là nếu hướng này gặp khó khăn thì hướng kia cũng vậy. Nếu trước đây con người gặp bế tắc vì chỉ dựa vào sức mình để

tính toán, chứng minh, ..., thì bây giờ người ta đã nghĩ đến sự hỗ trợ của máy tính. Theo cách này, thay vì những giải pháp truyền thống của suy luận toán học, người ta xây dựng một thuật toán cho phép “vét cạn” các cấu hình và thực thi nó bằng một chương trình viết trên máy tính. Lời giải của bài toán sẽ nhận được từ kết quả chạy chương trình: nếu trong quá trình chạy, chương trình đưa ra được một cấu hình nào

đấy thì sự tồn tại của cấu hình được khẳng định, trái lại, nếu kết thúc chương trình mà ta không nhận được cấu hình nào thì việc không có cấu hình được chứng minh. Lịch sử toán học để lại nhiều bài toán khó thuộc lĩnh vực bài toán tồn tại mà quá trình tìm kiếm lời giải kéo dài hàng thế kỷ và nhiều bài toán loại này cuối cùng đã được giải quyết bằng sự hỗ trợ của máy tính.

Bằng việc lập trình cho máy tính, ta có thể tìm kiếm lời giải đồng thời theo cả hai hướng: khẳng định hoặc phủđịnh việc có cấu hình. Chẳng hạn trong trò chơi xếp chữ,

ta có thể viết một chương trình duyệt tất cả các cách xếp và kiểm tra mỗi cách xếp

được duyệt. Chương trình kết thúc khi tìm thấy một cách xếp thỏa mãn điều kiện đã nêu hoặc khi duyệt hết các cách xếp.

Khó khăn chính của phương pháp này là số cấu hình phải duyệt thường rất lớn, vượt quá khả năng chờđợi của con người mặc dù có máy tính hỗ trợ. Đấy là chưa kể những bài toán khó thường là những bài toán phải xét trên những tập hợp vô hạn (chẳng hạn tập số nguyên). Trong những trường hợp này, người ta phải dẫn bài toán đã cho về

những bài toán mà việc duyệt là hữu hạn và điều này không phải lúc nào cũng dễ dàng. Hiện nay, bên cạnh những giải pháp truyền thống của suy luận toán học, phương pháp lập trình để giải các bài toán tổ hợp là không thể bỏ qua, nó giúp con người mở rộng

được diện giải quyết những bài toán tổ hợp vốn rất đa dạng mà nhiều bài toán không thể giải được bằng các suy luận thông thường.

Mục dưới đây trình bày hai bài toán tồn tại nổi tiếng trên thế giới, sau một thời gian dài tìm kiếm lời giải, cuối cùng đã được giải quyết bằng sự hỗ trợ của máy tính.

Một phần của tài liệu Bài 2: Bài toán đếm và bài toán tồn tại tổ hợp doc (Trang 29 - 30)

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

(36 trang)