slike bài giảng cấu trúc dữ liệu và giải thuật - đỗ bích diệp chương 8 tìm kiếm – phần ii

33 422 0
slike bài giảng cấu trúc dữ liệu và giải thuật - đỗ bích diệp chương 8 tìm kiếm – phần ii

Đ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

1 Chương VII: Tìm kiếm-II Tìm kiếm–PhầnII z Nội dung – Các dạng cây đặcbiệtsử dụng trong tìm kiếm z Cây tìm kiếm đa nhánh z Cây 2:3 z Cây nhị phân tìm kiếmtối ưu – CấutrúcBảng băm (Hash Table) – Tìm kiếmxâumẫu (Pattern Matching) 2 Cây 2-3 z Cây tìm kiếm đặcbiệt – Một nút nhánh có 2 hoặc3 con – Tấtcả các đường đitừ nút gốctới nút lá đềucóđộ dài bằng nhau – Cây có mộtnútlàtrường hợp đặcbiệtcủacây2-3 z Cấutrúccủa các nút trong cây 2-3 – Chỉ có nút lá chứa các giá trị (Các phầntử ), các nút lá chứa các giá trị tăng dần(xéttừ trái sang phải) – Các nút nhánh chứa thông tin vềđường đihỗ trợ cho việc tìm kiếm các giá trị Cây 2-3 z Quy cách của nút lá trong cây 2-3 z Quy cách của nút nhánh củacây VALUETYPE LPTR LDATA MPTR MDATA RPTRTYPE 3 Cây2-3 –Vídụ 1 : 3 1 11 7:11 6:11 76 3 Tìm kiếm trên cây 2-3 Function SEARCH-2-3(T,X) 1. p:= T; 2. while TYPE(p) =1 do begin if X <= LDATA(p) then p:= LPTR(p); else if X <= MDATA(p) then p:= MPTR(p); else if RPTR(p) < > NULL then p:= RPTR(p) else SEARCH-2-3 := NULL; end 3. {Tìm được đến 1 nút lá} if VALUE(p) = X then SEARCH-2-3 := p; else SEARCH-2-3 := NULL; 4. return 4 Cây 2-3 : Bổ sung z Bổ sung phải xét 4 trường hợp – Cây ban đầurỗng – Cây ban đầuchỉ có 1 nút: Sau khi bổ sung, cây có thêm một nút nhánh 4: 9 9 44 Cây ban đầurỗng, bổ sung 4 Cây ban đầucó1 nút, bổ sung thêm 9 Cây 2-3 : Bổ sung – Cây ban đầucónhiều nút, nút mới đượcbổ sung thành con củamột nút hiện đang có 2 con: So sánh giá trị của nút mớivới 2 nút con để tìmravị trí đúng 4: 9 9 4 4: 7 9 4 7 Trướckhibổ sung Sau khi bổ sung 7 5 Cây 2-3: Bổ sung – Nút mới đượcbổ sung làm con củamộtnútN đãcó3 con: Tạomột nút nhánh mớiN2 –sẽ là nút anh em bên phảicủaN, lấy 2 con cựcphảicủaN làmcon củaN2. Việctáchcóthể sẽ diễnraở các mức cha củaN nữa. 4: 7 9 4 7 4: 7 9 4 7 11 4: 7 4 7 9: 11 119 7:11 Cây 2-3 : Bổ sung 3: 6 3 6 7: 11 12 7 11 13:16 13 16 6: 12 3: 6 3 6 7: 11 11 7 8 13:16 13 16 6: 12 12 Trướckhibổ sung Ngay sau khi bổ sung 8 6 Cây 2-3: Bổ sung 3: 6 3 6 7: 8 11 7 8 13:16 13 16 6: 12 12 11:12 Sau khi tách nút lần1 Cây 2-3: Bổ sung 3: 6 3 6 7: 8 11 7 8 13:16 13 16 6: 8 12 11:12 12: 16 8: 16 Sau khi tách nút lần2 7 Các dạng cây khác trong tìm kiếm K 1 K 2 K 3 keys < K 1 K 1 <= keys < K 2 K 2 <= keys < K 3 K 3 <= keys Mộtcâydạng cây tìm kiếm đanhánh Các dạng cây khác trong tìm kiếm z Cây tìm kiếm đa nhánh(Multi-way Tree) – Là một cây có bậcbấtkỳ nhưng có tính chấtthứ tự tương tự như cây nhị phân – Mỗi nút trong cây có chứa m-1 khóa và m con trỏ trỏđến các cây con – Các giá trị xuấthiện trong một cây con đượctrỏ bởi con trỏ p z Nhỏ hơngiátrị khóa bên phảicủap z Lớnhơnhoặcbằng gía trị khóa bên trái p 8 Các dạng cây khác trong tìm kiếm – Ví dụ cây tìm kiếm đa nhánh 50 100 150 35 45 85 95 125 135 175 60 70 90 110 120 75 Các dạng cây khác trong tìm kiếm z Cây B – Cây tìm kiếm đa nhánh cân bằng – Một cây tìm kiếm đa nhánh cân bằng bậcm có các đặctrưng sau z Gốccủacâylàmộtnútláhoặccóítnhất2 con z Tấtcả các nút nhánh củacây(trừ nút gốc) có từ m/2 đến m con z Các nút lá có từ m/2 -1 đếnm-1 giátrị khóa trong đó. z Đường đitừ nút gốctớimộtnútlábấtkỳđềucóđộ dài như nhau 9 Các dạng cây khác trong tìm kiếm 42 16 20 58 76 81 93 11 14 17 18 19 24 21 22 23 45 52 63 65 74 78 79 85 87 94 97 B- Tree vớim = 5 Cây nhị phân tìm kiếmtối ưu – Cây nhị phân tìm kiếmtối ưu: z Là cây nhị phân tìm kiếm có tính đếntrường hợpcác khóa khác nhau trong mộttậpcóxácsuấtxuấthiện khác nhau z Khóa xuấthiệnnhiều thì tìm nhanh hơn Ù đường đitừ đỉnh đếnvị trí củakhóacóđộ dài ngắnhơn z Khái niệm: Giá trị của cây T ∑ = = n i ii hpTC 1 *)( 10 Cây nhị phân tìm kiếmtối ưu z Ví dụ: Cây nhị phân tìm kiếm ứng với3 khóak 1 < k 2 < k 3 vớixácsuấtp 1 = 1/7; p 2 = 2/7, p 3 = 4/7 k3 k2 k1 C = 1 * 1/7 + 2*2/7 + 3*4/7 = 17/7 k3 k2 k1 C= 1*2/7 + 2 * 1/7 + 2*4/7 =12/7 Cây nhị phân tìm kiếmtối ưu z Cây nhị phân tìm kiếmtối ưu: Là cây nhị phân tìm kiếm ứng vớidãykhóak 1 < k 2 < ….< k n có xác suấtxuấthiện lầnlượtlàp 1 , p 2 , …., p n mà cây đócógiátrị nhỏ nhất z Ví dụ: Cây nhị phân tìm kiếmtối ưu ứng với3 khóak 1 < k 2 < k 3 vớixácsuấtp 1 = 1/7; p 2 = 2/7, p 3 = 4/7 k2 k1 k3 [...]... khớp xảy ra n-m lần Vị trí khớp xác định tại n-m+1 Số các phép so sánh m*(n-m+1) Giải thuật Knuth-Morris-Pratt (KMP) – – Giải thuật KMP so khớp mẫu với văn bản từ trái sang phải theo cơ chế giống giải thuật đơn giản Giải thuật KMP xác định phép đẩy thông minh hơn giải thuật cơ bản 25 Giải thuật Knuth-Morris-Pratt (KMP) Giả sử có xâu P có độ dài m – – – – Một xâu con P[i j] của P là một phần trong P... tách kỹ thuật gấp 123 + 456 + 789 = 13 68 ⇒ 3 68 321 + 456 + 987 = 1764 ⇒ 764 19 Giải quyết đụng độ – Các kỹ thuật giải quyết đụng độ Phương pháp móc xích: Mỗi phần tử trong bảng băm là một danh sách móc nối chứa các phần tử Phương pháp địa chỉ mở : Tìm trong bảng băm theo một qui tắc nào đó để xác định một ô trống lưu phần tử mới nếu có đụng độ xảy ra – – Thử tuyến tính Băm lại Giải quyết đụng độ -Phương... + 1; if (j = m ) then output(i-m); i = i + 1; end Giải thuật Knuth-Morris-Pratt (KMP) T a b a c a a b a c c a b a c a b a a b b 1 2 3 4 5 6 P a b a c a b 7 a b a c a b 8 9 10 11 12 a b a c a b 13 j 0 1 2 3 4 5 P[j] a b a c a b p(j) 0 0 1 0 1 a b a c a b 14 15 16 17 18 19 2 a b a c a b 28 Giải thuật Boyer-Moore Giải thuật Boyer-Moore’s thực hiện dựa trên hai điểm sau: – – So sánh P với một xâu con của... nhị phân tìm kiếm tối ưu – Bài toán xây dựng cây tối ưu Đầu vào: Dãy khóa k1 < k2 < ….< kn có xác suất xuất hiện lần lượt là p1, p2, …., pn Đầu ra: Xác định cây nhị phân tìm kiếm tối ưu xác lập được trên n nút tương ứng với n khóa đã cho Cây nhị phân tìm kiếm tối ưu Nhận xét – Cây T là cây nhị phân tìm kiếm tối ưu gồm n khóa , kr là gốc của cây Cây T1,r-1 gồm r-1 khóa đầu tiên, cây Tr+1,n gồm n-r khóa... 2000/3 h(k)=k mod 701 Hàm băm – h(k) = ⎣m*(k*A mod 1)⎦ – A là một giá trị nằm trong khoảng 0-1 Theo Knuth đề xuất A≈ – – ( ) 5 − 1 / 2 = 0.6 180 33 988 7 Nhân k với A, lấy phần sau dấu phẩy Nhân phần sau dấu phẩy đó với m , rồi lấy phần nguyên Ví dụ :k=123456,m=10000,A=0.6 18 h(k)=floor(10000*(123456*0.6 18 mod 1)) =floor(10000*(76300.004151 mod 1)) =floor(10000*0.0041151… )=41 18 Hàm băm h(k) = số tạo bởi... sang phải dựa trên hai kỹ thuật Sử dụng ký tự tồi (Bad- character heuristic) Sử dụng hậu tố tốt (Good suffix heuristic) Giải thuật Boyer-Moore Ví dụ: Giải thuật Boyer-Moore dựa trên kỹ thuật sử dụng ký tự tồi a p a t t e r n 1 r i m a t c h i n g 3 t h m r i 5 t h m r i 2 r i t h m a l g o r i t h m 11 10 9 8 7 r i 4 r i t h m t h m t h m 6 r i t h m 29 Giải thuật Boyer-Moore – Khi có một vị trí không... trữ phần tử dữ liệu Tìm kiếm dựa trên bảng băm Địa chỉ Sarah Trapp 111060 002 Sarah Trapp Vu Nguyen 007 Ray Black 100 John Adams 005 Vu Nguyen 102002 John Adams 107095 Harry Lee 005 Khóa 001 Hàm băm 100 002 16 Tìm kiếm dựa trên bảng băm – Hàm băm h(k) thường có độ phức tạp là O(1) h: U {0, 1, , m-1} Một phần tử có khóa k sẽ được tham chiếu vào một ô được đánh chỉ số là h(k) có giá trị từ 0-> m-1 trong... địa chỉ mở – h(k, i ) = (k mod 11 + i ) mod 11 21 Giải quyết đụng độ - Phương pháp địa chỉ mở – Băm lại ( Double Hashing) h(k,i) = (h1(k) + i*h2(k)) mod m (i = 0, 1,…, m-1) Thông thường m được chọn là số nguyên tố h1 = k mod m ; h2 = 1+ k mod m’ với m’ < m và m’ rất gần với m Giải quyết đụng độ - Phương pháp địa chỉ mở – h(k,i) = (k mod 11 + i (1+k mod 9)) mod 11 22 Tìm kiếm xâu mẫu Bài toán – Xâu Một... phải 1 vị trí và tiếp tục so khớp với văn bản theo cách thức trên – – Độ phức tạp của giải thuật trong trường hợp xấu nhất O(m*n) Giải thuật đơn giản (Brute-Force alg.) T 0 0 0 0 P 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 1 Khớp 1 Khớp 0 0 0 1 0 0 0 1 Khớp 24 Giải thuật đơn giản – Trường hợp tồi nhất T = aaaaaaaaa .aaaab ( n ký tự) P = aa aab ( m-1 ký tự a và 1 ký tự b) Vị... 26 Giải thuật Knuth-Morris-Pratt (KMP) Khi thực hiện KMP cần tiền xử lý xâu mẫu P để xác định sự xuất hiện của các prefix trong mẫu Xác định hàm Prefix - p(j) : là hàm xác định độ dài của prefix dài nhất của P[0 j] mà prefix này đồng thời là suffix của P[1 j] Giải thuật KMP dựa trên giải thuật cơ bản , tuy nhiên nếu có một vị trí không khớp được xác định tại P[j] thì sẽ đẩy một khoảng p(j − 1) Giải thuật . 1 Chương VII: Tìm kiếm- II Tìm kiếm PhầnII z Nội dung – Các dạng cây đặcbiệtsử dụng trong tìm kiếm z Cây tìm kiếm đa nhánh z Cây 2:3 z Cây nhị phân tìm kiếmtối ưu – CấutrúcBảng băm. trong tìm kiếm – Ví dụ cây tìm kiếm đa nhánh 50 100 150 35 45 85 95 125 135 175 60 70 90 110 120 75 Các dạng cây khác trong tìm kiếm z Cây B – Cây tìm kiếm đa nhánh cân bằng – Một cây tìm kiếm. thuậttrêncácđoạn để xác định địa chỉ – Ví dụ: Khóa = 123|456| 789 kỹ thuậttách kỹ thuậtgấp 123 + 456 + 789 = 13 68 321 + 456 + 987 = 1764 ⇒ 3 68 ⇒ 764 20 Giải quyết đụng độ – Các kỹ thuậtgiảiquyết đụng độ z Phương

Ngày đăng: 24/10/2014, 15:02

Từ khóa liên quan

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

Tài liệu liên quan