当前位置: 首页 > news >正文

做行程的网站推荐热门搜索关键词

做行程的网站推荐,热门搜索关键词,腾讯企点有风险吗,标志设计课件在一个具有几个顶点的连通图G中#xff0c;如果存在子图G包含G中所有顶点和一部分边#xff0c;且不形成回路#xff0c;则称G为图G的生成树#xff0c;代价最小生成树则称为最小生成树。 许多应用问题都是一个求无向连通图的最小生成树问题。例如#xff1a;要…        在一个具有几个顶点的连通图G中如果存在子图G包含G中所有顶点和一部分边且不形成回路则称G为图G的生成树代价最小生成树则称为最小生成树。                 许多应用问题都是一个求无向连通图的最小生成树问题。例如要在n个城市之间铺设光缆主要目标是要使这 n 个城市的任意两个之间都可以通信但铺设光缆的费用很高且各个城市之间铺设光缆的费用不同另一个目标是要使铺设光缆的总费用最低。这就需要找到带权的最小生成树。       性质 最小生成树的边数必然是顶点数减一|E| |V| - 1。最小生成树不可以有循环。最小生成树不必是唯一的。Prim算法与Kruskal算法是寻找最小生成树的经典方法。 prim算法 从单一顶点开始普里姆算法按照以下步骤逐步扩大树中所含顶点的数目直到遍及连通图的所有顶点。 输入一个加权连通图其中顶点集合为V边集合为E初始化Vnew {x}其中x为集合V中的任一节点起始点Enew {}重复下列操作直到Vnew V在集合E中选取权值最小的边u, v其中u为集合Vnew中的元素而v则不是如果存在有多条满足前述条件即具有相同权值的边则可任意选取其中之一将v加入集合Vnew中将u, v加入集合Enew中输出使用集合Vnew和Enew来描述所得到的最小生成树。     为实现这个算法需要一个辅助数组closedge来记录Vnew到V-Vnew具有最小权值的边。对于每个顶点vi∈V-Vnew在辅助数组中存在一个分量closedge[i]表示vi到Vnew的最小代价边closedge包括两个域 adjvex表示这条边的顶点lowcost表示vi到adjvex的权值。当选择新的顶点到Vnew,选择新的边到Enew时要更新closedge  无向加权图 Graph #include iostream #include vector #include queue #define MAXW 1000//定义最大权值 using namespace std; templateclass T class Graph//无向加权图 { public:Graph();~Graph();void Create();//生成加权图void DFSTraverse(void (*fun)(T));//深度优先遍历void BFSTraverse(void (*fun)(T));//广度优先遍历int LocateVex(T vex);int GetVexnum(){return vexnum;}int GetArcnum(){return arcnum;}int** GetAdjMatrix(){return adjMatrix;}T GetVex(int i){return vexs[i];} private:vectorT vexs;//顶点数组int** adjMatrix;//邻接矩阵int arcnum;//弧数int vexnum;//顶点数bool *visited;int FirstAdjVex(int v);//v的第一个邻接点int NextAdjVex(int v,int w);//从w开始找v的下个邻接点void DFS(int i,void (*fun)(T)); };templateclass T GraphT::Graph() {adjMatrixNULL;arcnum0;visitedNULL; }templateclass T GraphT::~Graph() {for (int i0;ivexnum;i){delete [] adjMatrix[i];}delete adjMatrix;adjMatrix0;delete [] visited; }templateclass T void GraphT::Create() {cout输入顶点数弧数以空格隔开;cinvexnum;cinarcnum;adjMatrixnew int*[vexnum];for(int i0;ivexnum;i)adjMatrix[i]new int[vexnum];for (int i0;ivexnum;i){for(int j0;jvexnum;j)adjMatrix[i][j]MAXW;//初始化邻接矩阵}visitednew bool[vexnum];cout输入顶点列以空格隔开;for (int i0;ivexnum;i){T temp;cintemp;vexs.push_back(temp);//输入顶点}cout输入一条边依附的顶点及权值A B 1:endl;for (int i0;iarcnum;i){T v1,v2;int w;cinv1;cinv2;cinw;int xLocateVex(v1);int yLocateVex(v2);adjMatrix[x][y]w;adjMatrix[y][x]w;//设置权值 } }templateclass T int GraphT::LocateVex(T vex) {for(int i0;ivexnum;i){if (vexs[i]vex){return i;}}return -1; }templateclass T int GraphT::FirstAdjVex(int v) {for (int i0;ivexnum;i){if(adjMatrix[v][i]!MAXW)return i;}return -1; }templateclass T int GraphT::NextAdjVex(int v,int w) {for (int iw1;ivexnum;i){if(adjMatrix[v][i]!MAXW)return i;}return -1; }templateclass T void GraphT::DFS(int i,void (*fun)(T))//从第i个顶点深度优先遍历 {visited[i]true;fun(vexs[i]);for (int wFirstAdjVex(i);w0;wNextAdjVex(i,w)){if(!visited[w]) DFS(w,fun);}}templateclass T void GraphT::DFSTraverse(void (*fun)(T)) {for(int i0;ivexnum;i)visited[i]false;for (int i0;ivexnum;i){if(!visited[i])DFS(i,fun);} }templateclass T void GraphT::BFSTraverse(void (*fun)(T)) {queueint Q;for(int i0;ivexnum;i)visited[i]false;visited[0]true;fun(vexs[0]);Q.push(0);//顶点入队while (!Q.empty()){//int vQ.back();int vQ.front();// 出队Q.pop();for(int wFirstAdjVex(v);w0;wNextAdjVex(v,w)){if(!visited[w]){visited[w]true;fun(vexs[w]);Q.push(w);//访问后顶点入队}}} }   prim算法 templateclass T void MinSpanTree_PRIM(GraphT G,T u) {//Prim算法生成最小生成树struct cell{T adjvex;//邻接顶点int lowcost;//最小权值};cell* closedgenew cell[G.GetVexnum()];//辅助数组int kG.LocateVex(u);for (int i0;iG.GetVexnum();i){if(i!k){closedge[i].adjvexu;closedge[i].lowcostG.GetAdjMatrix()[k][i];}}closedge[k].lowcost0;for (int i1;iG.GetVexnum();i){int wMAXW;for(int j0;jG.GetVexnum();j){if(closedge[j].lowcostwclosedge[j].lowcost0){wclosedge[j].lowcost;kj;}}//输出路径coutendl;cout找到路径closedge[k].adjvex----G.GetVex(k)权值wendl;closedge[k].lowcost0;for(int j0;jG.GetVexnum();j){//更新closedge[j]if (G.GetAdjMatrix()[k][j]closedge[j].lowcost){closedge[j].adjvexG.GetVex(k);closedge[j].lowcostG.GetAdjMatrix()[k][j];}}}} main void printfun(char ch) {coutch ; } int main() {Graphchar G;G.Create();cout深度优先遍历:;G.DFSTraverse(printfun);coutendl广度优先遍历;G.BFSTraverse(printfun);MinSpanTree_PRIM(G,G.GetVex(0));return 1;}    例子 原图 运行结果   转载于:https://www.cnblogs.com/wonderKK/archive/2012/04/12/2444571.html
http://www.huolong8.cn/news/390143/

相关文章:

  • 网站建设摊销时间是多久开源门户网站
  • 做法城乡建设部网站wordpress 简洁
  • 天津网站设计推荐刻旅游手机网站建设
  • 网站建站公司模板郑州大型网站建设电话
  • dw个人网站制作模板先学php还是网站建设
  • 哪个酒店网站做的好看的qq企业邮箱下载
  • 南京微信网站建设石家庄建设信息网必须交费吗
  • 温州微网站制作哪里有万网主机 网站重做
  • 南通网站建设招聘百度推广文案
  • 网站建设导航栏变化WordPress文章提交百度
  • 网站建设专家怎么样为什么企业建设银行网站打不开
  • 龙口建设公司网站网站推广公司排行榜
  • 惠州seo网站排名网页设计宣传海报素材
  • seo网站优化培训怎么样网站建设技术难题
  • 网站建设和管理什么意思wordpress参数手册
  • 上海网站建设报价单推广普通话手抄报句子
  • 网站seo排名优化方法贵阳做网站方舟网络
  • 邯郸企业做网站高端品牌有哪些牌子
  • 淘宝联盟怎么建网站最新猪价
  • 湖州专业网站建设公司聊城做网站推广费用
  • 小型网站的建设方案网络营销策略概念
  • 如何做类似优酷的视频网站重庆高考征集志愿网站
  • 鄂尔多斯建设局网站网站开发公用头部
  • windows2012做网站949公社招聘信息
  • 信贷员在哪个网站做推广网站建设和网站搭建哪个好
  • vs2017 网站开发环境网站建设在作用是什么意思
  • 移动广告公司网站建设郑网站建设
  • 建设部网人事考试网站网站开发毕设开题报告
  • 毕设 网站开发的必要性福州产品网页制作的公司
  • 会昌网站百度推广客户端app下载