Tải bản đầy đủ (.docx) (14 trang)

Báo cáo GIẢI BÀI TOÁN TAM GIÁC SỬ DỤNG MẠNG NGỮ NGHĨA (CÓ CODE DEMO)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (304.49 KB, 14 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
----------

BÁO CÁO BÀI TẬP MÔN
NHẬP MÔN CÔNG NGHỆ TRI THỨC & MÁY HỌC

Đề tài: Ứng dụng mô hình Mạng ngữ nghĩa vào giải bài toán tam giác
Lớp: CS110.J12
Giảng viên hướng dẫn: Ths. Nguyễn Thị Ngọc Diễm
Thành viên nhóm thực hiện: 1, Lê Thanh Tiềm – 16521214
2, Trần Quang Toàn – 16521264

Tp Hồ Chí Minh, ngày 20 tháng 11 năm 2018.


LỜI CẢM ƠN
Ngày nay, với thời kỳ công nghiệp hóa – hiện đại hóa, đất nước càng phát triển thì công nghệ thông tin nói
chung cung như linh vưc tri tuê nhân tạo nói riêng, đặc biệt là về mảng tri hức và máy học đa và đang là
một linh vưc rất quan trọng trong đời sống xa hôi trong viêc tạo ra các thưc thể thông minh giup ich cho
chung ta, máy tnh điên tư với đô thông minh nhất đinh đa có ảnh hương lớn tới cu ôc sống ngày nay và sư
phát triển trong tương lai.
Bài tập ứng dụng mô hình mạng ngữ nghia giải bài toán tam giác lần này giup chung em củng cố them
những kiến thức đa học ơ trên lớp.
Để hoàn thành bài tập lần này nhóm xin cảm ơn cô đa hướng dẫn và truyền tải những kiến thức cần thiết
để nhóm có thể hoàn thành được bài tập này.
Tuy đa rất cố gắng học hỏi cung như tm hiểu tài liệu từ nhiều nguồn thông tin khác nhau, nhưng điều ki ên,
khả năng của chung em còn rất hạn chế nên cung không tránh khỏi thiếu sót. Kinh mong được sư đóng góp
ý kiến của cô để nhóm em có thể hoàn thiện hơn về báo cáo và ứng dụng cho bài tập này.


Chung em xin chân thành cảm ơn!

Tp Hồ Chí Minh, ngày 20 tháng 11 năm 2018.


1.Giơi thiêu vê mang ngư nghia:
Mạng ngữ nghia là môt phương pháp biểu diên tri thức đầu tiên và cung là phương pháp dê hiểu tốt
nhất đối với chung ta. Phương pháp này se biểu diên tri thức dưới dạng m ôt đồ thi, trong đó đỉnh là
các đối tượng (khái niêm) còn các cung cho biết mối quan hê giữa các đối tượng.
Vi dụ: Có các khái niêm chich chòe, chim, hót, cánh, tô và môt số mối quan h ê giữa các khái ni êm
như sau:
+ Chich chòe là môt loài chim.
+ Chim biết hót.
+ Chim làm tô.
+ Chim có cánh.
Mối liên hê giữa các khái niêm trên được biểu diên trưc quan băng môt đồ thi có hướng như sau:

Chich chòe

Cánh

la

co
Chim

biết
Hót

lam



Do mạng ngữ nghia là môt loại đồ thi cho nên nó thừa hương được tất cả những m ăt mạnh của
công cụ này. Nghia là ta có thể dung những thuât toán của đồ thi trên mạng ngữ nghia như thu ât toán tm
liên thông, tm đường đi ngắn nhất để thưc hiên các cơ chế suy luân. Điểm đ ăc biêt của mạng ngữ nghia


so với đồ thi thông thường chinh là viêc gán môt ý nghia ( là, có, làm, biết…) cho các cung. Trong đồ thi tiêu
chuân, viêc có môt cung nối giữa hai đinh chi cho biết có sư liên hê giữa hai đinh đó và tất cả các cung
trong đồ thi đều biểu diên cho cung môt loại liên hê. Trong mạng ngữ nghia, cung nối giữa hai đinh còn cho
biết giữa hai khái niêm tương ứng có sư liên hê như thế nào. Viêc gán ngữ nghia vào các cung của đồ thi
giup giảm bớt được số lượng đồ thi cần phải dung để biểu diên các mối liên h ê giữa các khái ni êm. Ơ vi dụ
trên, nếu sư dụng đồ thi thông thường, ta phải dung đến 4 loại đồ thi cho 4 mối liên h ê ( là, có, làm, biết).
Mạng ngữ nghia có tnh kế thừa, bơi vì ngay trong khái niêm, mạng ngữ nghia đa hàm ý sư phân cấp
(như các mối liên hê “là”) nên có nhiều đinh trong mạng măc nhiên se có những thu ôc tnh của những đinh
khác.
Theo vi dụ về mạng ngữ nghia ơ trên, ta có thể trả lời câu hỏi cho mối liên hê “có”: “Chich chòe có
làm tô không?”. Có thể khăng đinh điều này vì đinh “chich chòe” có liên kết “là” với đinh “chim” và đinh
“chim” lại có liên kết “biết” với đinh “tô”. Kiểu suy luân trên bắt nguồn từ thu ât toán “loang” hay thu ât
toán “tm liên thông” trên đồ thi. Chinh đăc tnh kế thừa của mạng ngữ nghia đa cho phep ta có thể thưc
hiên được rất nhiều phep suy diên từ những thông tin săn có trên mạng.

2.Ưu điểm va nhược điểm của mang ngư nghia:
* Ưu điểm:
- Mạng ngữ nghia rất linh đông, ta có thể dê dàng thêm vào mạng các đinh ho ăc cung mới để bô
sung các tri thức cần thiết.
- Mạng ngữ nghia có tnh trưc quan cao nên rất dê hiểu.
- Mạng ngữ nghia cho phep các đinh có thể kế thừa các tnh chất từ các đinh khác thông qua các loại
cung, từ đó có thể tạo ra các liên kết ngầm giữa những đinh không có liên kết trưc tiếp đến nhau.
- Mạng ngữ nghia hoạt đông khá tư nhiên theo cách thức con người ghi nhân thông tin.


* Nhược điểm:
- Các thao tác tm kiếm mạng ngữ nghia thường khó khăn, đăc biêt đối với những mạng ngữ nghia
có kich thước lớn.) Do đó mô hình mạng ngữ nghia thường được dung chủ yếu để phân tch vấn đề,


sau đó nó se được chuyển đôi sang dạng khác để thi hành hoăc mạng ngữ nghia được dung kết hợp
với môt số phương pháp biểu diên khác.
- Cho đến nay, vẫn chưa có môt chuân nào quy đinh các giới hạn cho các đinh và cung của mạng.
Nghia là ta có thể gán ghep bất kỳ khái niêm nào cho đinh hoăc cung.
- Tinh thừa kế trên mạng có thể dẫn đến nguy cơ mâu thuẫn trong tri thức vì có sư không rõ ràng khi
gán cho môt đinh của mạng. Vì tnh thừa kế sinh ra rất nhiều liên kết ngầm nên khả năng nảy sinh
môt mối liên hê không hợp lê rất cao.
- Hầu như không thể biểu diên các tri thức dạng thủ tục băng mạng ngữ nghia vì các khái niêm về
thời gian và trình tư không được thể hiên tường minh trên mạng ngữ nghia.

* Ứng dụng:
Hai loại ứng dụng tiêu biểu của mạng ngữ nghia là ứng dụng xư lý ngôn ngữ tư nhiên và ứng dụng
giải các bài toán thông minh.
- Trong ứng dụng xư lý ngôn ngữ tư nhiên, mạng ngữ nghia có thể giup máy tnh phân tch được cấu
truc của câu để từ đó có thể phần nào hiểu được ý nghia của câu, là công cụ hữu hiêu nhất hi ên nay
trong viêc dich và giải các bài text.
- Trong ứng dụng giải các bài toán thông minh: như giải bài toán tam giác, cân băng phản ứng hóa
học,…

3, Bai toán tam giác sử dụng mang ngư nghia:
* Các tri thức cần co:
Xét tri thức bài toán Tam giác gồm:
-


Các thuộc tính:
o a, b, c: 3 cạnh của tam giác


α, β, γ: 3 góc đối diện với 3 cạnh tương ứng trong tam giác

o

o ha: đường cao tương ứng với cạnh c của tam giác
o S: diện tích tam giác
o p: nửa chu vi của tam giác
o R: bán kính đường tròn ngoại tiếp tam giác
-

Các công thức tính toán liên quan giữa các thuộc tính:
α + β + γ = 180 (3)
a
b
=
sinα sinβ
c
b
=
sinγ sinβ

(1)

(2)

S = b.c.sinα / 2 (7)

S = a.b.sinγ / 2 (9)
S = c.a.sinβ / 2 (8)
c2 = a2 + b2 - 2.a.b.cosγ (6)
a2 = b2 + c2 - 2.b.c.cosα (4)
b2 = a2 + c2 - 2.a.c.cosβ (5)
2.p = a + b + c (10)

R=

a.b.c
4.S

(11)

ha = b.sinγ (12)
*Mô hình hóa các tri thức:


(3)
(1)

a
b
=
sinα
sinβ

+ + = 180

c

b
=
(2)
sinγ
sinβ ha

(7)

ha = b.sin

(12)

S = b.c.sin / 2

S = a.b.sin / 2

(9)

(8)
S = c.a.sin / 2

b
(4)

(6)
c2 = a2 + b2 - 2.a.b.cos

a2=b2+c2- 2.b.c.cos

a

(10)

2.p = a + b + c

c

(11)

a. b. c
4.S

p
R
Chu thich:

+ Đinh:

S

(5)

b2 = a2 + c2- 2.a.c.cos


Đinh chứa công thức (hình chữ nhât).
Đinh chứa yếu tố hay biến của tam giác ( hình tròn).
+ Cung: là hướng đi từ đinh hình tròn đến đinh hình chữ nhât cho biết biến nào năm trong công
thức nào.
*Tổ chức lưu trư:


+ Sư dụng một mảng A hai chiều để lưu trữ các thuộc tnh và luật liên quan đến mạng ngữ nghia.
Trong đó:
* cột biểu thi công thức (các công thức ơ các đinh hình chữ nhật).
*Dòng biểu thi các biến (các thuộc tnh ơ các đinh hình tròn)
Xet A[i, j] = 1 nếu các phân thư i trong công thức j đa được kich hoạt, A[i, j] = -1 nếu công
thức cột j có chứa biến i, Ngược lại thì A[i, j] = 0.
Để kiểm tra xem một công thức đa có đủ n-1 yếu tố hay chưa (nghia là kiểm tra điều kiện
"đinh hình chữ nhật có cung nối với n đinh hình tròn mà n-1 đinh hình tròn đa được kich hoạt"), ta
chi việc lấy hiệu giữa tông số ô có giá tri băng 1 và tông số ô có giá tri -1 trên cột ứng với công thức
cần kiểm tra. Nếu kết quả băng n, thì công thức đa có đủ n-1 yếu tố.
Mô hình ma trận như sau:
α
β
γ

a
b
c
S
h
a
R
p

(1)
-1
-1
0
-1
-1

0
0
0

(2)
0
-1
-1
0
-1
-1
0
0

(3)
-1
-1
-1
0
0
0
0
0

(4)
-1
0
0
-1
-1

-1
0
0

(5)
0
-1
0
-1
-1
-1
0
0

(6)
0
0
-1
-1
-1
-1
0
0

(7)
-1
0
0
0
-1

-1
-1
0

(8)
0
-1
0
-1
0
-1
-1
0

(9)
0
0
-1
-1
-1
0
-1
0

10
0
0
0
-1
-1

-1
0
0

(11)
0
0
0
-1
-1
-1
-1
0

(12)
0
0
-1
0
-1
0
0
-1

0
0

0
0


0
0

0
0

0
0

0
0

0
0

0
0

0
0

0
-1

-1
0

0
0


*Phát biểu bai toán:
Vi dụ: Cho tam giác ABC có cạnh a và 2 góc kề là β, γ được cho trước. Tinh diện tch S của tam giác+ Ban đầu

đinh a, β, b của đồ thi được kich hoạt:

=> Cơ chế lan truyền:


+ Đầu tiên, các đinh a, β, γ được kich hoạt:
α
β
γ

a
b
c
S
h
a
R
p

(1)
-1
1
0
1
-1
0
0

0

(2)
0
1
1
0
-1
-1
0
0

(3)
-1
1
1
0
0
0
0
0

(4)
-1
0
0
1
-1
-1
0

0

(5)
0
1
0
1
-1
-1
0
0

(6)
0
0
1
1
-1
-1
0
0

(7)
-1
0
0
0
-1
-1
-1

0

(8)
0
1
0
1
0
-1
-1
0

(9)
0
0
1
1
-1
0
-1
0

10
0
0
0
1
-1
-1
0

0

(11)
0
0
0
1
-1
-1
-1
0

(12)
0
0
1
0
-1
0
0
-1

0
0

0
0

0
0


0
0

0
0

0
0

0
0

0
0

0
0

0
-1

-1
0

0
0

(1)
1

1
0
1
-1
0
0
0

(2)
0
1
1
0
-1
-1
0
0

(3)
1
1
1
0
0
0
0
0

(4)
1

0
0
1
-1
-1
0
0

(5)
0
1
0
1
-1
-1
0
0

(6)
0
0
1
1
-1
-1
0
0

(7)
1

0
0
0
-1
-1
-1
0

(8)
0
1
0
1
0
-1
-1
0

(9)
0
0
1
1
-1
0
-1
0

10
0

0
0
1
-1
-1
0
0

(11)
0
0
0
1
-1
-1
-1
0

(12)
0
0
1
0
-1
0
0
-1

0
0


0
0

0
0

0
0

0
0

0
0

0
0

0
0

0
0

0
-1

-1
0


0
0

Trên cột công thức (3) hiệu (1+1- (-1)) = 3= n, nên dòng α se được kích hoạt:
α
β
γ

a
b
c
S
h
a
R
p

Trên cột công thức (1) hiệu (1+1+1 - (-1)) = 4 = n, nên dòng b se được kích hoạt:


α
β
γ

a
b
c
S
h

a
R
p

(1)
1
1
0
1
1
0
0
0

(2)
0
1
1
0
1
-1
0
0

(3)
1
1
1
0
0

0
0
0

(4)
1
0
0
1
1
-1
0
0

(5)
0
1
0
1
1
-1
0
0

(6)
0
0
1
1
1

-1
0
0

(7)
1
0
0
0
1
-1
-1
0

(8)
0
1
0
1
0
-1
-1
0

(9)
0
0
1
1
1

0
-1
0

10
0
0
0
1
1
-1
0
0

(11)
0
0
0
1
1
-1
-1
0

(12)
0
0
1
0
1

0
0
-1

0
0

0
0

0
0

0
0

0
0

0
0

0
0

0
0

0
0


0
-1

-1
0

0
0

Trên cột công thức (2) hiệu (1+1+1 - (-1)) = 4 = n, nên dòng c se được kích hoạt:
α
β
γ

a
b
c
S
h
a
R
p

(1)
1
1
0
1
1

0
0
0

(2)
0
1
1
0
1
1
0
0

(3)
1
1
1
0
0
0
0
0

(4)
1
0
0
1
1

1
0
0

(5)
0
1
0
1
1
1
0
0

(6)
0
0
1
1
1
1
0
0

(7)
1
0
0
0
1

1
-1
0

(8)
0
1
0
1
0
1
-1
0

(9)
0
0
1
1
1
0
-1
0

10
0
0
0
1
1

1
0
0

(11)
0
0
0
1
1
1
-1
0

(12)
0
0
1
0
1
0
0
-1

0
0

0
0


0
0

0
0

0
0

0
0

0
0

0
0

0
0

0
-1

-1
0

0
0


Trên cột công thức (7) hiệu (1+1+1 - (-1)) = 4 = n, nên dòng S se được kích hoạt:
α
β
γ

a
b
c
S
h
a
R
p

(1)
1
1
0
1
1
0
0
0

(2)
0
1
1
0
1

1
0
0

(3)
1
1
1
0
0
0
0
0

(4)
1
0
0
1
1
1
0
0

(5)
0
1
0
1
1

1
0
0

(6)
0
0
1
1
1
1
0
0

(7)
1
0
0
0
1
1
1
0

(8)
0
1
0
1
0

1
1
0

(9)
0
0
1
1
1
0
1
0

10
0
0
0
1
1
1
0
0

(11)
0
0
0
1
1

1
1
0

(12)
0
0
1
0
1
0
0
-1

0
0

0
0

0
0

0
0

0
0

0

0

0
0

0
0

0
0

0
-1

-1
0

0
0


=> tm được S.
*Thuật giải:
1, suy diễn tiến:
Tư tương của thuật giải Suy diên tiến là từ những giả thiết đa biết (know) ta áp dụng các tập luật để
sinh ra thêm giả thiết mới và bô sung vào know. Quá trình này cứ tiếp tục cho đến khi kết luận cần
tm đa năm trong know hoặc không thể áp dụng được luật nào để sinh thêm giả thiết mới nữa và
chương trình kết thuc.
Mô phỏng thuật giải :
Bước 1: Khơi tạo một mảng đánh dấu các luật, để đánh dấu những luật nào đa được sư dụng để

tránh trung lặp các bước.
Bước 2: Kiểm tra xem mục tiêu đa năm trong tập giả thiết (know) chưa?
Nếu đung, đi đến Bước 6.
Nếu sai, chuyển tới bước 3.
Bước 3: Cho kiểm tra các luật, nếu luật nào chưa dung (chưa được đánh dấu):
Kiểm tra xem các luật trong đó có đủ điểu kiện để áp dụng sinh ra giả thiết mới hay không?
Nếu đủ điều kiện:
+ Đánh dấu luật này lại
+ Bô sung kết luận của luật vào trong know
+ Chuyển tới Bước 2
Nếu không đủ điều kiện: tiếp tục với luật tiếp theo.
Bước 4: Nếu không còn luật nào có thể áp dụng được nữa, chuyển tới bước 6.
Bước 5: Quay lại bước 2.
Bước 6: Kết luận:
+ Nếu Bước 4 đung: bài toán không thể giải được
+ Nếu Bước 2 đung: dung suy diên lui để loại bỏ các luật thừa, đưa ra kết luận.
Minh họa suy diên lui cho bài toán ơ trên:
Xet công thức (1) tnh anpha, b nhưng chưa đủ yếu tố, chưa them vào know.
Xet Công thức (2) tnh b, c nhưng chưa đủ yếu tố, chưa thêm vào know.
Xet công thức (3) tnh anpha, tm được anpha -> add.know(anpha). Công thức (3) được kich
hoạt.


Xet công thức (4) tnh b, c nhưng vẫn chưa đủ yếu tố, chưa thêm vào know.
Xet Công thức (5) tnh b, c nhưng vẫn chưa đủ yếu tố, chưa thêm vào know.

Xet côngt thức (1) tnh b, Tìm được b -> add.know(b). Công thức (1) được kich hoạt.
Xet côngt thức (2) tnh c, Tìm được c -> add.know(c). Công thức (2) được kich hoạt.
Xet Công thức (7) tnh được S
-> kết thuc.


2, Suy diễn lùi:
Mô phỏng thuật giải:
+Đầu tiên, lưu lại những công thức có chứa kết luận
+Sắp xếp các luật có chứa kết luận theo số lượng biến năm trong know của mỗi luật
+ Duyệt từng công thức chứa kết luận
+duyệt từng biến trong giả thiết của mỗi luật
-> Nếu biến đó đang được tm kiếm trong các vòng đệ quy trước thì đánh dấu lại
->Nếu có biến đó không năm trong know thì luật này chưa săn sàng để dung

+Nếu trạng thái của biến này là đang được tm kiếm ơ các vòng lặp trước thì bỏ qua (không dung)
luật này để tiếp tục với luật khác
+Nếu luật này đa săn sàng để dung thì tiến hành sinh giả thiết và thêm vào known
+cập nhật trạng thái cho thuộc tnh đó
+ Nếu đây là bước lui thứ ba và đa thư hết toàn bộ luật có thể sinh kết luận cần tm
+Nếu không thể sinh thêm được bất kỳ giả thiết nào nữa thì trả về kết quả là không thành công
+cập nhật trạng thái của giả thiết vừa được sinh ra
+Duyệt từng biến trong phần giả thiết của luật


+lưu kết quả của việc quay lui
+Nếu không năm trong known
+đánh dấu danh sách trạng thái trước khi quay lui
+Nếu quay lui tnh cờ tm thấy một giả thiết ơ vòng đệ quy ngoài ta kiểm tra xem nó có phải điều ta
đang tm kiếm hay không, nếu đung, báo thành công, nếu sai, báo ra các vòng đệ quy ngoài
+Nếu có khả năng sinh được luật
->Cập nhật danh sách trạng thái.
** trong quá trình chạy suy diên tiến, se phát sinh ra các luật thừa, luc này ta se dung suy diên lui để
loại bỏ các luật thừa đó, tức là nếu kết luận của luật liền trước không có trong giả thiết của một luật
thì loại luật đó ra.

Minh họa suy diên lui cho bài toán đa nêu ơ trên:
+Giả thiết: a, β, γ
+ kết luận: tm S
1, tnh S: sư dụng công thức số (7) S = b.c.sinα / 2
2, để tm được S, cần tm được b, c và α.
-> Sư dụng công thức số (1) để tm được b.
3, để tm được b cần tm được α
-> sư dụng công thức số (3) để tm được α.
4, sư dụng công thức số (2) để tm được c
=> từ đây ta có thể tm được S nhờ công thức (7).
*Chương trình demo:
+ Chương trình được nhóm chung em viết băng ngôn ngữ C# mô phỏng lại bài toán tam giác và cách
giải.
+ Demo được gưi đinh kèm, kèm theo đường link video quay lại demo một số vi dụ.
* một số bài toán test demo:
1, Ba cạnh a, b, c có giá tri lần lượt là 3, 4, 5 -> tnh đường cao ha = ?
Giá tri ha = 4
2, Cho anpha băng 45 độ, a = 5, b = 6 -> tnh S = ?
Giá tri Chu vi = 14,6


3, Cho anpha = beta = 30 độ. Cạnh a = 10 -> tnh S = ?
Giá tri S = 43,3
4, Cho a = 10, β = 30 độ, γ= 45 độ -> Tinh S,b,c,ha ?
Giá tri S = 18,3
Giá tri b = 5,17
Giá tri c = 7,32
Giá tri ha = 3,66
5, Cho tam giác ABC có góc α=90o, b=, c=b. Tính S, a, R.
Giá tri S = 6

Giá tri a = 5
Giá tri R = 2,5
* Video chạy demo: />*Tai Liệu tham khảo:
[1] Giáo trình Tri Tuê Nhân Tạo – GS.TSKH. Hoàng Kiếm, Ths. Đinh Nguyên Anh Dung.
[2] PGS.TS. Đỗ Văn Nhơn – Bài giảng môn Biêu Diên Tri Thức Và Ứng Dụng.
[3] />%E1%BB%A5ng-m%E1%BA%A1ng-ng%E1%BB%AF-nghia-solution-for-triangle-using-semantic-network/
[4] />[5] Slide bài giảng thầy Hồ Long vân.
[6] />


×