Hàm băm là gì?
Đó là thứ được sử dụng trong khoa học máy tính.
Hàm băm chỉ đơn giản là một hàm tạo ra giá trị có độ dài cố định cho mỗi đầu vào mà nó nhận được.
Được rồi.
Điều đó nghĩa là gì?
Tôi có ở đây một bộ tạo băm MD5.
MD5 là loại hàm băm và có rất nhiều loại mà bạn có thể đã nghe nói về SHA một, SHA
256 và nhiều loại khác.
Sử dụng hàm băm này.
Hãy xem điều gì sẽ xảy ra nếu tôi làm vậy.
Xin chào.
Bạn thấy ngay điều đó.
MD5 băm chuỗi này và biến nó thành chữ vô nghĩa này.
Đó là những gì một hàm băm làm.
Chúng tôi cung cấp cho nó một đầu vào và hàm tạo ra một số mẫu ngẫu nhiên.
Bây giờ có một số khía cạnh chính của hàm băm.
Đầu tiên là đó là một cách.
Theo nghĩa là nếu tôi đưa cho ai đó điều này, họ không biết đầu vào là gì.
Và thực tế là tôi không thể có bất kỳ manh mối nào về đầu vào là gì.
Thứ hai là cho dù tôi có đặt câu chào bao nhiêu lần đi chăng nữa thì nó cũng sẽ giống nhau.
Nhưng tôi ngay khi tôi thay đổi một thứ, nó sẽ thay đổi hoàn toàn kết quả đầu ra.
Nếu tôi quay lại xin chào và.
Hãy xem tôi vừa đổi thành chữ H viết hoa, thậm chí là một chữ cái viết hoa.
Vì vậy, nó bắt đầu với năm D vì nếu tôi viết hoa H, nó lại hoàn toàn khác.
Và nhìn vào điều này, chúng ta ít nhất có thể nói rằng.
Hừ!
Tôi không biết điều này hữu ích để làm gì, nhưng có một điều mà tôi biết là không có vấn đề gì, nếu tôi cung cấp cùng
một đầu vào, nó sẽ cho tôi cùng một kết quả.
Nhưng tôi không biết làm thế nào để chuyển đổi điều này trở lại thành.
Xin chào.
Đây là những gì chúng tôi gọi là độc lập hoặc độc lập.
Có những cách phát âm khác nhau.
Tôi không thực sự chắc chắn cái nào là cái nào, nhưng đó là một cách nói hay khi một hàm được đưa ra một
đầu vào luôn tạo ra cùng một đầu ra.
Bây giờ, một lợi ích và lý do tại sao chúng tôi muốn sử dụng điều này trong cấu trúc dữ liệu
là chúng tôi có quyền truy cập dữ liệu thực sự nhanh chóng bởi vì tất cả những gì tôi phải làm để tìm nho hoặc giỏ chấm nho là chuyển nho vào thứ gì đó giống
như băm MD5.
Nó tạo ra số này cho tôi và tôi ngay lập tức biết nó ở đâu trong bộ nhớ của tôi trên máy tính của chúng tôi.
Nhưng đây không phải là một địa chỉ, phải không?
Về mặt kỹ thuật, một hàm băm mà chúng ta sử dụng cho các bảng băm sẽ lấy nho, tạo ra một
số loại chữ vô nghĩa, sau đó chuyển đổi nó thành không gian chỉ mục hoặc không gian địa chỉ mà nó có dựa trên số này.
Bạn thấy đấy, không giống như một cuộc chạy đua mà chúng tôi chỉ sắp xếp các chỉ mục bằng bảng băm, tất cả những gì chúng tôi cần làm là cung cấp cho nó một khóa và
chúng tôi biết chính xác vị trí của mục đó trong bộ nhớ của chúng tôi.
Nhưng bạn có thể tự hỏi, chức năng băm hộp đen này, nó không làm chậm mọi thứ sao?
Bởi vì mỗi khi chúng ta muốn thêm một thuộc tính.
Và một giá trị nho và 10.000 cho một bảng băm.
Chúng ta phải chạy nó thông qua hàm băm để có thể quyết định vị trí đặt nó trong bộ nhớ.
Và nếu bạn nhận thấy rằng công việc tốt, đó là một yếu tố lớn.
Bạn không muốn việc này mất nhiều thời gian bởi vì, mỗi khi bạn thêm một thuộc tính vào bộ nhớ hoặc truy
xuất một thuộc tính vào bộ nhớ, bởi vì, một lần nữa, cả hai lần chúng ta đều gửi key nho vào hàm băm
để tìm nơi để lấy nó từ.
Chúng tôi cần điều này thực sự, thực sự nhanh chóng.
Và bên dưới mui xe, hãy nhớ rằng, bởi vì bảng băm tồn tại trong tất cả các ngôn ngữ, chúng được
triển khai với một hàm băm tối ưu thực sự, rất nhanh.
Như một lưu ý phụ.
Các hàm băm như SHA 256 mất rất nhiều thời gian để tạo ra một hàm băm.
Và nó là một hàm băm quá phức tạp được sử dụng rất nhiều ở những nơi như mật mã, nơi bạn muốn việc
này mất nhiều thời gian hơn, nhưng điều đó nằm ngoài phạm vi của khóa học này.
Nếu bạn quan tâm, tôi khuyên bạn nên kiểm tra sự khác biệt giữa hai điều này.
Xem lại.
Chúng tôi có một chìa khóa đó là nho.
Chúng tôi gửi nó thông qua một hàm băm sẽ băm một thứ gì đó thực sự, rất nhanh và
sau đó ánh xạ bất cứ thứ gì mà hàm băm xuất hiện thành một địa chỉ bộ nhớ mà chúng tôi muốn lưu trữ.
Dữ liệu là nho 10.000.
Và khi nói đến hàm băm, bạn thường để nó cho bất kỳ khung hoặc ngôn ngữ nào bạn
đang sử dụng.
Và chúng tôi thường giả định độ phức tạp về thời gian hoặc ký hiệu cũ lớn của oh một, bởi vì điều này xảy ra rất
nhanh.
Được rồi.
Bây giờ chúng ta đã hiểu hộp đen này làm gì, hãy nói thêm một chút về bảng băm, tại sao chúng
hữu ích và tại sao trong một số trường hợp lại tốt hơn mảng.