Park, Chen, và Yu ñưa ra việc dùng hash table (bảng băm) ñể xác ñịnh trong lần duyệt ñầu tiên (khi L1 ñang ñược xác ñịnh) nhiều cặp không thể là frequent. Thực tế có thuận lợi là bộ nhớ chính thường lớn hơn nhiều số lượng các items. Trong 2 lần duyệt ñể tìm L2, bộ nhớ chính ñược cho thấy trong hình 2.8.
Giả sử rằng dữ liệu ñược lưu như một flat file, với các bản ghi bao gồm basket ID và một danh sách các items của nó.
Lần duyệt 1:
(a) ðến số lần xuất hiện của tất cả các items
(b) Với mỗi bucket, bao gồm các items {i1, …ik}, băm tất cả các cặp tới một bucket của bảng băm, và tăng sốñếm của bucket lên 1
(c) Cuối lần duyệt, xác ñịnh L1, các items với sốñếm ít nhất = s (d) Cũng tại cuối lần duyệt, xác ñịnh những buckets với ñộ hỗ trợ ít
nhất là s
* ðiểm mấu chốt: một cặp (i, j) không thể là frequent trừ khi nó băm tới một frequent bucket, vì vậy các cặp mà băm tới các buckets khác không cần là candidate trong C2.
Thay bảng băm bởi một bitmap, với một bit cho một bucket: 1 nếu bucket là frequent, 0 nếu không là frequent.
Lần duyệt 2:
(a) Bộ nhớ chính giữ một danh sách của tất cả các frequent items, nghĩa là L1.
(b) Bộ nhớ chính cũng giữ bitmap (bản ñồ bit) tổng kết các kết quả của việc băm từ lần duyệt 1.
* ðiểm mấu chốt: Các buckets cần dùng 16 hoặc 32 bits cho một số ñếm (count), nhưng nó ñược nén vào 1 bit. Như vậy, thậm chí bảng băm chiếm gần như toàn bộ bộ nhớ chính trong lần duyệt 1, bitmap của nó chiếm không lớn hơn 1/16 bộ nhớ chính trong lần duyệt thứ 2
(c) Cuối cùng, bộ nhớ chính cũng giữ một bảng với tất cả các cặp candidate và các ñếm của chúng. Cặp (i, j) có thể là một candidate trong C2 chỉ khi tất cả các ñiều sau là ñúng:
ii) j là trong L1.
iii)(i, j) băm tới một frequent bucket.
ðiều kiện cuối cùng là phân biệt PCY với a-priori ñơn giản và giảm các yêu cầu về bộ nhớ trong lần duyệt 2
(d) Trong lần duyệt 2, ta xem xét mỗi basket, và mỗi cặp các items của nó, thực hiện các kiểm tra theo nguyên tắc nêu trên. Nếu 1 cặp ñảm bảo tất cả các ñiều kiện, cộng thêm vào sốñếm của nó trong bộ nhớ, hoặc tạo một mục cho nó nếu nó chưa tồn tại.
Khi nào PCY hơn Apriori? Khi có quá nhiều cặp các items từ L1, không thể ñể vừa một bảng các cặp candidate và các ñếm của chúng trong bộ nhớ chính, thì số các frequent buckets trong thuật toán PCY là ñủ nhỏñể giảm kích thước của C2 xuống vừa với bộ nhớ (thậm chí cả với khi 1/16 bộ nhớ dùng cho bitmap).
Khi nào phần lớn các buckets sẽ là infrequent trong PCY? Khi có ít cặp frequent, phần lớn các cặp là infrequent mà thậm chí khi các ñếm của tất cả các cặp băm tới một bucket ñã có ñược cộng thêm, chúng vẫn không chắc chắn cộng ñược tới lớn hơn hoặc bằng s.