1.4.1 Ý tưởng chính
- Cho trước tập các ý giảng chính P, và định nghĩa tập các điều kiện cứng của một học phần như sau : = ∪ , ∀ ∈ .
- Giải thuật sẽ xây dựng ma trận kề A của đồ thị Ge sao cho đảm bảo tính hợp lý của một KG, cụ thể là thỏa điều kiện (i) và (ii) của Định nghĩa 1.8. Gọi Ge = (V, E) là đồ thị tri thức sẽ xây dựng, với: V = {v1, v2 , .. , vn}; và E = {(2 , 2 )/6(2 ) ≺ 6(2 )} Trong đó, song ánh f : ⟶ P 2 ⟼ = 6(2 ) Ma trận kề A, với " = (#$ )!×! , được quy ước như sau:
aij = 0: không có cung có hướng nối từ viđến vj
aij = 1: tồn tại cung có hướng nối từ viđến vj
Bên cạnh đó, giải thuật sử dụng thêm hai ma trận B và W để lưu giữ lại cung bị loại bỏ và độ dài đường đi với mục đích để tái sử dụng khi cần khai thác KG.
36
bij = 0: không có cung bị loại bỏ từ viđến vj
bij = 1: có cung bị loại bỏ từ viđến vj
Ma trận đường đi W, với ; = (<$ )!×! , được quy ước như sau
wij = 0: không tồn tại đường đi nối từ viđến vj
wij = 1: có đường đi trực tiếp nối từ viđến vj (nghĩa là, $ ≺ )
wij >1: có đường đi gián tiếp nối từ viđến vj (nghĩa là, $ ≺ )
Giải thuật sẽ cập nhật lại giá trị wij bằng cách thêm 1 đơn vị, mỗi khi đường đi từ
vi đến vj đi qua thêm một cung nối trung gian. Do đó, dựa trên ma trận W có thể biết
được độ dài của đường đi (Dij) từ viđến vj, cụ thể là Dij = max(wij).
- Ý tưởng chính: giải thuật duyệt lần lượt các đỉnh v của tập V và cập nhật giá trị
cho các ma trận A, B, W dựa vào việc kiểm tra trên tập điều kiện cứng của v ( =). Để
đơn giản kí hiệu khi trình bày, ta sẽ kí hiệu cung (vi, vj) là (i, j). Phần xử lý chính của giải thuật là hàm Kiểm tra tính hợp lý được xét với từng cung có hướng mới thêm (i,
j) để cập nhật các ma trận A, B và W (xem Hình 1.5). Hàm Kiểm tra tính hợp lý, sẽ
thực hiện các bước như sau:
Bước 1: Nếu tồn tại một đường đi từđỉnh j → i
// Loại bỏđường đi tạo thành chu trình
Loại bỏ cung có hướng mới thêm vào (i, j): cập nhật ma trận A, B
Bước 2: Ngược lại,
// Loại bỏđường đi trực tiếp, khi đã tồn tại đường đi gián tiếp giữa 2 đỉnh
(1) Nếu tồn tại đường đi gián tiếp từđỉnh i → j:
Loại bỏđường đi trực tiếp từđỉnh i → j: Cập nhật ma trận A, B
(2) Ngược lại,
(2.1) Thiết lập đường đi trực tiếp từđỉnh i → j: Cập nhật ma trận W
37
(2.2.1) Loại bỏ đường đi trực tiếp từ đỉnh k → j nếu có: Cập nhật ma trận A, B
(2.2.2) Cập nhật ma trận W
(2.2.3) Nếu tồn tại đường đi gián tiếp từ đỉnh j → l
(i) Loại bỏ đường đi trực tiếp từ đỉnh k → l nếu có: Cập nhật ma trận A, B
(ii) Cập nhật ma trận W
(2.3) Nếu tồn tại đường đi gián tiếp từ đỉnh j → l
(2.3.1) Loại bỏ đường đi trực tiếp từ đỉnh i → l nếu có: Cập nhật ma trận A, B
(2.3.2) Cập nhật ma trận W
Hình 1.5. Minh họa giải thuật Kiểm tra tính hợp lý Hình 1.5 minh họa, i và j là 2 đỉnh
đang xét, khi thêm vào một cung có hướng giữa i và j, nghĩa là có đường đi trực tiếp từ i đến j.
Giả sử, k ∈ K là đỉnh có đường đi đến i và l ∈ L là đỉnh có đường đi từ
j đến nó.
Các đường đi trực tiếp (2.1); (2.2.1); (2.3.1); và (2.2.3.i) sẽ loại bỏ khi tồn tại đường đi gián tiếp tương ứng là (1); (2.2) và (2.1); (2.2) và
38
1.4.2 Giải thuật chi tiết
Giải thuật 1.1. Xây dựng KG cho một học phần
1. Tạo đồ thị KG (sơđồ khối giải thuật trình bày ở Hình 1.6) Input: Tập đỉnh: tập PI (V) Tập cung có hướng: tập điều kiện cứng của các PI ( ) Output: Ma trận kề A (biểu diễn đồ thị KGe), ma trận B và ma trận đường đi W Giải thuật: (1) Khởi gán ma trận kề A: ∀i, j ∈ V, A[i][j] = 0 (2) Khởi gán ma trận cung loại bỏ B: ∀i, j ∈ V, B[i][j] = 0 (3) Khởi gán ma trận đường đi W: ∀i, j ∈ V, W[i][j] = 0 (4) Duyệt từđầu đến cuối tập đỉnh V Cập nhật ma trận kề A 2. Cập nhật ma trận kề A (sơđồ khối giải thuật trình bày ở Hình 1.6) Input: Đỉnh v cần thêm vào KGe: v ∈ V Tập điều kiện cứng của đỉnh v: = Output: Ma trận kề A đã được cập nhật Ma trận B và ma trận đường đi W đã được cập nhật Giải thuật: (1) S = =
39
(2) Chọn x ∈ S
(3) Thêm cung (x, v) vào đồ thị KGe⇔ A[x][v] = 1
(4) Kiểm tra tính hợp lý - với cung (x,v) mới thêm vào (5) S = S \ {x}
(6) Nếu S ≠∅, quay lại bước (2).
3. Kiểm tra tính hợp lý (sơđồ khối giải thuật trình bày ở Hình 1.7)
Input:
Cung (i, j) đang xét và A[i][j] = 1
Output:
Ma trận kề A đã được cập nhật
Ma trận B và ma trận đường đi W đã được cập nhật
Giải thuật:
// ***Kiểm tra phát sinh chu trình và loại bỏ
B.1 Nếu W[j][i] ≠ 0 thì // tạo thành chu trình A[i][j] = 0 // bỏ cung mới thêm vào B[i][j] = 1 // cập nhật cung bị loại bỏ
// ***Kiểm tra đường đi trực tiếp (khi đã tồn tại đường đi gián tiếp) và loại bỏ
B.2 Ngược lại,
(1) Nếu W[i][j] > 1 thì // tồn tại đường đi gián tiếp từđỉnh i đến đỉnh j A[i][j] = 0 // bỏ cung mới thêm vào
B[i][j] = 1 // cập nhật cung bị loại bỏ
(2) Ngược lại // cập nhật đường đi từđỉnh i đi đến đỉnh j
40 // cập nhật đường đi từ các đỉnh k đi đến đỉnh j (2.2) Cho k = 1 đến n (2.2.1) Nếu W[k][i] ≠ 0 thì Nếu W[k][j] = 1 thì A[k][j] = 0 B[k][j] = 1 (2.2.2) Nếu W[k][j] < W[k][i] + W[i][j] W[k][j] = W[k][i] + W[i][j] // cập nhật đường đi từđỉnh k đi đến các đỉnh l (2.2.3) Cho l = 1 đến n (i) Nếu W[j][l] ≠ 0 thì Nếu W[k]l] = 1 thì A[k][l] = 0 B[k][l] = 1
(ii) Nếu W[k][l] < W[k][i] + W[i][j] + W[j][l]
W[k][l] = W[k][i] + W[i][j] + W[j][l] // cập nhật đường đi từđỉnh i đi đến các đỉnh l (2.3) Cho l = 1 đến n (2.3.1) Nếu W[j][l] ≠ 0 thì Nếu W[i]l] = 1 thì A[i][l] = 0 B[i][l] = 1 (2.3.2) Nếu W[i][l] < W[i][j] + W[j][l] W[i][l] = W[i][j] + W[j][l]
41
42
43
1.4.3 Ví dụ minh họa
1.4.3.1 Ví dụ 1
Giả sử ởhọc phần Kĩ thuật Lập trình C11, ta có tập PI như sau:
V = {Relational operator (1), Conditional operator (2), Loop (3), Branching (4),
While (5), Dowhile (6), For (7), IfElse (8)}
Và tập các điều kiện cứng của PI cũng được cho trước như sau12:
= {< : Relational operator ←∅>; < : Conditional operator ←∅>; < ?: Loop ← Relational operator, Conditional operator>;
< @: Branching ← Conditional operator>; < A: While ← Loop>; < B: DoWhile ← While, Loop>;
< C: For← While, Loop, Conditional operator>; < D: IfElse ← Branching, Condition operator>}
Minh họa cho KG trước khi xây dựng và ma trận A như trong hình vẽ (Hình 1.8)
Hình 1.8. Minh họa cho KG ban đầu (do chuyên gia định nghĩa) ở ví dụ 1
11
Xem Phụ lục 2
44 Theo Định nghĩa 1.8, có thể viết lại như sau:
V = {1, 2, 3, 4, 5, 6, 7, 8}; và
= {< : 1 ←∅>; < : 2 ←∅>; < ?: 3← 1, 2>; < @: 4← 2>; < A: 5← 3>; < B: 6← 5, 3>; < C: 7← 5, 3, 2>; < D: 8← 4, 2>}
Đồ thị KG sau khi xây dựng và các ma trận A, W như trong Hình 1.9, và 1.10.
Các đường đi được đánh dấu và loại bỏ: 6 ← 3; 7 ← 3; 7 ← 2; 8 ← 2
Hình 1.9. KG ở ví dụ 1 sau khi xây dựng bằng giải thuật 1.1
45
1.4.3.2 Ví dụ 2
Giả sử ở học phần Lý luận và Phương pháp dạy học Tin13, ta có tập PI như sau:
V = {PPDH (1), KiTB (2), KiVĐ (3), KiNC (4), PPTB (5), PPTĐ (6), PPTL (7), NhTC (8), NhHS (9), NhGV (10)}
Và tập các điều kiện cứng của PI cũng được cho trước như sau:
= {< : PPDH←∅>; < : KiTB← PPDH>; < ?: KiVĐ← PPDH>; < @: KiNC ← PPDH>; < A: PPTB ← NhGV>; < B: PPTĐ← NhHS>; < C: PPTL← NhTC>; < D: NhTC← KiVĐ, NhGV>;
< E: NhHS← KiNC, NhTC>; < F: NhGV← KiTB, NhHS>}
Minh họa cho KG trước khi xây dựng và ma trận A như trong hình vẽ (Hình 1.11)
Hình 1.11. Minh họa cho KG ban đầu (do chuyên gia định nghĩa) ở ví dụ 2
Theo định nghĩa, có thể viết lại như sau (xem Hình 1.11 (b), và (c)): V = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; và
13 PPDH-phương pháp dạy học, KiTB – kiểu dạy học thông báo, KiVĐ – kiểu dạy học nêu vấn đề, KiNC –
kiểu dạy học nghiên cứu, PPTB – phương pháp thông báo, PPTĐ – phương pháp tự đọc, PPTL – phương pháp thảo luận, NhTC – nhóm tích cực, NhHS – nhóm học sinh là trung tâm, NhGV – nhóm giáo viên là trung tâm.
46
= {< : 1 ←∅>; < : 2 ← 1>; < ?: 3← 1>; @: 4← 1>; < A: 5← 10>; < B: 6← 9>; < C: 7← 8>; < D: 8← 3, 10>; < E: 9← 4, 8>; < F: 10 ← 2, 9>}
Đồ thị KG sau khi xây dựng và các ma trận A, W như trong hình vẽ (xem Hình
1.12, và 1.13). Đường đi được đánh dấu và loại bỏ: 10 ← 9
Hình 1.12. KG ở ví dụ 2 sau khi xây dựng bằng Giải thuật 1.1
Ma trận kề A và ma trận đường đi W sau khi cập nhật, minh họa ở Hình 1.13
47
1.4.4 Phân tích và nhận xét giải thuật
1.4.4.1 Phân tích
Giải thuật 1.1 xây dựng KG bằng việc duyệt từng đỉnh trong tập V để cập nhật ma trận kề A tương ứng, trong đó phần xử lý chính là hàm Kiểm tra tính hợp lý. Vì vậy,
độ phức tạp tính toán với tình trạng dữ liệu đầu vào của Giải thuật 1.1 được xét trên
hàm Kiểm tra tính hợp lý này. Ta có thể coi phép toán tích cực ở đây là việc kiểm tra
điều kiện tồn tại đường đi (dựa trên ma trận đường đi W).
- Thời gian thực hiện giải thuật trong trường hợp tốt nhất : với 2 đỉnh i, j đang xét
để thêm vào 1 cung có hướng từ i đến j.
+ Nếu xảy ra trường hợp tạo ra chu trình, thì loại bỏ cung muốn thêm vào và không cập nhật ma trận kề A.
+ Nếu xảy ra trường hợp giữa i và j đã tồn tại một đường đi gián tiếp, thì loại bỏ
cung muốn thêm vào và không cập nhật ma trận kề A.
Số lần thực hiện phép toán này là 1 lần, ta có : T(n) = 1. Vậy độ phức tạp tính toán của giải thuật trong trường hợp này là Ο (1).
- Thời gian thực hiện giải thuật trong trường hợp xấu nhất : với 2 đỉnh i, j đang xét và đã thêm vào 1 cung có hướng từ i đến j. Nếu xảy ra trường hợp tồn tại đồng thời các đường đi gián tiếp từ một đỉnh k đến đỉnh i (có số lần thực hiện là n2), và cũng tồn tại các đường đi gián tiếp từ đỉnh j đến đỉnh l (có số lần thực hiện là n), thì loại bỏ đường đi trực tiếp và cập nhật ma trận kề A. Tổng số lần thực hiện các phép toán này là n2+n, ta có T(n) = n2+n . Vậy độ phức tạp tính toán của giải thuật trong trường hợp này là Ο (n2+n).
- Thời gian trung bình thực hiện giải thuật: T(n) = n2. Ta có độ phức tạp của giải thuật là Ο (n2).
1.4.4.2 Nhận xét
Giải thuật 1.1 xây dựng KG (đầu ra là ma trận kề A), đảm bảo tính hợp lý của thứ
48
tập Sh. Các tập đầu vào này theo giả định đã được định nghĩa sẵn từ chuyên gia sư
phạm dựa trên mô hình đề xuất sẽđảm bảo tính chính xác và đầy đủ của kiến thức.
Giải thuật 1.1 có ý nghĩa thực tế khi cài đặt vì tập PI (Ue) là khá lớn. Thông thường, ở một học phần (theo thử nghiệm thực tế giảng dạy trong 10 tuần) số lượng PI
khoảng trên/dưới 100 (chẳng hạn trong học phần Kĩ thuật lập trình C14đang minh họa có số lượng PI là 73), và cũng không có một minh chứng nào để xác định số lượng tối
đa về tri thức khoa học đối với một học phần. Nếu sử dụng giải thuật đối với một chương trình đào tạo (khoảng vài chục học phần), hoặc khi xây dựng KG cho nhiều học phần cùng lúc thì số lượng PI sẽ khá lớn. Đồng thời, tập điều kiện cứng (Sh) của
các PI cũng sẽ có số lượng nhiều tương ứng. Do đó, việc định nghĩa tập nội dung tri thức sẽ khiến người thiết kế dạy học rất khó kiểm tra được tính hợp lý, nghĩa là có thể
vi phạm các điều kiện ràng buộc theo Định nghĩa 1.8. Giải thuật sẽ kiểm tra tính hợp lý trong quá trình xây dựng KG thông qua việc cập nhật ma trận kề A (cùng với ma trận loại bỏ B và ma trận đường đi W). Ngoài ra, giải thuật sẽ giúp tổ chức lưu trữ KG
(ma trận kề A) để có thể khai thác sau này.
Đối với trường hợp xảy ra vi phạm điều kiện (i) – Định nghĩa 1.8, giải thuật xác
định và loại bỏ cung bắc cầu.
Đối với trường hợp xảy ra vi phạm điều kiện (ii) – Định nghĩa 1.8, được xem xét ở
hai trường hợp (TH) như sau :
(TH.1). Tập PI có một thứ tự mặc định
Ví dụ 1, minh họa cho trường hợp tập PI đầu vào đã được sắp theo một thứ tự
mặc định. Trường hợp này tương ứng với việc xây dựng KG cho một học phần đã có sẵn với một đề cương chi tiết và tài liệu/giáo trình quy định đểđịnh nghĩa tập PI
ban đầu. Vì vậy, các PI thường có một thứ tự trước/sau đã được ″ngầm nhận biết″ trước (do dựa vào tài liệu/giáo trình có sẵn). Trường hợp này sẽ không thể xảy ra chu trình, hoặc nếu xảy ra chu trình thì cũng dễ dàng loại bỏ, do biết trước được
49
thứ tự trước/sau của các PI. Trong thực tế cài đặt, giải thuật sẽ có bước tiền xử lý
để loại bỏ cung tạo chu trình trong hàm lấy tập điều kiện cứng khi thêm vào một cung mới.
Trong ví dụ 1, giả sửở đỉnh 2, tập điều kiện cứng được định nghĩa lại như sau:
: 2 ← 7 (xem minh họa ở Hình 1.14). Qua đó, dễ dàng nhận thấy cung này là không hợp lý, khi tạo thành chu trình và cần phải loại bỏ. Về mặt ngữ nghĩa, thì khi
các PI đã có một thứ tự luận lý thì kiến thức 7, không thể quay lại để là điều kiện cứng của kiến thức 2 và việc này cũng đã không thỏa điều kiện (ii) của Định nghĩa 1.8.
Hình 1.14. Minh họa trường hợp tạo chu trình ở ví dụ 1
(TH.2). Tập PI không có một thứ tự mặc định
Ví dụ 2, minh họa cho trường hợp xây dựng KG cho một học phần mới. Với trường hợp này, tập PI đầu vào sẽ không tuân theo một thứ tự luận lý nào cả (khác với trường hợp của ví dụ 1), bởi vì các chuyên gia sư phạm có thể tự biên soạn, hay định nghĩa tập
PI ban đầu dựa trên nhiều tài liệu/giáo trình khác nhau. Giải thuật trong trường hợp này tựđộng loại bỏ cung tạo ra chu trình khi gọi hàm Kiểm tra tính hợp lý. Như vậy, cung bị loại bỏ sẽ là cung vừa mới thêm vào đồ thị và làm tạo ra chu trình. Điều này, cũng dẫn đến việc là với tập PI đầu vào thì thứ tự ban đầu của các đỉnh để đưa vào đồ
thị sẽ quyết định việc xây dựng KG và có thể các KG được xây dựng sẽ khác nhau trong trường hợp này.
Để giải quyết trường hợp này, cần phải chọn lựa một trong hai giải pháp: (1), cần phải xác định thứ tự trước/sau của PI (sẽ do chuyên gia thực hiện thủ công/bán thủ
50
nhau (sẽ tựđộng loại bỏ cung tạo chu trình). Với các định nghĩa và ràng buộc ban đầu của KG, giải thuật được trình bày trong luận án chọn giải pháp (2) để thực hiện.
Trong ví dụ 2, chu trình xảy ra ở ba đỉnh 8, 9, 10, thể hiện ở tập điều kiện cứng như
sau: D: 8← 3, 10; E: 9← 4, 8; F: 10 ← 2, 9. KG được xây dựng phụ thuộc vào