click

Hash Table Là Gì – Khác Biệt Giữa Array Và Hash Table

Hash Table La Gi Khac Biet Giua Array Va

Hash Table Là Gì – Khác Biệt Giữa Array Và Hash Table

Mở đầu Mở đầu Hàng đợi ưu tiên, Hàng đợi ưu tiên, Heap Ra mắt, về Heap, max heap Min Heap Thu xếp, heap sort Bảng băm – Hash table Bảng băm – Hash table Giải quyết và xử lý, xung đột – Separate chaining Giới thiệu về hashing Hashing là 1 trong các, kỹ thuật sử dụng để vật chứng, và khẳng định chắc chắn, duy nhất một đối tượng
quý khách
người tiêu dùng
quý khách hàng rõ ràng,
xuất phát điểm xuất phát từ, 1 nhóm những đối tượng
quý khách
người tiêu dùng
quý khách hàng
tựa như, như nó. Một số trong những, trong những giữa những ví dụ về hashing trong
cuộc sống thường ngày đời thường thực tiễn: Mỗi cuốn sách trong thư viện cũng rất được, gán cho một ID duy nhất, từ ID này ta có tính năng, biết đc nơi đặt, đúng chuẩn, của mình, nó trong thư viện hoặc những
người sử dụng đã mượn nó. Bài Viết: Hash table là gì Giữa những ví dụ trên, sách and sinh viên đã đc mã hóa với 1 ID duy nhất, kỹ thuật đó gọi là hashing. Như vậy, ta cũng xuất hiện thể định nghĩa hashing là kỹ thuật
đổi khác một khóa (key) trở thành,
Một trong, những nguyên bằng
chiêu trò sử dụng những công thức toán học. Công thức toán học này được, tiến hành, trong một hàm gọi là hash function (hàm băm). Một key khi qua giải quyết và xử lý, và xử lý của hàm băm sẽ Xây dựng, và
hoạt động giải trí
Một trong, những nguyên
Duy nhất, vinh được gọi là mã băm (hash code). Giả sử rằng bạn chứa một đối tượng
quý khách
người tiêu dùng
quý khách hàng, and bạn một gán cho nó một ID để dễ quản trị. khi gán cho đối tượng
quý khách
người tiêu dùng
quý khách hàng một ID thì một cặp key/value đc hình thành, với key là ID mà bạn gán and value đó
đó chính là đối tượng
quý khách
người tiêu dùng
quý khách hàng đc gán cho ID đó. Để tiến hành, việc trên, đơn giản và giản dị, và dễ dàng và đơn giản, là bạn cũng xuất hiện thể sử dụng mảng, khi này key đó
đó chính là chỉ số của mảng,
điểm đặt tàng trữ, đối tượng
quý khách
người tiêu dùng
quý khách hàng (value). Tuy vậy, trong
trường hợp khi key quá to, thì việc sử dụng key thẳng trực tiếp làm chỉ số của mảng không còn,
hiệu quả, nữa, and bạn nên sử dụng hashing. Sau lúc, hashing, cặp key/value (key đã dược
biến hóa) đc chứa trong một
cấu trúc tài liệu, là bảng băm (hash table). Bằng
chiêu trò sử dụng key trong bảng băm, bạn cũng xuất hiện thể
truy vấn những thành phần phía bên trong, bảng này trong thời hạn, O(1). Hashing có tính năng, đc tiến hành, trong hai bước:
biến hóa khóa (key) thành số nguyên (khóa nhỏ dại dại hơn) sử dụng hàm băm. Khóa sau lúc,
biến hóa có tính năng, đc sử dụng như chỉ số để chứa thành phần,
mở đầu, phía trong bảng băm. Thành phần, đc chứa trong bảng băm có tính năng, đc
truy vấn nhanh lẹ qua khóa đã đc
biến hóa.

Xem Ngay:  Gậy Tự Sướng Tiếng Anh Là Gì, Gậy Tự Sướng Trong Tiếng Tiếng Anh
hash_code = hash_function(key) index = hash % array_size

Với
chiêu trò chuyển đồi này, hash_code là
chủ quyền lãnh thổ với form size của mảng, tiếp nối đuôi nhau, Ngân sách chi tiêu, của mình, nó đc
biến hóa về index (index có Ngân sách chi tiêu, từ 0 tới array_size – 1). Hàm băm (hash function) Hàm băm là 1 trong các, hàm ngẫu nhiên có tính năng, đc sử dụng để ánh xạ một bộ tài liệu, có form size tùy ý tới một bộ tài liệu, có form size thắt chặt và cố định, và thắt chặt phía trong bảng băm. Ngân sách chi tiêu, trả về bởi hàm băm đc gọi là mã băm (hash code hoặc hash value). Để
chiếm hữu được một cơ chế hashing rất tốt nhất, có tác dụng,, ta rất sẽ phải, chứa một hàm băm rất tốt nhất, có tác dụng, với những, trường hợp
cơ bản, như sau: Dễ
Thống kê, tính toán. Vừa ý giống hệt,: Mỗi nơi đặt, trong bảng đc phân phối đếu
cho từng, key (khóa băm). Ít xung đột: Sự xung đột (collision) xảy ra khi mà có những cặp thành phần, lạ mắt đc ánh xạ tới chung một mã băm. Sự xung đột trong bảng băm gây
Tác động ảnh hưởng, to tới hiệu năng của loại
cấu trúc tài liệu, này,
chính vì vậy, với bảng băm, việc sử dụng những kỹ thuật để giảm xung đột trong bảng là vô cùng quan trọng. Cùng xem ví dụ sau để cảm nhận thấy, thấy cảm nhận thấy, thấy cảm nhận thấy, tại sao những
bạn phải, một hàm băm rất tốt nhất, có tác dụng, Giả sử
chúng ta, rất sẽ phải, chứa những chuỗi sau trong một bảng băm, sử dụng kỹ thuật hashing: {“abcdef”, “bcdefa”, “cdefab” , “defabc”}. Để
Thống kê, tính toán những chỉ số cho việc tàng trữ, những chuỗi, ta sử dụng hàm băm với những phương thức, tiến hành, như sau. Xem Ngay: Viêm Đường Tiết Niệu Là Gì, Tất Tần Tật Về Nhiễm Trùng Đường Tiết Niệu

Xem Ngay:  Chi Phí Sản Xuất Kinh Doanh Theo Yếu Tố Là Gì, Chi Phí Sản Xuất Kinh Doanh Theo Yếu Tố


chiêu trò tiến hành,
Thứ nhất,:

Chỉ số
cho từng, chuỗi bằng tổng Ngân sách chi tiêu, mã ASCII của mỗi phần ký tự trong chuỗi. Gọi Ngân sách chi tiêu, mã ASCII của một ký tự x là aval(x), istr(s) là tổng Ngân sách chi tiêu, mã ASCII của chuỗi s, ta có:

istr(abcdef) = aval(a) + aval(b) + aval(c) + aval(d) + aval(e) + aval(f) = 599 istr(bcdefa) = aval(b) + aval(c) + aval(d) + aval(e) + aval(f) + aval(a) = 599 istr(cdefab) = aval(c) + aval(d) + aval(e) + aval(f) + aval(a) + aval(b) = 599 istr(defabc) = aval(d) + aval(e) + aval(f) + aval(a) + aval(b) + aval(c) = 599 Với aval(a) = 97, aval(b) = 98, aval(c) = 99, aval(d) = 100, aval(e) = 101, aval(f) = 102

Và chỉ số được xem như, oán thù thù thù bằng
chiêu trò chia lấy phần dư istr(s) cho số ký tự có trong chuỗi s. Gọi chỉ số của chuỗi s là idx(s) ta có:

idx(abcdef) = idx(bcdefa) = idx(cdefab) = idx(defabc) = 599 % 6 = 5

Như vậy, 4 chuỗi ở trên cao sẽ triển khai, ánh xạ vào chung một chỉ số trong bảng băm. Do vì chỉ số của toàn diện
toàn bộ những chuỗi là giống nhau, nên bạn cũng xuất hiện thể tạo một danh sách links với chỉ số đó để chèn những chuỗi vào.

*

Hình 1: Bảng băm không tối ưu Với bảng băm ở trên cao, ta có tính năng, nhận cảm nhận thấy, thấy cảm nhận thấy, thấy cảm nhận thấy, rằng để
truy vấn
vào trong 1 chuỗi trong bảng thì trong
trường hợp xấu nhất ta sẽ mất thời điểm là O(N).
vì vậy, với
chiêu trò tiến hành,
Thứ nhất, ta chứa một hàm băm không tối ưu.


chiêu trò tiến hành, thời hạn, vào
Thời điểm đầu tuần,:

Ta sẽ sử dụng
chiêu trò khác để
Thống kê, tính toán chỉ số cho những chuỗi, với
chiêu trò này, chỉ số của một chuỗi sẽ bằng tổng mã ASCII của từng ký tự nhân với thứ tự sắp xếp, của ký tự đó trong chuỗi. Rồi lấy tổng đó chia cho số nguyên tố bất kỳ. Trong bài này số được chọn là 2069 (số nguyên tố lớn nhất của tổng bé nhất).

ChuỗiTính toán trong hàm bămChỉ số
abcdef(97*1 + 98*2 + 99*3 + 100*4 + 101*5 + 102*6) % 206938
bcdefa(98*1 + 99*2 + 100*3 + 101*4 + 102*5 + 97*6) % 206923
cdefab(99*1 + 100*2 + 101*3 + 102*4 + 97*5 + 98*6) % 206914
defabc(100*1 + 101*2 + 102*3 + 97*4 + 98*5 + 99*6) % 206911
*

Hình 2: Bảng băm tối ưu hơn Bảng băm – Hash table Bảng băm là một loại cấu trúc dữ liệu được dùng để chứa cặp key/value. Nó sử dụng hàm băm để tính toán chỉ số, chỉ số này được dùng cho việc chèn hoặc tìm kiếm dữ liệu được dễ dàng hơn. Với một bảng băm có một hàm băm được thực hiện tốt thì trong trường hợp lý tưởng, việc tìm kiếm các phần tử trong bảng có thời gian là O(1). Ta hãy cùng xem xét ví dụ sau: Yêu cầu: Đếm số lần xuất hiện của các ký tự trong chuỗi sau: “ababcd”.

Xem Ngay:  Phân Số Thập Phân Là Gì

Cách tiếp cận đơn giản

Ta sẽ duyệt qua tất cả các phần tử của chuỗi và đếm số lần xuất hiện của từng ký tự. Độ phức tạp về thời gian của cách tiếp cận này là O(26*N) với N là độ dài của chuỗi và 26 là số ký tự có thể có trong chuỗi (số lượng ký tự trong bảng chữ cái tiếng anh). string S = “ababcd”void countChar(string S){ for(char c = “a”; c Kết quả sau lúc, chạy kiểm tra tại https://www.onlinegdb.com/online_c++_compiler .

*

Mã nguồn hoàn chỉnh để chạy chương trình ở trên có thể tìm thấy tại đây.

Cách tiếp cận tối ưu hơn

Sử dụng kỹ thuật hashing cho bài toán này. Ta dùng một mảng có kích thước là 26 để chứa giá trị là số lần xuất hiện của một ký tự trong chuỗi. Dùng hàm băm để tính toán ra chỉ số của ký tự trong chuỗi. Duyệt qua toàn bộ chuỗi, và tăng giá trị của phần tử mảng có chỉ số tương ứng bằng với chỉ số của ký tự vừa được tính ở bước trên. #include using namespace std;int C;/* Hàm băm tính toán chỉ số của ký tự trong chuỗi */int hash_function(char c) { return (c – “a”);}/* Hàm đếm số lần xuất hiện của một ký tự trong chuỗi */void count_char(string S) { for (int i = 0; i Kết quả sau lúc, chạy chương trình trên.

*


Tóm lại
Do vì hàm băm trả về một khóa có Ngân sách chi tiêu, nhỏ dại dại hơn khóa gốc (là 1 trong các, số nguyên to hoặc một chuỗi dài), vụ việc, này dẫn đến việc, hai khóa có tính năng, có chung một Ngân sách chi tiêu,. Xem Ngay: Butcher Là Gì – Butcher Trong Tiếng Tiếng Việt Trường hợp khi 1 thành phần, mới đc chèn vào bảng băm có khóa ánh xạ tới một nơi đặt, đã
có không ít, tài liệu, (ánh xạ tới chung một Ngân sách chi tiêu, với 1 khóa khác) đc gọi là việc, xung đột. Và
chúng ta, rất sẽ phải, giải quyết và xử lý, và xử lý và giải quyết và xử lý, và xử lý điều này bằng những kỹ thuật giải quyết và xử lý, và xử lý và giải quyết và xử lý, và xử lý xung đột. Thể Loại: Sẻ chia, Kiến Thức Cộng Đồng

Bài Viết: Hash Table Là Gì – Khác Biệt Giữa Array Và Hash Table Thể Loại: LÀ GÌ Nguồn Blog là gì: https://hethongbokhoe.com Hash Table Là Gì – Khác Biệt Giữa Array Và Hash Table

Leave a Reply

Your email address will not be published. Required fields are marked *