2025-01-14

          一 学习的开始

    我是一名大三学生,擅长编程和算法,对于数学处于热爱,也是即将考11408的备考生。

    面对当下的环境,我么们不得不过早做出选择,是考研或工作,保研在这就不谈了,毕竟我是跨考生。

    对我来说,前路漫漫,做好长期的攻坚战,学习不是已成而就,大二参加了很多比赛,数模,物理实验,数学竞赛,力学竞赛,ros等,感觉自己有了方向,实际不是的,太多的事情,分散了我们的尽力,现在是看能力和学文的时代,没有好的平台很难去做项目和论文,自己很幸运的掌握了数据处理,在今后学习能在数据处理帮上理论老师的忙,但又很倒霉的陷入了机器学习和深度学习,操之过急了,每个学系阶段有该有的任务,我的c语言水平并不高,在这思路并不是很清晰,一我以后的学习中为例,如今比较有思路。


 二      prim算法举例

prim算法

看做成一个暗夜游戏开始,我们要排民兵去探路,在我们待探索的路径中选择,如何让我们理解。

类似于贪心算法:在A开始,我们可以把A看作出生点,总司令部,可以选择B或F,我们派往B的收益最高,之后打开了B周边的视野,我们可以继续派民兵过去,之后发现对比F的路线是比较高的收益,之后选择I,C,G,注意F不可以选,由于ABGF

形成了环。

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

typedef char VertexType;

typedef int EdgeType;

#define MAXSIZE 100

#define MAX 0x7fffffff//16进制的最大数

typedef struct{

    VertexType vertex[MAXSIZE];

    EdgeType arcs[MAXSIZE][MAXSIZE];

    int vertex_num,edge_num;

}Mat_Graph;

void create_graph(Mat_Graph *G){

    G->vertex_num=9;

    G->edge_num=15;

    G->vertex[0] = 'A';

    G->vertex[1] = 'B';

    G->vertex[2] = 'C';

    G->vertex[3] = 'D';

    G->vertex[4] = 'E';

    G->vertex[5] = 'F';

    G->vertex[6] = 'G';

    G->vertex[7] = 'H';

    G->vertex[8] = 'I';

    for(int i = 0;i < G->vertex_num;i++)

    {

        for(int j = 0;j < G->vertex_num;j++)

            {

                if(i==j){

                G->arcs[i][j]=0;

            }

            else{

                G->arcs[i][j]=MAX;

                 }          

          }    

   }

   //A-B  A-C  A-F  B-C  B-G  B-I  C-I  D-C  D-E  D-G  D-H  E-F  F-G  F-H  G-H  G-I  H-I

    G->arcs[0][1]=10;

    G->arcs[0][5]=11;


    G->arcs[1][2]=18;

    G->arcs[1][6]=16;

    G->arcs[1][8]=12;

    G->arcs[2][3]=22;

    G->arcs[2][8]=8;

    G->arcs[3][4]=20;

    G->arcs[3][6]=24;

    G->arcs[3][8]=21;

    G->arcs[3][7]=16;

    G->arcs[4][5]=26;

    G->arcs[4][7]=7;

    G->arcs[5][6]=17;


    G->arcs[6][7]=19;

    for(int i= 0;i<G->vertex_num;i++){

        for(int j=0;j<G->vertex_num;j++){

            G->arcs[i][j]=G->arcs[j][i];

            }

        }


}  

void prim(Mat_Graph *G)

{

    int i,j,k;

    int min;

    int weight[MAXSIZE];

    int vex_index[MAXSIZE];

    weight[0]=0;//候选边

    vex_index[0]=0;//值表示时出发点

    for(i=1;i<G->vertex_num;i++){

        weight[i]=G->arcs[0][i];

        vex_index[i]=0;

    }

    for(i=1;i<G->vertex_num;i++){

        min=MAX;

        k=0;

        j=0;//找最小

        for(int i=0;i<G->vertex_num;i++){

            if(weight[j]!=0&&weight[j]<min){

                min=weight[j];

                k=j;

            }

        }

    printf("%d,%d\n",vex_index[k],k);

       weight[k]=0;

    for(j=0;j<G->vertex_num;j++){

        if(weight[j]!=0&&G->arcs[k][j]<weight[j]){

            weight[j]=G->arcs[k][j];

            vex_index[j]=k;

        }

    }

}

  int main(int argc, char const *argv[])

  {

      Mat_Graph G;

      create_graph(&G);

      prim(&G);

      return 0;

  }

三 感受

路漫漫那其修远兮,吾将上下而求索。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 算法与数据结构基础 一、基础算法思想二分: 递推: 枚举: 递归: 分治: 贪心: 试探: 模拟: 二、简单数据结...
    为梦想战斗阅读 2,854评论 0 0
  • 1、北京市气象台预报,今晚部分地区有弱降雪,明天将出现大风降温。 据气象北京消息,北京市气象台于1月13日11时发...
    cnxhsy阅读 503评论 0 1
  • 台达导轨电源 DRL - 48V480W1EN:工业电力的强劲引擎 在工业自动化与智能化飞速发展的当下,稳定且高效...
    多合点阅读 42评论 0 0
  • 图   顶点的有穷非空集合和顶点之间边的集合组成,通常表示为G=(V,E),其中G表示一个图,V是图G中的顶点的非...
    _涼城阅读 2,806评论 0 1
  • IPEX 内针 4代——KH-IPEX4-2020 品牌: kinghelm(金航标) 厂家型号: KH-IPEX...
    6ff5440f4d1c阅读 26评论 0 0