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

海珠区专业做网站公司优秀网页设计导航

海珠区专业做网站公司,优秀网页设计导航,wordpress+php调优,上海 网站设计公司负权图 此图用朴素迪氏或堆优化迪氏都会出错#xff0c;floyd可以处理。 负环图 但floyd无法处理负权环#xff0c;最短距离是无穷小。在环上不断循环。 经过k条边的最短距离#xff08;可能有负权变#xff09; 贝尔曼福特算法(bellman_ford)就是解决此问题的。 原理 …负权图   此图用朴素迪氏或堆优化迪氏都会出错floyd可以处理。 负环图 但floyd无法处理负权环最短距离是无穷小。在环上不断循环。 经过k条边的最短距离可能有负权变 贝尔曼福特算法(bellman_ford)就是解决此问题的。 原理 循环k次循环第i次时m_vDis表示各点最多经过i-1条边的最短距离vDis表示各点最多经过i条边的最短距离。 核心代码 templateconst int INF1000*1000*1000 class CBellMan { public:     CBellMan(int n, const vectorvectorint edges,int s , int k )     {         m_vDis.assign(n, INF);         m_vDis[s] 0;         for (int i 1; i k; i)         {             vectorint curDis m_vDis;             for (const auto v : edges)             {                 if (INF m_vDis[v[0]])                 {                     continue;                 }                 curDis[v[1]] min(curDis[v[1]], m_vDis[v[0]] v[2]);             }             m_vDis.swap(curDis);         }     }     vectorint m_vDis; }; 测试样例 #include vector #includeassert.h using namespace std; int main() {     const int INF 1000 * 1000 * 1000;     vectorvectorint edges { {0,1,1},{1,2,2},{2,3,3},{3,0,-7} };     vectorvectorint results { {0,INF,INF,INF},{0,1,INF,INF},{0,1,3,INF},{0,1,3,6},{-1,1,3,6},{-1,0,3,6},{-1,0,2,6},{-1,0,2,5},{-2,0,2,5} };     for (int i 0; i results.size(); i)     {         CBellMan bm(4, edges, 0, i);         for (int j 0; j 4; j)         {             assert(bm.m_vDis[j] results[i][j]);         }     } } 最短路径 最短路径就是经过“点数-1”条边的最短路径。如果没环这些边可以到达任意点。如果有正权环和0权环则拿掉这个环。如果负权环则最小距离是无穷小。下面来检测负权环。循环“点数-1”后再循环一次如果有点的最短距离变小则一定有负权环没负权环不会变短。如果有负权环则再循环一次一定有点任意负权环的负权边的终点距离变短。假定此点是e拿掉负权环上所有的边后源点到e的最短路径为Path。不拿掉负权环则e的最短路径为:Path此负权环。 核心代码 templateconst int INF1000*1000*1000 class CBellMan { public:     CBellMan(int n, const vectorvectorint edges,int s , int k )     {         m_vDis.assign(n, INF);         m_vDis[s] 0;         for (int i 1; i k; i)         {             vectorint curDis m_vDis;             Do(edges, curDis);             m_vDis.swap(curDis);         }     }     bool Check(const vectorvectorint edges)     {         vectorint curDis m_vDis;         Do(edges, curDis);         for (int i 0; i curDis.size(); i)         {             if (m_vDis[i] ! curDis[i])             {                 return true;             }         }         return false;     }     void Do(const std::vectorstd::vectorint edges, std::vectorint curDis)     {         for (const auto v : edges)         {             if (INF m_vDis[v[0]])             {                 continue;             }             curDis[v[1]] min(curDis[v[1]], m_vDis[v[0]] v[2]);         }     }     vectorint m_vDis; }; 测试样例 #include vector #includeassert.h #include BellMan.h using namespace std; void Test1() {     const int INF 1000 * 1000 * 1000;     vectorvectorint edges { { 0,1,1 },{ 1,2,2 },{ 2,3,3 },{ 3,0,-7 } };     vectorvectorint results { { 0,INF,INF,INF },{ 0,1,INF,INF },{ 0,1,3,INF },{ 0,1,3,6 },{ -1,1,3,6 },{ -1,0,3,6 },{ -1,0,2,6 },{ -1,0,2,5 },{ -2,0,2,5 } };     for (int i 0; i results.size(); i)     {         CBellMan bm(4, edges, 0, i);         for (int j 0; j 4; j)         {             assert(bm.m_vDis[j] results[i][j]);         }     } } void Test2() {     const int INF 1000 * 1000 * 1000;     vectorvectorint edges { { 0,1,1 },{ 1,2,2 },{ 2,3,3 },{ 3,0,-7 } };     vectorint results { false,false,true };     for (int i 0; i 3; i)     {         edges[3][2] -5 - i;         CBellMan bm(4, edges, 0, 3);         assert(results[i] bm.Check(edges));     } } int main() {     Test1();     Test2(); }   其它 测试环境 win7 VS2019 C17 相关下载 源码及测试用例https://download.csdn.net/download/he_zhidan/88393784doc版文档排版好https://download.csdn.net/download/he_zhidan/88348653
http://www.w-s-a.com/news/588995/

相关文章:

  • 做网上竞彩网站合法吗免费网站建设品牌
  • 网站开发所需要的的环境客户关系管理的内涵
  • 优质做网站公司做软件的人叫什么
  • 徐州市徐州市城乡建设局网站首页网站建设刂金手指下拉十五
  • 建设游戏网站目的及其定位市场营销策略概念
  • 小学电教检查网站建设资料wordpress谷歌字体
  • 南通做网站的公司有哪些中国建筑论坛网
  • 技术支持 佛山网站建设wordpress不用ftp
  • 广州定制app开发wordpress配置搜索引擎优化
  • 兰州网站建设论坛四川建设网官网登录
  • 在线作图免费网站湖南批量出品机
  • 深圳做网站公司有哪些地方妇联加强网站平台建设
  • vps建设网站别人访问不了网页链接生成器
  • 网站建设一般要多少钱电商平台取名字大全
  • 怎么做网站封面上的图网站开发语言 微信接口
  • 免费观看网站建设优化安徽
  • 上海电商网站开发公司做婚恋网站的翻译好吗
  • 以网站建设为开题报告大数据技术就业前景
  • dw做网站字体 别人电脑显示青岛活动策划公司
  • 网站成立时间查询墨猴seo排名公司
  • 技术支持 随州网站建设苏州企业网站建设定制
  • 美食网站开发目的与意义网站开发环境选择
  • 青岛西海岸新区城市建设局网站开发板在null不可用
  • 企业信息管理系统免费seo优化个人博客
  • 做任务的设计网站泰州哪里做网站
  • 什么网站可以做设计赚钱吗南京十大软件公司排名
  • 网站开发时间进度北京有哪些著名网站
  • 深圳比较好的设计网站公司自己的网站到期域名如何续费
  • 温州做网站哪儿新云网站模版
  • 网站开发 视频存在哪检察院前期网站建设