㈠ 离散数学中,图论部分,同构的概念怎么理解,比较形象的说出来
概念较多,学习时需要认真比较各概念的含义,如:图、子图、有向图、权图;树、支撑树、二叉树、有向树;路、简单路、回路等,这些都是图的基本概念,今后将在数据结构、数据库、计算机网络等课程中用到。
2. 权图中的最短路
严格执行迪克斯特拉(Dijkstra)算法步骤,从起点起,到每一点求出最短路,然后进行仔细比较,最后到达终点,算出最小权和。
3. 权图中的最优支撑树
权图中的最优支撑树是图中所带权和最小的支撑树,使用克鲁斯卡尔(Kruskal)算法。
[典型例题]
1、 在具有n个顶点的完全图Kn中删去多少条边才能得到树?
解:n个顶点的完全图Kn中共有n(n-1)/2条边,
n个顶点的树应有n-1条边,
于是,删去的边有:n(n-1)/2-(n-1)=(n-1)(n-2)/2
2、 一棵树有两个节点度数为2,一个节点度数为3,三个节点度数为4,问它有几个度数为1的节点?
解:我们知道一个有限图中,各点的度数总和是边数的2倍;而树中的边数为点数减1。
根据这两点,可知树中各点的度数总和=2*(树中点数-1),设树叶有x个,
于是,2*2+3+3*4+x=2*(2+1+3+x-1)
得,x=9。
㈡ 如何证明两个图是同构的
判断子图同构有许多比较成熟的算法,比如AGM算法、gSpan算法、FSG算法、ESU算法等。这些可以在网上查到具体的解释。
归根到底是要理解子图同构的定义:
对于给定的两个图G = ( V, E ),G’ = ( V’, E’ ),若存在双射f:V -> V’使对任意a, b∈V,(a, b)∈E当且仅当( f(a),f(b) )∈E’,并且(a, b)与( f(a), f(b) )有相同重数,则称G与G’同构,记为G ≌ G’。
用通俗的话说,则是只两幅子图上的节点能够一一对应,并且节点与节点之间所连接的边的情况也是完全一致的。
㈢ 离散图论:如何快速判断两个图同构
这是个NP问题,但还不清楚是否是NPC问题。换句话说,就目前来看,除了一个映射一个映射地验证,没有其他效率更好的方法。
至于到底有没有更快的算法,即不能肯定也不能否定。
㈣ 图的同构算法是什么
提出了图的同构判定新算法,即关联度序列法和黄金分割关联度序列法.后者的计算时间复杂性远远低于2N(N为图的顶点数),已接近于多项式时间复杂性.该算法可应用于很多能用图来描述的模式识别等实际问题
㈤ 200分高分悬赏,c++或者java编写一个图的同构的判定。用关联度序列法。改进后变为
publicclassMath{//所有成绩数组及其对应的权重数组privatedouble[]scores;privatedouble[]weights;//构造函数publicMath(double[]scores,double[]weights){this.scores=scores;this.weights=weights;}//计算成绩综合publicdoublesum(){doublesum=0;for(doublescore:scores){sum+=score;}returnsum;}//计算加权平均分publicdoubleweightAvg(){doublesum=0;for(inti=0;i<scores.length;i++){sum+=scores[i]*weights[i];}return((double)(int)((sum/scores.length)*10))/10;//结果乘以10在转化为int型就去掉了后面所有小数,再转化为double除以10就是保留一位小数了}//平均绩点不知道什么意思,给出算法就能写程序}
㈥ 求解,离散数学,如何证明两个图同构,具体步骤是什么
两个图的顶点集合之间能够建立一一对应的映射,对应的顶点之间保持边的一一对应关系.
也可以通过图的邻接矩阵来探讨.一个图的邻接矩阵经过有限次的互换行或列的变换变成另一个图的邻接矩阵,则两个图同构.