Tải bản đầy đủ (.pdf) (69 trang)

bloom filters cho bài toán về quản lý black list và white list thẻ từ trong giao thông công cộng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.92 MB, 69 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

ĐẠI HỌC QUỐC GIA TP. HCM

<b>TRƯỜNG ĐẠI HỌC BÁCH KHOA </b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

CÔNG TRÌNH ĐƯỢC HỒN THÀNH

TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA –ĐHQG -HCM

Cán bộ hướng dẫn khoa học: PGS.TS Thoại Nam ...

Cán bộ chấm nhận xét 1: TS. Hà Minh Tân ...

Cán bộ chấm nhận xét 2: TS. Lê Trọng Nhân ...

Luận văn thạc sĩ được bảo vệ tại Trường Đại học Bách Khoa, ĐHQG Tp. HCM ngày 23 tháng 01 năm 2024 Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm: 1. TS. Nguyễn Lê Duy Lai ...

2. TS. Nguyễn Quang Hùng ...

3. TS. Hà Minh Tân ...

4. TS. Lê Trọng Nhân ...

5. TS. Hà Việt Uyên Synh ...

Xác nhận của Chủ tịch Hội đồng đánh giá LV và Trưởng Khoa quản lý chuyên ngành sau khi luận văn đã được sửa chữa (nếu có).

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

ĐẠI HỌC QUỐC GIA TP.HCM

<b>TRƯỜNG ĐẠI HỌC BÁCH KHOA ___________________ </b>

<b>CỘNG HOA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự do – Hạnh phúc </b>

<b>__________________ </b>

<b>NHIỆM VỤ LUẬN VĂN THẠC SĨ </b>

Họ tên học viên: NGUYỄN HOÀNG PHÚC ... MSHV: 1970595

Ngày, tháng, năm sinh: 18/08/1993 ... Nơi sinh: TP. Hồ Chí Minh Chuyên ngành: Khoa học Máy tính ... Mã số: 8480101

<b>I. TÊN ĐỀ TÀI: </b>

BLOOM FILTERS CHO BÀI TOÁN VỀ QUẢN LÝ BLACK LIST VÀ WHITE LIST THẺ TỪ TRONG GIAO THÔNG CÔNG CỘNG

<b>II. NHIỆM VỤ VÀ NỘI DUNG: </b>

- Tìm hiểu, nghiên cứu cấu trúc dữ liệu Bloom Filter và các biến thể cải tiến của Bloom Filter là Counting Bloom Filter và Scalable Bloom Filter để đáp ứng nhu cầu luận văn. - Đề xuất giải pháp một mơ hình quản lý, chia sẻ, xác thực thẻ từ ứng dụng công nghệ

Bloom Filter.

- Tiến hành giả lập thí nghiệm, thu thập và đánh giá kết quả giải pháp.

<b>III. NGÀY GIAO NHIỆM VỤ: 04/09/2023 </b>

<b>IV. NGÀY HOÀN THÀNH NHIỆM VỤ: 18/12/2023 </b>

<b>V. CÁN BỘ HƯỚNG DẪN: Phó giáo sư, Tiến sĩ Thoại Nam. </b>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<i>Lời cảm ơn </i>

Em xin cảm ơn các thầy cơ trong tổ bộ mơn Khoa Học Máy Tính, các thầy cô tại trường đại học Bách Khoa đã giảng dạy, giúp đỡ em trong suốt quá trình học tập và nghiên cứu. Đặc biệt, trong suốt quá trình học thực hiện đề tài, em luôn nhận được sự động viên của bạn bè, đồng nghiệp và người thân trong gia đình. Đồng thời, e xin gửi lời cám ơn sâu sắc tới thầy Thoại Nam, với sự hướng dẫn khoa học của thầy đã giúp em xây dựng được kết quả khóa luận này. Hy vọng luận văn sẽ nhận được những ý kiến đóng góp của hội đồng để nội dung ngày một hoàn thiện hơn

Trân trọng cảm ơn!

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<i>Tóm tắt luận văn </i>

Trong cuộc Cách mạng công nghiệp 4.0, Việt Nam đã đưa ra u cầu số hóa các thơng tin của người dân và hệ thống giao thông công cộng. Trong cơng cuộc số hóa này, các cấp lãnh đạo đã đưa ra chỉ thị các đơn vị giao thông vận tải cung cấp cho mỗi người dân một thẻ từ chứa thông tin xác thực để tham gia giao thơng. Từ đây nảy sinh ra các bài tốn lớn về việc quản lý về lượng dữ liệu thẻ từ lớn của dân số Hà Nội nói riêng và Việt Nam nói chung. Việc làm thế nào để kiểm chứng thông tin của một người dân một cách nhanh chóng và ổn định để người dân có thể tham gia giao thơng đã trở thành một bài tốn khó cho các cơng ty và tập đồn cơng nghệ. Vì vậy, một mơ hình quản lý, chia sẻ kết hợp chứng thực thông tin trong danh sách black list, white list là một trong cái giải pháp tốt nhất để giải quyết bài tốn trên. Trong luận văn này, tơi đề xuất một mơ hình giải pháp sử dụng Bloom Filter cho việc quản lý blacklist và whitelist thẻ từ trong giao thông công cộng.

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<i>Abstract of dissertation </i>

In the Fourth Industrial Revolution, Vietnam has set the requirement to digitize the information of its citizens and public transportation systems. In this digitalization effort, the leadership issued directives to transportation units to provide each individual with a card containing authentication information for participating in traffic activities. This initiative has given rise to significant challenges in managing the large volume of card data for the population of Hanoi specifically and Vietnam as a whole. The management of how to quickly and stably verify the information of an individual for their participation in traffic has become a complex problem for technology companies and corporations. Therefore, a model that combines the management and sharing of authenticated information in blacklists and whitelists is considered one of the best solutions to address this issue. In this thesis, I propose a solution model using Bloom Filter for managing blacklists and whitelists of cards in public transportation.

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<i>Lời cam đoan </i>

Tôi tên Nguyễn Hoàng Phúc, học viên cao học khoa Khoa học máy tính, Đại học Bách Khoa TP. Hồ Chí Minh, mã học viên 1970595. Tôi xin cam đoan luận văn tốt nghiệp: “BLOOM FILTER CHO BÀI TOÁN VỀ QUẢN LÝ BLACK LÍT VÀ ƯHITE LÍT THẺ TỪ TRONG GIAO THƠNG CƠNG CỘNG” là cơng trình nghiên cứu của bản thân. Những phần sử dụng tài liệu tham khảo trong luận văn đã được nêu rõ trong phần tài liệu tham khảo. Các số liệu, kết quả trình bày trong luận văn là hồn tồn trung thực, nếu sai tơi xin chịu hoàn toàn trách nhiệm và mọi kỷ luật của bộ môn và nhà trường đề ra.

Học viên

Nguyễn Hoàng Phúc

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

MỤC LỤC

<i><small>Lời cảm ơn ... i </small></i>

<i><small>Tóm tắt luận văn ... ii</small></i>

<i><small>Abstract of dissertation ... iii</small></i>

<i><small>Lời cam đoan ... iv </small></i>

<b><small>Chương 1: Mở đầu ...1 </small></b>

<b><small>1.1. Giới thiệu đề tài ...1 </small></b>

<b><small>1.2. Cấu trúc luận văn ...4 </small></b>

<b><small>Chương 2: Cơ sở lý thuyết ...5 </small></b>

<b><small>2.1. Các nghiên cứu liên quan về hệ thống AFC ...5 </small></b>

<b><small>2.2. Bloom Filter ...6 </small></b>

<b><small>2.2.1.Thuật toán của Bloom Filter có thể được mơ tả như sau: ...7 </small></b>

<b><small>2.2.2.Xác suất False Positive ε: ...8 </small></b>

<b><small>2.2.3.Số lượng hàm băm tối ưu: ...9 </small></b>

<b><small>2.3. Counting Bloom Filter ...10 </small></b>

<b><small>2.4. Scalable Bloom Filter (SBF) ...14 </small></b>

<b><small>2.4.1.Giới thiệu: ...14 </small></b>

<b><small>2.4.2.Partitioned Bloom Filter: ...15</small></b>

<b><small>2.4.3.Scalable Bloom Filter: ...17</small></b>

<b><small>2.4.4.Tham số tăng trưởng mở rộng: ...18 </small></b>

<b><small>2.4.5.Tỉ số thắt chặt r: ...21 </small></b>

<b><small>Chương 3: Giải pháp quản lý danh sách thẻ từ đen và trắng trong giao thông công cộng ...24 </small></b>

<b><small>3.1. Giới thiệu bài toán: ...24 </small></b>

<b><small>3.2. Giải pháp: ...25 </small></b>

<b><small>3.2.1.Counting Scalable Bloom Filter: ...26</small></b>

<b><small>3.2.2.Mơ hình quản lý tập trung cho các nhà xe: ...31 </small></b>

<b><small>Chương 4: Đánh giá giải pháp ...40 </small></b>

<b><small>4.1. Môi trường hiện thực và công cụ sử dụng ...40 </small></b>

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b><small>4.3. Kết quả đánh giá ...51 Chương 5: Tổng kết và hướng phát triển đề tài ...53 TÀI LIỆU THAM KHẢO ...54 </small></b>

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

DANH MỤC HÌNH ẢNH

<small>Hình 1.1: Trạm bán vé tháng xe buýt của HanoiBus ...2 </small>

<small>Hình 1.2: Cổng thu vé tự động của UNIPASS trên xe buýt ...2 </small>

<small>Hình 1.3: Thiết bị thu vé cầm tay trên xe VINBUS ...3 </small>

<small>Hình 2.1: Ví dụ trực quan một Bloom Filter với một tập hợp {x,y,z}, m = 18, k = 3 ...8 </small>

<small>Hình 2.2: Tạo một CBF trống với kích thước m = 10 ...11 </small>

<small>Hình 2.7: Không gian sử dụng tương đối với bộ lọc SBF với r = 0.5 và 𝑃 = 10 − 6 ...20 </small>

<small>Hình 2.8: Tương quan giữa số lượng l giai đoạn với tham số tăng trưởng s với 2 sự tăng trưởng là 10^6 và 10^2 phần tử ...20 </small>

<small>Hình 2.9: Khơng gian sử dụng tương đối của hàm tăng trưởng với các sự kết hợp khác nhau của P và r với s =2 ...22 </small>

<small>Hình 2.10: Mối liên hệ giữa r tối ưu và mức độ tăng trưởng với 𝑠 ∈ 2, 2, 4 và 𝑃 = 10 − 6 ...22 </small>

<small>Hình 3.1: Mơ hình quan hệ giữa trung tâm quản lý và các nhà xe ...31 </small>

<small>Hình 3.2: Mơ hình quan hệ tổng quan tồn hệ thống ...32 </small>

<small>Hình 3.3: Nguồn dữ liệu của whitelist và blacklist ...33 </small>

<small>Hình 3.4: Mơ hình phương thức hoạt động của dữ liệu Timeline hệ thống ...34 </small>

<small>Hình 3.5: Mơ hình phương thức hoạt động của hệ thống sử dụng Timeline BloomFilter trung tâm...35 </small>

<small>Hình 3.6: Mơ hình luồng dữ liệu của giải pháp ...37 </small>

<small>Hình 4.1: Thông tin của CSBF trong các trường hợp số lượng dữ liệu khác nhau ...43 </small>

<small>Hình 4.2: Kết quả kiểm tra tính thành viên với phương thức tìm kiếm trong Database ...44 </small>

<small>Hình 4.3: Kết quả kiểm tra tính thành viên với phương thức kiểm tra trong một tập hợp ...44 </small>

<small>Hình 4.4: Kết quả kiểm tra tính thành viên với phương thức kiểm tra trong một chuỗi ...45 </small>

<small>Hình 4.5: Kết quả kiểm tra tính thành viên với phương thức kiểm tra trong bộ lọc Bloom ...45 </small>

<small>Hình 4.6: Kết quả kiểm tra tính thành viên trên mơ phỏng máy POS ...48 </small>

<small>Hình 4.7: Thơng tin thời điểm đồng bộ trên Trung tâm, máy POS và nhà xe theo thứ tự ...49 </small>

<small>Hình 4.8: Phần tử đầu tiên và số lượng phần tử đồng bộ của thiết bị POS và nhà xe theo thứ tự ...51 </small>

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

DANH MỤC BẢNG

<small>Bảng 2.1: Các giá trị tham số khác nhau của bộ lọc 32KB ...16 Bảng 4.1: Bảng tổng hợp các thông số của hệ thống ứng với số lượng dữ liệu khác nhau với s ∈ {1,2} và bộ lọc ban đầu có số lượng phần tử tối đa là 200000 ...41 </small>

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

DANH MỤC TỪ TIẾNG ANH VÀ GIẢI NGHĨA

<small>STT Từ tiếng anh Ý nghĩa </small>

<small>1 Whitelist Danh sách trắng, một danh sách các phần tử hợp lệ 2 Blacklist Danh sách đen, một danh sách các phần tử không hợp lệ 3 Bloom Filter Bộ lọc Bloom </small>

<small>4 False Positive Dương tính giả, báo động giả, khơng nhưng báo có 5 False Negative Âm tính giả, báo động sai, có nhưng báo khơng có 6 Counting Bộ đếm </small>

<small>7 Scalable Có khả năng mở rộng 8 Partition Phân vùng </small>

<small>9 Mergeable Có thể hợp nhất 10 Timeline Dòng thời gian </small>

<small>12 Database Cơ sở dữ liệu 13 Cache Bộ nhớ đệm </small>

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

DANH MỤC TỪ VIẾT TẮT

<small>STT Từ viết tắt Từ đầy đủ 1 FP False Positive </small>

<small>3 CBF Counting Bloom Filter 4 PBF Partitioned Bloom Filter 5 SBF Scalable Bloom Filter </small>

<small>6 CSBF Counting Scalable Bloom Filter 7 POS Point Of Sale </small>

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<b>Chương 1: Mở đầu </b>

<b>1.1. Giới thiệu đề tài </b>

Theo xu thế phát triển chung của thế giới, Việt Nam đang phải đối mặt với những vấn đề về giao thông đô thị như sự gia tăng của phương tiện cá nhân, áp lực về cơ sở hạ tầng và nhu cầu đi lại của người dân ngày càng cao. Nhận thức rõ áp lực của phát triển dịch vụ vận tải đối với phát triển đơ thị, Chính phủ và Bộ Giao thông Vận tải cũng như các địa phương từ nhiều năm trước đây và hiện nay đã xác định phát triển giao thông công cộng là giải pháp tối ưu và được ưu tiên phát triển để giải quyết tình trạng trên. Theo Bộ Giao thơng Vận tải, việc phát triển hệ thống vận tải hành khách công cộng đã đạt được những kết quả bước đầu. Đến thời điểm này đã có 60/63 tỉnh, thành phố trên cả nước (trừ Yên Bái, Lai Châu, Hà Giang) có vận tải hành khách công cộng bằng xe buýt hoạt động với gần 10.000 phương tiện và 280 doanh nghiệp, hợp tác xã vận tải thực hiện. Từ năm 2019 đến nay, với cuộc cách mạng công nghiệp 4.0 hiện nay thì ngành giao thơng cơng cộng cũng đang dần chuyển mình để thay thế vé giấy truyền thống với sử dụng vé điện tử và thẻ điện tử nhằm bảo vệ mơi trường và tiết kiệm nhiều chi phí trong việc in vé giấy hàng ngày cũng như việc thay đổi đường lối quản lý thông qua các báo cáo tự động từ các phần mềm thay vì sử dụng sức người truyền thống.

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<i><small>Hình 1.1: Trạm bán vé tháng xe buýt của HanoiBus</small></i>

Trong thời gian vừa qua có các nhà vận hành xe buýt ứng dụng cơng nghệ này có thể kể đến như Zalo với UNIPASS [1] đi đầu trong việc đầu tư thiết bị đọc thẻ từ trên các tuyến xe buýt tại TP. Hồ Chí Minh. VINBUS với hệ thống xe buýt điện và thanh toán bằng thẻ ATM kết hợp thẻ tháng do VINBUS phát hành [2] cho hệ thống xe buýt tại TP. Hà Nội.

<i><small>Hình 1.2: Cổng thu vé tự động của UNIPASS trên xe buýt </small></i>

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<i><small>Hình 1.3: Thiết bị thu vé cầm tay trên xe VINBUS </small></i>

Trong quá trình chuyển đổi như vậy thì giải pháp sử dụng thẻ từ được tập trung hơn cả vì khi sử dụng thẻ từ thì mỗi người dân chỉ cần dùng một thẻ từ để có thể thanh tốn cho tồn bộ các phương tiện cơng cộng mà người đó đã mua. Điều đó giúp các nhà cung cấp dịch vụ tiết kiệm được một chi phí rất lớn trong việc in vé giấy hàng ngày và giúp bảo vệ môi trường.

Và mới gần đây theo báo điện tử VnExpress ngày 28/11/2023 [15], Hà nội đã tổ chức khai trương thí điểm hệ thống vé điện tử liên thông đa phương thức cho giao thông công cộng. Bằng việc triển khai vé điện tử đã giải quyết được nhiều bất cập, trong đó có tiết giảm kinh phí ngân sách nhà nước thơng qua việc khơng cịn cần nhân viên phục vụ. Hiện tại số lượng tuyến được sử dụng vé điện tử liên thông đã lên đến > 25 tuyến mặc dù chỉ trong thời gian thí điểm. Khơng chỉ vậy theo bài báo Nhà nước đang có kế hoạch trợ giá thêm cho xe buýt theo từng năm cho thấy vấn đề cấp thiết trong công cuộc thúc đẩy người dân sử dụng giao thông công cộng nhiều hơn.

Với các hình thức trên thì hình thức sử dụng thiết bị xác thực trên phương tiện yêu cầu các giải pháp về cơng nghệ nhiều hơn hẳn các hình thức khác, điều đó xảy ra do các

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

thiết bị xác thực giờ đây sẽ luôn di chuyển chung với phương tiện. Thiết bị xác thực hoạt động bằng việc kiểm tra xem thẻ của bạn có hợp lệ hay không dựa vào danh sách trắng và đen. Hiện nay thì mỗi thiết bị cần phải đồng bộ về trung tâm vận hành để cập nhật lại danh sách mới nhất, sau đó mỗi khi cần xác thực thì máy sẽ qt tồn bộ dữ liệu đó để kiểm tra liệu thơng tin thẻ có trong danh sách hay không. Chúng ta sẽ cần giải quyết các bài toán về lưu lượng truyền dữ liệu từ các thiết bị về trung tâm vận hành, làm sao để thiết bị xác thực thực thi nhanh hơn để đáp ứng được các giờ cao điểm khách vào liên tục?

Chúng ta có thể áp dụng được cơng nghệ Bloom Filter vào ứng dụng này thì ta có thể giải đáp cùng một lúc cả hai bài toán trên. Bloom Filter cung cấp chức năng kiểm xem dữ kiện 𝑥 có thuộc một tập 𝑆 khơng và ta có thể tối giản được khơng gian sử dụng thay vì kiểm tra trong tập dữ liệu truyền thống. Vì vậy trong luận văn này ta phát triển một mơ hình ứng dụng công nghệ Bloom Filter để quản lý thẻ từ whitelist và blacklist trong giao thông công cộng.

<b>1.2. Cấu trúc luận văn </b>

Cấu trúc các phần còn lại của luận văn như sau:

Chương 2 trình bày các cơng trình nghiên cứu liên quan, các cơ sở lý thuyết về Bloom Filter, các biến thể của Bloom Filter cũng như các nghiên cứu về hệ thống AFC.

Chương 3 trình bày mơ hình đề xuất.

Chương 4 trình bày về cách hiện thực, kịch bản đánh giá giải pháp. Chương 5 tổng kết và phương hướng phát triển tiếp theo của đề tài.

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<b>Chương 2: Cơ sở lý thuyết </b>

<b>2.1. Các nghiên cứu liên quan về hệ thống AFC </b>

Hệ thống Automated Fare Collection (AFC) được giới thiệu lần đầu vào năm 1997 với hệ thống Octopus card ở Hồng Kong[3], Octopus card là loại thẻ từ thông minh không tiếp xúc được phát triển để thực hiện các giao dịch thanh toán trực tuyến hoặc không trực tuyến trên AFC của với hệ thống giao thơng cơng cộng ở Hong Kong[3]. Từ đó việc sử dụng thẻ từ thông minh contactless đã trở thành một tiêu chuẩn thanh toán của hệ thống AFC, mặc dù có nhiều hệ thống sử dụng nhiều phương thức thanh toán khác nhau.

Một hệ thống AFC thường bao gồm các thành phần cơ bản: - Phương tiện thanh toán (thẻ từ, tiền mặt, QR, …)

- Thiết bị đọc/ghi giao dịch (máy POS, cổng thanh toán cố định,…) - Các máy trạm kết nối với các thiết bị đọc/ghi

- Trung tâm văn phòng vận hành - Hệ thống xử lý vận hành trung tâm

Gần đây khi các ngân hàng đang tiến hành phát hành các loại thẻ từ thông minh khơng tiếp xúc thì các hệ thống AFC cũng kết hợp với ngân hàng tích hợp sử dụng thẻ ngân hàng song song với các loại thẻ từ mà hệ thống đang cung cấp để mang lại sự tiện nghi cho người dùng.

Ở Việt Nam ta, từ năm 2019 trên địa phận thành phố Hồ Chí Minh Zalo đã phối hợp với một số nhà vận hành xe buýt phát triển hệ thống AFC ứng dụng thẻ UNIPASS trên một số tuyến xe[1]. Về phương thức thanh toán của hệ thống của UNIPASS thì mỗi khi khách hàng chạm thẻ vào thiết bị đọc sẽ gọi về các máy trạm để tiến hành xác thực và thanh toán. Tuy nhiên Zalo vẫn chưa giải quyết được việc nhà vận hành xe buýt vẫn phải

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

bán vé giấy đối với các trường hợp sử dụng tiền mặt và các dạng thanh toán khác. Tuy nhiên vào năm 2021 thì cơng ty VINBUS – một cơng ty con của tập đoàn VINGROUP đã phát triển một hệ thống AFC mới với độ tích hợp cao cho các nhà phân phối khác nhau kể cả các ngân hàng khi sử dụng máy Point of Sale (POS) xác thực tại chỗ cho khách hàng khiến trải nghiệm khách hàng được nâng cao và tiện lợi hơn. Tuy nhiên khi tìm hiểu hơn về hệ thống thì chúng ta đã thấy cách máy POS mà VINBUS hiện đang vận hành đang gặp một vài vấn đề về tốc độ xử lý, dung lượng đường truyền lớn cần có phường án để giải quyết khi hệ thống càng lúc càng phát triển.

Bước đến năm 2022, Đảng và nhà đã ra chỉ thị bắt đâu cơng cuộc số hóa cho giao thơng cơng cộng với bài tốn phát hành thẻ từ, thẻ điện tử cho khách hàng. Khi này với sự gia tăng nhanh chóng của tập khách hàng sử dụng giao thơng cơng cộng, bài tốn lại phát sinh về tập dữ liệu lớn của khách hàng. Khi khách hàng sử dụng thẻ từ, thẻ điện tử thì cần nhanh chóng xác định tính hợp lệ để cho phép khách hàng sử dụng dịch vụ. Với lượng dữ liệu lớn việc xác minh danh tính hợp lệ cần các hệ thống tốn thêm nhiều thời gian hơn và việc đó làm giảm trải nghiệm của khách hàng. Và với tập khách hàng khó tính như Việt Nam thì việc trải nghiệm chậm trễ luôn là một điểm trừ rất lớn. Vì vậy cần có một giải pháp có thể đáp ứng được các nhu cầu về giảm dung lượng đường truyền, giảm thời gian xác thực, đảm bảo được tính hiệu quả.

<b>2.2. Bloom Filter </b>

Bloom Filter lần đầu được trình bày bởi Burton Howard Bloom vào năm 1970. Bloom Filter là một cấu trúc dữ liệu xác suất được tối ưu cho không gian nhằm mục đích kiểm tra một phần tử nào đó có phải thuộc trong một nhóm khơng? Những kết quả dương tính giả (False Positive) có thể xảy ra nhưng tuyệt đối khơng xuất hiện trường hợp âm tính giả (False Negative) – nói cách khác thì khi chúng ta tiến hành kiểm tra một phần tử liệu có thuộc trong một tập hợp thì ta sẽ có câu trả lời là “Có thể thuộc” hoặc “Chắc chắn

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

không thuộc”. Số lượng dữ liệu trong tập hợp càng nhiều thì tỉ lệ False Positive sẽ càng lớn.

Ý tưởng của Bloom là ánh xạ một phần tử𝑥 ∈ 𝑆 vào một giá trị 𝑦 = ℎ(𝑥) ∈ 𝑌 sử dụng một hàm băm h(), và kiểm tra tính thành viên của một phần tử 𝑥′ ∈ 𝑆 bằng việc kiểm tra 𝑦′ = ℎ(𝑥′) ∈ 𝑌 và thực hiện điều đó với nhiều hàm băm h.

Với nghiên cứu của Bloom, bằng việc đánh đổi tỉ lệ false positive, Bloom Filter có lợi thế về không thời gian (Probability of false positives) đáng kể so với các cấu trúc dữ liệu khác để biểu diễn các tập hợp, chẳng hạn như cây tìm kiếm nhị phân tự cân bằng (self-balancing binary search trees), cây tiền tố (digital tree – prefix tree), bảng băm(hash table), mảng đơn(simple arays) hoặc danh sách liên kết(linked list) của các mục. Hầu hết trong các cấu trúc dữ liệu trên đều yêu cầu lưu dữ một số dữ liệu cần thiết, có thể là bất kỳ dữ liệu gì từ một số lượng nhỏ bit đối với số nguyên nhỏ, cho đến số lượng bit tùy ý đối với chuỗi (cịn cây tiền tố là một ngoại lệ vì chúng có thể chia sẻ bộ nhớ giữa các phần tử với tiền tố giống nhau). Bộ lọc Bloom hoàn tồn khơng lưu trữ các mục dữ liệu, có giải pháp riêng cho việc lưu trữ thực tế. Các cấu trúc được liên kết phải chịu thêm chi phí khơng gian tuyến tính cho con trỏ. Ngược lại, bộ lọc Bloom có sai số 1% và giá trị tối ưu là k chỉ yêu cầu khoảng 9,6 bit cho mỗi phần tử, bất kể kích thước của các phần tử. Ưu điểm này một phần đến từ tính nhỏ gọn của nó, được thừa hưởng từ mảng và một phần đến từ tính chất xác suất của nó. Tỷ lệ False Positive 1% có thể giảm đi 10 lần bằng cách chỉ thêm khoảng 4,8 bit cho mỗi phần tử.

<b>2.2.1. Thuật tốn của Bloom Filter có thể được mô tả như sau: </b>

Bloom Filter là một chuỗi bit B với độ dài m, tất cả đều được đặt là 0. Chúng ta định nghĩa một tập hợp 𝑆 = { 𝑥<sub>1</sub>, 𝑥<sub>2</sub>, … , 𝑥<sub>𝑛</sub>} , 𝑥 là một phần tử và 𝑥 ∈ 𝑆 , k hàm băm ℎ<sub>1</sub>(∙), … ℎ<sub>𝑘</sub>(∙), trong đó chức năng mỗi hàm sẽ ánh xạ các phần tử trong tập hợp S vào một trong các bit của chuỗi bit m, từ đó tạo nên một phân phối ngẫu nhiên thống nhất.

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

Nhìn chung thì k như là một hằng số quyết định tỉ lệ false positive ε, còn m tỉ lệ với k và số lượng phần tử cần thêm vào tập hợp.

<i><small>Hình 2.1: Ví dụ trực quan một Bloom Filter với một tập hợp {x,y,z}, m = 18, k = 3 </small></i>

Để thêm một phần tử x vào tập hợp, cho phần tử đó đi qua từng hàm băm k để có được chuỗi bit mx<small>x</small> của phần tử x khi đó ta sẽ tiến hành OR với chuỗi m bit đang có sẵn chúng ta sẽ có một chuỗi m bit mới đại diện cho tập hợp có phần tử x mới.

Để kiểm tra một phần tử y có trong tập hợp hay khơng, ta vẫn làm tương tự khi thêm phần tử để có chuỗi bit của phần tử y tương ứng. Khi này ta sẽ kiểm tra nếu có bất kì bit nào của chuỗi bit mà trong chuỗi m vị trí bit đó là 0 thì phần tử chắc chắn khơng thuộc tập hợp, nếu khơng thì phần tử y đã thuộc tập hợp đó. Nhưng nếu chuỗi bit của y đều khớp với chuỗi bit m thì có khả năng là vị trí đó đã được đánh thành 1 từ một phần tử khác trong tập hợp, từ đó dẫn đến trường hợp False Positive. Đây là một điều đánh đổi của Bloom Filter cho lợi thế về không gian và thời gian.

<b>2.2.2. Xác suất False Positive ε: </b>

Giả sử hàm băm cho ra các giá trị của một mảng đó xác suất giống nhau. m là số bit trong mảng đó, xác suất để một bit nhất định không được đặt thành 1 bời hàm băm trong quá trình thêm một phần tử là:

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

1 − <sup>1</sup>𝑚

Nếu k là số lượng hàm băm và và mỗi hàm băm khơng có mối tương quan đáng kể với nhau thì xác suất để một bit không được đặt thành 1 bởi bất kỳ hàm băm nào là:

(1 − <sup>1</sup>

<small>𝑚</small>)<sup>𝑘</sup> => xác suất để một bit thành 1 là: 𝑝 = 1 − (1 − <sup>1</sup>

<small>𝑚</small>)<sup>𝑘</sup>Ta đã biết : lim

<small>𝑚</small>)<sup>𝑚</sup> = 𝑒<sup>−1</sup>Từ đó ta suy ra được: (1 − <sup>1</sup>

<small>𝑚</small>)<sup>𝑘</sup> = ((1 − <sup>1</sup>

≈ 𝑒<small>−𝑘/𝑚</small> => 𝑝 = 1 − 𝑒<small>−𝑘/𝑚</small>

Nếu ta có số lượng phần tử n thì xác suất p giờ đây sẽ là: 𝑝 = 1 − 𝑒<small>−𝑘𝑛/𝑚</small>

Giờ khi kiểm tra tính thành viên của một phần tử trong một tập hợp. Với k hàm băm ta sẽ có xác suất để một bit có giá trị là 1 như trên. Từ đó suy ra ta có xác suất false positive là:

𝜀 = [1 − (1 − <sup>1</sup>𝑚<sup>)</sup>

≈ (1 − 𝑒<small>−𝑘𝑛/𝑚</small>)<small>𝑘</small>

<b>2.2.3. Số lượng hàm băm tối ưu: </b>

Từ xác suất false positive 𝜀 ta có thể tính được rằng để 𝜀 đạt giá trị nhỏ nhất thì: 𝑘 = <sup>𝑚</sup>

<small>𝑛</small> ln 2

=> 𝜀 = (1 − 𝑒<sup>−( </sup><sup>𝑚</sup><small>𝑛 ln 2)𝑛/𝑚</small>)

<small>𝑚𝑛 ln 2</small>

=> ln 𝜀 = −<sup>𝑚</sup>

<small>𝑛</small>( ln 2)<small>2</small>

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

<small>ln 2</small>= − log<sub>2</sub>𝜀

<b>2.3. Counting Bloom Filter </b>

Counting Bloom Filter được Li Fan Giới thiệu lần đầu vào năm 2000. Được Li Fan sử dụng để ứng dụng cho giao thức chia sẻ bộ đệm web rộng có khả năng mở rộng.

Counting Bloom Filter (CBF) có thuật tốn cũng tương tự như Bloom Filter, nhưng có một thay đổi quan trọng là thay vì dùng một bit để đánh giá trị thì CBF sử dụng bộ đếm (4 bits, 8bits,…) tùy thuộc vào độ lớn bao nhiêu bits của một bộ đếm mà kích thước của CBF lớn hơn một BF truyền thống bấy nhiêu lần. Với sự thay đổi này ta có thể xóa phần tử ra khỏi cấu trúc BF.

Cũng giống như BF, CBF được khởi tạo bằng cách tạo một mảng số đếm 0 với độ dài m. Và mảng này cũng có kích thước cố định đã được định sẵn hoặc tính tốn ra. Vẫn với tập hợp phần tử 𝑆 = { 𝑥<sub>1</sub>, 𝑥<sub>2</sub>, … , 𝑥<sub>𝑛</sub>} , 𝑥 là một phần tử và 𝑥 ∈ 𝑆 , k hàm băm ℎ<sub>1</sub>(∙), … ℎ<sub>𝑘</sub>(∙). Điều khác biệt xảy ra khi chúng ta bắt đầu thêm phần tử vào CBF.

Giả sử ta có một CBF với m = 10 và k = 3.

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

<i><small>Hình 2.2: Tạo một CBF trống với kích thước m = 10</small></i>

<i><small>Hình 2.3: Thêm "Phần tử 1" vào CBF</small></i>

Khi thêm một phần tử vào CBF, các hàm băm sẽ tính tốn được các vị trí tương ứng trong mảng CBF. Khi này các bộ đếm tương ứng sẽ bắt đâu tăng giá trị như hình trên. Thêm “Phần tử 1” vào CBF khi đi qua các hàm băm ta có chuỗi 𝑚<sub>𝑥</sub> của “Phần tử 1” với các bộ đếm ở vị trí 0, 5, 8 được tăng lên 1. Khi này ta tiến hành + chuỗi 𝑚<sub>𝑥</sub> của “Phần tử 1” với chuỗi m ban đầu của CBF và được kết quả như hình trên.

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

<i><small>Hình 2.4: Thêm "Phần tử 2" vào CBF</small></i>

Khi thêm “Phần tử 2” vào CBF ta sẽ tính ra được chuỗi 𝑚<sub>𝑥</sub><small>′</small> với các bộ đếm 2 6 9 được tăng thêm 1. Ta tiến hành + chuỗi 𝑚<sub>𝑥</sub><small>′</small> với chuỗi m của CBF. Như vậy ta có một CBF mới bộ đếm 8 đã tăng thêm 2 giá trị so với ban đầu. Đây là điểm khác nhau mấu chốt giữa CBF và BF. Với cấu tạo là chuỗi bộ đếm thì sau khi đi qua các hàm băm thì các giá trị của các bộ đếm ở vị trí tương ứng sẽ tăng thêm 1 hoặc giảm đi 1 nếu là hoạt động xóa bỏ phần tử.

CBF hỗ trợ cho ta thêm chức năng xóa bỏ các phần tử. Cách thức hoạt động khi xóa bỏ cũng tương tự như khi thêm phần tử, chỉ có điều là khi này các bộ đếm sẽ giảm đi một đơn vị. Giả sử cũng với ví dụ trên ta xóa đi “Phần tử 1”

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

<b>Xác suất False Positive ε: </b>

Do CBF có cách sử dụng hồn tồn tương tự với BF nên ta vẫn có thể áp dụng cơng thức tính xác suất False Positive:

𝜀 = [1 − (1 − <sup>1</sup>𝑚<sup>)</sup>

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

𝑘 = <sup>𝑚</sup>𝑛<sup> ln 2 </sup>

Hoặc ta có thể tính được độ dài m cần thiết đối với một số lượng n nhất định và xác suất False Positive 𝜀:

𝑚 = − <sup>𝑛 ∗ ln 𝜀</sup>(ln 2)<small>2</small>

CBF mang đầy đủ các đặc tính của BF bao gồm tính chất hồn tồn khơng có kết quả false-negative. Khi kết quả trả về là false ta luôn chắc chắn được rằng kết quả đó là 100% false. Bởi vì chỉ cần một vị trí khơng có giá trị nghĩa là phần tử đó hồn tồn ko có trong hệ thống. CBF có khả năng thêm bớt phần tử của tập hợp thay vì chỉ thêm như BF.

<b>2.4. Scalable Bloom Filter (SBF) </b>

<b>2.4.1. Giới thiệu: </b>

Almeida và các cộng sự [8] đã chỉ ra hạn chế cố định chuỗi bit B của Bloom Filter bằng một phiên bản Bloom Filter có khả năng tự mở rộng là Scalable Bloom Filter. SBF giải quyết vấn đề phải chọn kích thước cố định cho một tập hợp và cho phép sự mở rộng tùy ý của tập hợp các phần tử được biểu diễn: Hai ý tưởng chính của SBF là:

- SBF được tạo thành từ các Partitioned Bloom Filter (PBF) [12]. Khi các PBF đầy do giới hạn về tỉ lệ lấp đầy, một bộ lọc mới sẽ được thêm vào, khi tiến hành kiểm tra tính thành viên ta sẽ kiểm tra ở mỗi PBF.

- Mỗi PBF mới thêm vào được tạo với xác suất False Positive tối đa chặt chẽ hơn trên cấp số nhân, sao cho xác suất False Positive gộp trên toàn bộ SBF hội tụ tại một giá trị mong muốn nào đó, kể cả khi số lượng tập hợp lớn đến vô hạn.

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

<b>2.4.2. Partitioned Bloom Filter: </b>

Partitioned Bloom Filter(PBF) [12] là một biến thể của BF. Để tối ưu hóa hiệu quả của các hàm băm k, mỗi hàm băm ℎ<sub>1</sub>(∙), … ℎ<sub>𝑘</sub>(∙), nên là một thành phần của lớp hàm băm phổ quát (the class of universal hash functions [13]). Với sự tối ưu trên PBF cấu tạo bởi các phân vùng của M bits độ dài của BF theo k hàm băm, từ đó ta sẽ được m phân lớp hay có thể gọi là m lát cắt với m = M/k. Trong biến thể này, mỗi hàm băm ℎ<sub>1</sub>(∙), … ℎ<sub>𝑘</sub>(∙) với 1 < i < k, tạo ra một chỉ số trên lát cắt m tương ứng với nó. Do đó, mỗi phần tử sẽ ln được mơ tả chính xác bằng k bit, điều này dẫn đến bộ lọc mạnh hơn và không tồn tại phần tử nhạy cảm với kết quả False Positive.

Với PBF khi này False Positive xảy ra khi sự hiện diện của phần tử x, không thuộc tập hợp nhưng tất cả các k bits được tính tốn bới ℎ<sub>1</sub>(∙), … ℎ<sub>𝑘</sub>(∙) lại thể hiện tồn tại phần tử x trong tập hợp do sự thêm vào của các phần tử khác gây nên. Về mặt trực quan, nếu số lượng lát cắt k hoặc kích thước m của PBF tăng lên thì tỉ lệ lỗi sẽ giảm.

Xác suất để một bit có giá trị (được đánh lên 1) trong một lát cắt là tỉ lệ lấp đầy 𝑝, giữa số lượng các bit có giá trị trong một lát cắt với kích thước bộ lọc m. Với một giá trị bộ lọc m lớn, tỉ lệ này là như nhau ở tất cả các lát cắt. Từ đó, với SBF ta có xác suất False Positive là:

𝑃 = 𝑝<sup>𝑘</sup>

Trong mỗi lát cắt, xác suất của một bit có giá trị sau khi bộ lọc thêm một phần tử mới là 1/𝑚, và xác suất một bit vẫn là 0 là 1 − 1/𝑚. Nếu có n phần tử được thêm vào, tỉ lệ xác suất của một bit vẫn là 0 là: (1 − 1/𝑚)<sup>𝑛</sup>. Vì vậy tỉ lệ các bit có giá trị trong một lát cát sau khi có n phần tử được thêm vào bộ lọc cũng là tỉ lệ lấp đầy p có cơng thức:

𝑝 = 1 − (1 − <sup>1</sup>𝑚<sup>)</sup>

<small>𝑛</small>

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

Từ những phân tích trên Almeida chỉ ra cách để xác định các tham số k ( hoặc m) từ một bộ lọc có kích thước M, Ta có thể tối đa hóa số lượng n phần tử được thêm vào một bộ lọc nhưng vẫn giữ được tỉ lệ xác suất False Positive P.

Từ nghiên cứu Bloom Filter ta được biết 1 − <sup>1</sup>

<small>𝑚</small> ≈ 1 − 𝑒<sup>−1/𝑚</sup> từ đó ta có: 𝑝 = 1 − 𝑒<sup>−𝑛/𝑚</sup>

<i><small>Bảng 2.1: Các giá trị tham số khác nhau của bộ lọc 32KB </small></i>

False Positive rate (P) 0.1% 0.01% 0.001% 0.0001%

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

Number of element (n) 18232 13674 10939 9116

<b>2.4.3. Scalable Bloom Filter: </b>

Từ những nghiên cứu và phân tích trên Scalable Bloom filter bắt đầu với một PBF ban đầu có 𝑘<sub>0</sub> lắt cắt và xác suất False Positive 𝑃<sub>0</sub>. Khi PBF này đầy, một PBF mới sẽ được thêm vào với 𝑘<sub>1</sub> lát cắt và xác suất False Positive 𝑃<sub>1</sub> = 𝑃<sub>0</sub>𝑟, r là tỉ lệ thắt chặt với 0 < 𝑟 < 1. Như vậy tại một thời điểm nào đó ta sẽ có 𝑙 bộ lọc với xác suất False Positive 𝑃<sub>0</sub>, 𝑃<sub>0</sub>𝑟, 𝑃<sub>0</sub>𝑟<small>2</small>, … , 𝑃<sub>0</sub>𝑟<small>𝑙−1</small>. Xác suất False Positive trên toàn SBF sẽ là

𝑃 = 1 − ∏(1 − 𝑃<sub>0</sub>𝑟<small>𝑖</small>)

Ta có thể áp dụng phép tính gần đúng như sau: 1 − ∏(1 − 𝑃<sub>𝑖</sub>)

≤ lim

<small>𝑙 → ∞</small>∑ 𝑃<sub>0</sub>𝑟<small>𝑖𝑙−1</small>

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

Từ những tham số trên ta có thể xác định được xác suất False Positive của một SBF là:

𝑃 ≤ 2𝑃<sub>0</sub> = 2<sup>1−𝑘</sup><small>0</small>

<b>2.4.4. Tham số tăng trưởng mở rộng: </b>

Một tham số quan trọng nữa của SBF là tham số tăng trưởng mở rộng 𝑠. Trên thực tế khi sử dụng SBF ta sẽ mong muốn một SBF khởi đầu với kích thước nhỏ và tăng dần về sau để có thể tối ưu hóa bộ nhớ. Tham số tăng trưởng được thêm vào để có thể đáp ứng nhu cầu đó. Khi một PBF mới được thêm vào SBF, kích thước của PBF đó có thể tính trực tiếp từ xác suất False Positive. Ta có thể tạo nên một sự tăng trưởng linh hoạt hơn bằng cách tăng kích thước bộ lọc theo cấp số nhân. Từ ý tưởng đó Almeida đã giới thiệu cho chúng ta một SBF được tạo nên từ các PBF với kích thước tăng dần 𝑚<sub>0</sub>, 𝑚<sub>0</sub>𝑠, 𝑚<sub>0</sub>𝑠<small>2</small>, … , 𝑚<sub>0</sub>𝑠<small>𝑙−1</small>

Một PBF sẽ đầy khi tỉ lệ lấp đầy đạt tới ½ khi đó PBF i sẽ chứa: 𝑛<small>𝑖</small> ≈ 𝑚<sub>0</sub>𝑠<sup>𝑖</sup>ln 2 phần tử. Khi SBF thứ 𝑙 được thêm vào thì khi này nó sẽ chứa đựng:

𝑛<small>𝑙</small> = (𝑙𝑛2)𝑚<sub>0</sub>∑ 𝑠<small>𝑖𝑙−1</small>

phần tử.

</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">

<i><small>Hình 2.6: Biểu diễn khơng gian sử dụng của 2 SBFs với hệ số phát triển s = 1 và s = 2 với r = 0.5, m0</small></i>

<i><small>= 128, </small></i><small>𝑃 = 10−6</small><i><small>so sánh với một BF cố định</small></i>

Với sự phát triển này cho phép SBF thích ứng nhanh chóng với các tập hợp có độ lớn khác nhau. Sự lựa chọn tối ưu sẽ là s = 2 khi này cho phép 𝑚<sub>𝑖</sub> có giá trị tương quan như một lũy thừa của 2. Trong hình 9 Almeida cho chúng ta thấy sự khác biệt về kích thước của SBF khi kích thước của tập hợp phần tử thay đổi với kích thước của PBF ban đầu 𝑚<sub>0</sub> = 128 . Ta có thể thấy nếu giữ nguyên 𝑚<sub>0</sub> kích thước của SBF tăng trưởng gần như tuyến tính như vậy sẽ khơng hiệu quả về không gian sử dụng của SBF cũng như chi phí tính tốn số lượng hàm băm. Cịn đối với s = 2 ta có thể thấy không chỉ số lượng PBF được giữ ở mức thấp mà không gian sử dụng của SBF cũng gia tăng logarith theo kích thước của tập hợp phần tử. Và khi kích thước phần tử đạt 22624 phần tử thì SBF chỉ nhỉnh hơn một ít so với một bộ lọc BF cố định. Ngoài ra Almeida cũng cho chúng ta hiểu hơn về khả năng thích ứng của SBF với sự tăng trưởng thơng qua 3 hình dưới đây.

</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">

<i><small>Hình 2.7: Khơng gian sử dụng tương đối với bộ lọc SBF với r = 0.5 và </small></i><small>𝑃 = 10</small><sup>−6</sup>

<i><small>Hình 2.8: Tương quan giữa số lượng l giai đoạn với tham số tăng trưởng s với 2 sự tăng trưởng là 10^6 và 10^2 phần tử</small></i>

</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">

Ở hình 10 ta có thể thấy khơng gian tương đối của một SBF sử dụng khi mức độ tăng trưởng gấp 6 lần ban đầu, với s = 2 ta thấy rằng không gian sử dụng chỉ gấp đôi so với ban đầu, với s = 4 ta còn tiết kiệm được thêm 50% không gian so với s = 2. Ta thấy khi 1 < s < 2 sẽ mang lại các kết quả khơng tốt. Ở hình 11 ta được thấy mối tương quan giữa số lượng giai đoạn và s với 2 trường hợp tập hợp tăng trưởng 10<small>2</small> và 10<sup>6</sup>, từ hình ta nhận thấy s khơng nên được chọn giá trị 1 < s < 2 vì vậy s là lũy thừa của 2 là một sự lựa chọn hợp lý khi ta xét về khía cạnh này. Từ 2 yếu tố trên ta có thể kết luận được s nên được chọn là lũy thừa của 2 và nên chọn s = 2 với sự tăng trưởng nhỏ và s = 4 với sự tăng trưởng nhanh của tập hợp phần tử.

<b>2.4.5. Tỉ số thắt chặt r: </b>

Cuối cùng khi sử dụng SBF chúng ta cần xác định một tham số quan trọng đó là tỉ số thắt chặt r: Ở trên để làm k<small>i</small> là một số nguyên ta đã chọn r = ½ theo tự nhiên nhưng ta hồn tồn có thể chọn những con số khác ngồi ½ và làm tròn kết quả số lượng hàm băm của bộ lọc i:

𝑘<sub>𝑖</sub> = 𝑘<sub>0</sub>+ 𝑖 log<sub>2</sub>𝑟<sup>−1</sup>

</div>

×