麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

Prim算法的C語言程序

2019-11-11 04:59:01
字體:
來源:轉載
供稿:網友

PRim算法是有關圖的最小生成樹的算法。1957年由美國計算機科學家羅伯特·普里姆(Robert C. Prim)獨立發現。

百度百科:Prim算法。

維基百科:Prim's Algorithm。

參考鏈接:Prim算法的C語言程序。

程序說明:圖存儲在二維數組中,即鄰接矩陣中。使用s集合和vs集合輔助Prim算法的過程,開始時將指定的開始結點放入s集合中,其他剩余的結點放入vs集合中,從s集合到vs集合的邊中找出一個代價最小的邊,然后將相關的結點從vs集合取出放入s集合,指定所有結點都在s集合為止。

需要說明的是,該程序使用了三重循環,其計算速度相當的慢,可以說是不可用的。

C語言程序:

/* Prim算法的C語言程序 */#include <stdio.h>#define MAX_INT (int)((unsigned)(-1) >> 1)#define MIN(x, y) ((x)>(y))?(y):(x)#define TRUE 1#define FALSE 0#define  N 6struct item {    int s;    int v;    int cost;} closedge[N];int pc = 0;int a[N+1][N+1];int s_set[N+1], s_count;int vs_set[N+1], vs_count;void createMatrix();void init(int s);void prim();int main(void){    int i, j, s;    createMatrix();    for(i=1; i<=N; i++) {        for(j=1; j<=N; j++)            printf("%4d", a[i][j]);        printf("/n");    }    printf("start node:");    scanf("%d", &s);    if(s>=1 && s<=N) {        init(s);    } else {        printf("input error!/n");        return -1;    }    prim();    printf("result:/n");    for(i=0; i<pc; i++) {        printf("%4d%4d %4d/n", closedge[i].s, closedge[i].v, closedge[i].cost);    }    return 0;}void prim(){    int i, j, minval, pi, pj;    for(;;) {        if(vs_count == 0)            return;        minval=MAX_INT;        for(i=1; i<=N; i++) {            if(s_set[i]) {                for(j=1; j<=N; j++) {                    if(i!=j && vs_set[j]) {                        if(a[i][j] != -1 && a[i][j] < minval) {                            minval = a[i][j];                            pi = i;                            pj = j;                        }                    }                }            }        }        s_set[pj] = TRUE;        s_count++;        vs_set[pj] = FALSE;        vs_count--;        closedge[pc].s = pi;        closedge[pc].v = pj;        closedge[pc].cost = minval;        pc++;    }}//創建鄰接矩陣void createMatrix(){    int i, j;    for(i=1; i<=N; i++)        for(j=1; j<=N; j++)            if(i==j)                a[i][j] = 0;            else                a[i][j] = -1;    FILE *fp;    fp = fopen("/home/lin/workdir/TYUT/algorithm/p1.txt", "r");    for(;;) {        int val;        fscanf(fp, "%d%d%d", &i, &j, &val);        if(i == -1)            break;        a[i][j] = val;        a[j][i] = val;    }    fclose(fp);}void init(int s){    int i;    for(i=1; i<=N; i++) {        s_set[i] = FALSE;        vs_set[i] = TRUE;    }    s_set[s] = TRUE;    s_count = 1;    vs_set[s] = FALSE;    vs_count = N-1;}輸入文件數據:

1 2 61 3 11 4 52 3 52 5 33 4 53 5 63 6 4 4 6 25 6 6-1 -1 -1

程序運行結果:

   0   6   1   5  -1  -1   6   0   5  -1   3  -1   1   5   0   5   6   4   5  -1   5   0  -1   2  -1   3   6  -1   0   6  -1  -1   4   2   6   0start node:1result:   1   3    1   3   6    4   6   4    2   3   2    5   2   5    3輸入的圖:

輸出的圖:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 福利免费观看 | 日韩中文字幕一区二区三区 | 久久精品视频在线 | 久久精品免费国产 | 最新一区二区三区 | 国产精品久久久久久久久久10秀 | 久久久在线免费观看 | 午夜精品成人一区二区 | 蜜桃视频观看麻豆 | 香蕉国产9| 黄色特级视频 | 国产羞羞视频在线免费观看 | 黄色毛片视频在线观看 | 一区二区三区欧美在线 | 国产精品一区二区三区在线 | 国产jjizz一区二区三区视频 | 麻豆19禁国产青草精品 | 99精品视频在线免费观看 | 亚洲综合色视频在线观看 | 欧美精品一区二区三区在线 | 欧美成人高清视频 | 久久精品国产99国产精品亚洲 | 久久一区三区 | 一级做a爱片性色毛片 | 136福利视频 | 日韩激情一区 | 一级做a爱片久久 | 日韩精品中文字幕在线观看 | 久久免费视频7 | 久久精品国产亚洲7777小说 | 成人免费看视频 | 手机av在线电影 | 久久久久免费精品 | 鲁久久 | 黑人一级片视频 | 亚洲第五色综合网 | 久久久久电影网站 | 羞羞视频免费网站 | 精品国产一区二区三区久久久 | 性爱视频在线免费 | 成码无人av片在线观看网站 |