版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构课设红楼梦人物关系数据结构课设红楼梦人物关系实用文档/数据结构课设红楼梦人物关系课程设计报告题目:基于社会网络分析技术的《红楼梦》人物关系分析课程名称:数据结构专业班级:学号:姓名:指导教师:报告日期:计算机科学与技术学院任务书设计内容用图模型设计与表示《红楼梦》人物关系网,并以文件形式保存相关信息;运用社会网络分析技术与算法对红楼梦人物关系网进行分析,获取有意义的结果,并以图形方式呈现;提供对人物属性与人物关系的查询功能。设计要求⑴设计一定的界面,能够将分析所得人物关系结果直观显示,支持人物关系的查询。人物关系数据以文件形式保存。若界面友好,有特色,可酌情加分。⑵选用两种以上分析模型如核心人物分析、中心性分析、小团体分析、相似子结构分析等进行分析处理,分析模型在社会网络分析相关文献中具有严格定义,设计中对分析模型的表示与处理基于对应的定义,以避免仅从字面理解而出现不严谨、简单化的设计。⑶设计程序中处理的不同人物数量不少于100人,并根据人物数量情况、所使用的分析模型与算法的复杂程度分易、中、难三级评分。参考文献[1]孙晓玲,林鸿飞.人际网络关系抽取和结构挖掘.微电子学与计算机,2008,25(9):233-236[2]杜一鸣,滕桂法,马建斌.社会网络搜索关键技术研究概述.情报分析与研究,2010,189(2):68-73[3]徐伟,陈光辉,曾玉.关系研究的新取向:社会网络分析.心理科学,2011,34(2):499-504[4]张树人,刘颖,陈禹.社会网络分析在组织管理中的应用.中国人民大学学报,2006,(3):74-80[5]韩毅.社会网络分析与挖掘的若干关键问题研究.国防科学技术大学博士学位论文,2011.6[6]MohsenJamaliandHassanAbolhassani.DifferentAspectsofSocialNetworkAnalysis.[7]KateEhrlichandIngaCarboni.InsideSocialNetworkAnalysis.[8][9]严蔚敏,吴伟民.数据结构(C语言版).北京:清华大学出版社,1997[10]王晓东.计算机算法设计与分析.北京:电子工业出版社,2007
目录任务书 =1\*ROMANI1引言 11.1课题背景与意义 11.2国内外研究现状 31.3程序设计的主要研究工作 102系统需求分析与总体设计 12.1系统需求分析 12.2系统总体设计 103系统详细设计 203.1有关数据结构的定义 203.2主要算法设计 234系统实现与测试 404.1系统实现 14.2系统测试 105总结与展望 40HYPERLINK6体会 40参考文献 44附录程序源码 451引言1.1课题背景与意义我选的课程设计题目为基于社会网络的《红楼梦》人物关系分析系统。1.1.1课题背景经过一个学期对数据结构这门课程的学习之后,我们被要求独立完成一份课程设计,备选题目有四个:中国行政区域图染色与信息查询、基于社会网络分析技术的《红楼梦》人物关系分析、基于查找表的单词检索软件和简易HTML文档解析程序。由于《红楼梦》是我很喜欢的一部文学作品,我选择了基于社会网络分析技术的《红楼梦》人物关系分析这个题目。1.1.2意义通过这次完成课程设计,我能更加深刻地理解图、无向图的邻接多重表存储结构和与图相关的算法(如弗洛伊德算法),将课本上的知识付诸实践,并且提高了运用知识的熟练度。初步了解了界面的制作方法,学习了Qt的基础知识。同时重温了《红楼梦》一书,增长了其他方面的知识。1.2国内外研究现状目前国内外对社会网络分析技术的研究主要是基于关系的图形结构和六度分隔理论的研究,主要有以下几种分析方法:中心性分析,即通过程度中心性、亲近中心性、中介中心性三个指标,判断个体在群体中居于怎样的地位、拥有怎样的权利。小团体分析,主要方法是找出关系结构图中联系相对紧密的子图成分,然后按照子图的重叠程度与关系的紧密程度进一步组合,最终确定小团体成员。位置分析,即分析不同群体中的个体在群体内相似的角色作用,拥有类似的网络位置。1.3课程设计的主要研究工作通过查阅论文、网络搜索等方式学习社会网络分析技术的概念,找到适用于本课程设计的分析方法。权衡难度之后,我确定了中心性分析法作为本次课程设计的主要分析方法。之后详细学习这种分析方法,搞清楚程度中心性、亲近中心性和中介中心性三个指标应该如何求得,再查书、查百度找合适的算法。界面方面的难度比较大,我选择用Qt做界面,但是我从未学习过C++,这给我对Qt的学习带来了许多麻烦。我买了C++的书、在网上查了Qt的教程,一边理解面向对象的概念,一边跟着教程摸索Qt的功能,最终成功做出了(很丑的)界面。
2系统需求分析与总体设计2.1系统需求分析《红楼梦》人物关系系统应具有一定的界面,支持人物关系的查询(包括直接关系和间接关系),支持查询特定人物的特定关系者,支持查询人物的详细信息。人物关系数据以文件形式保存。用中心性分析和核心人物分析两种分析模型进行分析,能够将分析所得人物关系结果直观显示。系统应能存储不少于100人的人物信息以及相互关系。2.2系统总体设计本系统应当有一个可视化菜单,链接到四个功能模块:人物信息查询模块、人物关系查询模块、按关系搜索人物模块和人物关系分析模块。人物信息查询模块能够搜索用户输入的人物名字,然后在界面中显示人物的基本信息。如果未找到用户输入的人物,将显示提示。人物关系查询模块能够查询任意两个人物之间的关系,如果两个人有直接关系(即两个结点相邻)则显示关系信息,如果两个人之间无直接关系但有间接关系(即两个结点不相邻但有通路)则显示两个人之间的关系链,即显示通路上每一结点的人物姓名。若两个人之间无关系(即两个结点之间无通路),则显示“人物之间无关系”。按关系搜索人物模块能够搜索并显示与任意人物有特定关系的所有人物。如搜索与“林黛玉”有“表兄妹”关系的人,系统将显示“贾链贾宝玉”,若无搜索结果则显示“未找到!”人物关系分析模块有三个功能:程度中心性分析、亲近中心性分析、中介中心性分析和核心人物分析。程度中心性分析能够计算并显示用户搜索的人物的程度中心性,亲近中心性分析能够计算并显示用户搜索的人物的亲近中心性,中介中心性分析功能能够计算并显示用户搜索的人物的中介中心性,核心人物分析能够计算并显示系统中每个人物的程度中心性且按从小到大排序,从而分析出程度中心性最高的人物为核心人物,并显示其简介。图2-1系统模块结构图
3系统详细设计3.1有关数据结构的定义系统中包含的数据如下:表3-1系统包含的数据表数据数据名称数据类型人物姓名nameQString人物性别genint人物简介cinfoQString人物关系信息rinfoQString人物关系的人物AivexQString人物关系中的人物BjvexQString系统采用邻接多重表的方式创建关系图。个人信息结构体除了包含人物姓名、人物性别和人物简介之外,还包含一个指向第一条边的指针*firstedge,以数组的方式存储;人物关系的信息以链表方式存储,其结构体包含此边两个结点的人物姓名和两个指针*ilink和*jlink,分别指向两个结点的邻边。3.2主要算法设计人物信息查询模块:系统获取用户输入的内容,遍历图并比较每一结点的人物姓名项与用户输入的内容,发现相同时,以QString的形式返回人物的其他信息,并在textBrowser中显示。人物关系查询模块:系统获取用户输入的内容,遍历图并比较每一结点的人物姓名项与用户输入的人物A姓名,发现相同时,遍历这一结点的所有边,并比较每条边另一结点与用户输入的人物B姓名,发现相同时,以QString的形式返回此边的人物关系信息。若未找到直接关系,则用迪杰斯特拉算法求两个结点之间的最短通路并存储到数组中,以QString的形式返回中间人物的姓名。按关系查询人物模块:系统获取用户输入的内容,遍历图并比较每一结点的人物姓名项与用户输入的姓名,发现相同时,遍历这一结点的所有边,并比较每条边另一结点与用户输入的关系内容,发现相同时,以QString的形式返回此边的另一个结点内容。人物关系分析模块:分为四个部分,分别介绍:程度中心性分析:即求结点的度,再除以所有的结点数目-1,以float的形式返回程度中心性。亲近中心性分析:先通过迪杰斯特拉算法求出所有此结点出发的通路,将每条通路的长度相加,再求倒数,以float的形式返回亲近中心性。中介中心性分析:先通过弗洛伊德算法求出图中所有最短通路,并统计通过此节点的通路个数和所有通路个数,再求两个数据的比值,以float的形式返回中介中心性。核心人物分析:计算并显示系统中每个人物的程度中心性且按从小到大排序,从而分析出程度中心性最高的人物为核心人物,并以QString形式返回其简介。
4系统实现与测试4.1系统实现《红楼梦》人物关系系统应具有一定的界面,支持人物关系的查询(包括直接关系和间接关系),支持查询特定人物的特定关系者,支持查询人物的详细信息。人物关系数据以文件形式保存。用中心性分析和核心人物分析两种分析模型进行分析,能够将分析所得人物关系结果直观显示。系统应能存储不少于100人的人物信息以及相互关系。应用的数据结构及函数如下:typedefenum{unvisited,visited}VisitIf;typedefstructchara_info{//人物信息类型QStringname;intgen;//性别,1为男,0为女QStringcinfo;//人物简介}pers;typedefstructEBox{VisitIfmark;intivex,jvex;structEBox*ilink,*jlink;QStringrinfo;}EBox;typedefstructVexBox{persdata;EBox*firstedge;}VexBox;typedefstruct{VexBoxadjmulist[120];intvexnum,edgenum;}AMLGraph;typedefstructvex_rela{QStringivex,jvex;QStringrinfo;}vex_rela;typedefstructDEG{floatd;intloc;}DEG;boolcreate_graph(AMLGraph&G,VexBoxV[],vex_relaVR[]);voidtravers(AMLGraphG);boolget_info(VexBoxV[],vex_relaVR[]);intget_vex(AMLGraphG,QStringsearch);QStringsearch_rela(AMLGraphG,QStringnamea,QStringnameb);floatget_degree(AMLGraphG,intloc);floatShortestPath(AMLGraphG,intv);floatfloyd(AMLGraphG,intv0);QStringcore(AMLGraphG);intpartition(DEGdeg[],intlow,inthigh);voidQSort(DEGdeg[],intlow,inthigh);QStringfind_pers(AMLGraph,intv,QStringserela);QStringfind_path(AMLGraphG,intv1,intv2);voiddestroy_graph(AMLGraphG);程序详见附录。4.2系统测试菜单界面:显示四个功能人物信息查询:用户输入姓名,显示人物信息。输入信息正确时:输入信息错误时:查找人物关系:查询任意两个人物之间的关系,如果两个人有直接关系(即两个结点相邻)则显示关系信息,如果两个人之间无直接关系但有间接关系(即两个结点不相邻但有通路)则显示两个人之间的关系链,即显示通路上每一结点的人物姓名。若两个人之间无关系(即两个结点之间无通路),则显示“人物之间无关系”。按关系查询:人物关系分析:程序除了界面不太好看之外,基本满足了设计要求。
5总结与展望5.1全文总结在这次课程设计过程中,我所做的主要工作如下:(1)通过查阅论文、网络搜索等方式学习社会网络分析技术的概念,找到适用于本课程设计的分析方法。(2)详细学习中心性分析法,搞清楚程度中心性、亲近中心性和中介中心性三个指标应该如何求得,再查书、查百度找合适的算法。(3)学习Qt和一些C++的知识,制作可视化界面。5.1工作展望这次的课程设计还有很多不尽人意的地方。比如算法过于单一、功能比较少、界面太过简单不好看等。在以后的课程设计中,我将更把注意力放在功能上,尽量用更好地算法写更多功能。同时在界面的美化上下一些功夫,做出好看的界面。
6体会通过这次完成课程设计,我能更加深刻地理解图、无向图的邻接多重表存储结构和与图相关的算法(如弗洛伊德算法),将课本上的知识付诸实践,并且提高了运用知识的熟练度。初步了解了界面的制作方法,学习了Qt的基础知识。同时意识到了C++等面向对象编程思想的重要性,不理解这种思想,就不能很好地使用Qt或者MFC做界面。现在学习过的C远远不够用,还需多学一些。
参考文献[1]孙晓玲,林鸿飞.人际网络关系抽取和结构挖掘.微电子学与计算机,2008,25(9):233-236[2]杜一鸣,滕桂法,马建斌.社会网络搜索关键技术研究概述.情报分析与研究,2010,189(2):68-73[3]徐伟,陈光辉,曾玉.关系研究的新取向:社会网络分析.心理科学,2011,34(2):499-504[4]张树人,刘颖,陈禹.社会网络分析在组织管理中的应用.中国人民大学学报,2006,(3):74-80[5]韩毅.社会网络分析与挖掘的若干关键问题研究.国防科学技术大学博士学位论文,2011.6[6]MohsenJamaliandHassanAbolhassani.DifferentAspectsofSocialNetworkAnalysis.[7]KateEhrlichandIngaCarboni.InsideSocialNetworkAnalysis.[8][9]严蔚敏,吴伟民.数据结构(C语言版).北京:清华大学出版社,1997[10]王晓东.计算机算法设计与分析.北京:电子工业出版社,2007
附录程序源码function.h源码:#ifndefFUNCTION_H#defineFUNCTION_H#include<stdio.h>#include<string.h>#include<stdlib.h>#include<QString>#include<QMessageBox>typedefenum{unvisited,visited}VisitIf;typedefstructchara_info{//人物信息类型QStringname;intgen;//性别,1为男,0为女QStringcinfo;//人物简介}pers;typedefstructEBox{VisitIfmark;intivex,jvex;structEBox*ilink,*jlink;QStringrinfo;}EBox;typedefstructVexBox{persdata;EBox*firstedge;}VexBox;typedefstruct{VexBoxadjmulist[120];intvexnum,edgenum;}AMLGraph;typedefstructvex_rela{QStringivex,jvex;QStringrinfo;}vex_rela;typedefstructDEG{floatd;intloc;}DEG;boolcreate_graph(AMLGraph&G,VexBoxV[],vex_relaVR[]);voidtravers(AMLGraphG);boolget_info(VexBoxV[],vex_relaVR[]);intget_vex(AMLGraphG,QStringsearch);QStringsearch_rela(AMLGraphG,QStringnamea,QStringnameb);floatget_degree(AMLGraphG,intloc);floatShortestPath(AMLGraphG,intv);floatfloyd(AMLGraphG,intv0);QStringcore(AMLGraphG);intpartition(DEGdeg[],intlow,inthigh);voidQSort(DEGdeg[],intlow,inthigh);QStringfind_pers(AMLGraph,intv,QStringserela);QStringfind_path(AMLGraphG,intv1,intv2);voiddestroy_graph(AMLGraphG);#endif//FUNCTION_Hfunction.cpp源码:#include<function.h>#include<QMessageBox>#include<QFile>#include<QTextStream>#include<QString>boolget_info(VexBoxV[],vex_relaVR[]){//读取文件信息inti=0;//QStringen;//节点读取QFile*vQFile(":/");if(!vfile->open(Q)){returnfalse;}QTextStreamvin(vfile);V[i].=vin.readLine();V[i].data.gen=vin.readLine().toInt();V[i].data.cinfo=vin.readLine();//en=vin.readLine();i++;while(!V[i-1]..isNull()){V[i].=vin.readLine();V[i].data.gen=vin.readLine().toInt();V[i].data.cinfo=vin.readLine();//en=vin.readLine();if(++i==120)break;}//边读取i=0;QFile*vrQFile(":/");if(!vrfile->open(Q)){returnfalse;}QTextStreamvrin(vrfile);VR[i].ivex=vrin.readLine();VR[i].jvex=vrin.readLine();VR[i].rinfo=vrin.readLine();i++;while(!VR[i-1].ivex.isNull()){VR[i].ivex=vrin.readLine();VR[i].jvex=vrin.readLine();VR[i].rinfo=vrin.readLine();i++;}returntrue;}intget_vex(AMLGraphG,QStringsearch){inti,j;for(i=0;i<120;i++){//j=strcmp(search,G.adjmulist[i].);j=QString::compare(search,G.adjmulist[i].);if(!j)returni;//if(search==G.adjmulist[i].)returni;}return-1;}QStringsearch_rela(AMLGraphG,QStringnamea,QStringnameb){QStringoutput;intm,n;EBox*p;intpath[G.vexnum];m=get_vex(G,namea);n=get_vex(G,nameb);if(m==-1||n==-1){return"未找到人物!";}p=G.adjmulist[m].firstedge;while(p){if(p->ivex==m){if(p->jvex==n)break;p=p->ilink;}elseif(p->jvex==m){if(p->ivex==n)break;p=p->jlink;}}if(!p){//printf("两人无直接关系!\n\n查找间接关系:\n");output=find_path(G,m,n);//if(path[1]==-1)printf("未找到两人关系!\n");if(output=="")return"未找到人物关系!";returnoutput;}//printf("两人关系为:%s\n",p->rinfo);output=p->rinfo;returnoutput;}floatget_degree(AMLGraphG,intloc){//求人物程度中心性intdegree=0;floatma,av;ma=G.vexnum-1;EBox*p;if(G.adjmulist[loc].data.gen==-1){// printf("不存在所查人物!\n");return-1;}if(!G.adjmulist[loc].firstedge){// printf("人物程度中心性为:0!\n");return0;}if(loc==G.adjmulist[loc].firstedge->ivex){for(p=G.adjmulist[loc].firstedge;p;){degree++;if(p->ivex==loc)p=p->ilink;elseif(p->jvex==loc)p=p->jlink;}}elseif(loc==G.adjmulist[loc].firstedge->jvex){for(p=G.adjmulist[loc].firstedge;p;){degree++;if(p->ivex==loc)p=p->ilink;elseif(p->jvex==loc)p=p->jlink;}}av=degree/ma;returnav;}floatShortestPath(AMLGraphG,intv0){//求人物亲近中心inti,v,w,min,final[G.vexnum],D[G.vexnum],dis=0,path[G.vexnum][G.vexnum];EBox*p;floata=1,b;for(v=0;v<G.vexnum;++v){final[v]=0;//当final[v]=1即已求得v0->v的最短路径D[v]=10000;path[v][v]=10000;}for(i=0;i<G.vexnum;i++){p=G.adjmulist[i].firstedge;while(p){if(i==p->ivex){path[i][p->jvex]=1;path[p->jvex][i]=1;p=p->ilink;}else{path[i][p->ivex]=1;path[p->ivex][i]=1;p=p->jlink;}}}if(v0==G.adjmulist[v0].firstedge->ivex){for(p=G.adjmulist[v0].firstedge;p;){if(p->ivex==v0){D[p->jvex]=1;//无权图,相当于所有权值都为1p=p->ilink;}elseif(p->jvex==v0){D[p->ivex]=1;p=p->jlink;}}}//v=ivex情况elseif(v0==G.adjmulist[v0].firstedge->jvex){for(p=G.adjmulist[v0].firstedge;p;){if(p->ivex==v0){D[p->jvex]=1;p=p->ilink;}elseif(p->jvex==v0){D[p->ivex]=1;p=p->jlink;}}}//v=jvex情况D[v0]=0;final[v0]=1;//D初始化完成for(i=1;i<G.vexnum;++i){min=10000;//min是目前的离v0最近距离,初始化为∞for(w=0;w<G.vexnum;++w)if(!final[w])if(D[w]<min){//当w顶点离v0更近v=w;min=D[w];}final[v]=1;for(w=0;w<G.vexnum;++w){if(!final[w]&&(min+path[v][w]<D[w])){//如果min+1更近,修改当前D[W]D[w]=min+1;}}//更新当前最距离完成}//对其余顶点循环for(i=0;i<G.vexnum;i++){// printf("d=%d",D[i]);dis+=D[i];}b=a/dis;returnb;//printf("人物亲近中心性为:%4f\n",b);}//求人物亲近中心floatfloyd(AMLGraphG,intv0){//求人物中介中心性intD[G.vexnum][G.vexnum];//D[v][w]是从v到w最短距离intu,v,w,i,num=0,total=0,disa=0,disb=0;floatdisaf,degree;EBox*p;for(v=0;v<G.vexnum;++v){for(w=0;w<G.vexnum;++w)D[v][w]=10000;//D初值为∞}for(v=0;v<G.vexnum;++v){while(!G.adjmulist[v].firstedge)v++;for(w=0;w<G.vexnum;++w){if(v==G.adjmulist[v].firstedge->ivex){for(p=G.adjmulist[v].firstedge;p;){if(p->ivex==v){D[v][p->jvex]=1;//无权图,相当于所有权值都为1p=p->ilink;}elseif(p->jvex==v){D[v][p->ivex]=1;p=p->jlink;}}}//v=ivex情况elseif(v==G.adjmulist[v].firstedge->jvex){for(p=G.adjmulist[v].firstedge;p;){if(p->ivex==v){D[v][p->jvex]=1;p=p->ilink;}elseif(p->jvex==v){D[v][p->ivex]=1;p=p->jlink;}}}//v=jvex情况//D初始化完成}}//各对节点之间初始已知路径及距离填充完成for(u=0;u<G.vexnum;++u){for(v=0;v<G.vexnum;++v){for(w=0;w<G.vexnum;++w){if(D[v][u]+D[u][w]<D[v][w]){D[v][w]=D[v][u]+D[u][w];}}}D[u][u]=0;}//统计for(v=0;v<G.vexnum;++v){for(w=0;w<G.vexnum;++w){if(D[v][w]<10000){total++;disb+=D[v][w];}}}for(v=0;v<G.vexnum;++v){if(v==v0)v++;if(v>=G.vexnum)break;for(w=0;w<G.vexnum;++w){if(w==v0)w++;if(w>=G.vexnum)break;if(D[v][w]<10000)if(D[v][v0]+D[v0][w]<=D[v][w]){disa+=D[v][w];num++;}if(D[v][w]<10000){}}}num=num/2;total=total-G.vexnum;total=total/2;disaf=disa;degree=disaf/disb;//printf("人物中介中心性为:%4f\n",degree);returndegree;}//求人物中介中心性QStringcore(AMLGraphG){//分析获取核心人物QStringotpt;DEGdeg[G.vexnum];inti;for(i=1;i<=G.vexnum;i++){deg[i].d=get_degree(G,i-1);deg[i].loc=i-1;}QSort(deg,1,G.vexnum);for(i=1;i<=G.vexnum;i++){//printf("%s程度中心性为:%4f\n",G.adjmulist[deg[i].loc].,deg[i].d);otpt+=G.adjmulist[deg[i].loc].;otpt+=QString("程度中心性为%1\n").arg(deg[i].d);}//printf("\n经过排序,获得核心人物为:\n\n");otpt+="\n经过排序,获得核心人物为:\n\n";for(i=1;i<=G.vexnum;i++){if(deg[i].d==deg[G.vexnum].d){//printf("%s,其程度中心性为:%4f\n",G.adjmulist[deg[i].loc].,deg[i].d);otpt+=G.adjmulist[deg[i].loc].;otpt+=QString(",其程度中心性为%1\n").arg(deg[i].d);//printf("人物简介:%s\n\n",G.adjmulist[deg[i].loc].data.cinfo);}otpt+="人物简介:";otpt+=G.adjmulist[deg[i].loc].data.cinfo;}}returnotpt;}intpartition(DEGdeg[],intlow,inthigh){deg[0]=deg[low];floatpivokey=deg[low].d;while(low<high){while(low<high&°[high].d>=pivokey)--high;deg[low]=deg[high];while(low<high&°[low].d<=pivokey)++low;deg[high]=deg[low];}deg[low]=deg[0];returnlow;}//分析获取核心人物voidQSort(DEGdeg[],intlow,inthigh){if(low<high){intx=partition(deg,low,high);QSort(deg,low,x-1);QSort(deg,x+1,high);}}QStringfind_pers(AMLGraphG,intv,QStringserela){EBox*p;inta=1,b=0;QStringotpt=G.adjmulist[v].;otpt+="的";otpt+=serela;otpt+="有:\n";p=G.adjmulist[v].firstedge;while(p){//a=strcmp(serela,p->rinfo);a=QString::compare(serela,p->rinfo);if(p->ivex==v){if(!a){b=1;//printf("%s ",G.adjmulist[p->jvex].);otpt+=G.adjmulist[p->jvex].;otpt+="";}p=p->ilink;}else{if(!a){//printf("%s ",G.adjmulist[p->ivex].);otpt+=G.adjmulist[p->ivex].;otpt+="";b=1;}p=p->jlink;}}if(!b)return"未找到!\n";returnotpt;}QStringfind_path(AMLGraphG,intv1,intv2){QStringoutput;EBox*p;intD[G.vexnum],pa[G.vexnum],final[G.vexnum],path[G.vexnum][G.vexnum];inti,j,min,v,w;for(i=0;i<G.vexnum;i++){pa[i]=v1;//到点i的前驱顶点D[i]=10000;//到点i的距离for(j=0;j<G.vexnum;j++)path[i][j]=10000;final[i]=0;}for(i=0;i<G.vexnum;i++){p=G.adjmulist[i].firstedge;while(p){if(i==p->ivex){path[i][p->jvex]=1;path[p->jvex][i]=1;p=p->ilink;}else{path[i][p->ivex]=1;path[p->ivex][i]=1;p=p->jlink;}}}p=G.adjmulist[v1].firstedge;while(p){if(v1==p->ivex){D[p->jvex]=1;p=p->ilink;}elseif(v1==p->jvex){D[p->ivex]=1;p=p->jlink;}}D[v1]=0;final[v1]=1;for(i=1;i<G.vexnum;++i){min=10000;for(j=0;j<G.vexnum;++j){if(!final[j])if(D[j]<min){min=D[j];v=j;}final[v]=1;}for(j=0;j<G.vexnum;++j){if(!final[j]&&(min+path[v][j]<D[j])){D[j]=min+path[v
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026陕西西安市西北农林科技大学工程训练中心实习指导教师招聘2人笔试备考题库及答案解析
- 2026湖南长沙长沙县星沙街道悦和城幼儿园春季招聘1人笔试备考题库及答案解析
- 2026中国民用航空西藏自治区管理局外部招聘12人考试备考题库及答案解析
- 2026北京航空航天大学宇航学院第一批卓越百人博士后岗位招聘笔试备考题库及答案解析
- 2026四川阿坝州锦宸口腔招聘8人笔试备考题库及答案解析
- 2026山东菏泽市巨野县群众文化服务中心(巨野县山东梆子剧团)招聘初级专业技术人员考试备考题库及答案解析
- 2026云南保山职业学院校园招聘15人笔试模拟试题及答案解析
- 四川省仪陇县大寅片区2025-2026学年初三下学期高中联合考试物理试题含解析
- 2026届甘肃省金昌市永昌市第五中学初三下学期第二次阶段(期中)考试题含解析
- 浙江省金华九中2025-2026学年初三第一次模拟(期末)考试数学试题试卷含解析
- 毒麻精神药品培训
- 兴国县国有资产服务中心2026年公开招聘劳务派遣人员考试备考题库及答案解析
- 2026河南农业大学招聘辅导员(硕士)10人笔试备考题库及答案解析
- DB42T 1955-2023 电动自行车停放充(换)电场所消防安全管理规范
- 新22J01 工程做法图集
- GB/T 28202-2011家具工业术语
- 机械原理(经典版)-机械原理经典
- 综合柜员-高级011
- 工作危害分析表(光伏施工工程)
- 人教版选择性必修第三册Unit5前半部分单词课件(18张ppt)
- 亚马逊全阶运营课件
评论
0/150
提交评论