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

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

Đ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

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

Mục lục

  • Slide 1

  • Các nội dung chính

  • 1. Giới thiệu

  • 1. Giới thiệu

  • 2. Các giải thuật tìm kiếm phần tử

  • Tìm kiếm bằng so sánh

  • Tìm kiếm tuần tự

  • Tìm kiếm tuần tự

  • Tìm kiếm nhị phân

  • Tìm kiếm nhị phân

  • 3. Tìm kiếm chuỗi con

  • Giới thiệu bài toán

  • Giải thuật tìm kiếm thô

  • Giải thuật tìm kiếm thô

  • Xin cảm ơn!

Tài liệu cùng người dùng

Tài liệu liên quan