ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Tiểu luận:
MÔ HÌNH TRI THỨC CHO CÁC NGHIỆP VỤ QUẢN LÝ VÀ ỨNG
DỤNG
HVTH: Võ Thành Nhân
MSHV: CH1301103
GVPT: GS.TSKH. Hoàng Kiếm
Thành phố Hồ Chí Minh 10 – 2014.
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Tiểu luận môn học: Công nghệ tri thức
Tiểu luận:
MÔ HÌNH TRI THỨC CHO CÁC NGHIỆP VỤ QUẢN LÝ
VÀ ỨNG DỤNG
HVTH: Võ Thành Nhân
MSHV: CH1301103
GVPT: GS.TSKH. Hoàng Kiếm
Thành phố Hồ Chí Minh 10 – 2014.
Mục lục
2
Tiểu luận môn học: Công nghệ tri thức
1.1 Tại sao phải nghiên cứu bài toán này
Công nghệ tri thức đã thâm nhập vào hầu hết các lĩnh vực ứng dụng của công nghệ
thông tin. Tuy nhiên, hầu hết các nỗ lực đều tập trung giải quyết các vấn đề cụ thể mà thực
tế đòi hỏi. Gần như là chưa có một nỗ lực nào đưa các thành tựu của công nghệ tri thức vào
tiến trình xây dựng phần mềm để tạo ra các cách xây dựng phần mềm mới mẻ. Nói riêng
trong các phần mềm quản lý, nếu tổ chức, xí nghiệp muốn sử dụng cho phù hợp với nhu
cầu của mình thì hoặc là xây dựng mới hoặc là phải chỉnh sửa lại một phần mềm có sẵn. Cả
hai việc đó đều rất mất thời gian. Vì vậy, em chọn đề tài này với mong muốn làm tối thiểu
chi phí hiệu chỉnh một phần mềm khi áp dụng cho các tổ chức, xí nghiệp khác nhau.
1.2 Các lợi ích của bài toán này
Nếu xây dựng thành công một cơ sở tri thức cho các nghiệp vụ quản lý của một lĩnh
vực cụ thể sẽ có những lợi ích sau đây:
• Tối thiểu nhưng nỗ lực sữa chữa khi đem áp dụng cho những tổ chức, xí nghiệp
khác nhau. Thường những tổ chức, xí nghiệp trong cùng một lĩnh vực quản lý sẽ có
những đặc trưng giống nhau về cấu trúc tổ chức, nghiệp vụ phổ biến cho lĩnh vực
đó. Hơn nữa còn bị chi phối bởi những nghiệp vụ mang tính phổ quát và bắt buộc
như: kế toán cho những tố chức có thu/chi. Những khác biệt chủ yếu đến từ cung
cách kinh doanh, cách thức thực hiện một nghiệp vụ cụ thể. Và những sự khác biệt
này thường nhỏ so với những sự tương đồng.
• Giảm chi phí xây dựng phần mềm. Đặc trưng của các hệ thống dựa trên cơ sở tri
thức là giải quyết vấn đề dựa trên cơ chế suy luận chứ không mã hóa cứng bằng một
ngôn ngữ lập trình cụ thể. Chính điều này cho phép chúng giải một lớp các vấn đề
tương tự nhau mà không cần phải lập trình riêng cho mỗi vấn đề cụ thể. Điều này
làm giảm đáng kể công sức lập trình khi xây dựng phần mềm. Hệ quả là nếu có một
cơ sở tri thức phù hợp cho một lớp vấn đề quản lý nào đó, ta có thể xây dựng một
công nghệ tạo lập các phần mềm giải các lớp bài toán đó dựa trên cơ sở tri thức mà
gần như không hoặc rất ít mã hóa(coding). Và nếu như làm tốt có thể loại bỏ một
chi phí khổng lồ trong xây dựng phần mềm đó là chi phí testing. Bây giờ không còn
test cho phần mềm cụ thể nữa mà chỉ cần test cho “công nghệ tạo phần mềm dựa
3
Tiểu luận môn học: Công nghệ tri thức
trên tri thức”. Một khi công nghệ đó được test cẩn thận thì có thể yên tâm về chất
lượng của phần mềm được tạo ra.
• Đưa phần mềm đến với người dùng sớm nhất có thể. Công nghiệp phần mềm đã
chứng tỏ lợi ích của điều này bằng sự ra đời của các quy trình phát triển phần mềm
XP(Extreme Programing) và các hậu duệ của nó như Agile, Scrum…mà cốt lõi là
đưa phần mềm đến user sớm nhất để nhận được phản hồi nhằm giảm tối đa chi phí
sửa chữa. Khi chúng ta có một cơ sở tri thức tổng quát, bao trọn những phần cốt lõi
chung của tổ chức, xí nghiệp trong một lĩnh vực quản lý, chúng ta sẽ dễ dàng chỉnh
sửa cho phù hợp với hiện trạng của từng tổ chức, xí ngiệp và đưa hệ thống đến tay
người dùng sớm nhất.
• Tăng cường tính hiểu được của phần mềm. Phần lớn các người dùng phần mềm
đều không biết và không hiểu được hệ thống thực hiện các logic nghiệp vụ của mình
như thế nào, bởi vì các logic nghiệp vụ được mã hóa trong những ngôn ngữ lập trình
cụ thể(hoặc các ngôn ngữ phi thủ tục của các hệ quản trị CSDL). Nhưng các dạng
biểu diễn của tri thức gần gũi và dễ hiểu hơn rất nhiều so với các ngôn ngữ lập trình
vì nó biểu diễn trực tiếp những khái niệm gắn liền với công việc hàng ngày của họ.
Nhìn vào cách biểu diễn tri thức người dùng sẽ hình dung ra cách phần mềm thực
hiện các logic nghiệp vụ của mình như thế nào.
1.3 Mục tiêu của tiểu luận
Tiểu luận sẽ tập trung vào các công việc sau:
• Tiến hành khảo sát một số mô hình biểu diễn tri thức thông dụng, hiện hành.
• Đề xuất một mô hình biểu diễn tri thức CAFR cho các nghiệp vụ của bài toán
quản lý cho các tổ chức, xí nghiệp.
• Thảo luận về các vấn đề của mô hình CAFR và đề xuất các thuật toán tương
ứng cho các vấn đề đó.
• Demo tính năng thực thi cây thuật toán bằng một ngôn ngữ lập trình thông
dụng
4
Tiểu luận môn học: Công nghệ tri thức
2. Mô hình tri thức cho các nghiệp vụ quản lý
2.1 Sơ lược một số mô hình biểu diễn tri thức thông dụng
2.1.1 Mô hình logic mệnh đề & logic vị từ
Đây là đạng biểu diễn tri thức cổ điển nhất trong máy tính. Cả hai đều sử dụng
những phép toán của logic toán(như AND, OR, NOT, Kéo theo ) và các kí hiệu thông
dụng của logic toán(như ˄, ˅, ¬, →…) để làm cơ sở cho việc suy luận logic. Một mệnh đề
có dạng A→B. Ví dụ câu Nếu trời mưa thì đường ướt có thể biểu diễn thành dạng A→B với
A = trời mưa, B = đường ướt. Để có thể suy diễn với các tri thức biểu diễn bằng logic
mệnh đề người ta hay sử dụng hai thuật giải thông dụng là thuật giải Vương Hạo và thuật
giải Robinson.
Vì mệnh đề không có cấu trúc, dẫn đến hạn chế nhiều thao tác suy luận, nên người
ta đưa vào đó 2 lượng từ ∀(với mọi) và ∃(tồn tại) để tăng cường tính cấu trúc của một
mệnh đề, hình thành nên logic vị từ. Một vị từ thường được biểu diễn dưới dạng sau đây:
Vị từ(<đối tượng 1>,<đối tượng 2>, …,<đối tượng n>)
Ví dụ để biểu diễn cho các tính chất như: Chanh thì chua, Mật ong thì ngọt ta có thể viết lại
như sau: Chua(Chanh), Ngọt(Mật ong). Logic vị từ đã được nghiên cứu và phát triển thành
một ngôn ngữ lập trình đặc trưng cho ngành trí tuệ nhân tạo, đó là Prolog.
Bảng sau đây tổng kết cách biểu diễn tri thức bằng logic mệnh đề và logic vị từ
5
Tiểu luận môn học: Công nghệ tri thức
2.1.2 Mô hình luật sinh
Đây là mô hình biểu diễn tri thức được yêu thích nhất, thậm chí nhiều người còn tìm
mọi cách để biểu diễn luật sinh cho mọi miền tri thức dù có những biểu diễn phù hợp hơn.
Phương pháp này được phát minh bởi Newell và Simon trong lúc hai ông đang nỗ lực xây
dựng hệ giải bài toán tổng quát(các hệ General Problem Solving). Ý tưởng cơ bản của luật
sinh là tri thức sẽ được biểu diễn bằng một cặp điều kiện-hành động. Nếu điều kiện được
thỏa mãn thì hành động sẽ diễn ra. Ví dụ về các luật sinh được nêu trong bảng sau đây:
Một cách tổng quát, 1 luật sinh r có thể biểu diễn như sau:
r: P
1
˄ P
2
˄ P
3
˄ … ˄ P
n
→ Q
Trong đó các P
i
và Q là những sự kiện được định nghĩa trước trong tập F(Facts), và r nẳm
trong tập R(Rules), định nghĩa các luật áp dụng trên tập sự kiện F. Một cách hình thức thì
mô hình biểu diễn tri thức dạng luật sinh là mô hình tri thức 2 thành phần (F, R). Trong đó
F là tập chứa các sự kiện, R là tập chứa các luật áp dụng trên tập F. Biểu diễn tri thức bằng
luật sinh tương đối đơn giản. Nhưng đối với các cơ sở tri thức lớn, có hàng ngàn luật thì
người ta lại đối diện với vấn đề loại bỏ các luật mâu thuẫn và các luật thừa. Đây là bài toán
vẫn còn tiếp tục cho đến hiện nay.
2.1.3 Mô hình mạng ngữ nghĩa
Mạng ngữ nghĩa là mô hình tri thức dạng đồ thị, trong đó các đỉnh biểu diễn cho các đối
tượng, các cung biểu diễn cho một quan hệ giữa các đối tượng. Một ví dụ về mô hình mạng
ngữ nghĩa được thể hiện trong hình sau đây:
6
Tiểu luận môn học: Công nghệ tri thức
Mạng ngữ nghĩa đặc biệt thích hợp cho các vấn đề biểu diễn mối quan hệ giữa các đối
tượng theo một công thức hay một hàm nào đó. Có thể dùng mạng ngữ nghĩa biểu diễn mối
quan hệ giữa các yếu tó trong tam giác(bao gồm các cạnh, góc, đỉnh…) với các công thức
liên quan. Trong đồ thị này có hai loại đỉnh: đỉnh hình tròn biểu diễn cho các yếu tố của
tam giác. Đỉnh hình chữ nhật biểu diễn cho các công thức. Sau đó thực hiện theo co chế
suy luận được nêu dưới đây để giải bài toán tam giác.
Cơ chế suy diễn trên mạng ngữ nghĩa thực hiện theo thuật toán “loang” đơn giản sau đây
B1: Kích hoạt những đỉnh tròn đã cho ban đầu(những yếu tố đã có giá trị.
B2: Lặp cho đến khi kích hoạt tất cả các đỉnh hoặc không thể kích hoạt thêm đỉnh nào nữa
Nếu một đỉnh hình chữa nhật có cung nối với n đỉnh hình tròn mà n-1 đỉnh hình tròn
đã được kích hoạt đỉnh hình tròn còn lại(và tính giá trị cho đỉnh này thông qua công thức
hình chữ nhật.
Dưới đây là đồ thị cho một mạng ngữ nghĩa giải bài toán tam giác:
7
Tiểu luận môn học: Công nghệ tri thức
Mạng ngữ nghĩa biểu diễn rất tốt mối quan hệ của các đối tượng thông qua phương trình.
Tuy nhiên với các loại quan hệ không biểu diễn bằng phương trình thì rất khó dùng mạng
ngữ nghĩa để biểu diễn. Hơn nữa việc cho phép thêm quan hệ quá dễ dàng có nguy cơ làm
xuất hiện những tri thức mâu thuẫn.
2.1.4 Mô hình Frame
Frame là một cấu trúc dữ liệu chứa đựng tất cả những tri thức về một đối tượng nào
đó trong thế giới thực. Đây chính là tính chất đóng gói(encapsulation) của lập trình hướng
đối tượng. Người ta thường dùng FRAME để biễu diễn những tri thức tri thức chuẩn, đã
được hiểu biết cặn kẽ. Ý tưởng này mô phỏng cách con người lưu trữ những kinh nghiệm,
tri thức đã qua kiểm chứng, được truyền bá rộng rãi. Khi cần vận dụng vào vấn đề thực tế
thì chỉ cần lấy ra sửa lại chút ít mà không phải mất quá nhiều công sức. Một ví dụ về thông
tin đối tượng và cấu trúc biểu diễn bằng FRAME tương ứng như sau:
2.1.5 Mô hình COKB
Mô hình COKB là một mô hình tri thức gồm 6 thành phần :
K = (C, H, R, Ops, Funcs, Rules )
C là một tập hợp các khái niệm về các C-Object là những đối tượng có các đặc trưng:
• Có các thuộc tính có thể tính giá trị được
• Có những quan hệ tính toán bên trong giữa các thuộc tính
8
Tiểu luận môn học: Công nghệ tri thức
Nếu cho trước một tập con A của tập thuộc tính thì đối tượng C-Object có thề cho biết
những thuộc tính có thể tính toán được từ tập A. Cấu trúc C-Objects có thể được mô hình
hóa bằng (Attrs, F, Facts, Rules), với :
• Attrs là một tập các thuộc tính
• F là một tập hợp các phương trình được gọi là quan hệ tính toán
• Facts là tập hợp các thuộc tính hoặc sự kiện của đối tượng.
• Rules là tập các quy tắc suy luận dựa trên Facts.
Một ví dụ về cấu trúc của đối tượng tam giác như sau:
Attrs = {A, B, C, a, b, c, R, S, p, }
F = { A+B+C = π; a/sin(A) = 2R; b/sin(B) = 2R; c/sin(C) = 2R; S = (1/2)bcsin(A)…}
Facts = {a+b>c; a+c>b; b+c>a ; …}
Rules = { {a>b} ⇔ {A>B}; {b>c} ⇔ {B>C};
{c>a} ⇔ {C>A}; {a=b} ⇔ {A=B};
{a^2= b^2+c^2} ⇔ {A=pi/2},
{A=pi/2} ⇔ {a^2 = b^2+c^2, b ⊥ c},
….
}.
H: là một tập hợp các quan hệ phân cấp giữa các loại đối tượng.
R: là tập hợp các khái niệm về các loại quan hệ trên các C-Object.
Ops: là một tập hợp các toán tử.
Funcs: là một tập hợp các hàm.
Rules: là tập hợp các luật.
Mỗi đối tượng thuộc C là một lớp các đối tượng tính toán có cấu trúc nhất định và được
phân cấp theo sự thiết lập của cấu trúc các đối tượng.
Trong mô hình COKB, ta có 11 loại sự kiện như sau:
• Sự kiện loại 1: Sự kiện thông tin về loại của đối tượng.
9
Tiểu luận môn học: Công nghệ tri thức
• Sự kiện loại 2: Sự kiện về tính xác định của một đối tượng hay của một thuộc tính
của đối tượng.
• Sự kiện loại 3: Sự kiện về tính xác định của một đối tượng hay của một thuộc tính
của đối tượng thông qua biểu thức hằng.
• Sự kiện loại 4: Sự kiện về sự bằng nhau của một đối tượng hay một thuộc tính của
đối tượng với một đối tượng hay một thuộc tính khác.
• Sự kiện loại 5: Sự kiện về sự phụ thuộc giữa các đối tượng và các thuộc tính của các
đối tượng thông qua một công thức tính toán hay một đẳng thức theo các đối tượng
hoặc các thuộc tính.
• Sự kiện loại 6: Sự kiện về một quan hệ trên các đối tượng hay trên các thuộc tính
của các đối tượng.
• Sự kiện loại 7: Sự kiện về tính xác định của một hàm.
• Sự kiện loại 8: Sự kiện về tính xác định của một hàm thông qua một biểu thức hằng.
• Sự kiện loại 9: Sự kiện về sự bằng nhau giữa một đối tượng với một hàm.
• Sự kiện loại 10: Sự kiện về sự bằng nhau của một hàm với một hàm khác.
• Sự kiện loại 11: Sự kiện về sự phụ thuộc của một hàm theo các hàm hay các đối
tượng khác thông qua một công thức tính toán
2.2 Mô hình tri thức CAFR cho các nghiệp vụ quản lý
Dựa trên sự tham khảo các mô hình biểu diễn tri thức truyền thống và đặc biệt là mô
hình COKB(Computation Object Knowledge Base) với cách tiếp cận hướng đối tượng cho
phép biểu diễn những tri thức phức tạp trong thực tế, kết hợp các công cụ biểu diễn khác
như FRAME, luật sinh …tiểu luận đề xuất một mô hình biểu diễn tri thức như sau:
(C, A, F, R)
C: là tập các khái niệm trong lĩnh vực đang xét. Các khái niệm này cho phép kế
thừa. Cấu trúc của một khái niệm như sau: (Attributes, Rules, Contraints, Operations). Ví
dụ cấu trúc của khái niệm NHAN_VIEN như sau:
concept NHAN_VIEN
{
identification String maNV;
String tenNV;
10
Tiểu luận môn học: Công nghệ tri thức
DateTime ngayBatDau;
DateTime ngayKetThuc;
PHONG_BAN phongBan;
NHAN_VIEN quanLy;
Real phuCap;
QUA_TRINH_LAM_VIEC[] qtLamViec;
Real luong= ;
constraint c1: ngayBatDau != NULL;
constraint c2: ngayKetThuc == NULL OR ngayBatDau < ngayKetThuc;
operator NHAN_VIEN == (NHAN_VIEN): ;
rule r1: (quanLy is NOT NULL) → (phuCap = 0);
rule r2: (quanLy is NULL) → (phuCap = 10000);
}
Cấu trúc của một thuộc tính như sau:
< identification
tùy chọn
><tên kiểu><tên thuộc tính><=
tùy chọn
><biểu thức
tùy chọn
>
Trong đó tên kiểu là tên các khái niệm trong mô hình hoặc kiểu dữ liệu cơ sở như:
DateTime, Int, Real, Bool, String. Các thuộc tính chia làm 3 loại:
• Thuộc tính tĩnh: là thuộc tính hầu như rất ít thay đổi trong chu trình sống của một
đối tượng(là một thể hiện của một khái niệm) hoặc là thuộc tính thuần túy lưu trữ
giá trị hoặc tham chiếu đến khái niệm khác(có thể là thuộc tính đơn hoặc danh sách
như thuộc tính qtLamViec). Trong ví dụ trên thì: tenNV, ngayBatDau,
ngayKetThuc, phongBan, quanLy, phuCap, qtLamViec là các thuộc tính tĩnh.
• Thuộc tính tính toán: là thuộc tính mà đi kèm với nó là biểu thức(công thức) dùng
để tính toán giá trị cho thuộc tính đó. Biểu thức của một thuộc tính tính toán có thể
là rỗng như thuộc tính salary trong ví dụ trên. Điều này là bởi vì tùy theo loại nhân
viên cụ thể(ví dụ nhân viên hợp đồng hay công nhật) thì mới có thể có công thức
tính phù hợp cho thuộc tính đó. Khi đó nó hàm ý rằng thuộc tính luong sẽ được tính
toán lại bởi các khái niệm con cụ thể hơn, ví dụ như khái niệm
NHAN_VIEN_HOP_DONG bên dưới.
concetp NHAN_VIEN_HOP_DONG extends NHAN_VIEN
{
11
Tiểu luận môn học: Công nghệ tri thức
Real luongCoBan;
Real luong = luongCoBan/WorkDayInMonth()*RealWorkDayInMonth(this);
}
Ở đây khái niệm NHAN_VIEN_HOP_DONG kế thừa khái niệm NHAN_VIEN và
định nghĩa lại thuộc tính tính toán luong.
• Thuộc tính định danh: là thuộc tính đơn mà giúp phân biệt một đối tượng với các
đối tượng khác cùng loại được biểu diễn bởi từ khóa identification. Đây là một sự
vay mượn khái niệm thuộc tính khóa trong CSDL quan hệ. Từ tập các thuộc tính
định danh có thể suy ra tất cả các thuộc tính tĩnh khác. Dựa vào tập các thuộc tính
định danh có thể phân biệt được những đối tượng khác nhau thuộc cùng khái niệm.
Đặc trưng của mô hình CAFR là một khái niệm phải có ít nhất một thuộc tính định
danh. Một thuộc tính định danh hoặc có kiểu dữ liệu cơ sở hoặc tham chiếu đến một
khái niệm mà khái niệm đó có các thuộc tính định danh là kiểu dữ liệu cơ sở. Tập
các thuộc tính định danh của một khái niệm là tập nhỏ nhất mà xác định toàn bộ
các thuộc tính tĩnh của khái niệm.
Trong cấu trúc của một đối tượng còn có các ràng buộc (biểu diễn bằng từ khóa
constrain) dùng để mô tả các điều kiện mà các thuộc tính phải thỏa mãn. Các luật (biểu
diễn bằng từ khóa rule) dùng để mô tả những quy tắc tính toán cho các thuộc tính bên
trong khái niệm dưới những điều kiện xác định(có cùng dạng với các luật trong thành phần
R). Các phép toán(bắt đầu với từ khóa operator) dùng để mô tả những phép toán giữa khái
niệm này với khái niệm khác.
A: là tập các liên kết giữa các khái niệm. Một liên kết giữa hai khái niệm chỉ ra một
mối quan hệ theo một ngữ cảnh nào đó. Ví dụ liên kết [“Belong to”, NHAN_VIEN,
PHONG_BAN] {1 1, 0 *} chỉ ra rằng một nhân viên là thuộc một phòng ban và một
phòng ban có thể nhiều nhân viên. Tất cả các liên kết trong mô hình đế có tối đa 2 ngôi.
Cấu trúc của một liên kết có dạng sau:
[<tên liên kết>, <khái niệm 1>, <khái niệm 2>] {<cơ số 1>, < cơ số 2>}
12
Tiểu luận môn học: Công nghệ tri thức
Trong đó các < cơ số 1>, < cơ số 2> là khái niệm cơ số của biểu đồ lớp trong UML dùng
để chỉ số đối tượng của một khái niệm tham gia vào liên kết này. Các giá trị thường dùng
của cơ số là:
1 một và chỉ một
0 1 không hay một
m n từ m đến n(0 <= m <= n, m và n là các số nguyên)
0 *(hay *) từ 0 đến nhiều
1 * một tới nhiều
Rõ ràng các liên kết trong mô hình CAFR không chứa các thuộc tính. Từ đó, ta thấy
rằng không thể xuất hiện các liên kết nhiều nhiều. Bởi vì nếu có các liên kết nhiều nhiều thì
liên kết đó phải có thuộc tính riêng của nó, mà nếu như vậy thì phải định nghĩa nó như là
một khái niệm mới và sau đó định nghĩa lại liên kết ban đầu thành hai liên kết 1 *.
F: tập các hàm dùng để chứa các định nghĩa về các hàm tiện ích thường xuyên xuất
hiện trong tri thức về nghiệp vụ của một lĩnh vực quản lý nhất định. Ví dụ trong sơ sở tri
thức cho bài toán nhân sự thường có một hàm là đếm những ngày làm việc trong tháng
hiện hành. Ví dụ về hàm tìm số lớn nhất trong một danh sách số nguyên như sau:
function FindMax(list)
max = Int.MIN_INT
for n in list
if (max < n)
max = n
return max
Phạm vi sử dụng của các hàm là toàn cục. Các hàm có thể gọi từ bất cứ nơi nào cấn
đến. Để đơn giản hóa việc xây dựng các hàm, cần thiết đề xuất một dạng cú pháp đơn giản,
dễ viết như các ngôn ngữ scripting như Python chẳng hạn.
R: tập các luật liên quan đến các quy tắc nghiệp vụ giữa các khái niệm. Một luật dạng:
13
Tiểu luận môn học: Công nghệ tri thức
IF H
1
AND H
2
AND…AND H
n
THEN G
sẽ biểu diễn dưới dạng:
(H
1
, H
2
, ,H
n
) → (G)
Trong đó mỗi H
i
là một sự kiện trong số 6 loại sự kiện sau:
• Sự kiện loại 1: Sự kiện thông tin về loại của đối tượng hoặc thuộc tính của một đối
tượng tham chiếu đến một đối tượng khác(là thể hiện của một khái niệm trong lĩnh
vực tri thức cần biểu diễn). Ví dụ:
o nv instanceof NHAN_VIEN
o giaodich.nv instanceof NHAN_VIEN_KINH_DOANH
o nv not instanceof NHAN_VIEN_HOP_DONG
• Sự kiện loại 2: Sự kiện về sự so sánh giữa đối tượng-đối tượng, đối tượng-thuộc
tính, thuộc tính-thuộc tính, thuộc tính-biểu thức tính toán(biểu thức có thể là phức
tạp hoặc một biểu thức hằng). Ví dụ:
o ((nv.cap_bac == “Quan ly”),(nv.bac_luong < 2)) → (nv.bac_luong = 2)
o giaodich.nv == nv1
• Sự kiện loại 3: Sự kiện về sự phụ thuộc giữa các đối tượng và các thuộc tính của
các đối tượng thông qua một công thức tính toán hay một đẳng thức theo các đối
tượng, thuộc tính hoặc các hàm. Ví dụ:
o nv.phu_cap = nv.luong_can_ban/10
o nv.hoa_hong = lay_tong_doanh_thu_thang(nv)/10
o nv.luong = nv.luong_can_ban + nv.phu_cap + nv.hoa_hong
• Sự kiện loại 4: Sự kiện về một liên kết trên các đối tượng hay trên các thuộc tính
của các đối tượng. Ví dụ: giả sử ta có liên kết
[“Thuoc”, NHAN_VIEN, PHONG_BAN] (1 1, 1 *) và luật
((nv is NHAN_VIEN), (nv [“Thuoc”] PHONG_BAN(“To_Chuc”))
→ (nv.phu_cap = nv.luong_can_ban/5)
Thì sự kiện nv [“Thuoc”] PHONG_BAN(“To_Chuc”) là sự kiện loại 4
• Sự kiện loại 5: Sự kiện về sự so sánh giữa một đối tượng với một hàm hoặc một
thuộc tính với một hàm.
o (nv == lay_giam_doc())→ nv.bac_luong = lay_bac_luong_cao_nhat()
• Sự kiện loại 6: Sự kiện về sự so sánh một hàm so với một biểu thức hoặc một hàm
khác
14
Tiểu luận môn học: Công nghệ tri thức
o (nv is NHAN_VIEN, (lay_so_ngay_lam_viec(nv) < 20) → (nv.phu_cap=0)
3. Một số vấn đề trên mô hình CAFR và các giải pháp
3.1 Phân rã mô hình CAFR thành lược đồ CSDL quan hệ
Một trong những vấn đề quan trọng nhất của bất kỳ phần mềm nào là thiết kế cấu
trúc lưu trữ dữ liệu ở bộ nhớ ngoài ví dụ như đĩa cứng. Riêng trong lĩnh vực các phần mềm
quản lý thì hầu như cấu trúc lưu trữ là CSDL quan hệ(hoặc hướng đối tượng hay kết hợp).
Trong phần này, tiểu luận sẽ trình bày một giải pháp để phân rã các khái niệm trong mô
hình thành một lược đồ CSDL quan hệ dạng chuẩn 3.
3.1.1 Ý tưởng
Nhìn vào cấu trúc của một khái niệm, đứng về phía lưu trữ thông tin của một đối
tượng xuống CSDL, ta chỉ quan tâm đến các thuộc tính tĩnh(chỉ xét các thuộc tính đơn) và
định danh. Mà theo định nghĩa của các loại thuộc tính này thì chúng hoặc là có kiểu dữ liệu
cơ sở hoặc tham chiếu đến một khái niệm mà các thuộc tính định danh của khái niệm đó
cũng là kiểu cơ sở. Bây giờ hãy thay tất cả các thuộc tính tham chiếu đến một khái niệm
bằng các thuộc tính định danh của nó và đánh dấu nó như là một khóa ngoại đến lược đồ
khái niệm mà nó tham chiếu đến thì ta sẽ được một lược đồ chỉ toàn các thuộc tính đơn có
kiểu cơ sở. Như vậy là lược đồ của một khái niệm đạt được chuẩn 1.
Trở lại với khái niệm tập thuộc tính định danh, chúng ta thấy nó có tính chất là tập
nhỏ nhất xác định toàn bộ các thuộc tính tĩnh của khái niệm. Như vậy trong định nghĩa mỗi
khái niệm chỉ có duy nhất 1 phụ thuộc hàm là
{ tập thuộc tính định danh } → { các thuộc tính tĩnh còn lại }
Chúng ta lấy tập định danh làm khóa chính cho lược đồ. Như vậy tất nhiên là tất cả các
thuộc tính không định danh được xác định đầy đủ vào tập định danh(chuẩn 2) và không có
thuộc tính không định danh nào phụ thuộc bắc cầu vào tập định danh(chuẩn 3). Đến đây ta
có lược đồ quan hệ của từng khái niệm đạt chuẩn 3.
15
Tiểu luận môn học: Công nghệ tri thức
Bây giờ ta sẽ xử lý vấn đề còn lại của việc phân rã đó là mối liên kết giữa các lược
đồ quan hệ. Đầu tiên ta sẽ xây dựng một đồ thị có hướng, có trọng số theo quy tắc sau:
• Mỗi khái niệm là một đỉnh của đồ thị
• Với mỗi đỉnh K
i
, với mỗi thuộc tính tham chiếu đến khái niệm K
j
tạo 1 cung
(K
i
, K
j
) và đánh trọng số 1.
• Với mỗi liên kết A
i
liên kết K
i1
và K
i2
được định nghĩa trong thành phần A,
tạo 1 cung từ khái niệm ở “đầu ít” đến khái niệm ở “đầu nhiều” và đánh
trọng số 2. Đồng thời thêm những thuộc tính khóa của khái niệm ở “đầu
nhiều” vào lược đồ “đầu ít”. Khái niệm ở “đầu ít” là là khái niệm có tối đa 1
đối tượng tham gia liên kết. Nếu cả 2 khái niệm đều có tối đa 1 đối tượng
tham gia liên kết thì khái niệm ở “đầu ít” là khái niệm có ít nhất 1 đối tượng
tham gia liên kết.
Sau khi xây dựng xong đồ thị liên kết, ta tiến hành tìm đường đi từ mỗi đỉnh đến tất
cả các đỉnh còn lại. Nếu một cặp đỉnh (K
i
, K
j
) bất kì có hơn một đường đi thì loại bỏ cung
đầu tiên (K
i
, K
l
) của những đường đi mà có trọng số là 1 bằng cách đánh trọng số lại cho
nó là 0. Đồng thời cũng loại thuộc tính K
l
ra khỏi lược đồ K
i
. Nếu vẫn còn nhiều hơn 1
đường đi cho cặp đỉnh (K
i
, K
j
) chắc chắn là trong thành phần liên kết đã mô tả những liên
kết dư thừa.
3.1.2 Một ví dụ cụ thể
Xét một mô hình tri thức CAFR cho lĩnh vực ngân hàng như sau:
concept KHACH_HANG
{
identification String maKH;
String tenKH;
}
concept NHAN_VIEN
{
identification String maNV;
String tenNV;
}
concept KHOAN_VAY concept GIAO_DICH
16
Tiểu luận môn học: Công nghệ tri thức
{
identification String maKV;
KHACH_HANG kh;
Real soTien;
}
{
identification String maGD;
LOAI_GIAO_DICH loaiGD;
KHACH_HANG kh;
NHAN_VIEN nv;
DateTime time;
}
concept LOAI_GIAO_DICH
{
identification String maLoaiGD;
String tenGD;
}
Và liên kết sau:
[“Giao dich vay”, KHOAN_VAY, GIAO_DICH] (1 1, 0 1)
Liên kết này nói rằng một khoản vay chỉ có thể phát sinh từ một giao dịch duy nhất và một
giao dịch có thể không có khoản vay tương ứng nào và có nhiều nhất là một khoản vay ứng
với giao dịch đó. Các lược đồ khái niệm được sinh ra như sau:
KHACH_HANG (maKH, tenKH)
NHAN_VIEN (maNV, tenNV)
KHOAN_VAY (maKV, maKH, soTien, maGD)
GIAO_DICH (maGD, maLoaiGD, maKH, maNV, time)
LOAI_GIAO_DICH (maGD, tenGD)
Đồ thị quan hệ ban đầu được tạo ra như sau:
17
NHAN_VIEN
KHACH_HANG
1
1
1
Tiểu luận môn học: Công nghệ tri thức
Quan sát đồ thị trên ta thấy từ KHOAN_VAY đến KHACH_HANG có 2 đường đi
KHOAN_VAY → KHACH_HANG
KHOAN_VAY → GIAO_DICH → KHACH_HANG
Áp dụng quy tắc loại bỏ cung đầu tiên có trọng số 1, ta loại cung KHOAN_VAY →
KHACH_HANG ra khỏi đồ thị, đồng thời loại bỏ thuộc tính maKH ra khỏi lược đồ
KHOAN_VAY. Lược đồ sau cùng như sau:
KHACH_HANG (maKH, tenKH)
NHAN_VIEN (maNV, tenNV)
KHOAN_VAY (maKV, soTien, maGD)
GIAO_DICH (maGD, maLoaiGD, maKH, maNV, time)
LOAI_GIAO_DICH (maGD, tenGD)
Từ lược đồ này có thể dễ dàng phát sinh các câu SQL để tạo các cấu trúc bảng tương ứng.
3.2 Phát sinh thuật toán cho các tính năng của mô hình
Mỗi tính năng của phần mềm sẽ được biểu diễn bằng một bài toán có dạng: cho
trước một vài thuộc tính của một số khái niệm, có thể kèm thêm một số điều kiện, tính một
số thuộc tính khác. Ví dụ: Cho {e
i
} là tập các NHAN_VIEN, tính e
i.
salary. Lời giải cho bài
toán này chính là quá trình suy luận từ điều kiện ban đầu, sử dụng các tri thức được mô tả
trong CSTT để đạt đến mục đích mong muốn. Và quá trình này phải được thực hiện với
những bộ dữ liệu cụ thể trong thế giới thực. Như vậy cái lời giải này có dạng là một thuật
toán và với một bộ dữ liệu đầu vào cụ thể, đi theo thuật toán này sẽ có được giá trị cụ thể
của các thuộc tính mong muốn. Đây chính là mục tiêu chủ chốt việc xây dựng cơ sở tri
thức cho các bài toán quản lý.
18
LOAI_GIAO_DICH
2
1
GIAO_DICH
KHOAN_VAY
Tiểu luận môn học: Công nghệ tri thức
Việc làm thế nào để xây dựng cơ chế suy luận có thể tham khảo trong [1]. Cách tiếp
cận trong mô hình này có thể dùng được phương pháp như trên, bởi vì mô hình CAFR về
cơ bản là một thu nhỏ của mô hình COKB sau khi đã bỏ đi một số thành phần chuyên dùng
trong lĩnh vực toán học và thêm vào một số tính chất đặc thù cho các hệ thống thông tin
quản lý. Vấn đề là ở chỗ làm thế nào trình bày lại cái lời giải này theo định dạng của một
thuật toán. Để từ định dạng này có thể xây dựng một cấu trúc dữ liệu mô tả thuật toán này
để có thể thực thi với những dữ liệu cụ thể. Đây là một vấn đề tương đối phức tạp, cần
nhiều thảo luận sâu hơn. Trong phần này, tiểu luận sẽ trình bày một cấu trúc dữ liệu để mô
tả thuật toán vừa tìm được và chứng minh rằng với cách biểu diễn này có thể thực thi thuật
toán đó như trong một ngôn ngữ lập trình.
3.3 Thực thi các thuật toán của một tính năng
3.3.1 Biểu diễn thuật toán
Giả sử chúng ta đã có được thuật toán cho một tính năng. Bây giờ chúng ta sẽ biểu
diễn nó thành dạng cây theo quy tắc sau đây:
• Mỗi biểu thức(gán, logic) biểu diễn thành một node
• Các lệnh break, return biểu diễn thành một node
• Lệnh If biểu diễn thành một node có hai con, con bên trái là biểu thức điều
kiện(logic), con bên phải la node đại diện cho các lệnh thỏa mãn điều kiện.
• Các lệnh if…else if sẽ là các node con của node Switch, mỗi node con là một
node biểu diễn cho lệnh If(node con sau cùng có thể là node Else). Các node
If con node Switch là thực thi một cách loại trừ.
• Vòng lặp biểu diễn thành một node có ít nhất 3 node con: node con thứ nhất là
một biểu thức gán, node con thứ hai là biểu thức điều kiện, node con thứ 3 là
một biểu thức gán
• Các lệnh nằm trong cùng khối lệnh sẽ có cùng node cha.
• Mỗi node có thể có những dữ liệu đặc thù riêng, ví dụ như node return có thể
kèm theo dữ liệu là một chuỗi(biểu diễn cho một hằng, biểu thức hoặc biến)
• Mỗi node có cách thực thi riêng của mình
Ví dụ: Xét 1 thuật toán sau
a = 0
19
Tiểu luận môn học: Công nghệ tri thức
for (i = 0; i <= 10; ++i)
if (i % 2 == 0)
a = a + i
else if (i % 5 == 0)
break
return a
Thuật toán này sẽ được phân rã thành cây như sau
3.3.2 Thực thi cây thuật toán
Để thực thi một cây thuật toán, ta thực hiện theo quy tắc sau đây:
• Duyệt cây theo thứ tự trước, từ trái qua phải
• Khi đến với mỗi node, sẽ gọi function execute() của node đó. Sau đó, tùy
theo node đó bảo rằng nó là node lá hay không mà sẽ đi sâu xuống hay đi
qua node kế tiếp. Khi đó node cha sẽ tự quản lý việc thực thi các node con
của mình.
Ví dụ node for bao giờ cũng nói nó là node lá. Mỗi khi được gọi execute, nó tự động
thực thi node con thứ 1, lấy kết quả của node con thứ 2 để quyết định có thực hiện node
con thứ 4, 5,6… hay không, sau khi thực hiện xong các node con đó mà không có break
20
return a
a = 0
for
switch
i = 0
i<=10
i=i+1
if
if
break
i%5 == 0
i%2 == 0
a=a+i
Tiểu luận môn học: Công nghệ tri thức
hay return thì nó sẽ thực hiện node con thứ 3, sau đó quay lại lấy kết quả từ node con thứ
hai, cứ thế… Node switch cũng nói nó là node lá. Nó thực thi từng lệnh if con bên trong
cho đến khi có lệnh if con đầu tiên thỏa điều kiện thì dừng. Đến lượt mình node if sẽ kiểm
tra điều kiện ở con bên trái, nếu thỏa mãn sẽ thực thi node con bên phải.
Bởi vì cấu trúc biểu diễn thuật toán + quy tắc thực thi này thực thi được 3 loại lệnh:
tuần tự, lặp, rẽ nhánh nên nó có thể thực thi bất cứ thuật toán nào.
4. Demo
Trong phần này, tiểu luận sẽ demo tính năng thực thi cây thuật toán. Hai thuật toán
được chọn demo là:
• tìm phần tử lớn nhất trong 1 danh sách
• sắp xếp 1 dãy số nguyên theo thứ tự tăng dần bằng thuật toán Đổi chỗ trực tiếp
Chú ý: hiện tại demo chỉ hỗ trợ danh sách các số thực. Demo được cài đặt bằng ngôn ngữ
lập trình java JDK-8 trên NetBeans 8.0.1. Để chạy demo xin chạy file demo.bat gắn kèm
như sau:
demo <chức năng> <file chứa dãy> <in thuật toán>
Ý nghĩa của các tham số như sau:
<chức năng>: là chức năng cần demo, giá trị có thể max hay sort
<file chứa dãy>: là file chứa nội dung của dãy số, dãy có dạng sau [a
1
,a
2
,…,a
n
]. Khi cần
thay đổi nội dung của dãy số chỉ cần thay đổi file này.
<in thuật toán>: đây là tham số tùy chọn, nếu là true thì in thuật toán ra, ngược lại thì
không xuất ra.
Ví dụ: bây giờ ta muốn demo chức năng sort, và file chứa dãy tên array.txt nằm cùng thư
mục với file demo.bat thì có thể gõ như sau:
demo sort array.txt
21
Tiểu luận môn học: Công nghệ tri thức
Nếu muốn in thuật toán ra thì:
demo sort array.txt true
Một kết quả có thể như sau:
Hình sau đây là một phần mã nguồn Java trong việc tạo ra các node của cây thuật toán cho
chức năng sort. Chi tiết hơn xin xem nội dung dung file CAFR.java trong folder
CAFR\src\cafr\core\comp đính kèm.
22
Tiểu luận môn học: Công nghệ tri thức
Kết luận
Tiểu luận đã đạt được một số công việc sau đây:
• Mô tả sơ lược về các mô hình biểu diễn tri thức thông dụng.
• Trình bày ý nghĩa, giá trị của việc xây dựng hệ cơ sở tri thức cho các phần
mềm quản lý.
• Đề xuất một mô hình biểu diễn tri thức CAFR cho các bài toán quản lý dựa
trên mô hình COKB.
• Nêu ra một số vấn đề trên trên mô hình CAFR và các giải pháp như: vấn đề
phân rã mô hình thành các lược đồ quan hệ, đề xuất cấu trúc biểu diễn thuật
toán cho một tính năng của phần mềm bằng một thuật toán được sinh ra nhờ
suy luận trên các tri thức trong mô hình và cách thức thực hiện các thuật toán
đó.
• Demo tính năng thực hiện thuật toán bằng một ngôn ngữ lập trình thông dụng
như Java để thấy tính khả thi của biểu diễn trên.
Hướng phát triển sắp tới của tiểu luận là:
• Tiếp tục đào sâu, nghiên cứu, hoàn thiện thêm mô hình CAFR.
• Giải quyết vấn đề sinh ra thuật toán cho một tính năng của phần mềm quản lý
cũng như phân rã thuật toán đó thành biểu diễn dạng cây. Đề xuất cấu trúc
lưu trữ các cây thuật toán ở bộ nhớ ngoài.
• Nghiên cứu cách thức cho phép biểu diễn tri thức của từng module phần
mềm và tích hợp trong một hệ thống duy nhất. Ví dụ ta đã có một cơ sở tri
thức cốt lõi, cơ sở cho một tổ chức, xí nghiệp. Giờ ta có thể xây dựng thêm
cơ sở tri thức về Tài chính đề hình thành nên module tài chính, cơ sở tri thức
về Bán Hàng & Marketing hình thành nên module Bán hàng & Marketing…
• Xây dựng một CASE Study để kiểm chứng mô hình làm việc như thế náo với
các ứng dụng thực tế.
• Xây dựng một công nghệ để tạo lập các phần mềm quản lý theo phương pháp
biểu diễn tri thức trên mô hình CAFR bằng các công nghệ lập trình hiện đại,
phổ dụng như Java, .NET.
23
Tiểu luận môn học: Công nghệ tri thức
Tài liệu tham khảo
[1]. Nhon Van Do, Computational Networks for Knowledge Representation, World
Academy of Science, Engineering and Technology 56 (2009).
[2]. Nhon Van Do, Model for Knowledge Bases of Computational Objects, IJCSI
International Journal of Computer Science Issues, Vol 7, Issue 3, No 8, May(2010).
[3]. Hoàng Kiếm, Bài giảng chuyên đề Công nghệ tri thức và Ứng dụng, ĐH CNTT.
[4]. Hoàng Kiếm(2007), Giải một bài toán trên máy tính như thế nào, Tập 3, NXB Giáo
dục.
24