1. Trang chủ
  2. » Cao đẳng - Đại học

Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 7: Giải thuật tìm kiếm - Trường Đại học Công nghiệp Thực phẩm Tp. Hồ Chí Minh

7 11 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 95,05 KB

Nội dung

Cách thức làm như sau: Bắt đầu từ bản ghi thứ nhất, lần lượt so sánh khoá tìm kiếm với tương ứng của các bản ghi trong bảng cho đến khi tìm thấy bản ghi mong muốn hoặc đã hết danh [r]

(1)

Chương 7: Gii thut tìm kiếm 1 Bài tốn tìm kiếm

* Bài tốn tìm kiếm được phát biểu như sau: Cho một bảng gồm n bản ghi r1, r2 , , rn; ri ( 1<= i <=n ) tương ứng với một khố ki Hãy tìm bản ghi có giá trị khoá tương ứng bằng x cho trước.

* Gọi x khố tìm kiếm hay giá trị tìm kiếm Cơng việc tìm kiếm sẽ hồn thành có một tình huống sau xảy ra:

1- Tìm ghi có giá trị khố tương ứng x Lúc ta nói phép tìm kiếm được thoả

2- Khơng tìm ghi có giá trị khố x Khi ta nói phép tìm kiếm khơng thoả.

Sau phép tìm kiếm khơng thoả có yêu cần bổ sung ghi có khố x vào

bảng Giải thuật gọi “ Tìm kiếm có bổ sung”.

Khố ghi đặc điểm nhận biết ghi tìm kiếm, ta coi đại diện ghi giải

(2)

2 Tìm kiếm ( Sequential searching ) 2.1 Phương pháp

Đây giải thuật đơn giản, cổ điển

Cách thức làm sau: Bắt đầu từ ghi thứ nhất, so sánh khố tìm kiếm với tương ứng ghi bảng tìm thấy ghi mong muốn hết danh sách mà chưa thấy

* Giải thuật:

Cho dãy khoá K có n phần tử Tìm xem có khố x, có đưa thứ tự khố đó, khơng có đưa giá trị Trong giải thuật sử dụng khoá phụ kn+1=x

Function SequenceSearch(k,n,x) { Khởi đầu }

i:=1; k[n+1]:=x;

2 {Tìm kiếm dãy} While k[i] <> x Do i:=i+1; { Khơng tìm thấy }

(3)

3 Tìm kiếm nhị phân (Binary searching ) 3.1 Phương pháp

* Phương pháp tìm kiếm thực dãy khóa đã xếp, có nội dung như sau:

- Tương tự như tra tìm từ trong từ điển hoặc danh bạ điện thoại Chỉ khác tra cứu ta chọn từ ngẫu nhiên, cịn tìm kiếm nhị phân ln chọn khố “ở giữa” dẫy khố. - Giả sử có dãy khố kL, , kR thì khố giữa km với

(4)

+ Tìm kiếm kết thúc nếu: x=km

+ Nếu x<km tìm kiếm thực tiếp với kL, , km-1 với cách tương

tự.

+ Nếu x>km tìm kiếm thực tiếp với km+1, , kR với cách tương tự.

Qúa trình tìm kiếm kết thúc tìm thấy một khố mong muốn dãy khố rỗng (khơng tìm thấy ).

* Giải thuật:

Cho dãy K gồm n khoá, xếp theo thứ tự tăng dần Tìm khố có giá trị =x.

Dùng biến L, R, m: số đầu, số cuối, số khố k.

Nếu tìm thấy cho số khố đó, khơng tìm thấy cho 0.

Function BinarySearch(K,n,x) 1 { Khởi tạo }

L:=1; R:=n; 2 { Tìm kiếm } While L<= R Do Begin

(5)

4 { So sánh }

If x<k[m] then R:=m-1

Else IF x>k[m] then L:=m+1 Else Return (m);

End; {End of While} 5 { Khơng tìm thấy } Return (0)

* Giải thuật viết dạng đệ quy sau:

L, r số đầu, số cuối dãy K, biến nguyên Loc để đưa số ứng với khoá cần tìm, khơng tìm thấy Loc =0.

Function BinarySearch(L,R,x) If L>R then Loc:=0

Else

begin m:=(L+R) div 2; If x<k[m] then

Loc:=BinarySearch(L,m-1,x) Else If x>k[m] then

Loc:=BinarySearch(m+1,R,x) Else Loc:=m;

(6)

3.2 Đánh giá

Phép tính tích cực phép so sánh L<= r Cmin=1

Người ta tính Cmax=[log2n ]

Ttb=O(log2n )

Tìm kiếm nhị phân tốt tìm kiếm tuần tự dãy k phải sắp.

4 Cây nhị phân tìm kiếm

4.1 Định nghĩa nhị phân tìm kiếm

* Cây nhị phân tìm kiếm ứng với n khoá k1, k2, , kn là nhị phân mà nút định danh khố khoá cho Đối với nút tính chất sau ln thoả mãn:

- Mọi khoá thuộc trái nút nhỏ hơn khố ứng với nút đó.

- Mọi khoá thuộc phải nút lớn hơn khố ứng với nút đó.

(7)

4.2 Giải thuật tìm kiếm

* Đối với nhị phân để tìm kiếm xem khố x có khơng? Ta thực sau:

So sánh x với khố gốc tình sau xuất hiện:

Ngày đăng: 01/04/2021, 15:54

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w