FGenHUSM: Một thuật toán hiệu quả khai thác các chuỗi sinh phổ biến lợi ích cao

Các công trình nghiên cứu phát triển Công nghệ Thông tin và Truyền thông FGenHUSM: Một thuật toán hiệu quả khai thác các chuỗi sinh phổ biến lợi ích cao Trương Chí Tín1, Trần Ngọc Anh1, Dương Văn Hải1,2, Lê Hoài Bắc2 1 Khoa Toán – Tin học, Trường Đại học Đà Lạt 2 Khoa Công nghệ Thông tin, Trường Đại học Khoa học Tự nhiên, Đại học Quốc gia Tp. Hồ Chí Minh Tác giả liên hệ: Trần Ngọc Anh, anhtn@dlu.edu.vn Ngày nhận bài: 15/07/2019, ngày sửa chữa: 09/10/2019, ngày duyệt đăng: 28/10/2019 Định

pdf13 trang | Chia sẻ: huongnhu95 | Lượt xem: 416 | Lượt tải: 0download
Tóm tắt tài liệu FGenHUSM: Một thuật toán hiệu quả khai thác các chuỗi sinh phổ biến lợi ích cao, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
danh DOI: 10.32913/mic-ict-research-vn.v2019.n2.872 Biên tập lĩnh vực điều phối phản biện và quyết định nhận đăng: PGS.TS. Lê Hoàng Sơn Tóm tắt: Khai thác các chuỗi phổ biến và các chuỗi lợi ích cao có mức độ quan trọng khác nhau trong các ứng dụng thực tế. Gần đây, các nghiên cứu tập trung giải quyết bài toán tổng quát hơn, là khai thác tập FHUS chuỗi phổ biến lợi ích cao. Tuy nhiên, thời gian và bộ nhớ dùng để khai thác FHUS vẫn còn quá lớn. Bài báo đề xuất khái niệm tập FGHUS các chuỗi sinh phổ biến lợi ích cao, là một biểu diễn súc tích của FHUS, và một thuật toán mới hiệu quả để khai thác nó. Dựa vào hai chặn trên của độ đo lợi ích, hai chiến lược tỉa theo chiều rộng và sâu được thiết kế để loại bỏ nhanh các chuỗi ít phổ biến hoặc lợi ích thấp. Sử dụng một chặn dưới mới của lợi ích, một chiến lược tỉa địa phương mới được đề xuất để loại bỏ sớm các chuỗi không là chuỗi sinh phổ biến lợi ích cao. Dựa vào các chiến lược này, một thuật toán mới 퐹퐺푒푛퐻푈푆푀 được thiết kế để khai thác FGHUS mà tính hiệu quả của nó được thể hiện qua các thử nghiệm trên các cơ sở dữ liệu lớn. Từ khóa: Chuỗi lợi ích cao, khai thác chuỗi sinh phổ biến lợi ích cao, chặn trên và chặn dưới của độ đo lợi ích. Title: FGenHUSM: An Efficient Algorithm For Mining Frequent Generator High Utility Sequences Abstract: Mining the set of all frequent high utility sequences (FHUS) in quantitative sequential databases (QSDBs) plays an important role in many real-life applications. However, for huge QSDBs and low minimum support and utility thresholds, algorithms for discovering FHUS often exhibit poor performance in terms of runtime and memory consumption due to the enormous cardinality of the FHUS set. To address this issue, this paper introduces a novel set of all frequent generator high utility sequences (FGHUS). This set is a concise representation of FHUS having a cardinality that is often much less than that of FHUS. Thus, it is more convenient for users to analyze the information provided by the FGHUS set. This paper proposes a novel algorithm named 퐹퐺푒푛퐻푈푆푀 to efficiently mine FGHUS. The algorithm adopts the depth and width pruning strategies to quickly eliminate infrequent or low utility sequences. In addition, it also uses a novel local pruning strategy to prune non-frequent generator high utility sequences early, which is based on a new lower bound on the utility measure. Experimental results on large QSDBs show that the proposed algorithm is efficient in terms of runtime for mining FGHUS, and that the pruning strategies can greatly reduce the search space. Keywords: High utility sequence, frequent generator high utility sequence, upper and lower bounds on utility measure. I. GIỚI THIỆU Khi khai thác tập các chuỗi phổ biến (FSM: Frequent Sequence Mining) trên các cơ sở dữ liệu chuỗi tuần tự (SDB: Sequential Datadase), ta có thể đánh mất nhiều chuỗi lợi ích cao (HU: High Utility) quan trọng trong nhiều ứng dụng thực tế khi chúng ít phổ biến. Chẳng hạn, lợi ích của các mặt hàng bán được là thông tin rất hữu ích khi ra các quyết định trong kinh doanh. Vì vậy, bài toán khai thác các chuỗi HU (HUSM: High Utility Sequence Mining) trên các SDB lượng hóa (QSDB: Quantitative SDB) ra đời sau đó như một nhu cầu bức thiết. HUSM tổng quát hơn FSM và có nhiều ứng dụng như phân tích hành vi duyệt web [1], dữ liệu thương mại di động [2], hiệu chỉnh gen [3], v.v. Ta xét một ứng dụng điển hình của HUSM là phân tích dữ liệu mua hàng. Xét cơ sở dữ liệu chuỗi biểu diễn các đơn mua hàng của khách hàng trong một cửa hàng bán lẻ. Khi đó một chuỗi chứa các mặt hàng được mua bởi một khách hàng ở các thời điểm khác nhau. Chi tiết hơn, nó là một danh sách có thứ tự của các tập mặt hàng, mỗi tập mặt hàng chứa các mặt hàng được mua cùng nhau. Lấy ví dụ, ta có chuỗi 〈{kem đánh răng, bàn chải đánh răng}, {bánh Kinh đô, phô mai}, {nhang}〉. Chuỗi mặt hàng có thể được mua bởi một phụ nữ. Người 57 Các công trình nghiên cứu phát triển Công nghệ Thông tin và Truyền thông này mua kem đánh răng và bàn chải đánh răng cùng nhau, sau đó mua bánh Kinh đô với phô mai, cuối cùng mua nhang. Mỗi mặt hàng có một giá bán ra. Khi đó, ta có thể xác định được giá trị của một tập các mặt hàng được mua cùng nhau cũng như giá trị của một danh sách con các tập mặt hàng trong chuỗi mua hàng của một khách hàng nào đó. Khi khai thác trên một tập rất lớn các đơn mua hàng, ta có thể biết được các thông tin như: (i) các mặt hàng nào thường được mua cùng nhau, (ii) lợi ích đem lại của một chuỗi các tập mặt hàng nào đó, v.v. Các thông tin này rất có ích cho việc ra các quyết định kinh doanh của cửa hàng. Cho Ψ′ là một QSDB chứa các chuỗi đầu vào, trong mỗi chuỗi có các sự kiện, trong mỗi sự kiện có các thuộc tính, mỗi thuộc tính gắn với một số lượng và một giá trị lợi ích. Do mỗi chuỗi 훼 có thể xuất hiện ở các vị trí khác nhau (với các lợi ích khác nhau) trong Ψ′, nên lợi ích của 훼 trong Ψ′ có thể được tính dưới dạng tổng [4], giá trị lớn nhất 푢max (훼) [5, 6] hoặc giá trị nhỏ nhất 푢min (훼) [7, 8] (theo nghĩa an toàn và ít rủi ro cho việc phát triển các chiến lược kinh doanh hay ra quyết định). Khi đó, lợi ích của 훼 là tổng lợi ích trên tất cả các chuỗi Ψ′ chứa 훼. Nếu lợi ích của 훼 lớn hơn hoặc bằng một ngưỡng lợi ích tối thiểu 푚푢, nó được gọi là chuỗi HU, ngược lại 훼 được gọi là chuỗi lợi ích thấp (LU: Low Utility). Mục đích của HUSM là khai thác tập chuỗi lợi ích cao (HUS) chứa các chuỗi HU trên một QSDB. Thuận lợi chính khi giải FSM là tính ‘a priori’, còn gọi là tính đơn điệu giảm (anti-monotonic) hay DCP (Downward- Closure Property), của độ đo hỗ trợ: Mọi chuỗi cha của một chuỗi ít phổ biến (LF: Low Frequent) cũng LF [5, 9]. Đặc tính này cho phép rút gọn đáng kể không gian tìm kiếm khi tiến hành khai thác các chuỗi lớn dần trên cây tiền tố. Đáng tiếc là trong HUSM, độ đo lợi ích không có tính DCP. Để khắc phục, các chặn trên (UB: Upper Bound) lợi ích được thiết kế để thu hẹp phạm vi tìm kiếm. Chặn trên SWU [5] (thỏa DCP nhưng giá trị lớn) và các chặn trên khác chặt hơn (có giá trị nhỏ và gần với lợi ích hơn) lần lượt được thiết kế và sử dụng (mặc dù chỉ thỏa mãn các tính chất tựa DCP). Với 푢max (훼), có thể kể ra SPU và SRU (2013), PEU và RSU (2016), gần đây là MEU [6] và SEU [10]. Với 푢min (훼), các tác giả trong [7] đã đề xuất hai chặn trên, RBU và LRU, thiết kế hai chiến lược tỉa theo chiều sâu (DPS: Depth Pruning Strategy) và rộng (WPS: Width Pruning Strategy), và tích hợp chúng vào thuật toán EHUSM để khai thác hiệu quả HUS. Mặc dù EHUSM có thể khai thác nhanh HUS, lực lượng tập kết quả thường rất lớn, việc quản lý và phân tích chúng gây khó khăn đối với người sử dụng. Một tiếp cận thường được dùng trong FSM là khai thác các biểu diễn súc tích của chúng, chẳng hạn như các chuỗi tối đại, đóng và sinh [11, 12]. Chú ý rằng, bằng việc tích hợp FSM và HUSM, ta xét bài toán tổng quát hơn, là FHUSM: Khai thác tập FHUS các chuỗi phổ biến lợi ích cao (FHU: Frequent High Utility), đối với độ đo lợi ích 푢min. Theo cách tiếp cận trên, nhóm tác giả trong [13] đã đề xuất các thuật toán hiệu quả nhằm khai thác hai biểu diễn súc tích của FHUS, bao gồm các chuỗi phổ biến tối đại lợi ích cao (FMaxHU) và tập FCHUS các chuỗi phổ biến đóng lợi ích cao (FCHU). Tuy nhiên, chiều dài các chuỗi FMaxHU và FCHU thường khá lớn. Vì vậy, bài báo đề xuất một biểu diễn súc tích khác FGHUS của FHUS. Trước đây, đã xuất hiện nhiều công trình nhằm khai thác các tập (tập thuộc tính) sinh phổ biến có/không có lợi ích cao [14–16]. Các chuỗi (danh sách có thứ tự các tập thuộc tính) đóng/tối đại/sinh phổ biến cũng đã là đối tượng của nhiều nghiên cứu gần đây [12, 17, 18]. Tập chứa các chuỗi sinh phổ biến lợi ích cao (FGHUS) là mở rộng tự nhiên của chuỗi sinh phổ biến truyền thống. Một chuỗi FHU được gọi là chuỗi sinh phổ biến lợi ích cao (FGHU) nếu không tồn tại chuỗi con FHU nào có cùng độ hỗ trợ. Vì các chuỗi FGHU có chiều dài thường bé hơn nhiều so với các chuỗi FMaxHU và FCHU, nên chúng có các ưu điểm sau. Thứ nhất, ta có thể xem nó như một biểu diễn nén của FHUS. Điều này cũng rất phù hợp với nguyên lý chiều dài mô tả bé nhất (MDL: Minimum Description Length) [19]. Thứ hai, nó cho độ chính xác cao trong các nhiệm vụ chọn mô hình (so với FHUS hay tập FCHUS). Ngoài ra, khai thác các mẫu sinh (với chiều dài tối thiểu) còn là một bước quan trọng trong việc tìm các luật tuần tự quan trọng, chẳng hạn, các luật với ít giả thiết (vế trái) nhưng dẫn ra nhiều kết luận (vế phải), hoặc các luật không dư thừa [20]. Khi đó, các mẫu sinh chính là vế trái, vế phải có thể là các mẫu đóng hoặc không. Do đó, các mẫu sinh trong FGHUS thường được ưa thích hơn đối với người dùng khi cần phân tích tập kết quả, vì số lượng và chiều dài của chúng khá bé so với FHUS. Tập FHUS thường được sử dụng khi lực lượng của chúng khá bé, chẳng hạn khi ngưỡng hỗ trợ (푚푠) và ngưỡng lợi ích tối thiểu (푚푢) khá cao. Ngược lại, khi các ngưỡng này khá thấp và đặc biệt trên các tập dữ liệu lớn, để vượt qua khó khăn trong việc sử dụng cũng như phân tích tập kết quả FHUS với kích thước quá lớn, tập FGHUS sẽ là một lựa chọn phù hợp hơn với người dùng. Mục tiêu của bài báo này là khai thác tập FGHUS. Để khai thác hiệu quả nó, do FGHUS ⊆ FHUS, nên một chuỗi LU hoặc LF sẽ không là FGHU. Do đó, tính chất DCP của độ hỗ trợ và hai chiến lược WPS và DPS dựa vào RBU và LRU [7, 8] có thể được sử dụng để tỉa hiệu quả các chuỗi LF hoặc LU không những từ FHUS mà cả FGHUS. Tuy nhiên, vì FGHUS không là tập con của tập tất cả các chuỗi sinh phổ biến (FGS), nên ta không thể áp dụng trực tiếp các điều kiện tỉa 3E trong [12] để loại bỏ các chuỗi không là chuỗi sinh lợi ích cao (GHU). 58 Tập 2019, Số 2, Tháng 12 Bài báo có một số đóng góp sau đây: (i) đề xuất chặn dưới SF của 푢min; (ii) dựa vào điều kiện tỉa sớm tổng quát 퐺퐸푃 [13] và SF, chiến lược tỉa địa phương (LPG) được thiết kế để loại bỏ sớm các ứng viên (và các mở rộng của chúng) không là GHU; (iii) tích hợp ba chiến lược DPS, WPS và LPG vào thuật toán 퐹퐺푒푛퐻푈푆푀 để khai thác các chuỗi sinh phổ biến lợi ích cao (FGHU); (iv) các thử nghiệm trên hai cơ sở dữ liệu lớn, thực tế và tổng hợp, đã chỉ ra tính hiệu quả của 퐹퐺푒푛퐻푈푆푀 (so với thuật toán cơ sở không áp dụng các chiến lược tỉa) về mặt thời gian chạy và lực lượng của FGHUS thường rất bé so với FHUS. Đây là thuật toán đầu tiên khai thác biểu diễn súc tích FGHUS của FHUS với độ đo lợi ích 푢min. Phần còn lại của bài báo được tổ chức như sau. Phần II trình bày các khái niệm và kết quả cơ bản. Phần xây dựng chiến lược tỉa địa phương LPG. Phần IV đưa ra thuật toán 퐹퐺푒푛퐻푈푆푀 và các kết quả thử nghiệm. Phần V đưa ra các kết luận của bài báo. II. CÁC KHÁI NIỆM VÀ KẾT QUẢ CƠ BẢN 1. Định nghĩa bài toán Mục này giới thiệu vài khái niệm cơ sở liên quan đến bài toán HUSM với 푢min trong [7]. Định nghĩa 1 ([7]): Gọi A def= {푎1, 푎2, . . . , 푎푀 } là tập các thuộc tính phân biệt. Mỗi thuộc tính 푎 gắn liền với một số dương P(푎) thể hiện giá trị lợi ích đơn vị của nó. Khi đó, ta có véctơ P(퐴) def= 〈P(푎1), P(푎2), . . . , P(푎푀 )〉. Một thuộc tính số lượng/định lượng (푞-thuộc tính) là một cặp (푎, 푞), với 푎 ∈ A và 푞 ∈ 푅+ là một số lượng dương. Tập con 퐴 của A, 퐴 ⊆ A, được gọi là một sự kiện. Không mất tổng quát, giả sử rằng các thuộc tính trong một sự kiện được sắp tăng theo thứ tự từ điển ≺. Một sự kiện số lượng (푞-sự kiện) ứng với 퐴 được định nghĩa là 퐴′ def= {(푎푖 , 푞푖) | 푎푖 ∈ 퐴, 푞푖 ∈ 푅+}. 퐴 được gọi là sự kiện chiếu của 퐴′, ký hiệu là 퐴 = proj(퐴′). Danh sách các 푞-sự kiện 〈 퐴′푘 , 푘 = 1, 2, . . . , 푝 〉 ký hiệu là 훼′ = 퐴′1 → 퐴′2 · · · → 퐴′푝 , được gọi là một 푞-chuỗi. Chuỗi chiếu 훼 của 푞-chuỗi 훼′ được định nghĩa là 훼 = proj(훼′) def= proj(퐴′1) → proj(퐴′2) → · · · → proj(퐴′푝). Để thuận tiện, ta ký hiệu 훼′[푘] def= 퐴′푘 và 훼[푘] def = proj(퐴′푘 ). Một 푞-chuỗi là rỗng () nếu tất cả các sự kiện của nó là rỗng. Một cơ sở dữ liệu chuỗi lượng hóa (QSDB) D ′ chứa hữu hạn các 푞-chuỗi đầu vào, D ′ = {Ψ′푖 , 푖 = 1, 2, . . . , 푁} và 푃(퐴). Mỗi 푞-chuỗi Ψ′푖 gắn với một định danh (SID) 푖. Cơ sở dữ liệu chuỗi (không lượng hóa SDB) D ứng với D ′ được định nghĩa là D = proj(D ′) def= {proj(Ψ′푖), 푖 = 1, 2, . . . , 푁} . Kích thước của 푞-chuỗi 훼′, ký hiệu là size (훼′), là số các 푞-sự kiện (푝) của nó. Từ đây về sau, ta xét hai 푞-chuỗi bất kỳ 훼′ = 퐴′1 → 퐴′2 → · · · → 퐴′푝 và 훽 = 퐵′1 → 퐵′2 → · · · → 퐵′푞 cùng hai chuỗi tương ứng 훼 = 퐴1 → 퐴2 → · · · → 퐴푝 và 훽 = 퐵1 → 퐵2 → · · · → 퐵푞 . Định nghĩa 2 ([7]): Xét hai 푞-sự kiện 퐴′ và 퐵′ sau: 퐴′ = { 푎푖1 , 푞푖1 ), (푎푖2 , 푞푖2 ), . . . , (푎푖푚 , 푞푖푚 ) } , 퐵′ = {(푎 푗1 , 푞 푗1 ), (푎 푗2 ), 푞 푗2 ), . . . , (푎 푗푛 , 푞 푗푛 )} , với 푚 ≤ 푛. 퐴′ được gọi là chứa trong 퐵′, ký hiệu là 퐴′ v 퐵′, nếu tồn tại các số tự nhiên 1 ≤ 푘1 < · · · < 푘푚 ≤ 푛 sao cho 푎푖푙 = 푎 푗푘푙 và 푞푖푙 = 푞 푗푘푙 , với mọi 푙 = 1, 2, . . . , 푚. Ngoài ra, ta nói 훼′ chứa trong 훽′, ký hiệu là 훼′ v 훽′, nếu 푝 ≤ 푞 và tồn tại 푝 số nguyên dương, 1 ≤ 푗1 < · · · < 푗푝 ≤ 푞 sao cho 퐴′푘 v 퐵′푗푘 , với mọi 푘 = 1, 2, . . . , 푝. Đồng thời, 훼′ @ 훽′ tương đương với ((훼′ @ 훽′) ∧ (훼′ ≠ 훽′)). Tương tự, ta cũng dùng ký hiệu v để định nghĩa quan hệ chứa trong trên tập tất cả các chuỗi. Ta nói 훼 v 훽 hoặc 훽 w 훼 (훽 được gọi là chuỗi cha của 훼) nếu tồn tại 푝 số nguyên dương, 1 ≤ 푗1 < · · · < 푗푝 ≤ 푞 sao cho 퐴푘 ⊆ 퐵 푗푘 , với mọi 푘 = 1, 2, . . . , 푝. Đồng thời, 훼 @ 훽 tương đương với ((훼 v 훽) ∧ (훼 ≠ 훽)). Ta nói 훽′ chứa 훼, ký hiệu là 훼 v 훽′ (hay 훽′ w 훼, 훽′ được gọi là 푞-chuỗi cha của 훼) nếu proj(훽′) w 훼. Gọi 휌(훼) def= {Ψ′ ∈ D ′ | Ψ′ w 훼} là tập tất cả các 푞-chuỗi đầu vào chứa 훼. Độ hỗ trợ của 훼 được định nghĩa là số các 푞-chuỗi đầu vào chứa 훼, supp(훼) def= |휌(훼) |. Định nghĩa 3 ([7]): Các lợi ích của 푞-thuộc tính (푎, 푞), 푞-sự kiện 퐴′ = (푎푖1 , 푞푖1 ), (푎푖2 , 푞푖2 ), . . . , (푎푖푚 , 푞푖푚 ), 푞-chuỗi 훼′ và QSDB D ′ lần lượt được định nghĩa là 푢((푎, 푞)) def= 푃(푎) ∗ 푞, 푢(퐴′) def= 푚∑ 푗=1 푢((푎푖 푗 , 푞푖 푗 )), 푢(훼′) def= 푝∑ 푖=1 푢(퐴′푖), 푢(D ′) def= ∑ Ψ′∈D′ 푢(Ψ′). Để tránh tính toán lặp lại lợi ích 푢 của mỗi 푞-thuộc tính (푎, 푞) trong các 푞-chuỗi Ψ′ của D ′, ta tính chúng một lần và thay 푞 bởi 푢((푎, 푞)) = P(푎) ∗푞 trong cơ sở dữ liệu. Biểu diễn tương đương này của QSDB D ′ được gọi là QSDB tích hợp của D ′, cũng được ký hiệu vắn tắt là D ′. Từ đây về sau ta chỉ xét các QSDB tích hợp. 59 Các công trình nghiên cứu phát triển Công nghệ Thông tin và Truyền thông Bảng I D ′ −MỘT QSDB MINH HỌA SID Chuỗi 1 Ψ′1 = (푎, 9) → (푐, 2) (푒, 20) → (푐, 1) (푔, 50) → (푐, 8) (푑, 16) → (푐, 8) (푑, 16) (푒, 35) (푔, 60) → (푎, 3) (푐, 5) (푒, 2) 2 Ψ′2 = (푐, 9) ( 푓 , 28) → (푎, 15) (푐, 10) → (푑, 16) (푔, 40) (푎, 15) (푒, 20) → (푐, 6) (푑, 24) (푒, 25) 3 Ψ′3 = (푔, 20) → (푒, 40) ( 푓 , 12) → (푏, 45) (푐, 1) → (푑, 56) 4 Ψ′4 = (푒, 40) → (푐, 2) ( 푓 , 20) → (푐, 3) Xét QSDB minh họa trong Bảng I, sẽ được dùng cho các ví dụ trong suốt bài báo. Chuỗi 훼 = 푒 → 푐푒 chứa trong Ψ′1, 훼 v Ψ′1, vì nó xuất hiện trong Ψ′푖 . Lần xuất hiện đầu tiên của 훼 trong Ψ′1 là 푞-chuỗi con 훼 ′ = (푒, 20) → (푐, 8) (푒, 35) của Ψ′1. Vậy proj(훼′) = 훼 và 푢(훼′) = 20+8+35 = 63. Ngoài ra, do 훼 v Ψ′2, nên 휌(훼) = {Ψ′1,Ψ′2} và supp(훼) = 2. SDB D ứng với D ′ là D = {Ψ1 = 푎 → 푐푒 → 푐푔 → 푐푑푒푔 → 푎푐푒, Ψ2 = 푐 푓 → 푎푐 → 푑푔 → 푎푒 → 푐푑푒, Ψ3 = 푔 → 푒 푓 → 푏푐 → 푑, Ψ4 = 푒 → 푐 푓 → 푐}. Định nghĩa 4 ([7]): Giả sử 훼 v 훽′. Gọi O(훼, 훽′) def= {훼′ | (훼′ v 훽′) ∧ (proj(훼′) = 훼} là tập tất cả các lần xuất hiện 훼′ của 훼 trong 훽′. Lợi ích bé nhất (gọi tắt là lợi ích) của 훼 trong 훽′ được định nghĩa là 푢min (훼, 훽′) def= min{푢(훼′) | 훼′ ∈ O(훼, 훽′)}. Lợi ích của 훼 trong D ′ được định nghĩa là 푢min (훼) def= ∑ Ψ′∈휌(훼) 푢min (훼,Ψ′)). Lúc đó, 훼 được gọi là chuỗi lợi ích cao (HU) nếu 푢min (훼) ≥ 푚푢. Từ nay, ta viết gọn 훼푢푠 để diễn tả rằng 푢min (훼) = 푢 và supp(훼) = 푠. Lý do của việc sử dụng 푢min có thể tham khảo thêm trong [7, 8, 13]. Lấy ví dụ, xét 훼 = 푒 → 푐푒 với 휌(훼) = {Ψ′1,Ψ′2} và supp(훼) = 2. Dễ thấy rằng, O(훼,Ψ′4) = {(푒, 20) → (푐, 8) (푒, 35), (푒, 20) → (푐, 5) (푒, 20), (푒, 35) → (푐, 5) (푒, 20)}. Do đó, 푢min (훼,Ψ′1) = min{63, 45, 60} = 45 và tương tự, 푢min (훼,Ψ′1) = 51. Vì vậy, ta có 훼962 . Định nghĩa 5: Một chuỗi HU 훾 được gọi là chuỗi sinh lợi ích cao, GHU, nếu không tồn tại chuỗi con HU có cùng độ hỗ trợ với nó. Tập tất cả các chuỗi GHU được định nghĩa và ký hiệu là GHUS def= { 훾 ∈ HUS | š훾∗ ∈ HUS : (훾∗ @ 훾) ∧ (supp(훾) = supp(훾∗))}. Tập các chuỗi sinh phổ biến lợi ích cao, FGHU, được định nghĩa và ký hiệu là FGHUS def= { 훾 ∈ FHUS | š훾∗ ∈ FHUS : (훾∗ @ 훾) ∧ (supp(훾) = supp(훾∗))}. Khai thác tập FGHUS là mục tiêu của bài báo này. Ví dụ, xét 푚푢 = 226 và 푚푠 = 2. Với chuỗi 훾 = 푎 → 푔 → 푐푑푒, ta có 훾2282 ∈ FHUS. Hơn nữa, 훾 là một chuỗi FGHU, vì không tồn tại 훾∗ ∈ FHUS sao cho 훾∗ @ 훾 và supp(훾∗) = supp(훾). Đây cũng là chuỗi FGHU duy nhất, tức là FGHUS = {훾}. Để ý rằng, lực lượng của FGHUS thường bé hơn rất nhiều so với FHUS, đặc biệt khi 푚푢 và 푚푠 bé. Chẳng hạn, với 푚푢 = 1 và 푚푠 = 1, |FHUS| = 5235, trong khi đó |FGHUS| = 105 (khoảng 2% của |FHUS|). Định nghĩa 6 ([7]): Ta định nghĩa 푠-mở rộng và 푖-mở rộng của 훼 và 훽 lần lượt là 훼 푠 훽 def= 퐴1 → 퐴2 → · · · → 퐴푝 → 퐵1 → 퐵2 → · · · → 퐵푞 , 훼 푖 훽 def= 퐴1 → 퐴2 → · · · → (퐴푝 ∪ 퐵1) → 퐵2 → · · · → 퐵푞 , trong đó 푎 ≺ 푏 với mọi 푎 ∈ 퐴푝 và 푏 ∈ 퐵1. Một mở rộng tiến (hay mở rộng) của 훼 với 훽, ký hiệu là 훾 = 훼  훽, là một 푖-mở rộng hoặc là 푠-mở rộng, tức là 훼 푖 훽 hay 훼 푠 훽. Khi đó, 훼 được gọi là một tiền tố của 훾 và 훽 là một hậu tố (đối với 훼) của 훾. Ngoài ra, nếu 훿 là tiền tố bé nhất (của 훾 với v) chứa 훼, ta ký hiệu 훿 là pref (훾, 훼). Hậu tố 훽 của 훾 (đối với 훿, tức là 훾 = 훿  훽) được ký hiệu là suf (훾, 훼). Cơ sở dữ liệu chiếu (PDB) của 훼 được định nghĩa là D훼 def= {suf (Ψ, 훼) | (Ψ ∈ D) ∧ (Ψ w 훼)}. Ta nói D훽 chứa trong D훼, ký hiệu là D훽 v 퐷훼, nếu 휌(훽) ⊆ 휌(훼) và với mọi Ψ ∈ 휌(훽) ta có suf (Ψ, 훽) v suf (Ψ, 훼). Khi D훽 v D훼 và D훼 v D훽 , ta nói rằng D훽 bằng D훼 và ký hiệu D훽 = D훼. Dễ thấy rằng supp(훼) = |D훼 |. Ví dụ, với 훼 = 푒 → 푒 @ 훽 = 푒 → 푐푒, ta có 휌(훼) = 휌(훽) = {Ψ1,Ψ2}, suf (Ψ1, 훼) = _푔 → 푎푐푒 và suf (Ψ2, 훼) =. Do đó, PDB của 훼 là D훼 = {_푔 → 푎푐푒, }. Tương tự, ta có D훽 = D훼. Không gian tìm kiếm chuỗi lời giải được biểu diễn bởi một cây tiền tố với gốc là chuỗi rỗng, mỗi nút biểu diễn một chuỗi ứng viên, mỗi nút con biểu diễn một chuỗi mở rộng. Ta ký hiệu branch(훼) là nhánh có gốc tại nút biểu diễn 훼, nó chứa 훼 và các mở rộng của nó. Với một tiền tố khác rỗng 훼, 훽 = 훼  푦, chuỗi 훾 = 훼  휀  푦 mà 훾 w 훽 được gọi là một mở rộng lùi (BE) của 훽 bởi 휀, với 푦 là thuộc 60 Tập 2019, Số 2, Tháng 12 tính cuối của 훽, ký hiệu là lastItem(훽). Chẳng hạn, với 훼 = 푐푑 thì branch(훼) chứa các chuỗi: 푐푑 → 휀, 푐푑푒 → 휀 và 푐푑푒푔 → 휀, với mọi 휀, kể cả . Cho 훽 = 푐푒, các chuỗi 푐푑푒 và 푐 → 푐푔 → 푐푑푒 là các BE của 훽. Tuy nhiên, 푐푒 → 푐푔 → 푒 là BE của 푐 → 푒, nhưng không là BE của 훽. Thách thức chính của HUSM là 푢min không đơn điệu tăng cũng không đơn điệu giảm, tức là ∃훽, 훼, 훾, 훿 : (훽 A 훼) ∧ (훾 @ 훿) (푢min (훽) > 푢min (훼)) ∧ (푢min (훾) > 푢min (훿)). Nói cách khác, 푢min không thỏa mãn DCP (tính chất của supp được sử dụng trong FSM). Thật vậy, với 훼 = 푐푑, 훽 = 푐푑푔, và 훿 = 푐 → 푐 → 푐푑, dễ thấy rằng 훿 A 훼 @ 훽 và 푢min (훽) = 84 > 푢min (훼) = 54 > 푢min (훿) = 27. Để khắc phục, các chặn trên 푢min thỏa mãn các tính chất tựa đơn điệu giảm (có thể yếu hơn DCP) được đề xuất trong mục tiếp theo. 2. Hai chiến lược tỉa các chuỗi LU và LF theo chiều sâu và chiều rộng Giả sử 훼′ v Ψ′, 훼 = proj(훼′) v Ψ′, với Ψ′ = 퐵′1 → 퐵′2 → · · · → 퐵′푞 ∈ D ′, tức là tồn tại 푝 số nguyên, 1 ≤ 푖1 < 푖2 < · · · < 푖푝 ≤ 푞 sao cho 퐴′푘 v 퐵′푖푘 và 퐴푘 = proj(퐴′푘 ) ⊆ proj(퐵′푖푘 ), với mọi 푘 = 1, 2, . . . , 푝. Chỉ số cuối 푖푝 được gọi là điểm cuối của 훼 (hay 훼′) trong Ψ′, ký hiệu là end(훼,Ψ′) (hay end(훼′,Ψ′)). Thuộc tính cuối của 훼 trong 퐵′푖푝 được gọi là thuộc tính cuối ứng với 푖푝 , ký hiệu là 푒푖푝 . Khi đó, 푞-chuỗi còn lại của 훼 trong Ψ′ (đối với 푖푝) là phần còn lại của Ψ′ sau 푒푖푝 , ký hiệu là rem(훼,Ψ′, 푖푝). Gọi 푖∗푝 def= FEnd(훼,Ψ′) là điểm cuối đầu tiên của 훼 trong Ψ′. Cơ sở dữ liệu chiếu lượng hóa (PQDB) D ′훼 của 훼 chứa tất cả các chuỗi còn lại rem(훼,Ψ′, 푖∗푝), với Ψ′ ∈ D ′. Nếu 훼 =, ta quy ước 푖∗푝 def= FEnd(,Ψ′) def= 0, D ′ def= D ′ và rem(,Ψ′, 푖∗푝) = Ψ′. Với mỗi điểm cuối 푖푝 = end(훼,Ψ′), ta định nghĩa 푢(훼,Ψ′, 푖푝) def= min{푢(훼′) | 훼′ ∈ O(훼,Ψ′) ∧ end(훼′,Ψ′) = 푖푝}. Chặn trên dựa vào lợi ích còn lại của 푢min (훼,Ψ′) được định nghĩa và ký hiệu: 푢푏rem (훼,Ψ′) def= { 푢(훼,Ψ′, 푖∗푝) + 푢(rem(훼,Ψ′, 푖∗푝)), 훼 ≠, 푢(Ψ′), 훼 = . Ví dụ, xét 훽 = 푐 → 푑. Do lần xuất hiện đầu tiên của 훽 trong Ψ′1 là 푞-chuỗi con 훽 ′ = (푐, 2) → (푑, 16) v Ψ′1, nên 푖∗푝 def = FEnd(훽,Ψ′1) = 4, rem(훽,Ψ′1, 푖∗푝) = (푒, 35) (푔, 60) → (푎, 3) (푐, 5) (푒, 20), 푢(rem(훽,Ψ′1, 푖∗푝)) = 123, 푢(훽,Ψ′1, 푖∗푝) = min{푢(훽′), 푢((푐, 1) → (푑, 16))} = 17. Vì vậy 푢푏rem (훽,Ψ′1) = 17 + 123 = 140. Một độ đo 푢푏 được gọi là một chặn trên của 푢min nếu 푢min (훼) ≤ 푢푏(훼), với mọi 훼. Ngoài chặn trên truyền thống SWU(훼) def= ∑Ψ′∈휌(훼) 푢(Ψ′) [5], ta còn có các chặn trên chặt hơn sau đây. Định nghĩa 7 ([7]): Xét 푦 ∈ A và 훼 khác rỗng. Ta định nghĩa các chặn trên sau đây: RBU(훼) def= ∑ Ψ′∈휌(훼) 푢푏rem (훼,Ψ′), LRU(훼  푦) def= ∑ Ψ′∈휌(훼푦) 푢푏rem (훼,Ψ′), LRU(푦) def= SWU(푦). Với hai chặn trên 푢푏1 và 푢푏2, 푢푏1 được gọi là chặt hơn 푢푏2, ký hiệu là 푢푏1  푢푏2, nếu 푢푏1 (훼) ≤ 푢푏2 (훼) với mọi 훼. Theo [7, Định lý 1], ta có 푢min  RBU  LRU  SWU . Ví dụ, xét chuỗi 훽 = 푐 → 푐푑, 휌(훽) = {Ψ′1,Ψ′2}. Khi đó 푢min (훽,Ψ′1) = 25, 푢min (훽,Ψ′2) = 39, FEnd(훽,Ψ′1) = 4, 푢(훽,Ψ′1, 4) = 25, 푢(rem(훽,Ψ′1, 4)) = 123. Vì vậy 푢min (훽) = 푢min (훽,Ψ′1) + 푢min (훽,Ψ′2) = 64, 푢푏rem (훽,Ψ′1) = 150, 푢푏rem (훽,Ψ′2) = 64, RBU(훽) = 푢푏rem (훽,Ψ′1) + 푢푏rem (훽,Ψ′2) = 212. Ngoài ra, với 훼 = 푐 → 푐, ta dễ thấy rằng 훽 = 훼 푖 푑 và LRU(훽) = 푈퐵rem (훼,Ψ′1) + 푢푏rem (훼,Ψ′2) = 200 + 165 = 365, SWU(훽) = 푢(Ψ′1) + 푢(Ψ′2) = 229 + 208 = 437. Vì vậy ta có 푢min (훽) < RBU(훽) < LRU(훽) < SWU(훽). Để loại nhanh các chuỗi có lợi ích thấp hoặc ít phổ biến, dựa vào [7, Định lý 2], ta thiết kế hai chiến lược DPS và WPS nhằm thu hẹp hiệu quả không gian tìm kiếm. Trước hết, ta có chiến lược tỉa theo chiều sâu dựa vào RBU, viết là DPS(RBU), như sau: “Nếu RBU(훼) < 푚푢 thì branch(훼) có thể được tỉa”. Gọi hai tập thuộc tính ứng viên cho các 푖− và 푠-mở rộng lần lượt là: 퐼LRU (훼) def= {푧 | (LRU(훼 푖 푧) ≥ 푚푢) ∧ (supp(훼 푖 푧) ≥ 푚푠)}, 푆LRU (훼) def= {푧 | (LRU(훼 푠 푧) ≥ 푚푢) ∧ (supp(훼 푠 푧) ≥ 푚푠)}. 61 Các công trình nghiên cứu phát triển Công nghệ Thông tin và Truyền thông Nếu 푢min (훼 푖 푧) ≥ 푚푢 và supp(훼 푖 푧) ≥ 푚푠, thì LRU(훼 푖 푧) ≥ 푢min (훼 푖 푧) ≥ 푚푢, tức là 푧 ∈ 퐼LRU (훼). Vì LRU(훼 푖 푦 푖 푧) ≤ LRU(훼 푖 푧), max{LRU(훾) | 훾 ∈ {훼 푖 푦 푠 푧, 훼 푠 푦 푖 푧, 훼 푠 푦 푠 푧}} ≤ LRU(훼 푠 푧), supp(훼  푦  푧) ≤ supp(훼  푧), với 훼  푦  푧 w 훼  푧. Cho nên ta có 퐼LRU (훼 푖 푦) ⊆ 퐼LRU (훼), (푆LRU (훼 푖 푦) ∪ 푆LRU (훼 푖 푦)) ⊆ 푆LRU (훼). Từ đó, ta có chiến lược tỉa theo chiều rộng dựa vào LRU, viết là WPS(LRU), như sau: “Nếu LRU(훼  푦) < 푚푢, ta không cần xét tất cả các mở rộng tiến của 훼  푦, tức là branch(훼  푦), và các mở rộng lùi của nó. Lấy ví dụ, với 푚푢 = 230 và 푚푠 = 2, ta có supp(푏) < 푚푠 và LRU(푏) = 174 < 푚푢. Các giá trị LRU của các thuộc tính còn lại, trong tập chứa các thuộc tính ứng viên cho các mở rộng, 퐼LRU () = 푆LRU () = {푎, 푐, 푑, 푒, 푓 , 푔}, đều lớn hơn hay bằng mu (chẳng hạn LRU(푎) = 447). Khi đó, do WPS(LRU), ta có thể loại thuộc tính 푏 khỏi D ′. Để minh họa tác dụng tỉa theo chiều sâu của RBU, xét hai giá trị RBU(푎푐) = 199 và RBU(푎 → 푐) = 229 đều bé hơn 푚푢. Sử dụng DPS(RBU), toàn bộ nhánh branch(푎푐) và branch(푎 → 푐) bị tỉa. Dễ thấy rằng, sử dụng supp, 퐼LRU (푎) = {푐, 푒} và 푆LRU (푎) = {푎, 푐, 푑, 푒, 푔}(⊆ 푆LRU ( )). Vì 푆LRU (푎 → 푐) ⊆ 푆LRU (푎) và với bất kỳ 푥 ∈ 푆LRU (푎), RBU(푎 → 푐 → 푥) < LRU(푎 → 푐 → 푥) = 229 < 푚푢 hay supp(푎 → 푐 → 푥) = 1 < 푚푠, 푆LRU (푎 → 푐) = ∅. Do đó, bởi DPS(RBU), ta chỉ có thể tỉa nhánh branch(푎 → 푐 → 푥), với mọi 푥 ∈ {푎, 푐, 푑, 푒, 푔}. Tuy nhiên, sử dụng WPS(LRU), ta vẫn có thể loại bỏ tất cả các nhánh mở rộng lùi của branch(푎 → 푐 → 푥), ví dụ như branch(푎 → 푐 → 푔 → 푑), branch(푎 → 푐푒 → 푐푔 → 푐푑) (của branch(푎 → 푐 → 푑)), v.v. Thật vậy, lý do là 퐼LRU (푎 → 푐푒 → 푐푔 → 푐) ⊆ 푆LRU (푎 → 푐푒) ⊆ 푆LRU (푎 → 푐) = ∅. Ngoài ra, mặc dù chặt hơn LRU, nhưng RBU không có tác dụng tỉa theo chiều rộng. Nếu dùng RBU để tỉa theo chiều rộng, ta có thể tỉa nhầm một số lời giải. Thật vậy, với 푚푢 = 225 và 푚푠 = 2, vì 퐼RBU (푎 → 푔 → 푒 → 푐) (⊆ 푆RBU (푎 → 푔 → 푒) = {푐}), nên 퐼RBU (푎 → 푔 → 푒 → 푐) = ∅. Tuy nhiên, 푎 → 푔 → 푒 → 푐푒2252 ∈ FHUS. Có thể kết luận rằng, mặc dù LRU lỏng hơn RBU, tác dụng tỉa của WPS thật sự mạnh hơn DPS. Vì vậy, DPS và WPS được dùng để tỉa các nhánh LU (và LF) trên cây tìm kiếm tiền tố, có hiệu quả với các giá trị 푚푢 cao [7]. Tuy nhiên, nhiều chuỗi HU có thể không là các chuỗi sinh HU (non-GHU). Do đó, trong phần tiếp theo, chiến lược LPG tỉa các ứng viên non-GHU sẽ được đề xuất. Để ý rằng, LPG sẽ hiệu quả với các giá trị 푚푢 thấp. III. CHIẾN LƯỢC LPG TỈA SỚM CÁC CHUỖI KHÔNG LÀ SINH LỢI ÍCH CAO 1. Điều kiện tỉa sớm tổng quát Trước hết, chúng tôi nhắc lại hai độ đo SE, SLIP và điều kiện tỉa sớm tổng quát đã được dùng để tỉa các chuỗi phổ biến đóng và các chuỗi phổ biến đóng có lợi ích cao [13], hoặc các chuỗi sinh phổ biến [12]. Định nghĩa 8 ([12]): Tổng các sự kiện còn lại trong một PDB D훼 được định nghĩa và ký hiệu là: SE(훼) def= ∑ Ψ∈D: suf (Ψ,훼) ∈D훼 ( size(Ψ) − size(pref (Ψ, 훼)) + 1) . Với chuỗi 훼, gọi 훿 là tiền tố bé nhất của Ψ chứa 훼, Ψ ∈ 휌(훼). Đặt 푓 푖(훼,Ψ) là chỉ số (trong Ψ) của sự kiện cuối của 훿 và lastEvent(훼) là sự kiện cuối của 훼. Gọi LP(훼,Ψ) là danh sách các vị trí thứ 푖 khác nhau trong Ψ mà lastEvent(훼) ⊆ Ψ[푖] và 푓 푖(훼,Ψ) ≤ 푖 ≤ size(Ψ). Không mất tổng quát, giả sử rằng các chỉ số trong LP(훼,Ψ) được sắp tăng. Khi đó, slip(훼,Ψ) def= | LP(훼,Ψ) | là số các vị trí xuất hiện của sự kiện cuối của 훿 trong Ψ. Định nghĩa 9 ([13]): Số đo SLIP của PDB D훼 được định nghĩa và ký hiệu là SLIP(훼) def= ∑ Ψ∈휌(훼) slip(훼,Ψ). Ví dụ, xét 훼 = 푒 → 푒. Vì D훼 = {_푔 → 푎푐푒, }, nên SE(훼) = 3. Ta có 휌(훼) = {Ψ1,Ψ2}. Vì sự kiện cuối 푒 xuất hiện hai lần trong Ψ1 tại vị trí thứ 4 và thứ 5, nên LP(훼,Ψ1) = {4, 5}. Tương tự, LP(훼,Ψ2) = {5}. Vì vậy, SLIP(훼) = 3. Từ SE và SLIP, ta có điều kiện tỉa sớm tổng quát (GEP) trong Định lý 1 sau đây. Định lý 1 (Điều kiện tỉa sớm tổng quát [13]): Xét hai chuỗi 훼 và 훽 thỏa mãn 훼 v 훽. Khi đó: a) Nếu SE(훼) = SE(훽), thì supp(훼) = supp(훽) và D훾 = D휆 với mọi 푠-mở rộng 훾 của 훼 và 휆 của 훽 với cùng một chuỗi khác rỗng; b) Nếu SE(훼) = SE(훽) và SLIP(훼) = SLIP(훽), thì supp(훼) = supp(훽) và D훾 = D휆 với tất cả mở rộng 훾 của 훼 và 휆 của 훽 với cùng một chuỗi khác rỗng. 2. Chiến lược LPG Dựa vào GEP và chặn dưới SF sau đây của 푢min, chiến lược LPG tỉa sớm các chuỗi non-GHU được đề xuất. Định nghĩa 10: Cho chuỗi phổ biến 훼, tức là supp(훼) ≥ 푘 , với 푘 def= 푚푠. Sau khi sắp xếp tăng dần dãy U(훼) def= {푢min (훼,Ψ′) | Ψ′ ∈ 휌(훼)}, 62 Tập 2019, Số 2, Tháng 12 ta thu được dãy {푢푖 , 1 ≤ 푖 ≤ 푛} với 푛 ≥ 푘 . Chặn dưới SF của 푢min được định nghĩa là tổng 푘 giá trị bé nhất của U(훼), SF(훼) def= ∑ 1≤푖≤푘 푢푖 . Định lý 2: Ta có: (a) SF là một chặn dưới của 푢min, tức là SF(훼) ≤ 푢min (훼), với mọi 훼; (b) SF là đơn điệu tăng đối với các mở rộng, tức là SF(훽) ≥ SF(훼), với mọi 훽 = 훼  훿 w 훼. Chứng minh: (a) Với mọi 훼, ta có SF(훼) = ∑푘푖=1 푢푖 ≤∑푛 푖=1 푢푖 = 푢min (훼). (b) Với mở rộng bất kỳ 훽 = 훼훿 w 훼, ta có 휌(훽) ⊆ 휌(훼) và 푢min (훽,Ψ′) ≥ 푢min (훼,Ψ′), với mọi Ψ′ ∈ 휌(훽). Thật vậy 푢min (훽,Ψ′) def= min{푢(훽′) | 훽′ ∈ O(훽,Ψ′)} = 푢(훽′min), ∃훼′∗ ∈ O(훼,Ψ′), 휀′∗ v 훽′min sao cho 훼 v 훽′min = 훼′∗  휀′∗ ∈ O(훽,Ψ′) và 푢(훽′min) = 푢(훼′∗) + 푢(휀′∗) ≥ 푢(훼′∗) ≥ min{푢(훼′) | 훼′ ∈ O(훼,Ψ′)} def= 푢min (훼,Ψ′). Sau khi sắp tăng U(훼) và U(훽), ta có được hai dãy {푢푖 , 1 ≤ 푖 ≤ 푛}, {푢′푗 , 1 ≤ 푗 ≤ 푚} với 푛 ≥ 푚 ≥ 푘 . Khi đó, tồn tại các số nguyên 1 ≤ 푖1 < 푖2 < · · · < 푖푚 sao cho 푢푖 푗 ≤ 푢′푗 , với 1 ≤ 푗 ≤ 푚, nên ta có SF(훼) = 푘∑ 푖=1 푢푖 ≤ 푘∑ 푗=1 푢푖 푗 ≤ 푘∑ 푗=1 푢′푗 = SF(훽). Ví dụ, khi xét hai ngưỡng 푚푢 = 85, 푚푠 = 2 và mở rộng 훽 = 푒 → 푒 của 훼 = 푒, ta có 휌(훽) = {Ψ′1,Ψ′2} ⊂ 휌(훼) = D ′, 푢min (훼) = 120, 푢min (훽) = 85, và U(훼) = {20; 20; 40; 40}, U(훽) = {40; 45}, nên SF(훼) = 20 + 20 = 40 và SF(훽) = 40 + 45 = 85. Khi đó, SF(훼) < 푢min (훼), SF(훽) ≤ 푢min (훽), và SF(훼) < SF(훽). Trên cây tiền tố với gốc Root =, với mỗi nút 푞 (1- thuộc tính), ta có chuỗi tương ứng 훼 = path(푞), trong đó path(푞) là chuỗi đầy đủ thu được bằng cách duyệt từ Root đến 푞. Nút 푞 có 푖-mở rộng và 푠-mở rộng bởi hai thuộc tính 푢 và 푣 tương ứng, ký hiệu là, 훼 푖 푢 và 훼 푠 푣. Khi đó, ta gán 푢.type = 푖-ext và 푣.type = 푠-ext. Ký hiệu tập chứa 훼 và tất cả các mở rộng (hay các 푠-mở rộng, các 푖-mở rộng) cũng như tất cả các hậu duệ của các mở rộng này (hay các 푠-mở rộng và các 푖-mở rộng) là branch(훼) (hay tương ứng là 푠-child branches(훼) và 푖-child branches(훼)). Nếu tất cả các chuỗi trong các nhánh này không là chuỗi sinh HU, ta ký hiệu chúng là non-GHU branch(훼) (hay tương ứng là non-GHU s-child branches(훼) và non-GHU i-child branches(훼)). Định lý 3 (Chiến lược LPG): Xét 푞, 푢, 푣 là các nút có cùng tiền tố và 훼 = path(푞) là chuỗi ứng với 푞. (a) Với mỗi 푖-mở rộng, 푖new = 훼 푖 푢: (i) Nếu SE(훼) = SE(푖new) và SF(훼) ≥ 푚푢, thì non-GHU s-child branches(푖new) có thể được tỉa. Hơn nữa, nếu SLIP(훼) = SLIP(푖new), thì toàn bộ nhánh non-GHU branch(푖new) cũng được tỉa; (ii) Nếu SE(path(푢)) = SE(푖new) và SF(path(푢)) ≥ 푚푢, thì non-GHU s-child branches(푖new) được tỉa. Ngoài ra, nếu SLIP(path(푢)) = SLIP(푖new), thì non-GHU branch(푖new) được tỉa; (iii) Nếu q.type = s-ext, q.Parent.Item = q.Item (tồn tại 푟 ∈ q.Parent.iChildren sao cho r.Item = u.Item), q.Parent.type = s-ext, SE(path(푟)) = SE(푖new) và SF(path(푟)) ≥ 푚푢, thì ta có thể tỉa non-GHU branch(푖new). (b) Với mỗi 푠-mở rộng, 푠new = 훼 푠 푣 sao cho v.type = s-ext, nếu SE(path(푣)) = SE(푠new) và SF(path(푣)) ≥ 푚푢, thì non-GHU branch(푠new) có thể được tỉa. Chứng minh: Ta sẽ chứng minh a(i). Các khẳng định còn lại có thể được chứng minh tương tự. Giả sử rằng SE(훼) = SE(푖new) và SF(훼) ≥ 푚푢. Vì 훼 @ 푖new, với mọi 푠-mở

Các file đính kèm theo tài liệu này:

  • pdffgenhusm_mot_thuat_toan_hieu_qua_khai_thac_cac_chuoi_sinh_ph.pdf