Chương trình minh họa việc kiểm tr a2 công thức tương đương:

Một phần của tài liệu Giáo trình Logic Toán đại học Sư phạm TP Hồ Chí Minh (Trang 39 - 42)

Thuật toán:

Input: 2 công thức logic f(A1,A2,…,Am) và g(A1,A2,…,An) Ouput: True nếu f tương đương với g

False nếu f không tương đương với g Phương pháp:

Tính #f

Tính #g

nếu #f = #g thì kết quả:=True ngược lại kết quả:=False

Chương trình hoàn chỉnh: #include<stdio.h> #include<conio.h> #include<math.h> #include<string.h> #define MAX 8 int SOLG[MAX],n;

char MD[8][5];// moi menh de co toi da 4 ki tu(gia su) /*---*/

char* Bo_ngoac_2phia_thua(char *s); /*---*/

int Ktra_chua_ngoac_2phia(char *s); /*---*/

void Chuan_hoa(char *mde); /*---*/ int Tim_phep_toan_chinh(char *bt);

Các hàm này đã được cài đặt trong phần tính số logic.

/*---*/ int Tim_vt(int n,char *s); /*---*/ void SX(char md[][5],int n); /*---*/ void Tinh_mang_so();

/*---*/

unsigned long Tinh_sologic(char *s); /*---*/

void Xuat_so_np(long t);

/*---*/

void Xuat_cac_md(char md[][5],int n); /*---*/

void Tim_cac_mde(char *s,int &n) { int cs = 0;

int l = strlen(s);

for(int i = 1; i <= l;i++)

if(!strchr("&v->(",s[i]) && strchr("&v->(",s[i-1])) cs = i; else

if((i==l || strchr("&v-)",s[i])) && !strchr("&v->()",s[i-1])) { char s1[5]; strncpy(s1,s+cs,i-cs);

s1[i-cs] = 0;

if(Tim_vt(n,s1)==-1) strcpy(MD[n++],s1); }

}

Hàm tìm các mệnh đề có thay đổi so với phần tính số logic vì các mệnh đề ở đây là hội của các mệnh đề của f và g.

void main() {

char s1[100],s2[100];

printf("Chuong trinh so sanh 2 cong thuc logic tuong duong?\n");

printf("N hap cong thuc logic f(cac toan tu logic la -,&,v,->):"); gets(s1); printf("N hap cong thuc logic g(cac toan tu logic la -,&,v,->):"); gets(s2); Chuan_hoa(s1); Chuan_hoa(s2);

n = 0;

Tim_cac_mde(s1,n); Tim_cac_mde(s2,n);

SX(MD,n);//khong quan trong nhung de bi hieu lam nen phai sap xep Tinh_mang_so();

unsigned long t1 = Tinh_sologic(s1);

printf(" So logic cua f"); Xuat_cac_md(MD,n); printf(" = %s la:",s1);

Xuat_so_np(t1);

unsigned long t2 = Tinh_sologic(s2);

printf("\n So logic cua g"); Xuat_cac_md(MD,n); printf(" = %s la:",s2);

Xuat_so_np(t2); if(t1==t2){

printf("\nCong thuc f"); Xuat_cac_md(MD,n);

printf(" = %s tuong duong voi cong thuc g",s1); Xuat_cac_md(MD,n);

printf(" = %s",s2); }

else printf("\nHai menh de khong tuong duong"); getch();

BÀI 5: SUY DIỄl LOGIC VÀ VN TỪ

1. Giới thiệu:

Một hệ thống toán học bao gồm các tiên đề, các định nghĩa, và những khái niệm không được định nghĩa. Các tiên đề được giả định là đúng. Các định nghĩa được sử dụng để xây dựng hay đưa ra những khái niệm mới trên cơ sở những khái niệm đã có. Một số thuật ngữ, khái niệm sẽ không được định nghĩa rõ ràng nhưng được ngầm định nghĩa bởi các tiên đề. Trong một hệ toán học chúng ta có thể suy ra được các định lý. Một định lý là một khẳng định được chứng minh là đúng. Một số loại định lý được xem là các bổ đề, các hệ quả.

Một lập luận (hay lý luận) chỉ ra được tính đúng đắn của mệnh đề phát biểu

trong định lý được gọi là chứng minh. Logic là một công cụ cho việc phân tích các chứng

minh. Trong phần nầy chúng ta sẽ đề cập đến việc xây dựng một chứng minh toán học. Ðể thực hiện được một lập luận hay một chứng minh chúng ta cần hiểu các kỹ thuật và các công cụ được sử dụng để xây dựng một chứng minh. Thông thường một chứng minh sẽ bao gồm nhiều bước suy luận mà ở mỗi bước ta đi đến (hay suy ra) một sự khẳng định mới từ những khẳng định đã biết.

Ví dụ về một bước suy diễn:

1/ N ếu một danh sách L là khác rỗng thì ta có thể lấy ra phần tử đầu trong danh sách.Vì danh sách L là rỗng nên theo sự khẳng định trên ta không thể lấy ra phần tử đầu trong danh sách.

2/ N ếu một danh sách L là khác rỗng thì ta có thể lấy ra phần tử đầu trong danh sách.Vì ta không thể lấy ra phần tử đầu trong danh sách L nên danh sách L là danh sách rỗng.

Trong 2 suy diễn ở ví dụ trên thì suy diễn 2/ là một suy luận đúng, nhưng suy diễn 1/ là không đúng. Vậy làm thế nào để biết được một suy diễn là đúng hay sai ? Một bước suy luận như thế phải dựa trên một qui tắc suy diễn hợp lý nào đó để nó được xem là một suy luận đúng. Các qui tắc suy diễn là cơ sở để tay biết được một lập luận hay một chứng minh là đúng hay sai. Trong các mục tiếp theo chúng ta sẽ xem xét chi tiết hơn về các qui tắc suy diễn và giới thiệu một số qui tắc suy dễn cơ bản thường được dùng trong việc suy luận và chứng minh.

Một phần của tài liệu Giáo trình Logic Toán đại học Sư phạm TP Hồ Chí Minh (Trang 39 - 42)

Tải bản đầy đủ (PDF)

(111 trang)