图论算法及其matlab程序代码.doc

图论算法及其MATLAB程序代码求赋权图GV,E,F中任意两点间的最短路的WARSHALLFLOYD算法设AAIJNN为赋权图GV,E,F的矩阵,当VIVJ∈E时AIJFVIVJ,否则取AII0,AIJ∞I≠J,DIJ表示从VI到VJ点的距离,RIJ表示从VI到VJ点的最短路中一个点的编号①赋初值对所有I,J,DIJAIJ,RIJJK1转向②②更新DIJ,RIJ对所有I,J,若DIKDKJ<DIJ,则令DIJDIKDKJ,RIJK,转向③③终止判断若DII<0,则存在一条含有顶点VI的负回路,终止或者KN终止否则令KK1,转向②最短路线可由RIJ得到例1求图64中任意两点间的最短路解用WARSHALLFLOYD算法,MATLAB程序代码如下N8A0281INFINFINFINF206INF1INFINFINF8607512INF1INF70INFINF9INFINF15INF03INF8INFINF1INF3046INFINF29INF403INFINFINFINF8630MATLAB中,INF表示∞DA赋初值FORI1NFORJ1NRI,JJENDEND赋路径初值FORK1NFORI1NFORJ1NIFDI,KDK,J0XKAI,J数组X记录A中不同的正数KK1临时变量FORS1K1IFXKXSKK0BREAKENDEND排除相同的正数KKKKENDENDENDKK1显示A中所有不同正数的个数FORI1K1FORJI1K将X中不同的正数从小到大排序IFXJ0KKKK1ZZZENDEND寻找TT中的树枝IFKK1TTY,ZZ0TTZZ,Y0PD0ENDEND砍掉TT中的树枝IFPDBREAKENDEND已砍掉了TT中所有的树枝PD0判断TT中是否有圈FORY1N1FORZY1NIFTTY,Z0PD1BREAKENDENDENDIFPDTI,J0TJ,I0假如TT中有圈ELSEQQ1ENDENDENDENDENDT显示近似最小生成树T,程序结束求二部图G的最大匹配的算法匈牙利算法,其基本思想是从G的任意匹配M开始,对X中所有M的非饱和点,寻找M增广路若不存在M增广路,则M为最大匹配若存在M增广路P,则将P中M与非M的边互换得到比M多一边的匹配M1,再对M1重复上述过程设GX,Y,E为二部图,其中X{X1,X2,,XN},Y{Y1,Y2,,YN}任取G的一初始匹配M如任取E∈E,则M{E}是一个匹配①令S,T,转向②②若M饱和X\S的所有点,则M是二部图G的最大匹配否则,任取M的非饱和点U∈X\S,令SS∪{U},转向③③记NS{V|U∈S,UV∈E}若NST,转向②否则取Y∈NS\T若Y是M的饱和点,转向④,否则转向⑤④设XY∈M,则令SS∪{X},TT∪{Y},转向③⑤UY路是M增广路,设为P,并令MM⊕P,转向①这里M⊕PM∪P\M∩P,是对称差由于计算M增广路P比较麻烦,因此将迭代步骤改为①将X中M的所有非饱和点不是M中某条边的端点都给以标号0和标记,转向②②若X中所有有标号的点都已去掉了标记,则M是G的最大匹配否则任取X中一个既有标号又有标记的点XI,去掉XI的标记,转向③③找出在G中所有与XI邻接的点YJ即XIYJ∈E,若所有这样的YJ都已有标号,则转向②,否则转向④④对与XI邻接且尚未给标号的YJ都给定标号I若所有的YJ都是M的饱和点,则转向⑤,否则逆向返回即由其中M的任一个非饱和点YJ的标号I找到XI,再由XI的标号K找到YK,,最后由YT的标号S找到标号为0的XS时结束,获得M增广路XSYTXIYJ,记P{XSYT,,XIYJ},重新记M为M⊕P,转向①⑤将YJ在M中与之邻接的点XK即XKYJ∈M,给以标号J和标记,转向②例1求图69中所示的二部图G的最大匹配匈牙利算法的MATLAB程序代码如下M5N5A0110011011011000110000011MM,N0FORI1MFORJ1NIFAI,JMI,J1BREAKENDEND求初始匹配MIFMI,JBREAKENDEND获得仅含一条边的初始匹配MWHILE1FORI1MXI0END将记录X中点的标号和标记FORI1NYI0END将记录Y中点的标号和标记FORI1MPD1寻找X中M的所有非饱和点FORJ1NIFMI,JPD0ENDENDIFPDXIN1ENDEND将X中M的所有非饱和点都给以标号0和标记,程序中用N1表示0标号,标号为负数时表示标记PD0WHILE1XI0FORI1MIFXI1KK1FORJ1KPDD1FORI1MIFMI,YYJXIYYJPDD0BREAKENDEND将YJ在M中与之邻接的点XK即XKYJ∈M,给以标号J和标记IFPDDBREAKENDENDIFPDDK1JYYJYJ不是M的饱和点WHILE1PK,2JPK,1YJJABSXYJ任取M的一个非饱和点YJ,逆向返回IFJN1BREAKEND找到X中标号为0的点时结束,获得M增广路PKK1ENDFORI1KIFMPI,1,PI,2MPI,1,PI,20将匹配M在增广路P中出现的边去掉ELSEMPI,1,PI,21ENDEND将增广路P中没有在匹配M中出现的边加入到匹配M中BREAKENDENDENDIFPDBREAKENDEND假如X中所有有标号的点都已去掉了标记,算法终止M显示最大匹配M,程序结束图69利用可行点标记求最佳匹配的算法步骤如下设GX,Y,E,F为完备的二部赋权图,L是其一个初始可行点标记,通常取,,0},|MAX{YYXXYYFM是GL的一个匹配①若X的每个点都是M的饱和点,则M是最佳匹配否则取M的非饱和点U∈X,令S{U},T,转向②②记NLS{V|U∈S,UV∈EL}若NLST,则GL没有完美匹配,转向③否则转向④③调整可行点标记,计算ALMIN{LXLYFXY|X∈S,Y∈Y\T}由此得新的可行顶点标记HV,,,VLA令LH,GLGH,重新给出GL的一个匹配M,转向①④取Y∈NLS\T,若Y是M的饱和点,转向⑤否则,转向⑥⑤设XY∈M,则令SS∪{X},TT∪{Y},转向②⑥在GL中的UY路是M增广路,记为P,并令MM⊕P,转向①利用可行点标记求最佳匹配算法的MATLAB程序代码如下N4A4551224642335021FORI1NLI,10LI,20ENDFORI1NFORJ1NIFLI,1LSI,1LJ,2ASI,JALLSI,1LJ,2ASI,JENDENDENDFORI1JSSLSI,1LSI,1ALEND调整可行点标记FORJ1JSTLTJ,2LTJ,2ALEND调整可行点标记FORI1NFORJ1N生成子图GLIFLI,1LJ,2AI,JGLI,J1ELSEGLI,J0ENDMI,J0K0ENDENDII0JJ0FORI1NFORJ1NIFGLI,JIIIJJJBREAKENDENDIFIIBREAKENDEND获得仅含GL的一条边的初始匹配MMII,JJ1BREAKELSENLS≠TFORJ1JSNPD1取Y∈NLS\TFORK1JSTIFTKNLSJPD0BREAKENDENDIFPDJJJBREAKENDENDPD0判断Y是否为M的饱和点FORI

图论算法及其matlab实现 程序,图论算法及其matlab程序代码.doc相关推荐

  1. 10100的素数c语言程序,C语言基础题目及代码.doc

    /*读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式: 在一行内输出n的各位数字 ...

  2. Java job interview:算法的经典与数据结构的程序图论

    ●递推法 ●递归法 ●穷举法 ●贪心算法 ●分治法 ●动态规划法 ●迭代法 ●分支界限法 ●回溯法 ●费式数列 ●巴斯卡三角形 ●老鼠走迷宫 ●骑士走棋盘 ●八个皇后 ●八枚银币 ●生命游戏 ●字符串 ...

  3. 图论基础知识与常见图处理算法

    本笔记涉及代码:https://github.com/hackeryang/Algorithms-Fourth-Edition-Exercises 1.图论应用广泛,例如地图中规划最短路线.搜索引擎中 ...

  4. 蚁群算法优化神经网络matlab源程序,粒子群优化神经网络的程序大集合

    粒子群程序集合 866867259psobp psobp.m pso(粒子群算法)优化神经网络 粒子群算法(PSO)应用于神经网络优化[matlab] PSOt A Particle Swarm Op ...

  5. 图论:图的四种最短路径算法

    目录: 1.DFS(单源最短路径算法) 例题1: DFS题目分析: 代码DFS: 2.Floyed(时间复杂度On^3) 1.应用场景: 2.解析算法: 核心代码1: 我的笔记 核心代码2: Floy ...

  6. em算法matlab图像应用,em算法matlab程序

    EM 算法作业 EM 算法简单 介绍及应用 EM 算法是当存在数据缺失问题时,极... Matlab 实现根据以上推导,可以很容易实现 EM 算法估计 GMM 参数.现... 题目:matlab 实现 ...

  7. 混合储能系统容量优化matlab 采用粒子群算法编制风光互补发电储能系统的容量优化程序

    混合储能系统容量优化matlab 采用粒子群算法编制风光互补发电储能系统的容量优化程序,程序采用超级电容和蓄电池的方案,得到最佳蓄电池和超级电容个数. YID:5348663612411738爱熬夜的 ...

  8. matlab贝叶斯编程代码,bnt 基于matlab的贝叶斯工具箱 各种程序与算法,在 网络编程中作为调用 238万源代码下载- www.pudn.com...

    文件名称: bnt下载 收藏√  [ 5  4  3  2  1 ] 开发工具: Others 文件大小: 12067 KB 上传时间: 2014-03-12 下载次数: 1 详细说明:基于matla ...

  9. 电动汽车 V2G 放电模型 算法 包含两个程序,均基于matlab

    电动汽车 V2G 放电模型 算法 包含两个程序,均基于matlab 实现以下两个功能: 1.考虑电动汽车家庭慢充和充电站快充两种模式下,模拟出一定数量电动汽车的日负荷曲线: 2.考虑V2G的电动汽车放 ...

最新文章

  1. 基于区域的CNN(R-CNN)
  2. RDKit | 基于RDKit的指定原子或键高亮
  3. CSP认证201803-3 URL映射[C++题解]:字符串处理、模拟
  4. flutter image boxfit
  5. 大数据学习笔记05:ZooKeeper集群
  6. 新东方java开发待遇_新东方教师薪酬与考核曝光!拿去即用(仅供参考)
  7. php odbc连接mysql数据库_PHP 使用 ODBC 连接 Mysql 数据库
  8. js/a标签下载文件方法
  9. 模块已加载但找不到入口点dllregisterserver
  10. modal 可拖拽 elementui antd
  11. android获取手机号ip地址,手机ip查询我的地址定位(网站如何抓取用户手机号和IP地址)...
  12. 2023年,前端开发就业前景好吗?
  13. ITUNES更改备份保存路径(不放C盘,不占C盘)
  14. Adobe国际认证|面向大学生和青少年的数字安全提示
  15. 安装pytorch3d最简单方法
  16. 2020牛客暑期多校训练营(第八场)E Enigmatic Partition —— 找规律,差分上差分,有丶东西
  17. 5分钟轻松建站(专业下载网站),无需空间和技术.
  18. ie的java打不开,ie浏览器无法打开链接
  19. 将JS嵌入C++ ————Spidermonkey引擎的使用
  20. 奇点iPhone版本正式上线

热门文章

  1. 服务器安装Centos教程
  2. mysql查询between_MySQL查询数据过滤之BETWEEN操作符简介
  3. python iloc用法_pandas.DataFrame.loc和.iloc用法详解
  4. 普通人如何在网赚创业挣点钱,你的想法真的对了吗?
  5. 高仿课程格子实现课程表的功能
  6. (6)TCP与UDP之端口号
  7. 祺哥刷题日记(五)数楼梯
  8. 会声会影V23.0.1.405版本下载滤镜使用教程详解
  9. element el-table的滚动条在合计上边
  10. 每日韩语:韩国年轻人婚礼形式的新趋势