Tải bản đầy đủ (.doc) (24 trang)

ứng dụng suy diễn lùi trong chuẩn đoán hỏng xe máy

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 (167.35 KB, 24 trang )

Khóa luận môn CH CSTT

Đại học CNTT – Đại học Quốc gia TPHCM

Lời mở đầu

V

ới sự phát triển của xã hội ngày nay, đời sống con người ngày càng được cải

thiện hơn và nhu cầu của con người cũng phát sinh nhiều hơn.Vì thế có

nhiều nhiều ngành nhiều nghề đa dạng đã ra đời trong hoàn cảnh như thế nhằm
phục vụ được tất cả các nhu cầu của con người. Và trong những ngành kinh tế
không thể không kể đến sự đóng góp đáng kể của ngành Công Nghệ Thông Tin, nó
luôn giữ một vị trí quan trọng trong mỗi ngành, mỗi nghề của cuộc sống. Hiện nay,
Công Nghệ Thông Tin đang phát triển ở mỗi quốc gia trên thế giới, bởi vì Công
Nghệ Thông Tin được xác định là một ngành mũi nhọn nhằm thúc đẩy sự phát
triển chung cho nhiều ngành. Công Nghệ Thông Tin đang cần một lượng lớn các kỹ
thuật viên, kỹ sư khám phá ra nhiều điều còn đang tiềm ẩn trong một môi trường
đầy tiềm năng.

1


Khóa luận môn CH CSTT

Đại học CNTT – Đại học Quốc gia TPHCM

Lời Cảm Ơn
Chúng em xin chân thành cảm ơn sự tận tâm giảng dạy từng khía cạnh của bài


trong suốt thời gian học: “Các Hệ Cơ Sở Tri Thức” của thầy Đỗ Phúc. Qua quá
trình học, thầy đã làm cho chúng em hiểu được sơ bộ được các luật, lập luận trong
môn “Các Hệ Cơ Sở Trí Thức”. Tuy nhiên do thời gian hạn hẹp , và sự hiểu biết của
chúng em về môn học này chưa được sâu, cho nên vẫn còn nhiều thiếu sót, nhiều
luật chưa được hoàn chỉnh và phù hợp với thực tế hiện nay.
Xin cảm ơn các bạn học cùng lớp cũng như các anh chị lớp trên đã tận tình giúp
đỡ, và hướng dẫn để chúng tôi hiểu rõ hơn những vấn đề vướng mắc mà chúng tôi
gặp phải trong quá trình thực hiện khóa luận này.
Dù đã cố gắng thực hiện nhưng không tránh khỏi những thiếu sót trong bài khoá
luận này.Vì vậy, cũng rất mong nhận được sự đóng góp của thầy và các bạn để
chương trình được hoàn thiện hơn.
Nhóm thực hiện

2


Khóa luận môn CH CSTT

Đại học CNTT – Đại học Quốc gia TPHCM

Mục lục
Trang
Chương 1: Sơ Lược Về Đề Tài....................................................................4
Chương 2: Lý Thuyết Cơ Sở.......................................................................4
1. Giới thiệu:..........................................................................................4
2. Định nghĩa suy diễn lùi:.....................................................................5
3. Đặc điểm suy diễn lùi:.......................................................................5
4. Ưu và nhược điểm của suy diễn lùi:..................................................5
Chương 3: Hệ Thống Cài Đặt....................................................................7
1. Bảng tập tin các nút:.........................................................................7

2. Tập luật IF – THEN:............................................................................7
Chương 4: Triển Khai Thử Nghiệm.............................................................8
Chương 5: Kết Luận................................................................................11
Chương 6: Mã Nguồn..............................................................................12

3


Khóa luận môn CH CSTT

Đại học CNTT – Đại học Quốc gia TPHCM

Chương 1: Sơ Lược Về Đề Tài
Trong cuộc sống hiện đại ngày nay, mỗi người đều có thể “tậu” cho riêng
mình một chiếc xe máy. Tùy vào khả năng tài chính của mỗi người mà sắm cho
mình “con ngựa chiến”. Nhưng “ngựa” nào thì cũng có ngày cũng phải hư cái này
hoặc hỏng cái khác. Khi bạn có một chiếc xe mà nó trở chứng thì bạn cứ từ từ tìm
xem nguyên nhân làm sao mà nó trở chứng như vậy.
Ví dụ như vào 1 ngày đẹp trời bạn lấy xe ra đi dạo nhưng đề xe hoài mà nó
không nổ lúc này bạn cảm thấy hơi bực rồi, trong lòng cứ nghĩ mãi không hiểu sao
lâu nay mình chạy vẫn bình thường mà. Bạn cứ lây quây với chiếc xe, tìm hết cách
này đến cách khác để làm cho xe chạy được. Khi đã tìm không được bệnh của xe thế
là bạn phải đem ra tiệm cho thợ coi lại. Ở đây với kinh nghiệm lâu năm của người
thợ chỉ trong chốc lát thôi thì họ liền báo bệnh của xe bạn liền. Khi người thợ ngồi
chữa bệnh cho chiếc xe yêu dấu của bạn , bạn nên ngồi đó coi xem những chi tiết
nho nhỏ coi mình sau này nhở xe hư còn biết đường trị nó “với điều kiện bệnh nhẹ
nhẹ thôi” . Nhiều lúc xe hư những chi tiết nhỏ , thay vì phải mang ra tiệm cho người
sửa xe kiểm tra , thì giờ đây các bạn có thể tự kiểm tra xem “ con ngựa sắt” của các
bạn bị hư hỏng gì ? Và có thể tự sữa chữa nó.


Chương 2: Lý Thuyết Cơ Sở
1. Giới thiệu:
Trong tiểu luận này, nhóm chúng em đã sử dụng hệ suy diễn lùi để chuẩn
đoán hư hỏng ở xe máy nhằm giúp cho người dùng xe máy an tâm về sự cố xe máy
khi có chương trình chuẩn đoán này. Chúng em chủ yếu dựa vào các loại xe 02 bánh
thông dụng, được nhiều người dùng hiện nay.

4


Khóa luận môn CH CSTT

Đại học CNTT – Đại học Quốc gia TPHCM

2. Định nghĩa suy diễn lùi:
Trong hệ chuyên gia, đây là một phương pháp thông dụng tiến hành rút ra các
suy luận từ các qui tắc IF/THEN. Hệ suy diễn lùi được bắt đầu bằng một câu hỏi, ví
dụ như "Xe bạn có đề được không?", và tìm kiếm lướt qua các qui tắc của hệ xác
định xem các qui tắc nào có khả năng giải quyết được vấn đề và các tư liệu nào cần
phải bổ sung thêm vào.
Các hệ chuyên gia phỏng theo kiến thức và kinh nghiệm của các chuyên gia có
uy tín trong các lĩnh vực, như chẩn đoán y học, đánh giá tài sản, xác định sự độc hại
của một chất chưa rõ, và nhiều ứng dụng khác trong đời sống. Các chương trình này
giao tiếp với người sử dụng thông qua các câu hỏi và trả lời.
Trong một hệ suy diễn lùi, bạn bắt đầu bằng việc cung cấp tất cả các dữ liệu vì
hệ suy diễn lùi chỉ yêu cầu bạn các thông tin cần thiết, cho nên rất dễ dàng sử dụng
ngay cả với những người không phải là chuyên gia máy tính.

3. Đặc điểm suy diễn lùi:
-


Chuẩn đoán (diagnostic).

-

Từ hiện tại đến quá khứ (present to past).

-

Từ kết quả đến giả thiết (consequent to antecedent).

-

Lập luận từ trên xuống dưới.

-

Làm việc lùi tìm lại các sự kiện nhằm củng cố cho giả thuyết (work
backward to find facts that support the hypothesis).

-

Thuận lợi trong tìm kiếm sâu (depth first).

-

Căn cứ vào hiệu quả để quyết định cho hướng tìm kiếm (consequent…).

-


Thuận lợi trong việc giải thích.

4. Ưu và nhược điểm của suy diễn lùi:
-

Ưu điểm:
• Một trong các ưu điểm chính của suy diễn lùi là phù hợp với bài toán đưa
ra giả thuyết rồi xem liệu giả thuyết đó có đúng không.
5


Khóa luận môn CH CSTT


Đại học CNTT – Đại học Quốc gia TPHCM

Suy diễn lùi tập trung vào đích đã cho. Nó tạo ra một loạt các câu hỏi chỉ
liên quan đến vấn đề đang xét, đến hoàn cảnh thuận tiện đối với người
dùng.



Khi suy diễn lùi muốn suy diễn cái gì đó từ các thông tin đã biết, nó chỉ
tìm trên một phần của cơ sở tri thức thích đáng đối với bài toán đang xét.



Suy diễn lùi được đánh giá cao trong các bài toán giải quyết nhiệm vụ
như là chẩn đoán, dự đoán, và tìm lỗi.


-

Nhược điểm:
• Nhược điểm cơ bản của suy diễn lùi là nó thường tiếp theo dòng suy diễn,
thay vì đứng ra phải dừng ở đó mà sang nhánh khác.
• Tuy nhiên có thể khắc phục nhược điểm này bằng cách dùng nhân tố tin
cậy và các luật meta. (Giới hạn không gian trạng thái).

6


Khóa luận môn CH CSTT

Đại học CNTT – Đại học Quốc gia TPHCM

Chương 3: Hệ Thống Cài Đặt
Hệ chuyên gia gồm chương trình suy diễn, tập tin Nut.txt chứa các nút được mã hóa
các chuẩn đoán và tập tin Luat.txt chứa tập luật suy diễn IF – THEN.

1. Bảng tập tin các nút:

t

2.

Ý nghĩa

a

No_may_khi_dap


b

Con_dien_acqui

c

Khong_hong_buri

d

Coi_keu

e

Choi_than_mon

f

De_khong_duoc

g

Nuoc_binh_acqui_day

h

Dut_cau_chi

i


Ro_le_hong

j

Chieu_dai_than_<_4mm

Tập luật IF – THEN:
File chöùa luaät

r1:c^f=>h
r2:e^i=>f
7


Khóa luận mơn CH CSTT

Đại học CNTT – Đại học Quốc gia TPHCM

r3:a^b=>c
r4:d^g=>b
r5:j=>e
R1: IF Hong_buri AND De_khong_duoc THEN Dut_cau_chi
R2: IF Choi_than_mon AND Role_long THEN De_khong_duoc
R3: IF No_may_khi_dap AND Con_dien_acqui THEN Hong_buri
R4: IF Coi_keu AND Nuoc_binh_acqui_day THEN Con_dien_acqui
R5: IF Chieu_dai_than _<4mm THEN Choi_than_mon

Chương 4: Triển Khai Thử Nghiệm
Để đi đến kết luận thì phải chứng minh giả thiết đó

đúng hay sai. Quá trình chứng minh sẽ là 1 chuỗi các suy
diễn trên tập luật với sự hiểu biết của mình với xe bò
hỏng , quá trình này tiếp tục cho đến khi kiểm chứng hết
các giả thuyết (có khi không kiểm chứng được giả
thuyết)
Người sư dụng khởi động chương trình. Sau khi khởi động chương trình, người
sử dụng sẽ bắm chọn các chức năng do chương trình đưa ra.
1. Xem tập nút.
2. Xem tập luật.
3. Chạy chương trình
4. Xem các giá trị của tập nút
5. Thốt khỏi chương trình.
- Nếu người sử dụng chọn “xem tập nut” thì nhấn vào phím số 1 trên bàn phím.
Chương trình sẽ đưa ra tập nút cho người sử dụng xem

8


Khóa luận môn CH CSTT

Đại học CNTT – Đại học Quốc gia TPHCM

- Nếu người dùng chọn “Xem tập luật”, người sử dụng nhấn chọn phím số 2 trên
bàn phím. Chương trình sẽ đưa ra tập luật đã sử dụng trong chương trình cho người
dùng xem.

- Nếu người muốn chạy chương trình thì nhấn chọn phím 3 trên bàn phím.
Chương trình sẽ đưa ra những câu hỏi để cho người sử dụng trả lời. Nếu đúng thì
đánh vào số 1, nếu sai thì đánh vào số 0.


9


Khóa luận môn CH CSTT

Đại học CNTT – Đại học Quốc gia TPHCM

- Nếu người sử dụng muốn xem giá trị của các nút thì nhấn chọn phím số 4 trên
bàn phím. Chương trình sẽ đưa ra các giá trị nút cho người sử dụng xem.

- Nếu người sử dụng muốn thoát khỏi chương trình thì người sử dụng nhấn chọn
phím số 5 trên bàn phím.

10


Khóa luận mơn CH CSTT

Đại học CNTT – Đại học Quốc gia TPHCM

Chương 5: Kết Luận
Trong quá trình làm khoá luận không thể không
tránh khỏi những thiếu xót , thêm vào đó là những sự
hiểu biết hạn hẹp của xe cộ. Nhóm chỉ đưa ra một số hư
hỏng không kém phần quan trong của xe. Vì vậy đề tài
chưa đươc hoàn chỉnh và tốt lắm nhưng cũng phần nào
nó làm cho chúng ta biết thêm về sự hư hỏng của xe
máy. Vì thế đề tài chưa được hoàn chỉnh và đáp ứng
đầy đủ các yêu cầu.
Hy vọng sắp tới đây, được sự đóng góp của thầy và các bạn đề

tài sẽ được hoàn thiện hơn và đầy đủ hơn.

11


Khóa luận môn CH CSTT

Đại học CNTT – Đại học Quốc gia TPHCM

Chương 6: Mã Nguồn
1/. Chương trình
#include "stdio.h"
#include "conio.h"
#include "string.h"
#include "stdlib.h"
#define FileNut "D:\\CSTT\\ Nut.txt"
#define FileLuat "D:\\CSTT\\Luat.txt"
#define
MAX_NUT 200
#define MAX_LUAT 100
#define LEN_YNGHIA 26
#define LEN_NUT
4
#define LEN_VT
4
#define NODE_AND
1
#define NODE_OR
2
/*

Moi nut thuoc 1 trong 3 loai: NutLa, TrungGian, KetLuan
*/
typedef enum Loai {NutLa,TrungGian,KetLuan};
typedef struct tagLuat
{
char TenLuat[10];
int
VT[2*LEN_VT];
int
VP;
tagLuat() // Ham khoi tao
{
for (int i=0; i<2*LEN_VT; i++)
VT[i] = 0;
VP = 0;
}
}LUAT;
//////////////////////////////////////////////////////////////////////////
12


Khóa luận môn CH CSTT

Đại học CNTT – Đại học Quốc gia TPHCM

LUAT TapLuat[MAX_LUAT];
int
SoLuat = 0;
char
char

int

NutTen[MAX_NUT][LEN_NUT];
NutYNghia[MAX_NUT][LEN_YNGHIA];
SoNut = 0;

int
GTNut[MAX_NUT]; // =0: Sai; =1: Dung ; =-1 : Chua biet
enum Loai NutLoai[MAX_NUT];
//////////////////////////////////////////////////////////////////////
// Dinh nghia cac ham
void DocNutTuFile(char* FileName)
{
FILE *f;
char Ten[LEN_NUT];
int k;
// Doc luat tu file vao mang tap luat
f = fopen(FileName, "rt");
if (f!= NULL)
{
fscanf(f, "%d\n", &SoNut);
for (int i=1; i<=SoNut; i++)
{
fscanf(f, "%s %s\n", &NutTen[i], &NutYNghia[i]);
}
}
else
{
printf("\n Khong tim thay file : %s !!!", FileName);
getch();

}
fclose(f);
}
// Ham nay tim vi tri cua nut co ten (Ten) trong mang NutTen[]
int TimVitriNut(char *Ten)
13


Khóa luận môn CH CSTT

Đại học CNTT – Đại học Quốc gia TPHCM

{
for (int i=1; i<=SoNut; i++)
if (strcmp(NutTen[i], Ten) == 0)
return i;
return 0;
}
// Ham nay doc danh sach cac luat tu file vao mang TapLuat[]
void DocLuatTuFile(char* FileName)
{
FILE *f;
int
nCount, bNot;
char stInput[1024];
int
nLen, iFnd, jFnd, j;
char stTen[LEN_NUT];
f = fopen(FileName, "rt");
if (f!=NULL)

{
fscanf(f, "%d", &SoLuat);
for (int i=0; i{
fscanf(f, "%s", &stInput);
nLen = strlen(stInput);
jFnd = 0;
iFnd = 0;
while (jFndTapLuat[i].TenLuat[iFnd++] = stInput[jFnd++];
// Tim vi tri phan cach ve trai va ve phai
jFnd ++;
while (jFnd<nLen && stInput[jFnd] != '>')
jFnd ++;
// Xu ly ve trai
bNot = 1; nCount = 0;
iFnd ++; // Bo qua dau ':'
while (iFnd14


Khóa luận môn CH CSTT

Đại học CNTT – Đại học Quốc gia TPHCM

{
while (iFndiFnd++; // Bo qua cac khoang trang
if (stInput[iFnd] == '^')
{

TapLuat[i].VT[2*nCount] = NODE_AND;
}
else
if (stInput[iFnd] == '|')
{
TapLuat[i].VT[2*nCount] = NODE_OR;
}
else
if (stInput[iFnd] == '~')
bNot = -1;
else
{
j = iFnd;
while (j= '|' && stInput[j] != '^' && stInput[j] != '~' && stInput[j] != '=')
stTen[j-iFnd] = stInput[j++];
stTen[j-iFnd] = '\0';
TapLuat[i].VT[2*nCount+1]
=
bNot*TimVitriNut(stTen);
bNot = 1;
nCount ++;
iFnd = j-1;
}
iFnd ++;
}
// Xu ly ve phai
iFnd = jFnd+1;
while (iFndstTen[iFnd-jFnd-1] = stInput[iFnd++];

stTen[iFnd-jFnd-1] = '\0';
TapLuat[i].VP = TimVitriNut(stTen);
15


Khóa luận môn CH CSTT

Đại học CNTT – Đại học Quốc gia TPHCM

}
}
else
{
printf("\n Khong tim thay file: %s", FileName);
getch();
}
fclose(f);
}
////////////////////////////////////////////////////////////////////
void PhanLoaiNut()
{
int
bNot; // =1 khi khang dinh, =-1 khi phu dinh
int bFound;
for (int i=0; i{
bFound = 0;
for (int j=0; j{
// Duyet o ve trai cua tung luat

for (int k=1; k<2*LEN_VT && bFound == 0; k+=2)
{
bNot = 1;
if (TapLuat[j].VT[k]<0)
bNot = -1; // Gan =-1 de khi nhan vao thanh so
duong
if (bNot*TapLuat[j].VT[k] == TapLuat[i].VP)
bFound = 1;
}
}
if (bFound == 0) // Neu tim khong gap o ve trai --> Day la nut
KetLuan
NutLoai[TapLuat[i].VP] = KetLuan;
else
NutLoai[TapLuat[i].VP] = TrungGian;
16


Khóa luận môn CH CSTT

Đại học CNTT – Đại học Quốc gia TPHCM

}
}
/////////////////////////////////////////////////////////////////////
// Hoi nguoi dung gia tri cua nut thu VitriNut.
void HoiNguoiDung(int VitriNut)
{
int traloi;
do

{
printf("\n Cho biet gia tri cua nut %s (%s) (1: Dung; 0: Sai)? ",
NutTen[VitriNut], NutYNghia[VitriNut]);
scanf("%d", &traloi);
if (traloi == 0 || traloi == 1)
break;
}while(traloi != 0 && traloi != 1);
GTNut[VitriNut] = traloi;
}
int NOT(int p)
{
if (p == 0)
return 1;
else
return 0;
}
int AND (int p, int q)
{
if (p == 1 && q ==1)
return 1;
else
return 0;
}
int OR (int p, int q)
{
if (p == 1 || q == 1)
return 1;
else
17



Khóa luận môn CH CSTT

Đại học CNTT – Đại học Quốc gia TPHCM

return 0;
}
/////////////////////////////////////////////////////////////////////
// Ham nay tinh gia tri cua 1 nut ket luan
void TinhGiaTriCuaNutKetLuan(int SoHieuNut)
{
LUAT r;
int bNot;
int giatri, x;
// Neu nut nay co gia tri roi--> khong can tinh
if (GTNut[SoHieuNut] >=0)
return;
// Tim luat co ket luan la SoHieuNut
for (int i=0; i{
r = TapLuat[i];
if (r.VP == SoHieuNut || (-1)*r.VP == SoHieuNut) // Neu tim gap
{
// Duyet ve trai cua luat de tinh gia tri cac nut o ve trai
for (int j=0; j{
bNot = 1;
if (r.VT[2*j+1]<0)
bNot = -1;
if (GTNut[bNot*r.VT[2*j+1]]<0) // Neu nut nay chua co

gia tri
{
// Neu nut chua co gia tri nay la NutLa --> Hoi
nguoi dung
if (NutLoai[bNot*r.VT[2*j+1]] == NutLa)
HoiNguoiDung(bNot*r.VT[2*j+1]);
else // Day la nut TrungGian
TinhGiaTriCuaNutKetLuan(bNot*r.VT[2*j+1]);
}
18


Khóa luận môn CH CSTT

Đại học CNTT – Đại học Quốc gia TPHCM

}
// Den day, Cac nut o ve trai deu co gia tri --> Tinh gia tri cua
ve phai dua vao luat r
if (r.VT[1]<0)
giatri = NOT(GTNut[r.VT[1]]);
else
giatri = GTNut[r.VT[1]];
for (j=1; j{
// x la gia tri cua nut phia sau
if (r.VT[2*j+1]<0)
x = NOT(GTNut[r.VT[2*j+1]]);
else
x = GTNut[r.VT[2*j+1]];

if (r.VT[2*j] == NODE_AND)
giatri = AND(giatri, x);
else
giatri = OR(giatri,x);
}
GTNut[r.VP] = giatri;
}
}
}
/////////////////////////////////////////////////////////////////////
void HienThiTapNut()
{
//
clrscr();
printf("\n DANH SACH CAC NUT \n");
printf("\nTEN NUT
Y NGHIA\n");
for (int i=1; i<=SoNut; i++)
printf("\n%4s
%s", NutTen[i], NutYNghia[i]);
printf("\n\n\n An ENTER de quay ve man hinh chinh");
getch();
}
/////////////////////////////////////////////////////////////////////
// Tu luat--> tao chuoi luat
19


Khóa luận môn CH CSTT


Đại học CNTT – Đại học Quốc gia TPHCM

void TaoChuoiLuat(int SoHieuLuat, char ChuoiLuat[])
{
int
bNot;
ChuoiLuat[0] = '\0';
for (int j=0; jif (TapLuat[SoHieuLuat].VT[2*j+1] != 0)
{
bNot = 1;
if (TapLuat[SoHieuLuat].VT[2*j] == NODE_AND)
strcat(ChuoiLuat, " & ");
else
if (TapLuat[SoHieuLuat].VT[2*j] == NODE_OR)
strcat(ChuoiLuat, " | ");
if (TapLuat[SoHieuLuat].VT[2*j+1] < 0)
{
strcat(ChuoiLuat, "~");
bNot = -1;
}
strcat(ChuoiLuat,
NutTen[(bNot*TapLuat[SoHieuLuat].VT[2*j+1])]);
}
strcat(ChuoiLuat, " => ");
strcat(ChuoiLuat, NutTen[TapLuat[SoHieuLuat].VP]);
ChuoiLuat[strlen(ChuoiLuat)] = '\0';
}
/////////////////////////////////////////////////////////////////////
// Hien thi danh sach cac luat

void HienThiTapLuat()
{
char stLuat[1024];
//

clrscr();
printf (" DANH SACH CAC LUAT\n");
printf("\n STT
LUAT\n");
for (int i=0; i20


Khóa luận môn CH CSTT

Đại học CNTT – Đại học Quốc gia TPHCM

{
TaoChuoiLuat(i, stLuat);
printf("\n%2d %30s", i+1, stLuat);
}
printf("\n\n\n An ENTER de quay ve man hinh chinh");
getch();
}
// Xu ly qua trinh suy dien lui
void Xuly_SuyDienLui()
{
//
clrscr();
for (int i=1; i<=SoNut; i++)

{
GTNut[i] = -1;
}
for (i=1; i<=SoNut; i++)
if (NutLoai[i] == KetLuan)
{
TinhGiaTriCuaNutKetLuan(i);
}
printf("\n Ket qua qua trinh suy dien lui:\n");
for (i=1; i<=SoNut; i++)
if (NutLoai[i] == KetLuan)
{
printf("\n Nut ket luan %s (%s) co gia tri la: %d", NutTen[i],
NutYNghia[i], GTNut[i]);
}
printf("\n\n\n An ENTER de quay ve man hinh chinh");
getch();
}
// Ham nay hien thi gia tri cua cac nut
void HienThiGTNut()
{
//
clrscr();
21


Khóa luận môn CH CSTT

Đại học CNTT – Đại học Quốc gia TPHCM


printf ("\n BANG GIA TRI CUA CAC NUT\n\n");
for (int i=1; i<=SoNut; i++)
{
printf("\n%s (%s): %d", NutTen[i], NutYNghia[i], GTNut[i]);
}
printf("\n\n\n An ENTER de quay ve man hinh chinh");
getch();
}
/////////////////////////////////////////////////////////////////////
// Trinh bay giao dien
void GiaoDien()
{
char chon;
do{
//
clrscr();
printf("\nCHUONG TRINH MINH HOA CO CHE SUY DIEN
LUI\n\n");
printf("\n 1. XEM TAP NUT");
printf("\n 2. XEM TAP LUAT");
printf("\n 3. CHAY CHUONG TRINH");
printf("\n 4. XEM GIA TRI CUA CAC NUT");
printf("\n 5. THOAT");
printf(" Chon (1, 2, 3, 4, 5): ");
chon = getch();
switch (chon)
{
case '1':
HienThiTapNut();
break;

case '2':
HienThiTapLuat();
break;
case '3':
Xuly_SuyDienLui();
break;
case '4':
HienThiGTNut();
break;
22


Khóa luận môn CH CSTT

Đại học CNTT – Đại học Quốc gia TPHCM

case '5':
exit(0);
}
}while (1);
}
// Chuong trinh chinh
void main()
{
DocNutTuFile(FileNut);
DocLuatTuFile(FileLuat);
PhanLoaiNut();
// Khoi tao gia tri cua cac nut =-1 (Chua biet)
for (int i=1; i<=SoNut; i++)
{

GTNut[i] = -1;
}
GiaoDien();
}
2.Tập tin chứa các nút Nut.txt
10
a Den_sang_yeu
b Coi_keu
c No_may_khi_dap
d Con_dien_acqui
e Choi_than_mon
f De_khong_duoc
g Coi_hu
h Dut_day_chi
i Ro_le_hong
j Chieu_dai_than_<_4mm
3. Tập tin chứa các luật- Luat.txt
5
r1:c^f=>h
r2:e^i=>f
r3:a^b=>c
r4:d^g=>b
r5:j=>e
23


Khóa luận môn CH CSTT

Đại học CNTT – Đại học Quốc gia TPHCM


Tài liệu tham khảo
− Giáo trình “Các Hệ Cơ Sở Tri Thức” của ĐHQG TPHCM.
− Trang web: www.echip.com.vn
www.edu.net
www.quantrimang.com

24



×