c: Prim's Algorithm
PrimsAlgorithm.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | /** * ***************************************************************************** * @file PrimsAlgorithm.h * @brief Prim's Algorithm * @author (geovindu,Geovin Du,涂聚文) * @date 2023-09-26 * @copyright geovindu * ***************************************************************************** */ #ifndef PRIMSALGORITHM_H #define PRIMSALGORITHM_H #include<stdio.h> #include<stdbool.h> #define INF 9999999 // number of vertices in graph #define V 5 /** * @brief * * @param G */ void Prims( int G[V][V]); #endif |
PrimsAlgorithm.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | /** * ***************************************************************************** * @file PrimsAlgorithm.c * @brief Prim's Algorithm * @author (geovindu,Geovin Du,涂聚文) * @date 2023-09-26 * @copyright geovindu * ***************************************************************************** */ #include<stdio.h> #include<stdbool.h> #include "include/PrimsAlgorithm.h" /** * @brief * */ void Prims( int G[V][V]) { int no_edge; // number of edge // create a array to track selected vertex // selected will become true otherwise false int selected[V]; // set selected false initially memset (selected, false , sizeof (selected)); // set number of edge to 0 no_edge = 0; // the number of egde in minimum spanning tree will be // always less than (V -1), where V is number of vertices in //graph // choose 0th vertex and make it true selected[0] = true ; int x; // row number int y; // col number // print for edge and weight printf ( "\n16.Prim's Algorithm\n Edge : Weight\n" ); while (no_edge < V - 1) { //For every vertex in the set S, find the all adjacent vertices // , calculate the distance from the vertex selected at step 1. // if the vertex is already in the set S, discard it otherwise //choose another vertex nearest to selected vertex at step 1. int min = INF; x = 0; y = 0; for ( int i = 0; i < V; i++) { if (selected[i]) { for ( int j = 0; j < V; j++) { if (!selected[j] && G[i][j]) { // not in selected and there is an edge if (min > G[i][j]) { min = G[i][j]; x = i; y = j; } } } } } printf ( "%d - %d : %d\n" , x, y, G[x][y]); selected[y] = true ; no_edge++; } } |
调用:
1 2 3 4 5 6 7 8 | //16 Prim's Algorithm int G[V][V] = { {0, 9, 75, 0, 0}, {9, 0, 95, 19, 42}, {75, 95, 0, 51, 66}, {0, 19, 51, 0, 31}, {0, 42, 66, 31, 0}}; Prims(G); |
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
分类:
Cpp programming
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
2022-09-26 Java: Chain of Responsibility Pattern
2021-09-26 Dynamically create a div element with JavaScript/jQuery