数据结构与算法_第1页
数据结构与算法_第2页
数据结构与算法_第3页
数据结构与算法_第4页
数据结构与算法_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构与算法Chapter10图--1图的基本概念一个图G=(V,E)是一个由非空的有限集V和一个边集E所组成的。若E中的每条边都是结点的有序对(v1,v2),就说该图是有向图(directedgraph,digraph)。若E中的每条边是两个不同结点有序对,就说该图是无向图,其边仍表示成(v1,v2)12435678顶点边3124356781{v1,v2,v3,v4,v5,v6,v7,v8}{(v1,v2)(v1,v3)(v2,v3)(v2,v5)(v2,v4)(v3,v5)(v4,v5)(v4,v6)(v4,v7)(v5,v7)(v5,v8)(v6,v7)(v7,v8)}无向图图的表示12435678有权图9060120502004011016070758018012435678顶点弧1{v1,v2,v3,v4,v5,v6,v7,v8}{<v1,v2><v1,v3><v2,v4><v2,v5><v3,v2><v3,v5><v4,v6><v4,v7><v5,v4><v5,v7><v5,v8><v7,v6><v7,v8>}有向图完全图:n个节点的图中,若是无向图,有n(n-1)/2条边;若是有向图,有n(n-1)条边。权:图中边或弧上的值。邻接顶点:有边或弧相连的顶点。顶点的度:顶点所连接的边或弧的数量,称为该顶点的度。指向顶点的弧的数量叫入度,由顶点出发的弧,称为该顶点的出度。图的基本术语路径与回路:邻接顶点所形成序列称为路径。路径长度:无权图上,路径上边的数目称为路径长度;有权图上,路径上边的权重之和为路径长度。回路/环:如果路径的起点和终点相同,则称此路径为回路或环。简单路径:路径上无重复顶点的路径。连通:若图上两个顶点之间有路径,则称为这两点是连通的。连通图:若图上任意两点都是连通的,则为连通图。非连通图:图上存在节点之间不连通的顶点,则为非连通图。连通分量:非连通图的极大连通子图称为连通分量。图的基本术语图的操作图的建立顶点定位取顶点值求顶点的第一邻接点及求下一邻接点插入新顶点及删除顶点插入一条弧或删除一条弧遍历图(广度优先/深度优先)图的表示—邻接矩阵设图G=(V,E),V={0,1,…,n-1}则表示G的邻接矩阵A是其元素按下式定义的n*n矩阵:无向图:有向图:带权的有向图:V3V1V4V5V2G2V1V3V4V2G101100000000110000101010101010111010001100126543545983516∞3∞∞∞1∞∞5∞3∞∞∞∞4∞∞98∞∞∞∞6∞∞5∞∞∞∞∞∞∞5有向图G1无向图G2有向网311例:图类型变量:MgraphG;顶点个数:G.vexnum弧/边的个数:G.arcnum图的类型:G.kind=(DG,DN,AG,AN)顶点i信息:G.vex[i]顶点i和顶点j邻接关系:G.arcs[i][j].adj弧/边附加信息:G.arcs[i][j].info12Typedefstructgraph{ TNoEdge; intVertices; T**A;}Graph;VoidCreateGraph(Graph*g,intn,Tnoedge){ intI,j; g->NoEdge=noedge; g->Vertices=n; g->A=(T**)malloc(n*sizeof(T*)); for(i=0;i<n;i++){ g->A[i]=(T*)malloc(n*sizeof(T)); for(j=0;j<n;j++) g->A[i][j]=noedge; g->A[i][i]=0; }}建立邻接矩阵BOOLAdd(Graph*g,intu,intv,Tw){ intn=g->Vertices; if(u<0||v<0||u>n-1||u==v||g->A[u][v]!=g->NoEdge){ cout<<“BadInput”;returnFALSE; } g->A[u][v]=w;returnTRUE;}BOOLDelete(Graph*g,intu,intv){ intn=g->Vertices; if(u<0||v<0||u>n-1||u==v||g->A[u][v]==g->NoEdge){ cout<<“BadInput”;returnFALSE; } g->A[u][v]=g->NoEdge;returnTRUE;}BOOLExist(Graph*g,intu,intv){ intn=g->Vertices; if(u<0||v<0||u>n-1||u==v||g->A[u][v]!=g->NoEdge) returnFALSE; returnTRUE;}插入、删除和搜索运算图的表示—关联矩阵关联矩阵用来表示图中边与顶点相关联的矩阵,有向图G=(V,E)的关联矩阵是如下定义的n*m的矩阵图的表示—邻接咐表表并示法为每街一个灭顶点病建立盘一个挎单链汽表单链表写中的勉每一剩个结爪点指课示u的一你个相迅邻结误点Adj余Ve海x表示u的一区个相截邻结蛾点,Ne袄xt安Ar钓c指向u的下论一个嫂边结公点,In输fo用来佛存储蔽边的胡权值顶点结创点中家,Da蜂ta用来敲存储此相关扰信息秃,Fi怕rs终tA验rc指向u的第倦一个硬边结械点AdjVexNextArcInfo带权的边结点DataFirstArc顶点结点v1

v2

v3

v4

2130^^^有向图G1邻接表0123无向上图G2邻接榜表v5

v1

v2

v3

v4

314243202101^^^^^01234V3V1V4V5V2G2V1V3V4V2G1Ty少pe点de饺fst昆ru盐cten篮od努e{in慈tAd能jV屿ex;T班w;st饮ru纲cten可od错e*Ne购xt灵Ar抵c;}Typ固ed蔽efst着ru上ctgr撕ap思h{in脉tVe借rt裂ic双es既;EN凶od利e**扶A;}G招ra井ph勿;Vo济idCr掠ea苍te导Gr枝ap婶h(G衫ra监ph则*势g,in方tn){in舌tI;g-逼>V喷er段ti帮ce嚷s=驻n;g-塌>A熊=(En五od易e**厌)ma粗ll海oc(n当*si企ze革of(En吵od捕e*)壁);fo葛r(院i=快0;词i<n;思i++嘱)g-贺>A黄[i沸]=吓NU供LL葵;}建立链邻接兽表18En塑od乖e*Ne爬wN萌od喉e(in核tve箭x,影T镇w缩慧ei恐gh牵t,En魔od阿e*ne袭xt录ar慢c){En搂od友e*p各;p=乒(En拦od思e*)ma武ll爽oc(si夏ze戴of(EN颂od与e))蓬;p-响>Ad昂jV鸣ex=v好ex迎;洞p-垒>W僵=w们ei鸽gh但t;p-映>Ne帮xt炮Ar吐c=ne很xt云ar毙c;re坟tu翠rn饲p迎;}BO跳OL移E往xi导st基(G壁ra真ph双g栏,in蹲tu,in瓦tv){in祸tn;En闹od土e*p胞;n=g.吃Ve爷rt建ic科es;if犹(u桥<0境||么u>勇n-鸣1)旬r桨et扰ur丧n锐FA狐LS严E;fo校r(鞋p=g.秤A[u葵];怪p葛&&浓p-掉>Ad穴jV浇ex!=引v;撇)若p=惰p-设>Ne匙xt克Ar字c;if者(!驰p)驴r阵et结ur微n砌FA糟LS胡E;re网tu斩rn面T蓝RU聪E;}操作窑函数BO映OL晋A傲dd信(G史ra矿ph侍g支,in尸tu,in躲tv,总T书w校){in另tn;En直od尖e*p症;n=g.复Ve屯rt傅ic橡es;if父(u多<0装||犯u>熟n-慌1|咏|v扬<0主||钱v>籍n-称1|避|u照==柳v|呼|E弄xi枪st叉(*g,寒u,絮v))妨{co企ut<<菜“B姐ad难I球np烫ut炭”;趟r竹et绩ur普n朗FA约LS汤E;}p=Ne父wE壤No青de(v,液w,椅g->庆A[丽u]慎);交g糖->虎A[岩u]躺=p掠;re余tu宋rn室T裁RU轻E;}BO健OL日D圆el抹et宰e(习Gr铜ap以h植g,in岸tu,in牧tv){in占tn=殊g-箩>V惨er饺ti蚕ce词s;En赴od快e*p候,*栽q;if膨(u想>-摩1&啊&u前<n淡){p=策g-蚁>A屠[u匆];茅q=滤NU场LL袋;wh沟il铸e(繁p&别&p蜓->Ad而jV泽ex!=瓦v)滚{q=摔p;话p奸=p骆->Ne荒xt辛Ar秃c;}if匆(p冬){if双(q细)萄q-慎>Ne父xt期Ar除c=p穿->Ne虑xt反Ar百c;el蚕se词g勒->岩A[优u]箱=p冰->Ne改xt轰Ar泄c;fr藏ee衡(p登);五r士et舌ur赛n咐TR桑UE昆;}}co淋ut<<惹“B挪ad蒙I翁np盖ut悬”;蓄r鲁et处ur教n画FA型LS末E;}操作屡函数例:图类僵型变巩量:AL刷gr眼ap碑hG牧;顶点限个数摘:G.僵ve娇xn溪um图的类秆型:G.虑ki订nd=(D尼G,窑DN榨,A串G,于AN断)顶点i信息锄:G.伍ve恒rt种ic京es[i抄].方da贯da顶点i的第铁一个富邻接奸点:G.衔ve垫rt来ic如es[i维].fi耻rs达ta垄rc->ad征jv坐exG.卷ve却rt晌ic韵es[G.妖ve仪rt椒ic昌es[i策].fi惠rs敌ta兰rc->ad现jv今ex].久da晌taG.布ve掏rt送ic显es[i抗].fi汽rs蚕ta刘rc->切in执fo顶点i的第意二个食邻接胞点:G.秘ve驳rt基ic悉es[i叙].fi赶rs济ta菊rc->ne句xt倒ar遮c->ad们jv挡ex图的遍历算法深度优先搜索DFS(Depth-Firstsearch)广度优先搜索BFS(Breadth-Firstsearch)图的遍历确定绪遍历腹起点为保方证非绩连通档图的营每一挖顶点府都能撞被访挥问到雅,应民轮换接起点为避赖免顶睡点的夸重复私访问仁,做萌访问已标记遍历勉图注资意问施题:深度联优先虑搜索DF烈S(乱De斯pt否h-恳Fi倚rs稍t度s泰ea障rc舱h)首先孔访问手起点使,然茅后依膛次访拢问与植该起每点相识关联棉的每煌一个顶点房诚,并荣以该识关联畜顶点渠为新痛的起莫点,坟继续送深度副优先榴遍历爹。若图中毛还有哈未被销访问圆的顶读点,庆则换盲一个纠起点苍,继北续深疗度优侵先遍历;锦直到息所有浴的顶参点都尖被访概问。V1V2V3V4V5V6V7V8无向图G3V1V2V3V4V5V6V7V8有向图G4V1,V3,V6,V7,V2,V4,V8,V5V1,V2,V4,V8,V5,V3,V6,V723深度陪优先侮遍历挨:Vo驴id捐D晨FS西(G团ra讨ph架g陵,in提tv,声B逝OO文L迷*v乎is卫it盒ed页){En班od网e*w总;vi豆si辛te车d[药v]虫=T忌RU依E;pr洞in竭tf(“当%d棉”,筋v既);fo沙r尖(w款=g.腿A[v筑];甚w估;赞w=扔w-莫>Ne旅xt丹Ar中c)if反(v桌is度it圣ed爪[w惊->Ad各jV太ex])膨D僻FS桃(g盛,垦w-载>Ad厦jV哪ex,仓vi硬si赵te付d)心;}Vo慨idTr柔av详er砍sa将l_浇DF鸽S(G希ra携ph盟g附){BO敢OL吉v达is默it必ed笛[Ma辉xS册iz涌e];in惊ti,课n妹=g.宪Ve喷rt去ic昌es;fo何r(杏i=河0;凭i<n;愈i++婆)忌vi逐si膨te矩d[裕i]乒=F廉AL肠SE骄;fo球r(时i=影0;疲i<n;幕i++浴)if屡(!料vi逆si某te恳d[物i]键)妈DF浊S(g,闪i,镜vi谅si兆te找d);}v13v2v3v4v54422123010101234^^无向图G2邻接表V3V1V4V5V2G2图G2的深灶度优由先遍绵历结萌果:V1,V4,V3,V5,V224广度纪优先州搜索BF勺S沸(B音re奏ad包th班-F侵ir薯st批se穿ar匪ch勾)V1V2V3V4V5V6V7V8无向图G3V1V2V3V4V5V6V7V8有向图G4V1,V2,V3,V4,V5,V6,V7,V8V1,V2,V3,V4,V5,V6,V7,V8首先砖访问王起点脏,依社次访椒问与际该起忙点相咬关联写的每和一个邻接拆点,然判后分壮别从泼这些偷邻接岸点出浴发访碑问它旦们的珍邻接尊点,取并使“先被访问角的顶馒点的西邻接妇点”先于“后被呢访问库的顶畏点的扛邻接纱点”被访问,若暑图中塞还有孝未被枣访问饮的顶忘点,挥则换缴一个斤起点汉,继损续广度缝优先遍历就;直娘到所堪有的忧顶点索都被番访问矩。25#i莫nc联lu舒de子“qu叨eu却e.朱h”Vo樱id针B牢FS馆(G摆ra叼ph桑g胜,雄T捏v,贤B丢OO毕L辉*v备is床it凶ed梦){En捆od协e*w码;恳T绒u;奇Q般ue报ue陡q编;Cr演ea以te翠Qu咳eu耐e(&震q,Ma北xN盗um发Ve甩rt仗ic洒es);vi椒si位te蚂d[辞v]戴=T戒RU秆E;pr链in着tf(“某%d厦”,充v咱);Ap宴pe耀nd菠(&太q,侧v米);wh瞎il赚e(淡!Is钟Em药pt株y(q腿))加{Qu达eu至eF滚ro勾nt(q切,桨&u议);番S努er最ve肚(&齐q)肚;fo申r(贺w=g.第A[u仪];歇w举;傻w=咏w-之>Ne镜xt护Ar导c)if匆(!槽vi撤si父te早d[受w-塌>Ad赴jV卸ex])以{pr裂in轨tf(“捞%d南”,专w-炕>Ad恳jV势ex);vi疏si彻te体d[乔w-峡>Ad朱jV竭ex]=厅TR惊UE截;Ap亲pe绣nd施(&卫q,君w谊->Ad脊jV功ex);}}}Vo舱idTr协av掘er农sa拐l_恨BF西S(G拜ra舞phg){BO屠OL垄v快is勒it遮ed牌[Ma夹xS烧iz木e];in澡ti,构n透=g.躁Ve煌rt蚊ic乓es;fo安r(疑i=踪蝶0;探i<n;筐i++推)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论