Bài giảng Cấu trúc dữ liệu 2
Số trang: 59
Loại file: doc
Dung lượng: 1.20 MB
Lượt xem: 17
Lượt tải: 0
Xem trước 6 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Với kết cấu nội dung gồm 7 bài, bài giảng "Cấu trúc dữ liệu 2" trình bày những nội dung về bảng băm, cấu trúc cây và cây nhị phân, cây nhị phân tìm kiếm, cây nhị phân cân bằng, cây đỏ đen,... Với các bạn đang học chuyên ngành Công nghệ thông tin thì đây là tài liệu tham khảo hữu ích.
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu 2BàigiảngCấutrúcdữliệu2 Bài1:Bảngbăm(HashTable) Bài1:Bảngbăm Sốtiết:4Nộidung 1.1)Bảngbăm 1.2)Địnhnghĩahàmbăm 1.3)Mộtsốphươngphápxâydựnghàmbăm 1.4)CácphươngphápgiảiquyếtđụngđộCácthuậttoántìmkiếmđềudựavàoviệcsosánhgiátrịkhoá(Key)củaphầntửcầntìmvớicácgiátrịkhoátrongtậpcácphầntử,thaotácnày Phụthuộckíchthướccủatậpcácphầntử Thờigiantìmkiếmkhôngnhanhdophảithựchiệnnhiềuphépsosánhcóthể khôngcầnthiết(O(n),O(logn),…)=>Cóphươngpháplưutrữnàochophépthựchiệntìmkiếmvớihiệusuấtcaohơnkhông(độphứctạphằngsố)?1.1) Bảngbăm(HashTable)Vídụ:Giảsửtacómộttậpphầntửgồmcácgiátrị khoábấtkỳđượctổ chứclưu trữ dướidạngbảngchỉ mụcmphầntử như saugọilàbảngtruyxuấttrựctiếp (Directaccesstable) Phầntử cógiátrị khoákđược lưutrữtươngứngtạivịtríthứk trongbảngchỉmục Đểtìmkiếmmộtphầntửnàođó tasẽ dựavàokhoácủanóvàtra trongbảngchỉmục,nếutạivịtrí đócóphầntử thìchínhlàphần tử cầntìm,nếukhôngcóphần tử nàocónghĩalàphầntử cần tìmkhôngcótrongbảngchỉmục Thời gian tìm kiếm là hằng số Hình1.1 O(1)Đâylàdạngbảngbămcơbảna.MôtảdữliệuGiảsử K:tậpcáckhoá(setofkeys) HàmbămHF(k) A:tậpcácđịachỉ(setofaddresses).PMT =Trang1= TậpkhóaK Tậpđịachỉ Hình1.2 ABàigiảngCấutrúcdữliệu2 Bài1:Bảngbăm(HashTable) HF(k): hàmbămdùngđể ánhxạmộtkhoáktừ tậpcáckhoáKthànhmộtđịachỉtươngứngtrongtậpA.b.Cácphéptoántrênbảngbăm Khởitạo(Initialize) Kiểmtrarỗng(Empty) Lấykíchthướccủabảngbăm(Size) Tìmkiếm(Search) Thêmmớiphầntử(Insert) Loạibỏ(Remove) Saochép(Copy) Duyệt(Traverse)c.Phânloạibảngbăm Bảngbămđóng:mỗikhóa ứngvớimộtđịachỉ,thờigiantruyxuấtlàhằng số Bảngbămmở:mộtsốkhóacócùngđịachỉ,lúcnàymỗimụcđịachỉ sẽ là mộtdanhsáchliênkếtcácphầntửcócùngđịachỉ,thờigiantruyxuấtcóthể bịsuygiảmđôichút1.2) ĐịnhnghĩahàmbămLàhàmbiếnđổigiátrịkhoá(số,chuỗi…)thànhđịachỉ,chỉmụctrongbảngbăm Giátrịkhoá Hàmbăm Địachỉ,chỉmụcVídụ:hàmbămbiếnđổikhoádạngchuỗigồmnkítựthành1địachỉ(sốnguyên) int hashfunc( char *s, int n ) { int sum = 0; while( n-- ) sum = sum + *s++; return sum % 256; }Tínhđịachỉcủakhoá“AB”:hashfunc(“AB”,2)131Tínhđịachỉcủakhoá“BA”:hashfunc(“BA”,2)131Khihàmbăm2khoávàocùng1địachỉthìgọilàđụngđộ(Collision)Hàmbămtốtthỏamãncácđiềukiệnsau: Tínhtoánnhanh. Cáckhoáđượcphânbốđềutrongbảng. Ítxảyrađụngđộ.1.3) Mộtsốphươngphápxâydựnghàmbăma.Hàmbămdạngbảngtra:PMT =Trang2=BàigiảngCấutrúcdữliệu2 Bài1:Bảngbăm(HashTable) Hàmbămcóthể tổ chức ở dạngbảngtra(còngọilàbảngtruyxuất)hoặc thôngdụngnhấtlàởdạngcôngthức. Vídụsauđâylàbảngtravớikhóalàbộchữcái,bảngbămcó26địachỉtừ0 đến25.Khóaaứngvớiđịachỉ0,khoábứngvớiđịachỉ1,…,zứngvớiđịa chỉ25. Khoá Địachỉ Khóa Địachỉ Khóa Địachỉ Khóa Địachỉ a 0 h 7 o 14 v 21 b 1 I 8 p 15 w 22 c 2 j 9 q 16 x 23 d 3 k 10 r 17 y 24 e 4 l 11 s 18 z 25 f 5 m 12 t 19 / / g 6 n 13 u 20 / / Hình1.3Hàmbămdạngbảngtrađượctổchứcdướidạngdanhsáchkề.b.Hàmbămsửdụngphươngphápchia Dùngsốdư: h(k)=kmodm klàkhoá,mlàkíchthướccủabảng. vấnđềchọngiátrịm Nếuchọnm=2nthôngthườngkhôngtốtvìh(k)=kmod2n sẽ chọncùngn bitsthấpcủaknênchọnmlànguyêntố(tốt)gần ...
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu 2BàigiảngCấutrúcdữliệu2 Bài1:Bảngbăm(HashTable) Bài1:Bảngbăm Sốtiết:4Nộidung 1.1)Bảngbăm 1.2)Địnhnghĩahàmbăm 1.3)Mộtsốphươngphápxâydựnghàmbăm 1.4)CácphươngphápgiảiquyếtđụngđộCácthuậttoántìmkiếmđềudựavàoviệcsosánhgiátrịkhoá(Key)củaphầntửcầntìmvớicácgiátrịkhoátrongtậpcácphầntử,thaotácnày Phụthuộckíchthướccủatậpcácphầntử Thờigiantìmkiếmkhôngnhanhdophảithựchiệnnhiềuphépsosánhcóthể khôngcầnthiết(O(n),O(logn),…)=>Cóphươngpháplưutrữnàochophépthựchiệntìmkiếmvớihiệusuấtcaohơnkhông(độphứctạphằngsố)?1.1) Bảngbăm(HashTable)Vídụ:Giảsửtacómộttậpphầntửgồmcácgiátrị khoábấtkỳđượctổ chứclưu trữ dướidạngbảngchỉ mụcmphầntử như saugọilàbảngtruyxuấttrựctiếp (Directaccesstable) Phầntử cógiátrị khoákđược lưutrữtươngứngtạivịtríthứk trongbảngchỉmục Đểtìmkiếmmộtphầntửnàođó tasẽ dựavàokhoácủanóvàtra trongbảngchỉmục,nếutạivịtrí đócóphầntử thìchínhlàphần tử cầntìm,nếukhôngcóphần tử nàocónghĩalàphầntử cần tìmkhôngcótrongbảngchỉmục Thời gian tìm kiếm là hằng số Hình1.1 O(1)Đâylàdạngbảngbămcơbảna.MôtảdữliệuGiảsử K:tậpcáckhoá(setofkeys) HàmbămHF(k) A:tậpcácđịachỉ(setofaddresses).PMT =Trang1= TậpkhóaK Tậpđịachỉ Hình1.2 ABàigiảngCấutrúcdữliệu2 Bài1:Bảngbăm(HashTable) HF(k): hàmbămdùngđể ánhxạmộtkhoáktừ tậpcáckhoáKthànhmộtđịachỉtươngứngtrongtậpA.b.Cácphéptoántrênbảngbăm Khởitạo(Initialize) Kiểmtrarỗng(Empty) Lấykíchthướccủabảngbăm(Size) Tìmkiếm(Search) Thêmmớiphầntử(Insert) Loạibỏ(Remove) Saochép(Copy) Duyệt(Traverse)c.Phânloạibảngbăm Bảngbămđóng:mỗikhóa ứngvớimộtđịachỉ,thờigiantruyxuấtlàhằng số Bảngbămmở:mộtsốkhóacócùngđịachỉ,lúcnàymỗimụcđịachỉ sẽ là mộtdanhsáchliênkếtcácphầntửcócùngđịachỉ,thờigiantruyxuấtcóthể bịsuygiảmđôichút1.2) ĐịnhnghĩahàmbămLàhàmbiếnđổigiátrịkhoá(số,chuỗi…)thànhđịachỉ,chỉmụctrongbảngbăm Giátrịkhoá Hàmbăm Địachỉ,chỉmụcVídụ:hàmbămbiếnđổikhoádạngchuỗigồmnkítựthành1địachỉ(sốnguyên) int hashfunc( char *s, int n ) { int sum = 0; while( n-- ) sum = sum + *s++; return sum % 256; }Tínhđịachỉcủakhoá“AB”:hashfunc(“AB”,2)131Tínhđịachỉcủakhoá“BA”:hashfunc(“BA”,2)131Khihàmbăm2khoávàocùng1địachỉthìgọilàđụngđộ(Collision)Hàmbămtốtthỏamãncácđiềukiệnsau: Tínhtoánnhanh. Cáckhoáđượcphânbốđềutrongbảng. Ítxảyrađụngđộ.1.3) Mộtsốphươngphápxâydựnghàmbăma.Hàmbămdạngbảngtra:PMT =Trang2=BàigiảngCấutrúcdữliệu2 Bài1:Bảngbăm(HashTable) Hàmbămcóthể tổ chức ở dạngbảngtra(còngọilàbảngtruyxuất)hoặc thôngdụngnhấtlàởdạngcôngthức. Vídụsauđâylàbảngtravớikhóalàbộchữcái,bảngbămcó26địachỉtừ0 đến25.Khóaaứngvớiđịachỉ0,khoábứngvớiđịachỉ1,…,zứngvớiđịa chỉ25. Khoá Địachỉ Khóa Địachỉ Khóa Địachỉ Khóa Địachỉ a 0 h 7 o 14 v 21 b 1 I 8 p 15 w 22 c 2 j 9 q 16 x 23 d 3 k 10 r 17 y 24 e 4 l 11 s 18 z 25 f 5 m 12 t 19 / / g 6 n 13 u 20 / / Hình1.3Hàmbămdạngbảngtrađượctổchứcdướidạngdanhsáchkề.b.Hàmbămsửdụngphươngphápchia Dùngsốdư: h(k)=kmodm klàkhoá,mlàkíchthướccủabảng. vấnđềchọngiátrịm Nếuchọnm=2nthôngthườngkhôngtốtvìh(k)=kmod2n sẽ chọncùngn bitsthấpcủaknênchọnmlànguyêntố(tốt)gần ...
Tìm kiếm theo từ khóa liên quan:
Bài giảng Cấu trúc dữ liệu Cấu trúc dữ liệu 2 Cấu trúc dữ liệu Cấu trúc cây Cây nhị phân Cây nhị phân tìm kiếmGợi ý tài liệu liên quan:
-
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 301 0 0 -
Giáo trình Cấu trúc dữ liệu và giải thuật: Phần 2 - Trần Hạnh Nhi
123 trang 154 0 0 -
Bài giảng Phân tích thiết kế phần mềm: Chương 1 - Trường ĐH Ngoại ngữ - Tin học TP.HCM
64 trang 146 0 0 -
Giải thuật và cấu trúc dữ liệu
305 trang 139 0 0 -
Giáo trình Cấu trúc dữ liệu và thuật toán (Tái bản): Phần 1
152 trang 136 0 0 -
Tập bài giảng Thực hành kỹ thuật lập trình
303 trang 136 0 0 -
Tài liệu tham khảo: Cấu trúc dữ liệu và giải thuật
229 trang 100 0 0 -
Lập trình C - Cấu trúc dữ Liệu
307 trang 71 0 0 -
49 trang 67 0 0
-
Bài giảng Cấu trúc dữ liệu và thuật toán: Chương 3 - Một số mô hình thuật toán
42 trang 64 0 0