离散数学实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程名称:离散数学课程设计指导教师:

班级:信软2014-2 姓名:学号:

实验项目名称:

若干代数系统的计算机判断--群的判定

实验目的及要求:

【实验目的】掌握群的判定方法。

【实验内容】输入代数系统(A,*)的集合A和*运算的运算表,判断(A,*)是否是群。

实验原理:

【实验原理和方法】

(1)用一维数组a[n]存贮集合A。

(2)用二维数组op[n][n]存贮运算表。

(3)根据群的定义,代数系统(A,*)若为群,除运算表已表明运算*封闭外,还应该满足下列三个条件:*运算可结合、有幺元e、 A中任何元素都有逆元。

*运算可结合:

for(i=0;i

for(j=0;j

for(k=0;k

{

for(l=0;l

{

if(op[i][j]==a[l]) x=l;/*op[i][j] 代表a*b*/

if(op[j][k]==a[l]) y=l;/*op[j][k] 代表b*c*/

}

if(op[i][y]!=op[x][k])/*op[i][y]代表a*(b*c)*/

{

printf("(%d*%d)*%d=%d,%d*(%d*%d)=%d,运算是不可结合!\n",

a[i],a[j],a[k],op[x][k],a[i],a[j],a[k],op[i][y]);

flag=0;/*不满足结合性*/

}

}

if(flag) printf("运算是可结合!\n");

有幺元e:

flag=0;

for(i=0;i

{

for(j=0;j

if(op[i][j]!=a[j] || op[j][i]!=a[j]) break;

if(j==N)

{

printf("群有幺元%d!\n",a[i]);

e=a[i];

flag=1; break;

}

}

if(!flag) printf("群没有幺元!\n");

A中任何元素都有逆元:

flag=1;

for(i=0;i

{

for(j=0;j

if(op[i][j]==e && op[j][i]==e) break;/*e是幺元*/ if(j==N)

{

flag=0;

printf("A中元素%d没有逆元!\n",a[j]);

}

}

if(flag) printf("A中任何元素都有逆元!\n");

实验内容:

完整代码:

#include "stdio.h"

#include "stdlib.h"

#include "math.h"

#define OK 1

#define ERROR 0

#define N 2

typedef int Status ;

typedef int ElemType;

ElemType Vcomplete(ElemType x,ElemType y){//群对应的运算

return x*y;

}

Status juzhen(ElemType *a,ElemType ***op){//构造op矩阵

int i,j;

for (i=0;i

for (j=0;j

{

op[i][j]=Vcomplete(a[i],a[j]);

}

printf("complete: *");

return OK;

}

Status jiehe(ElemType **op,ElemType *a){///运算可结合

int i,j,k,l,x,y;

int flag=0;

for(i=0;i

for(j=0;j

for(k=0;k

{

for(l=0;l

{

if(op[i][j]==a[l]) x=l;///*op[i][j] 代表a*b*////矩阵中的位置,在群中找到相应的元素,保存这个元素位置;

if(op[j][k]==a[l]) y=l;///*op[j][k] 代表b*c*/

}

if(op[i][y]!=op[x][k])/*op[i][y]代表a*(b*c)*////通过找矩阵中元素的与剩下元素运算在矩阵中对应位置;

{

printf("(%d*%d)*%d=%d,%d*(%d*%d)=%d,运算是不可结合!\n",a[i],a[j],a[k],op[x][k],a[i],a[j],a[k],op[i][y]);

flag=0;/*不满足结合性*/

}

}

if(flag) printf("运算是可结合!\n");

}

Status yaoyuan(ElemType *a,ElemType **op,ElemType *e){//有幺元

int i,j;

int flag=0;

for(i=0;i

相关文档
最新文档