3.2.1.1. Biểu diễn trạng thái
Mỗi vị trí trong vết (trace) tương ứng với một trạng thái (state):
Hình 3.2: Ví dụ trạng thái của một vết [2]
Ví dụ biểu diễn trong hình trên là trạng thái sau khi thi hành 9 sự kiện đầu tiên của một vết gồm 16 sự kiện.
Câu hỏi đặt ra là làm thế nào để biểu diễn trạng thái của vết?
Chúng ta có thể dựa vào các sự kiện trước đó (past), các sự kiện sau đó (future) hoặc cả hai (past and future) để biểu diễn trạng thái của vết tương ứng với một vị trí cụ thể.
Phần quá khứ của một trường hợp là tiền tố (prefix) của vết hoàn chỉnh. Tương tự, phần tương lại là hậu tố (postfix) của vết hoàn chỉnh. Trong nhiều trường hợp vết các sự kiện là dài, tức là chứa dãy nhiều sự kiện thì việc đưa toàn bộ dãy tiền tố hay hậu tố vào trong biểu diễn và tính toán sẽ dẫn đến có quá nhiều trạng thái khác nhau và các mô hình quá trình trở nên quá chi tiết. Khi đó ta nên lựa chọn cách biểu diễn trạng thái một cách trừu tượng.
Có nhiều mức trừu tượng khác nhau:
1) Sequence abstraction (trừu tượng dãy): quan tâm đến cả thứ tự và tần suất các sự kiện.
2) Set abstraction (trừu tượng tập hợp): chỉ quan tâm đến sự xuất hiện của các sự kiện mà không quang trọng đến thứ tự hay tần suất.
3) Multiset abstraction (trừu tượng tập bội), tương tự trừu tượng tập hợp nhưng có quan tâm thêm đến số lần xuất hiện của sự kiện trong vết.
4) Partial abstraction (trừu tượng một phần): Chúng ta cũng có thể giới hạn chiều ngang của mức trừu tượng bằng một hệ số k gọi là k-tail. Ở đó ta chỉ quan tâm đến k sự kiện gần nhất với vị trí hiện tại.
5) Filtering abstraction (trừu tượng lọc): bỏ qua một số sự kiện khi biểu diễn, chỉ biểu diễn một tập con các sự kiện trong vết đầy đủ.
Hình 3.4: Các cách biểu diễn trạng thái của vết theo các mức độ trừu tượng [4]
Hàm trạng thái
Một hàm biểu diễn trạng thái lstate( ) là một hàm mà, cho một vết σ và một số k chỉ số lượng các sự kiện của σ đã xảy ra, sinh ra một vài trạng thái, v.v…, tập các hoạt động đã xảy ra trong k sự kiện đầu tiên.
Trước hết ta có định nghĩa về các phép toán trên dãy:
Định nghĩa 3.1[1] : Cho một dãy σ = ‹a1, a2, . . . , an› trong đó ai= σ(i), 1 ≤ i ≤ n. - hdk(σ) = ‹a1, a2, . . . , ak min n›, là “đầu” của dãy bao gồm k phần tử đầu tiên
(nếu có thể).
- tlk(σ) = ‹a(n-k+1) max 1, ak+2, . . . , an› là “đuôi” của dãy bao gồm k phần tử cuối
cùng (nếu có thể).
- ∂set(σ ) = {a1, a2, . . . , an} chuyển đổi từ một dãy thành tập hợp. - ∂multiset(σ ) = [a1, a2, . . . , an] chuyển đổi từ một dãy thành tập bội.
Dựa vào định nghĩa các phép toán ở trên người ta có định nghĩa về quá khứ và tương lai của một vết σ sau k bước như sau:
Định nghĩa 3.2[4] Cho tập các hoạt động A và σ = ‹a1, a2, . . . , an› ∈A* là một vết biểu diễn một trường hợp đầy đủ. Quá khứ (the past) của trường hợp này sau khi đã thi hành được k bước (0 ≤ k ≤ n) là hdk(σ). Tương lai (the future) của trường hợp này sau khi đã thi hành k bước (0 ≤ k ≤ n) là tln-k(σ). Quá khứ và tương lai được biểu diễn bằng cặp: (hdk(σ), tln-k(σ)).
Như vậy cho σ = ‹a1, a2, . . . , an› ∈ L là một vết có độ dài n. thì:
𝒍𝟏𝒔𝒕𝒂𝒕𝒆(σ, k)= hdk(σ ) = ‹a1, a2, . . . , ak› là một ví dụ của hàm biểu diễn trạng thái.
Ví dụ 𝑙1𝑠𝑡𝑎𝑡𝑒(σ, 9) = ‹a, b, c, d, c, d, c, d, e›.
𝒍𝟐𝒔𝒕𝒂𝒕𝒆(σ, k)= tln-k(σ ) = ‹ak+1, ak+2, . . . , an› là một ví dụ khác. Ví dụ 𝑙2𝑠𝑡𝑎𝑡𝑒(σ, 9) = ‹f, a, g, h, h, h, i›.
𝒍𝟑𝒔𝒕𝒂𝒕𝒆(σ, k) = ∂multiset (hdk(σ )) = [a1, a2, . . . , ak] là một hàm biểu diễn trạng thái
chuyển đổi toàn bộ quá khứ thành một tập bội. Ví dụ 𝑙3𝑠𝑡𝑎𝑡𝑒(σ, 9) = [a1, b1, c3, d3, e1] = [a, b, c3, d3, e].
𝒍𝟒𝒔𝒕𝒂𝒕𝒆(σ, k) = ∂set (hdk(σ )) = {a1, a2, . . . , ak} là một hàm biểu diễn trạng thái
chuyển đổi toàn bộ quá khứ thành một tập hợp. Ví dụ 𝑙4𝑠𝑡𝑎𝑡𝑒(σ, 9) = {a, b, c3, d3, e}.
Dễ thấy 𝑙4𝑠𝑡𝑎𝑡𝑒(σ, k) có mức trừu tượng cao hơn 𝑙1𝑠𝑡𝑎𝑡𝑒(σ, k). Theo định nghĩa, 𝑙4𝑠𝑡𝑎𝑡𝑒(𝜎1, k) = 𝑙4𝑠𝑡𝑎𝑡𝑒(𝜎2, k) nếu𝑙1𝑠𝑡𝑎𝑡𝑒(𝜎1, k) = 𝑙1𝑠𝑡𝑎𝑡𝑒(𝜎2, k) nhưng chiều ngược lại thì không chắc. Trên đây chỉ là một vài ví dụ về cách định nghĩa hàm biểu diễn trạng thái lstate( ). Tùy vào các mức trừu tượng khác nhau mà người ta có thể định nghĩa các hàm biểu diễn trạng thái khác nhau.
3.2.1.2. Xây dựng hệ thống chuyển
Định nghĩa 3.3 [1] (hệ thống chuyển dựa trên nhật ký sự kiện):
Cho L ∈ 𝔹(𝒜∗) là một nhật ký sự kiện và lstate( ) là một hàm biểu diễn trạng thái. TSL,lstate( ) = (S,A,T ) là một hệ thống chuyển dựa trên L và lstate( ) với:
S = {lstate(σ, k) | σ ∈ L ∧ 0 ≤ k ≤ |σ|} là không gian trạng thái.
A = {σ(k) | σ ∈ L ∧ 1 ≤ k ≤ |σ|} là tập các hoạt động.
T = {(lstate(σ, k), σ(k + 1), lstate(σ, k + 1)) | σ ∈ L ∧ 0 ≤ k < |σ|} là tập các bước chuyển.
Send = {lstate(σ, |σ|) | σ ∈ L} là tập các trạng thái kết thúc.
Như vậy sử dụng một vài hàm biểu diễn trạng thái chúng ta có thể tự động xây dựng một hệ thống chuyển dựa trên nhật ký sự kiện.
Ví dụ: L1= [〈𝐚, 𝐛, 𝐜, 𝐝〉3, 〈𝐚, 𝐜, 𝐛, 𝐝〉2, 〈𝐚, 𝐞, 𝐝〉]
Quá khứ không trừu tượng 𝑙1𝑠𝑡𝑎𝑡𝑒(σ, k) = hdk(σ )
Tương lai không trừu tượng 𝑙2𝑠𝑡𝑎𝑡𝑒(σ, k) = tln-k(σ )
Quá khứ với trừu tượng tập bội 𝑙3𝑠𝑡𝑎𝑡𝑒(σ, k) = ∂multiset (hdk(σ ))
Chỉ sự kiện cuối cùng là quan trọng cho trạng thái
𝑙5𝑠𝑡𝑎𝑡𝑒(σ, k) = tl1(hdk(σ ) )
3.2.2. Chuyển đổi từ hệ thống chuyển sang lưới Petri 3.2.2.1. Định nghĩa vùng 3.2.2.1. Định nghĩa vùng
Định nghĩa 3.4 [1] (vùng trạng thái) Gọi TS = (S, A, T) là một hệ thống chuyển và R ⊆ S là một tập con gồm các trạng thái. R là một vùng nếu với mỗi hoạt động a ∈ A, một trong các điều kiện sau được thỏa mãn:
1) Tất cả các bước chuyển (s1, a, s2) ∈ T đều đi vào R, nghĩa là s1∉ R và s2∈R. 2) Tất cả các bước chuyển (s1, a, s2) ∈ T đều đi ra khỏi R, nghĩa là S1 ∈ R và s2
∉ R.
3) Tất cả các bước chuyển (s1 ,a, s2) ∈ T đều không cắt R, nghĩa là s1,s2∈ R hoặc s1,s2 ∉ R.
Giả sử R là một vùng. Trong trường hợp này tất cả các hoạt động đều có thể được phân vào một trong ba nhóm: đi vào vùng R, đi ra khỏi vùng R và không cắt vùng R. Hoạt động không thể đi vào vùng ở một phần nào đó của hệ thống chuyển và ra khỏi vùng ở một phần nào đó khác.
Hình 3.5 : Vùng R tương ứng với vị trí pR [1]
Hình 3.5 minh hoạ cho khái niệm này. Trong đó, hình chữ nhật vẽ bằng nét đứt mô tả vùng R, là một tập các trạng thái trong hệ thống chuyển. Tất cả các hoạt động cần phải có một vị trí tương đối với vùng này. Tất cả các bước chuyển
có nhãn a đều đi vào vùng R. Nếu có một bước chuyển nào đó với nhãn a mà không kết nối một trạng thái ở bên ngoài vùng với một trạng thái bên trong vùng, thì R sẽ không phải là một vùng. Tất cả các bước chuyển gán nhãn b đều đi vào vùng, tất cả các bước chuyển gán nhãn c và d đều đi ra khỏi vùng. Tất cả các bước chuyển có nhãn e và f đều không cắt vùng R, nghĩa là chúng luôn kết nối hai trạng thái ở bên ngoài vùng R hoặc 2 trạng thái ở bên trong vùng.
Theo định nghĩa trên, hợp của hai vùng sẽ là một vùng. Do đó, chúng ta chỉ cần quan tâm tới các vùng nhỏ nhất. Ý tưởng cốt lõi ở đây là mỗi vùng nhỏ nhất R tương ứng với một vị trí pR trong lưới Petri như biểu diễn trên Hình 3.5.
Các hoạt động đi vào vùng trở thành các bước chuyển trong lưới Petri với pR là
vị trí ra, các hoạt động đi ra khỏi vùng trở thành các vị trí ra của pR, và các hoạt động không cắt vùng tương ứng với các bước chuyển không nối với pR trong
lưới Petri. Do đó, từ các vùng nhỏ nhất hoàn toàn có thể xây dựng được lưới Petri.
Tóm lại một vùng là một tập các trạng thái, sao cho:
1) Nếu một bước chuyển đi ra khỏi vùng thì tất cả các bước chuyển nhãn tương
đương cũng đi ra khỏi vùng.
2) Nếu một bước chuyển đi vào trong vùng thì tất cả các bước chuyển nhãn tương đương cũng đi vào trong vùng.
3) Tất cả các bước chuyển không đi vào trong hoặc không đi ra khỏi vùng thì
không cắt ngang vùng. Ví dụ[2]: Một vùng a đi vào b đi ra c không cắt ngang d không cắt ngang e không cắt ngang
Không phải là một vùng
a đi vào
b không cắt ngang và đi ra c không cắt ngang và đi ra d không cắt ngang và đi ra e không cắt ngang
Bảng 3.2: Bảng ví dụ về vùng và không phải là vùng [2]
3.2.2.2. Lựa chọn vùng
Chúng ta chỉ đưa vào tính toán các vùng không tầm thường (Non-trivial) và tối thiểu (Minimal).
Non-trivial
- Tập rỗng và tập tất cả các trạng thái là các vùng theo định nghĩa.
- Những vùng tầm thường này không mang thông tin và không nên đưa vào.
Minimal
- Một vùng là tối thiểu nếu nó không thể được chia thành các vùng (không tầm thường) nhỏ hơn.
- Những vùng không tối thiểu là được bao hàm bởi các vùng nhỏ hơn và không nên đưa vào.
3.2.2.3. Xây dựng lưới Petri sử dụng vùng
Việc xây dựng lưới Petri từ hệ thống chuyển dựa trên vùng được thực hiện qua các bước sau [2]:
1) Với mỗi một nhãn bước chuyển trong hệ thống chuyển ta thêm một transition vào lưới Petri.
3) Với mỗi vùng tối thiểu-không tầm thường trong hệ thống chuyển ta thêm một vị trí vào lưới Petri.
4) Các cung (arcs) tương ứng được sinh ra.
5) Một token được thêm vào mỗi vị trí tương ứng trong vùng chứa trạng thái khởi tạo.
6) Kết quả lưới Petri được gọi là một lưới tối thiểu bão hòa (minimal saturated net).
Hình 3.6 : Chuyển đổi “hệ thống chuyển” thành “lưới Petri”[1]
Bằng cách áp dụng định nghĩa về vùng, chúng ta tìm được 6 vùng nhỏ nhất. Xem xét ví dụ với vùng R1 = {[a], [a, c]}. Tất cả các bước chuyển có nhãn a trong hệ thống chuyển đều đi vào R1 (ở đây chỉ có một bước chuyển), tất cả các bước chuyển gán nhãn b đều đi ra khỏi R1 (có hai bước chuyển như vậy), tất cả các bước chuyển có nhãn là e cũng đều đi ra khỏi R1 (chỉ có một bước
chuyển), và tất cả các bước chuyển khác trong hệ thống chuyển đều không giao cắt vùng R1. Do đó, R1 là một vùng tương ứng với vị trí p1 với bước chuyển đầu vào là a, bước chuyển đầu ra là b và e. R2 = {[a], [a, b]} là một vùng khác: a đi vào R2, c và e đi ra khỏi R2, và tất cả các bước chuyển khác trong hệ thống chuyển đều không giao cắt R2. R2 là vùng tương ứng với vị trí p2 trong hình 3.6. Trong lưới Petri xây dựng được dựa trên 6 vùng nhỏ nhất này, b và c là hai bước chuyển đồng thời.
Hình 3.6 cho thấy một quá trình nhỏ với rất ít đồng thời. Do đó, hệ thống chuyển và lưới Petri có kích cỡ tương đương nhau. Tuy nhiên, với các quá trình lớn hơn với nhiều đồng thời, kích cỡ của lưới Petri sẽ có thể giảm đáng kể so với kích cỡ hệ thống chuyển. Hệ thống chuyển mô hình hóa 10 hoạt động song song sẽ có 210 = 1024 trạng thái và 10 × 210-1 = 5120 bước chuyển, khi chuyển sang lưới Petri sẽ có thể giảm xuống chỉ còn 20 vị trí với 10 bước chuyển.
Hình 3.6 chỉ truyền tải ý tưởng cơ bản về các vùng. Việc tổng hợp mô hình dạng lưới Petri dựa vào các vùng trạng thái thực sự liên quan nhiều hơn và có thể tùy chỉnh phù hợp hơn cho các mô hình quá trình cụ thể. Bất kì hệ thống chuyển hữu hạn nào cũng đều có thể chuyển đổi thành một mô hình lưới Petri tương đương, nghĩa là, các thuộc tính của hệ thống chuyển và lưới Petri là giống nhau. Tuy nhiên, với một vài mô hình lưới Petri, có thể sẽ cần phải thực hiện phân tách nhãn (label splitting). Kết quả là, lưới Petri có thể có nhiều bước chuyển tương ứng với cùng một hoạt động. Hơn nữa, cũng cần phải thi hành mô hình lưới Petri thu được để có các tùy chọn cụ thể.
Các vùng trạng thái cổ điển nhằm cung cấp mô hình lưới Petri tương đương với hệ thống chuyển. Điều này có nghĩa là khi xây dựng lưới Petri, các hành vi sẽ không được khái quát hóa. Do đó, việc chọn hàm biểu diễn trạng thái rất quan trọng khi xây dựng hệ thống chuyển. Với các quá trình lớn hơn, hàm biểu diễn trạng thái như 𝑙1𝑠𝑡𝑎𝑡𝑒() chắc chắn sẽ cho một mô hình quá chi tiết, chỉ có thể biểu diễn lại nhật ký sự kiện mà không có một dạng khái quát hóa nào cả.
Nhiều hàm biểu diễn trạng thái có thể cân bằng giữa sự quá chi tiết và quá khái quát.
Chú ý: Có thể chuyển đổi từ lưới Petri sang một ngôn ngữ mô hình khác như PBMN, UML, Workflow net nếu muốn.
3.3. Nhận xét đánh giá
3.3.1. Ưu nhược điểm của phương pháp
Ưu điểm:
- Kỹ thuật dựa trên vùng có thể được sử dụng để phát hiện các mẫu quá trình phức tạp.
- Cung cấp cái nhìn thấu đáo vào bản chất bên trong của phát hiện quá trình.
Nhược điểm:
- Không có khả năng phát hiện việc xây dựng quá trình đặc thù (có thể cải tiến bằng việc mở rộng thuật toán cơ bản).
- Không có khả năng cân bằng 4 đặc tính chất lượng (phù hợp, chính xác, tổng quát, đơn giản) tốt.
Sức mạnh của cách tiếp cận này chính là việc cho phép đa dạng các chiến lược biểu diễn trạng thái. Một trạng thái có thể biểu diễn rất chi tiết hoặc trừu tượng hơn. Việc lựa chọn đúng đắn cách biểu diễn trạng thái sẽ giúp cân bằng giữa “overfitting” và “underfitting” theo một cách có kiểm soát. Các cách tiếp cận hiện tại không cho phép người phân tích điều khiển độ đo này mà nó đã cố định theo phương pháp.
Chính tính đa dạng trong việc lựa chọn chiến lược biểu diễn trạng thái giúp người dùng có thể lực chọn các chiến lược phù hợp với đặc điểm của nhật ký sự kiện cũng như của kết quả mong đợi cuối cùng.
3.3.2. Giới thiệu một số đề xuất mô hình cải tiến
Bất chấp những lợi thế được đề cập bởi lý thuyết vùng, có 2 lý do chính cản trở việc ứng dụng rộng rãi phương pháp vào thực tế. Một là do tính nhạy
cảm với nhiễu, hai là độ phức tạp của thuật toán liên quan mà hiệu suất của nó phụ thuộc nhiều vào kích thước đầu vào.
Theo [5], Marc Sole´ và Josep Carmona đã có một cách tiếp cận để khắc phục vấn đề thứ 2. Trong nhật ký sự kiện nếu tồn tại hành động lặp thì hệ thống chuyển không tuần hoàn hay không có chu kỳ tương ứng sẽ phải chứa hoạt động mở (unfolded) bằng các mẫu (pattern) lặp. Điều này ý nói rằng cỡ của hệ thống chuyển kiểu này là lớn.
Hình 3.7 Sử dụng Foldings trong phát hiện quá trình dựa trên vùng [5]
Trong hình 3.7 tác giả đã đề xuất một bước trung gian là Folding (gấp lại). Bước Folding này được thực hiện ở giữa bước chuyển từ hệ thống chuyển sang lưới Petri. Bước này sẽ tìm ra các chu trình từ đó làm giảm kích thước của hệ thống chuyển. Chiến lược Folding cho phép giảm số lượng trạng thái và tăng tốc việc phát hiện quá trình.
Ngoài ra theo [6] van der Aalst, W.M.P cũng đã đề xuất cách tiếp cận chia để trị (divide-and-conquer) để giải quyết bài toán với đầu vào là nhật ký sự kiện lớn. Chia để trị dưa trên một phân mảnh hợp lệ các hoạt động. Các tập hoạt động nên gối lên nhau nếu nó có một sự phụ thuộc trực tiếp. Có hai nhiệm vụ khai phá quá trình chính trong các tiếp cận này:
Một là cho việc kiểm tra sự phù hợp, chúng ta phân chia mô hình quá trình thành các mô hình con thành phần nhỏ hơn gối đầu lên nhau sử dụng phép chiếu. Nhật ký sự kiện được phân chia thành các nhật ký con cũng sử dụng phép chiếu. Bất kỳ vết nào phù hợp với mô hình toàn thể cũng phù hợp với tất cả các mô hình con. Điều ngược lại chỉ đúng nếu việc phân chia là hợp lý. Độ đo tỷ lệ các trường hợp phù hợp có thể được tính bằng việc kiểm tra độ phù hợp của các mô