求无向图最小环道的算法 最好是matlab算法 其他算法也可以

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/25 19:07:32
求无向图最小环道的算法 最好是matlab算法 其他算法也可以

求无向图最小环道的算法 最好是matlab算法 其他算法也可以
求无向图最小环道的算法 最好是matlab算法 其他算法也可以

求无向图最小环道的算法 最好是matlab算法 其他算法也可以
//直接求最小环,然后输出最小环的结点,所以中间要记录最小环
#include
#include
#include
#include
using namespace std;
const int INF = 1000000000;
const int N = 110;
int n, m; // n:节点个数, m:边的个数
int g[N][N]; // 无向图
int dist[N][N]; // 最短路径
int r[N][N]; // r[i][j]: i到j的最短路径的第一步
int out[N], ct; // 记录最小环
int solve(int i, int j, int k)
{// 记录最小环
ct = 0;
while ( j != i )
{
out[ct++] = j;
j = r[i][j];
}
out[ct++] = i;
out[ct++] = k;
return 0;
}
int main(void)
{
while( scanf("%d%d", &n, &m) != EOF )
{
int i, j, k;
// 结点下标从0到n-1
for ( i=0; i < n; i++ )
for ( j=0; j < n; j++ )
{
g[i][j] = INF;
r[i][j] = i;
}
for ( i=0; i < m; i++ )
{
int x, y, l;
scanf("%d%d%d", &x, &y, &l);
--x; --y;
if ( l < g[x][y] ) g[x][y] = g[y][x] = l;
}
memmove(dist, g, sizeof(dist));
int Min = INF; // 最小环
for ( k = 0; k < n; k++ )
{// Floyd
for ( i = 0; i < k; i++ )// 一个环中的最大结点为k(编号最大)
if ( g[k][i] < INF )
for ( j=i+1; j < k; j++ )
if ( dist[i][j] < INF && g[k][j] < INF && Min > dist[i][j]+g[k][i]+g[k][j] )
{
Min = dist[i][j] + g[k][i] + g[k][j];
solve(i, j, k); // 记录最小环
}
for ( i = 0; i < n; i++ )
if ( dist[i][k] < INF )
for ( j=0; j < n; j++ )
if ( dist[k][j] < INF && dist[i][j] > dist[i][k] + dist[k][j] )
{
dist[i][j] = dist[i][k] + dist[k][j];
r[i][j] = r[k][j];
}
}
if ( Min < INF )
{
for ( ct--; ct >= 0; ct-- )
{
printf("%d", out[ct]+1);
if ( ct ) printf(" ");
}
}
else printf("No solution.");
printf("\n");
}
return 0;
}

求无向图最小环道的算法 最好是matlab算法 其他算法也可以 无权无向图,只给出节点个数,怎么用Prim算法求最小生成树 对图2所示的无向带权图,用普里姆算法或克鲁斯卡尔算法求其最小生成树 急求KRUSKAL算法求最小生成树过程演示(一)主要内容以合适方便的方式输入一个边带权值的无向图,采用合适的存储结构存储该无向图. 然后根据KRUSKAL算法求该无向图的最小生成树并输出.( “一个无向图的最小生成树一定含权最小的边”可以用kruskal算法证明吗, 求最小生成树 利用Kruskal算法求图G的一棵最小生成树T,用c语言测试用例:无向图G=.算法:Kruskal输入:包含n个顶点的带权连通无向图G=(用矩阵表示)输出:由G生成的最小生成树T所包含的边 如图所示为一个无向带权图,请分别按照Prim算法和Kruskal算法求最小生成树 求多重邻接表的迪杰斯特拉算法无向图的多重邻接表不是邻接矩阵! 用普里姆(Prim)或克鲁斯卡尔(Kruskal)算法画出下列无向网的最小生成树求解答,有回必应 对于含有n个顶点e条边的无向图,求最小生成树的Kruskal算法的时间复杂度为( ).A.O(nlogn) B.O(ne) C.O(n2) D.O(eloge) 请教无向无权图最小生成树算法:要求比Prim and Kruskal更快.图是undirected和unweighted.也可以认为是每个边的权重是一样的.感激不尽! 设连通无向图G采用邻接表表示.写出求最小生成树Prim算法的实现代码.来个具体的例子看看,坐等,来人啊. 最小生成树 普里姆算法和克鲁斯卡尔算法基本功能要求:①输入并存储至少8个顶点14条边的无向图.②分别编写普里姆算法和克鲁斯卡尔算法,求出最小生成树,输出最小生成树的生成过程.好 求带权图的最小生成树一、实验目的熟练理解求最小生成的Prim算法;锻炼程序设计能力.二、实验内容编程实现求无向带权图的最小生成树.三、实验原理、方法和手段设图G =(V,E),其生成树 某无向网络邻接矩阵:画出这个无向网络,并从顶点1出发,用Prim算法构造它的最小代价生成树, Floyed算法,spfa算法,dij算法各自的优势都在哪里?哪个适用于无向图?哪个适用于负权边? 数据结构课程设计用Kruskal 算法求最小生成树我要的是Kruskal 算法求最小生成树 已知序列如何求该序列的最小次数生成多项式?求C语言算法.例如序列010001011110101,如何设计算法求出其生成多项式?最好是迭代算法.