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

做vip的网站好做吗网站开发价目表

做vip的网站好做吗,网站开发价目表,漯河网站建设,购物网站开发背景及意义文章目录 一、最短路径二、单源最短路径--Dijkstra算法三、单源最短路径--Bellman-Ford算法四、多源最短路径--Floyd-Warshall算法 一、最短路径 最短路径问题#xff1a;从在带权有向图G中的某一顶点出发#xff0c;找出一条通往另一顶点的最短路径#xff0c;最短也就是沿… 文章目录 一、最短路径二、单源最短路径--Dijkstra算法三、单源最短路径--Bellman-Ford算法四、多源最短路径--Floyd-Warshall算法 一、最短路径 最短路径问题从在带权有向图G中的某一顶点出发找出一条通往另一顶点的最短路径最短也就是沿路径各边的权值总和达到最小。 二、单源最短路径–Dijkstra算法 单源最短路径问题给定一个图G ( V E ) G(VE)G(VE)求源结点s ∈ V s∈Vs∈V到图中每个结点v ∈ V v∈Vv∈V的最短路径。Dijkstra算法就适用于解决带权重的有向图上的单源最短路径问题同时算法要求图中所有边的权重非负。一般在求解最短路径的时候都是已知一个起点和一个终点所以使用Dijkstra算法求解过后也就得到了所需起点到终点的最短路径。 针对一个带权有向图G将所有结点分为两组S和QS是已经确定最短路径的结点集合在初始时为空初始时就可以将源节点s放入毕竟源节点到自己的代价是0Q 为其余未确定最短路径的结点集合每次从Q 中找出一个起点到该结点代价最小的结点u 将u 从Q 中移出并放入S 中对u 的每一个相邻结点v 进行松弛操作。松弛即对每一个相邻结点v 判断源节点s到结点u 的代价与u 到v 的代价之和是否比原来s 到v 的代价更小若代价比原来小则要将s 到v 的代价更新为s 到u 与u 到v 的代价之和否则维持原样。如此一直循环直至集合Q 为空即所有节点都已经查找过一遍并确定了最短路径至于一些起点到达不了的结点在算法循环后其代价仍为初始设定的值不发生变化。Dijkstra算法每次都是选择V-S中最小的路径节点来进行更新并加入S中所以该算法使用的是贪心策略。 Dijkstra算法存在的问题是不支持图中带负权路径如果带有负权路径则可能会找不到一些路径的最短路径。 代码实现 // 临接矩阵 namespace Matrix {template class V, class W, W MAX_W INT_MAX, bool Direction falseclass Graph{typedef GraphV, W, MAX_W, Direction Self;private:std::vectorV _vertexs; // 顶点集合std::mapV, size_t _vIndexMap; // 顶点的下标映射关系std::vectorstd::vectorW _matrix; // 存储边集合的矩阵void PrintShortPath(const V src, const std::vectorW dist, const std::vectorint pPath){size_t srci GetVertexIndex(src);size_t n _vertexs.size();for (size_t i 0; i n; i){if (i ! srci){// 找出i顶点的路径std::vectorint path;size_t parenti i;while (parenti ! srci){path.push_back(parenti);parenti pPath[parenti];}path.push_back(srci);reverse(path.begin(), path.end());for (auto index : path){std::cout _vertexs[index] -;}std::cout 权值和 dist[i] std::endl;}}}// 顶点个数是N - 时间复杂度ON^2空间复杂度ONvoid Dijkstra(const V src, std::vectorW dist, std::vectorint pPath){size_t srci GetVertexIndex(src);int n _vertexs.size();dist.resize(n, MAX_W);pPath.resize(n, -1);dist[srci] 0;pPath[srci] srci;// 已经确定最短路径的顶点集合std::vectorbool S(n, false);// n个节点每个节点都要作为起点for (int i 0; i n; i){// 选最短路径顶点且不在S更新其他路径int u 0;W min MAX_W;for (int j 0; j n; j){if (S[i] false dist[i] min){u i;min dist[i];}}S[u] true;// 松弛更新u连接顶点v srci-u u-v srci-v 更新for (int v 0; v n; v){if (S[v] false _matrix[u][v] ! MAX_W dist[u] _matrix[u][v] dist[v]){dist[v] dist[u] _matrix[u][v];pPath[v] u;}}}}}; }测试代码 void TestGraphDijkstra() {const char *str syztx;Graphchar, int, INT_MAX, true g(str, strlen(str));g.AddEdge(s, t, 10);g.AddEdge(s, y, 5);g.AddEdge(y, t, 3);g.AddEdge(y, x, 9);g.AddEdge(y, z, 2);g.AddEdge(z, s, 7);g.AddEdge(z, x, 6);g.AddEdge(t, y, 2);g.AddEdge(t, x, 1);g.AddEdge(x, z, 4);std::vectorint dist;std::vectorint parentPath;g.Dijkstra(s, dist, parentPath);g.PrintShortPath(s, dist, parentPath);// // 图中带有负权路径时贪心策略则失效了。// // 测试结果可以看到s-t-y之间的最短路径没更新出来// const char *str sytx;// Graphchar, int, INT_MAX, true g(str, strlen(str));// g.AddEdge(s, t, 10);// g.AddEdge(s, y, 5);// g.AddEdge(t, y, -7);// g.AddEdge(y, x, 3);// std::vectorint dist;// std::vectorint parentPath;// g.Dijkstra(s, dist, parentPath);// g.PrintShortPath(s, dist, parentPath); }三、单源最短路径–Bellman-Ford算法 Dijkstra算法只能用来解决正权图的单源最短路径问题但有些题目会出现负权图。这时这个算法就不能帮助我们解决问题了而bellman—ford算法可以解决负权图的单源最短路径问题。它的优点是可以解决有负权边的单源最短路径问题而且可以用来判断是否有负权回路。它也有明显的缺点它的时间复杂度 O(NE) (N是点数E是边数)普遍是要高于Dijkstra算法O(N²)的。像这里如果我们使用邻接矩阵实现那么遍历所有边的数量的时间复杂度就是O(N^3)这里也可以看出来Bellman-Ford就是一种暴力求解更新。 代码实现 // 临接矩阵 namespace Matrix {template class V, class W, W MAX_W INT_MAX, bool Direction falseclass Graph{typedef GraphV, W, MAX_W, Direction Self;private:std::vectorV _vertexs; // 顶点集合std::mapV, size_t _vIndexMap; // 顶点的下标映射关系std::vectorstd::vectorW _matrix; // 存储边集合的矩阵void PrintShortPath(const V src, const std::vectorW dist, const std::vectorint pPath){size_t srci GetVertexIndex(src);size_t n _vertexs.size();for (size_t i 0; i n; i){if (i ! srci){// 找出i顶点的路径std::vectorint path;size_t parenti i;while (parenti ! srci){path.push_back(parenti);parenti pPath[parenti];}path.push_back(srci);reverse(path.begin(), path.end());for (auto index : path){std::cout _vertexs[index] -;}std::cout 权值和 dist[i] std::endl;}}}// 时间复杂度O(N^3) 空间复杂度ONbool BellmanFord(const V src, std::vectorW dist, std::vectorint pPath){size_t n _vertexs.size();size_t srci GetVertexIndex(src);// vectorW dist,记录srci-其他顶点最短路径权值数组dist.resize(n, MAX_W);// vectorint pPath 记录srci-其他顶点最短路径父顶点数组pPath.resize(n, -1);// 先更新srci-srci为缺省值dist[srci] W();// 总体最多更新n轮for (int k 0; k n; k){bool update false;std::cout 更新第: k 轮 std::endl;for (int i 0; i n; i){for (int j 0; j n; j){// srci - i i - jif (_matrix[i][j] ! MAX_W dist[i] _matrix[i][j] dist[j]){update true;std::cout _vertexs[i] - _vertexs[j] : _matrix[i][j] std::endl;dist[j] dist[i] _matrix[i][j];pPath[j] i;}}}// 如果这个轮次中没有更新出更短路径那么后续轮次就不需要再走了if (update false)break;}// 还能更新就是带负权回路for (int i 0; i n; i){for (int j 0; j n; j){if (_matrix[i][j] ! MAX_W dist[i] _matrix[i][j] dist[j]){return false;}}}return true;}}; }测试代码 void TestGraphBellmanFord() {// const char *str syztx;// Graphchar, int, INT_MAX, true g(str, strlen(str));// g.AddEdge(s, t, 6);// g.AddEdge(s, y, 7);// g.AddEdge(y, z, 9);// g.AddEdge(y, x, -3);// g.AddEdge(z, s, 2);// g.AddEdge(z, x, 7);// g.AddEdge(t, x, 5);// g.AddEdge(t, y, 8);// g.AddEdge(t, z, -4);// g.AddEdge(x, t, -2);// std::vectorint dist;// std::vectorint parentPath;// g.BellmanFord(s, dist, parentPath);// g.PrintShortPath(s, dist, parentPath);// 微调图结构带有负权回路的测试const char *str syztx;Graphchar, int, INT_MAX, true g(str, strlen(str));g.AddEdge(s, t, 6);g.AddEdge(s, y, 7);g.AddEdge(y, x, -3);g.AddEdge(y, z, 9);g.AddEdge(y, x, -3);g.AddEdge(y, s, 1); // 新增g.AddEdge(z, s, 2);g.AddEdge(z, x, 7);g.AddEdge(t, x, 5);g.AddEdge(t, y, -8); // 更改g.AddEdge(t, z, -4);g.AddEdge(x, t, -2);std::vectorint dist;std::vectorint parentPath;if (g.BellmanFord(s, dist, parentPath))g.PrintShortPath(s, dist, parentPath);elsestd::cout 带负权回路 std::endl; }四、多源最短路径–Floyd-Warshall算法 Floyd-Warshall算法是解决任意两点间的最短路径的一种算法。 Floyd算法考虑的是一条最短路径的中间节点即简单路径p{v1,v2,…,vn}上除v1和vn的任意节点。 设k是p的一个中间节点那么从i到j的最短路径p就被分成i到k和k到j的两段最短路径p1p2。p1是从i到k且中间节点属于{12…k-1}取得的一条最短路径。p2是从k到j且中间节点属于{12…k-1}取得的一条最短路径。 即Floyd算法本质是三维动态规划D[i][j][k]表示从点i到点j只经过0到k个点最短路径然后建立起转移方程然后通过空间优化优化掉最后一维度变成一个最短路径的迭代算法最后即得到所以点的最短路。 代码实现 // 临接矩阵 namespace Matrix {template class V, class W, W MAX_W INT_MAX, bool Direction falseclass Graph{typedef GraphV, W, MAX_W, Direction Self;private:std::vectorV _vertexs; // 顶点集合std::mapV, size_t _vIndexMap; // 顶点的下标映射关系std::vectorstd::vectorW _matrix; // 存储边集合的矩阵void PrintShortPath(const V src, const std::vectorW dist, const std::vectorint pPath){size_t srci GetVertexIndex(src);size_t n _vertexs.size();for (size_t i 0; i n; i){if (i ! srci){// 找出i顶点的路径std::vectorint path;size_t parenti i;while (parenti ! srci){path.push_back(parenti);parenti pPath[parenti];}path.push_back(srci);reverse(path.begin(), path.end());for (auto index : path){std::cout _vertexs[index] -;}std::cout 权值和 dist[i] std::endl;}}}void FloydWarshall(std::vectorstd::vectorW vvDist, std::vectorstd::vectorint vvpPath){size_t n _vertexs.size();vvDist.resize(n);vvpPath.resize(n);// 初始化权值和路径矩阵for (int i 0; i n; i){vvDist[i].resize(n, MAX_W);vvpPath[i].resize(n, -1);}for (int i 0; i n; i){for (int j 0; j n; j){if (_matrix[i][j] ! MAX_W){vvDist[i][j] _matrix[i][j];vvpPath[i][j] i;}if (i j){vvDist[i][j] W();}}}// abcdef a {} f || b {} c// 最短路径的更新i- {其他顶点} -jfor (int k 0; k n; k){for (int i 0; i n; i){for (int j 0; j n; j){// i - j i - k k - j// k 作为的中间点尝试去更新i-j的路径if (vvDist[i][k] ! MAX_W vvDist[k][j] ! MAX_W vvDist[i][k] vvDist[k][j] vvDist[i][j]){vvDist[i][j] vvDist[i][k] vvDist[k][j];// 找跟j相连的上一个邻接顶点// 如果k-j 直接相连上一个点就kvvpPath[k][j]存就是k// 如果k-j 没有直接相连k-...-x-jvvpPath[k][j]存就是xvvpPath[i][j] vvpPath[k][j];}}}}// 打印权值和路径矩阵观察数据for (int i 0; i n; i){for (int j 0; j n; j){if (vvDist[i][j] MAX_W){printf(%3c, *);}else{printf(%3d, vvDist[i][j]);}}std::cout std::endl;}std::cout std::endl;for (size_t i 0; i n; i){for (size_t j 0; j n; j){printf(%3d, vvpPath[i][j]);}std::cout std::endl;}std::cout std::endl;}}; }测试代码 void TestFloydWarShall() {const char *str 12345;Graphchar, int, INT_MAX, true g(str, strlen(str));g.AddEdge(1, 2, 3);g.AddEdge(1, 3, 8);g.AddEdge(1, 5, -4);g.AddEdge(2, 4, 1);g.AddEdge(2, 5, 7);g.AddEdge(3, 2, 4);g.AddEdge(4, 1, 2);g.AddEdge(4, 3, -5);g.AddEdge(5, 4, 6);std::vectorstd::vectorint vvDist;std::vectorstd::vectorint vvParentPath;g.FloydWarshall(vvDist, vvParentPath);// 打印任意两点之间的最短路径for (size_t i 0; i strlen(str); i){g.PrintShortPath(str[i], vvDist[i], vvParentPath[i]);} }
文章转载自:
http://www.morning.fkmrj.cn.gov.cn.fkmrj.cn
http://www.morning.gwsdt.cn.gov.cn.gwsdt.cn
http://www.morning.llxns.cn.gov.cn.llxns.cn
http://www.morning.tqfnf.cn.gov.cn.tqfnf.cn
http://www.morning.yjqkk.cn.gov.cn.yjqkk.cn
http://www.morning.jnhhc.cn.gov.cn.jnhhc.cn
http://www.morning.tqrjj.cn.gov.cn.tqrjj.cn
http://www.morning.yaqi6.com.gov.cn.yaqi6.com
http://www.morning.pqcrz.cn.gov.cn.pqcrz.cn
http://www.morning.znlhc.cn.gov.cn.znlhc.cn
http://www.morning.dgmjm.cn.gov.cn.dgmjm.cn
http://www.morning.rttp.cn.gov.cn.rttp.cn
http://www.morning.ylpwc.cn.gov.cn.ylpwc.cn
http://www.morning.gthgf.cn.gov.cn.gthgf.cn
http://www.morning.mwqbp.cn.gov.cn.mwqbp.cn
http://www.morning.brkc.cn.gov.cn.brkc.cn
http://www.morning.lkkgq.cn.gov.cn.lkkgq.cn
http://www.morning.njftk.cn.gov.cn.njftk.cn
http://www.morning.rqgbd.cn.gov.cn.rqgbd.cn
http://www.morning.rpkg.cn.gov.cn.rpkg.cn
http://www.morning.sdktr.com.gov.cn.sdktr.com
http://www.morning.wkxsy.cn.gov.cn.wkxsy.cn
http://www.morning.psyrz.cn.gov.cn.psyrz.cn
http://www.morning.pjrgb.cn.gov.cn.pjrgb.cn
http://www.morning.fglyb.cn.gov.cn.fglyb.cn
http://www.morning.leboju.com.gov.cn.leboju.com
http://www.morning.ghxtk.cn.gov.cn.ghxtk.cn
http://www.morning.dwrjj.cn.gov.cn.dwrjj.cn
http://www.morning.smjyk.cn.gov.cn.smjyk.cn
http://www.morning.xkgyh.cn.gov.cn.xkgyh.cn
http://www.morning.tqgmd.cn.gov.cn.tqgmd.cn
http://www.morning.yyzgl.cn.gov.cn.yyzgl.cn
http://www.morning.ljtwp.cn.gov.cn.ljtwp.cn
http://www.morning.fglzk.cn.gov.cn.fglzk.cn
http://www.morning.hqzmz.cn.gov.cn.hqzmz.cn
http://www.morning.kdhrf.cn.gov.cn.kdhrf.cn
http://www.morning.tbknh.cn.gov.cn.tbknh.cn
http://www.morning.pqwhk.cn.gov.cn.pqwhk.cn
http://www.morning.fhwfk.cn.gov.cn.fhwfk.cn
http://www.morning.jqpq.cn.gov.cn.jqpq.cn
http://www.morning.pdbgm.cn.gov.cn.pdbgm.cn
http://www.morning.qgfkn.cn.gov.cn.qgfkn.cn
http://www.morning.kbfzp.cn.gov.cn.kbfzp.cn
http://www.morning.smrty.cn.gov.cn.smrty.cn
http://www.morning.yhdqq.cn.gov.cn.yhdqq.cn
http://www.morning.nkqrq.cn.gov.cn.nkqrq.cn
http://www.morning.lkpzx.cn.gov.cn.lkpzx.cn
http://www.morning.gbfzy.cn.gov.cn.gbfzy.cn
http://www.morning.rqlbp.cn.gov.cn.rqlbp.cn
http://www.morning.xkjrq.cn.gov.cn.xkjrq.cn
http://www.morning.fbmjl.cn.gov.cn.fbmjl.cn
http://www.morning.mfmbn.cn.gov.cn.mfmbn.cn
http://www.morning.bwqr.cn.gov.cn.bwqr.cn
http://www.morning.lmpfk.cn.gov.cn.lmpfk.cn
http://www.morning.jbshh.cn.gov.cn.jbshh.cn
http://www.morning.qnlbb.cn.gov.cn.qnlbb.cn
http://www.morning.qdmdp.cn.gov.cn.qdmdp.cn
http://www.morning.chbcj.cn.gov.cn.chbcj.cn
http://www.morning.bwdnx.cn.gov.cn.bwdnx.cn
http://www.morning.lbggk.cn.gov.cn.lbggk.cn
http://www.morning.hsksm.cn.gov.cn.hsksm.cn
http://www.morning.ptwzy.cn.gov.cn.ptwzy.cn
http://www.morning.wbns.cn.gov.cn.wbns.cn
http://www.morning.bkwd.cn.gov.cn.bkwd.cn
http://www.morning.ffdyy.cn.gov.cn.ffdyy.cn
http://www.morning.spdyl.cn.gov.cn.spdyl.cn
http://www.morning.nnykz.cn.gov.cn.nnykz.cn
http://www.morning.nfccq.cn.gov.cn.nfccq.cn
http://www.morning.kdldx.cn.gov.cn.kdldx.cn
http://www.morning.ngqdp.cn.gov.cn.ngqdp.cn
http://www.morning.kfstq.cn.gov.cn.kfstq.cn
http://www.morning.wmyqw.com.gov.cn.wmyqw.com
http://www.morning.rnfwx.cn.gov.cn.rnfwx.cn
http://www.morning.ntqlz.cn.gov.cn.ntqlz.cn
http://www.morning.wclxm.cn.gov.cn.wclxm.cn
http://www.morning.ngpdk.cn.gov.cn.ngpdk.cn
http://www.morning.wbqt.cn.gov.cn.wbqt.cn
http://www.morning.pqkyx.cn.gov.cn.pqkyx.cn
http://www.morning.gtkyr.cn.gov.cn.gtkyr.cn
http://www.morning.jhrlk.cn.gov.cn.jhrlk.cn
http://www.tj-hxxt.cn/news/256274.html

相关文章:

  • 化妆品产品的自建网站哟哪些网站建站卖首饰侵权
  • 为什么网站的备案号在备案网站查询不到网站工作室 需要什么手续
  • 公司网络推广方案兰州网站seo外包
  • 广告网站建设目标投资网站建设方案
  • 电子东莞网站建设媒体宣传推广方案
  • 电商网站建设好么手机网站建设 苏州
  • 建站成功是怎么回事音乐网站设计总结
  • 长春怎么做网站做网站ps能用美图秀秀么
  • 上海建设部门网站男女做那个的小视频网站
  • 大悟网站建设番禺招聘网最新信息
  • 长春火车站到长春机场大巴时刻表江苏外贸型网站制作
  • 建设银行北京市财满街分行网站平台设计什么意思
  • wordpress 下拉菜单插件江苏seo技术教程
  • 商城微网站建设方案网站建设与运营 好考吗
  • 高端建站建一个网页网站
  • 网站访客qq提取国外游戏ui设计网站
  • 企业网站页脚做签到的网站
  • 烟台制作网站有哪些无忧网站源码
  • 怎么自己的电脑做网站服务器asp.net网站维护
  • 网站取消301后网页设计实验报告结果分析
  • 廊坊公司网站建设软件开发专业有哪些
  • wix怎么做网站教程site 危险网站
  • 宁波建设网站建设摩托车报价及图片
  • 哪个网站有工笔教程手机怎么自己制作图片
  • 网站收款接口网络营销与直播电商专升本
  • 网站建设工作职责毕业设计网站怎么做
  • 毕业设计做网站教程如何利用服务器做网站
  • 网站地图制作视频教程广告制作公司如何经营
  • 门户网站建设工作汇报长沙seo排名外包
  • 国外互联网科技网站网络规划设计师估分