11.07.2015 Views

Toán 2 - lib - Đại học Thăng Long

Toán 2 - lib - Đại học Thăng Long

Toán 2 - lib - Đại học Thăng Long

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

1.1. Khái niệm Thuật toán theo nghĩa trực giácBài toán tìm kiếm tổng quát được mô tả như sau: xác định vị trí của phầntử x trong một bảng liệt kê các phần tử phân biệt a 1 , a 2 , . . . , a n hoặc chỉ rarằng nó không có mặt trong bảng liệt kê đó. Lời giải của bài toán trên là vị trí icủa số hạng a i trong bảng liệt kê nếu a i x, và là 0 nếu x không có mặt trongbảng liệt kê.Thuật toán để giải bài toán trên rất đơn giản. Nó có tên là thuật toán tìmkiếm tuyến tính hay tìm kiếm tuần tự. Đầu tiên ta so sánh x với a 1 . Nếux a 1 thì kết quả trả về là vị trí 1. Khi x a 1 thì ta so sánh x với a 2 . Nếux a 2 thì kết quả trả về là vị trí 2. Khi x a 2 thì ta so sánh x với a 3 . Tiếptục quá trình này bằng cách so sánh x với từng số hạng a i của bảng liệt kê chotới khi x xuất hiện tại một vị trí nào đó ta gặp hoặc tất cả các phần tử của bảngđã được so sánh mà vẫn không gặp x. Giả mã của thuật toán này được trình bàynhư trong thuật toán 2.Thuật toán 2 Tìm kiếm tuyến tính.Đầu vào: Số x, dãy n số phân biệt a 1 , a 2 , . . . , a n .Đầu ra: Vị trí vitri i của x trong dãy hoặc vitri 0 nếu x không xuất hiện.1: i : 1.2: Trong khi i ¤ n và x a i Thực hiện3: i : i 1.4: Kết thúc Trong khi5: Nếu i ¤ n thì6: vitri : i.7: không thì8: vitri : 0.9: Kết thúc Nếu10: Kết quả trả về là vitri.Thuật toán trên hoàn toàn có thể được áp dụng cho mọi dãy gồm n số phânbiệt a 1 , a 2 , . . . , a n . Nhưng nhược điểm của nó là ứng với mọi dãy cụ thể,trong trường hợp xấu nhất, số phép so sánh đúng bằng độ lớn n của dãy số dữliệu đầu vào. Bây giờ ta xem xét một thuật toán tìm kiếm khác, có số phép sosánh trong trường hợp xấu nhất ít hơn, nhưng chỉ áp dụng cho các dãy gồm n sốphân biệt được sắp tăng dần hoặc giảm dần. Thuật toán thứ hai này được gọi làthuật toán tìm kiếm nhị phân. Đầu tiên ta so sánh x với phần tử nằm ở “điểmgiữa” (phần tử ở vị trí 1 nt u) của bảng liệt kê. Nếu x bằng phần tử này thì2vị trí của x trong bảng đã được xác định. Nếu không, do bảng đã được sắp tăngdần hoặc giảm dần nên x chỉ có thể rơi vào một trong hai nửa của bảng (bảngcon). Miền tìm kiếm đã được hạn chế chỉ còn một nửa. Tiếp tục so sánh x vớiphần tử ở giữa và cứ như vậy, ta sẽ có được vị trí của x hoặc biết được x khôngnằm trong bảng đã cho.Bộ môn Toán - ĐẠI HỌC THĂNG LONG 5

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!