Computer >> Máy Tính >  >> Lập trình >> Lập trình

Làm thế nào để thuật toán Đếm mất mát tìm thấy các mục thường xuyên?

Người dùng hỗ trợ hai tham số đầu vào bao gồm ngưỡng hỗ trợ tối thiểu, σ và lỗi bị ràng buộc trước đó, được biểu thị là ε. Theo lý thuyết, luồng đến được chia thành các nhóm có chiều rộng w =[1 / ε].

Gọi N là độ dài luồng hiện tại, tức là số lượng mục xem cho đến nay. Thuật toán cần có cấu trúc dữ liệu danh sách tần suất cho tất cả các phần tử có tần số cao hơn 0. Đối với mọi mục, danh sách hỗ trợ f, số tần số gần đúng và ∆, sai số lớn nhất có thể có của f.

Thủ tục thuật toán nhóm các mục như sau. Khi một nhóm mới đến, các mục trong nhóm sẽ được chèn vào danh sách tần suất. Nếu một mục nhất định tồn tại trong danh sách, nó có thể chỉ cần tăng số lượng tần suất của nó, f. Nếu không, nó có thể thêm nó vào danh sách với tần suất đếm là 1. Nếu mục mới là từ nhóm thứ b, nó có thể đặt ∆, lỗi tối đa có thể xảy ra trên số tần suất của mục, là b − 1.

Bất cứ khi nào ranh giới nhóm được thu thập (tức là N đạt đến bội số của chiều rộng w, bao gồm w, 2w, 3w, v.v.), danh sách tần suất được xác định. Gọi b là số thùng hiện tại. Một mục nhập bị xóa nếu đối với mục nhập đó, f + ∆ ≤ b. Trong cách tiếp cận này, mục tiêu của thuật toán để duy trì danh sách tần suất nhỏ để nó có thể vừa với bộ nhớ chính. Đếm tần suất được lưu cho từng mục sẽ là tần suất thực của mục hoặc mức tối thiểu của mục đó.

Các yếu tố cần thiết trong các thuật toán xấp xỉ là tỷ lệ xấp xỉ (hoặc giới hạn lỗi). Hãy xem xét trường hợp một mục bị xóa. Điều này xuất hiện khi f + ∆ ≤ b cho một mục, trong đó b là số nhóm hiện tại.

Có thể hiểu rằng b ≤ N / w, tức là b ≤ εN. Tần số thực của vật nhiều nhất là f + ∆. Do đó, một mục có thể được tối thiểu hóa là εN. Nếu hỗ trợ thực của mục này là σ (đây là hỗ trợ tối thiểu hoặc giới hạn dưới để nó được coi là thường xuyên), do đó tần số thực tế là σN và tần số, f, trong danh sách tần suất phải là nhỏ nhất (σN −εN ).

Do đó, nếu chúng ta xuất tất cả các mục trong danh sách tần suất có giá trị f nhỏ nhất (σN −εN), thì một số mục thường xuyên sẽ được xuất. Hơn nữa, một số mục thường xuyên (với tần suất thực tế là σN −εN tối thiểu nhưng nhỏ hơn σN) sẽ được xuất.