1. Trang chủ
  2. » Công Nghệ Thông Tin

Ngôn ngữ lập trình C++_Chuong13_GiaiThuatTimKiem_part pdf

15 214 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 90,18 KB

Nội dung

Phần 3: Cấu trúc dữ liệu và Giải thuật Ch ng 13: Các gi i thu t tìm ki mươ ả ậ ế 1Chương 12: Các Giải thuật Tìm Kiếm Các nội dung chính 1. Gi i thi uớ ệ 2. Các gi i thu t tìm ki m ph n tả ậ ế ầ ử 3. Các gi i thu t tìm ki m chu i conả ậ ế ỗ 2Chương 12: Các Giải thuật Tìm Kiếm 1. Giới thiệu • Bài h c này s trình b y m t s gi i ọ ẽ ầ ộ ố ả thu t tìm ki m cho hai bài toán tìm ậ ế ki m c b n: ế ơ ả – Th nh t, là bài toán tìm m t ph n t ứ ấ ộ ầ ử trong m t dãy ph n t cho tr c theo m t ộ ầ ử ướ ộ khoá tìm ki m ế – Th hai, là tìm s xu t hi n c a m t chu i ứ ự ấ ệ ủ ộ ỗ con trong m t chu i cho tr cộ ỗ ướ 3Chương 12: Các Giải thuật Tìm Kiếm 1. Giới thiệu • V i bài toán th nh t, có hai chi n l c tìm ớ ứ ấ ế ượ ki m là tìm ki m b ng cách so sánh hay tìm ế ế ằ ki m tr c ti p d a vào giá tr khoá c n tìmế ự ế ự ị ầ • V i bài toán th hai cũng có nhi u gi i thu t ớ ứ ề ả ậ khác nhau, t gi i thu t tìm ki m đ n gi n ừ ả ậ ế ơ ả (còn g i là tìm ki m thô), cho đ n các gi i ọ ế ế ả thu t khá ph c t p nh c a Knuth-Morris-ậ ứ ạ ư ủ Pratt và c a Boyer-Mooreủ Chương 12: Các Giải thuật Tìm Kiếm4 2. Các giải thuật tìm kiếm phần tử • Đ t bài toán:ặ – Đ đ n gi n cho vi c trình b y ý t ng các gi i ể ơ ả ệ ầ ưở ả thu t, ta s ch n bài toán d ng đ n gi n nh t ậ ẽ ọ ở ạ ơ ả ấ nh sau: Cho m t dãy N s A = (a0, a1,…, aN-1) và ư ộ ố giá tr c n tìm K (khoá tìm ki m). Yêu c u tìm v trí ị ầ ế ầ ị m t ph n t có giá tr b ng K. ộ ầ ử ị ằ • Có 2 chi n l c tìm ki m:ế ượ ế – Tìm ki m b ng cách so sánhế ằ – Tìm ki m d a tr c ti p vào giá tr khóaế ự ự ế ị Chương 12: Các Giải thuật Tìm Kiếm5 Tìm kiếm bằng so sánh • Ý t ng chung: t khóa tìm ki m K, ta ch a bi t ưở ừ ế ư ế đ c v trí c a ph n t c n tìm, nên ti n hành so ượ ị ủ ầ ử ầ ế sánh K v i l n l t các ph n t trong dãy c n ớ ầ ượ ầ ử ầ tìm cho đ n khi ra k t qu (ho c tìm th y ho c ế ế ả ặ ấ ặ không tìm th y)ấ • Có 2 lo i gi i thu t tìm ki m theo cách này:ạ ả ậ ế – Tìm ki m tu n t (Sequential Search)ế ầ ự – Tìm ki m nh phân (Binary Search)ế ị Chương 12: Các Giải thuật Tìm Kiếm6 Tìm kiếm tuần tự • Ý t ng gi i thu t:ưở ả ậ – Đ tìm ph n t b ng K trong dãy N s A = ể ầ ử ằ ố (a0, a1,…, aN-1), ti n hành so sánh K v i ế ớ l n l t các ph n t trong dãy, cho đ n khi:ầ ượ ầ ử ế • Ho c tìm th y ph n t ai = K, thì tr v v trí i ặ ấ ầ ử ả ề ị c n tìmầ • Ho c đã so sánh v i toàn b các ph n t c a ặ ớ ộ ầ ử ủ dãy nh ng v n không th y, thì tr v k t qu ư ẫ ấ ả ề ế ả không tìm th y.ấ Chương 12: Các Giải thuật Tìm Kiếm7 Tìm kiếm tuần tự • Cài đ t hàmặ Chương 12: Các Giải thuật Tìm Kiếm8 int SequentialSearch(int A[], int N, int K) { int i=0; while (i<N && A[i] != K) i++; if (i<N) return i; //Tìm thấy return -1; //Không tìm thấy } Tìm kiếm nhị phân • Ý t ng gi i thu t:ưở ả ậ – Đ tìm ph n t b ng K trong dãy N s A = (a0, a1,…, aN-ể ầ ử ằ ố 1), thì gi i thu t này có m t yêu c u là dãy A đã đ c s p ả ậ ộ ầ ượ ắ x p, gi s là theo chi u tăng d n. Các b c c a gi i ế ả ử ề ầ ướ ủ ả thu t đ quy này nh sau:ậ ệ ư • So sánh K v i ph n t am gi a dãy (m=N/2). Có 3 kh năng ớ ầ ử ở ữ ả x y ra:ả – N u K = am thì tr v v trí tìm th y mế ả ề ị ấ – N u K < am thì tìm K trong dãy (a0,a1,…,am-1)ế – Trái l i, thì tìm K trong dãy (am+1,am+2,…,aN-1)ạ • Đi m d ng: khi tìm th y ho c khi dãy không còn ph n t nào ể ừ ấ ặ ầ ử thì tr v k t qu không tìm th y.ả ề ế ả ấ Chương 12: Các Giải thuật Tìm Kiếm9 Tìm kiếm nhị phân • Cài đ t hàmặ Chương 12: Các Giải thuật Tìm Kiếm10 int BSearch(int K, int A[], int b, int e) { if (b>e) return -1; //Không tìm thấy int m= (b+e)/2; if (K==A[m]) return m; //Tìm thấy else if (K<A[m]) return BSearch(K, A, int b, m-1); else return BSearch(K, A, m+1,e); } int BinarySearch(int K, int A[], int N){ return BSearch(K,A,0,N-1); } . thu t tìm ki m chu i conả ậ ế ỗ 2Chương 12: Các Giải thuật Tìm Kiếm 1. Giới thiệu • Bài h c này s trình b y m t s gi i ọ ẽ ầ ộ ố ả thu t tìm ki m cho hai bài toán tìm ậ ế ki m c b n: ế ơ ả – Th. Giải thuật Tìm Kiếm4 2. Các giải thuật tìm kiếm phần tử • Đ t bài toán:ặ – Đ đ n gi n cho vi c trình b y ý t ng các gi i ể ơ ả ệ ầ ưở ả thu t, ta s ch n bài toán d ng đ n gi n nh t ậ ẽ ọ ở ạ

Ngày đăng: 10/07/2014, 08:20

TỪ KHÓA LIÊN QUAN

w