树:连通且不含圈的无向图称为树。常用T表示。树中的边称为树枝,树中度为1的顶点称为树叶。

生成树:若T是包含图G的全部顶点的子图,它又是树,则称T是G的生成树。

最小生成树:设T=(V,E1)是赋权图G=(V,E)的一棵生成树,称T中全部边上的权数之和为生成树的权,记为w(T),即w(T)=Σw(e)。如果生成树T*的权w(T*)是G的所有生成树的权最小者,则称T*是G的最优树,即w(T*)=Σmin{w(T)}.

在许多实际问题中,如在许多城市间建立公路网、输电网或通信网,都可以归结为赋权图的最优树问题。

图论中最有树的求解方法通常有两种算法:

Krukal算法和Prim算法

这里利用LINGO求解最优树。

问题1 有10个城镇,城镇1处有一条河流,现需要从各城镇之间铺设管道,使城镇1处的水可以输送到个城镇,求铺设管道最少的设计方式。

!最优树的LINGO程序;
model:
sets:
point/1..10/:u;
link(point,point):d,x;
endsets
data:
!各城镇之间的距离;
d=0,8,5,9,12,14,12,16,17,22,
8,0,9,15,16,8,11,18,14,22,
5,9,0,7,9,11,7,12,12,17,
9,15,7,0,3,17,10,7,15,15,
12,16,9,3,0,8,10,6,15,15,
14,8,11,17,8,0,9,14,8,16,
12,11,7,10,10,9,0,8,6,11,
16,18,12,7,6,14,8,0,11,11,
17,14,12,25,15,8,6,11,0,10,
22,22,17,15,15,16,11,11,10,0;
@text()=@writefor(link(i,j)|x(i,j)#GT#0:'x(',i,',',j,')=',x(i,j),'');
enddata
min=@sum(link(i,j)|i#ne#j:d(i,j)*x(i,j));
n=@size(point);
@sum(point(j)|j#gt#1:x(1,j))>=1;
@for(point(i)|i#ne#1:@sum(point(j)|j#ne#i:x(j,i))=1);
@for(link(i,j):@BIN(x(i,j)));
@for(link(i,j)|i#ne#j:u(i)-u(j)+n*x(i,j)<=n-1);!不构成圈;
end

  结果为:

x(1,2)=1 x(1,3)=1 x(3,4)=1 x(3,7)=1 x(4,5)=1 x(5,6)=1 x(5,8)=1 x(7,9)=1 x(9,10)=1

原文链接:https://www.icourse163.org/

图论中最优树问题的LINGO求解的更多相关文章

  1. P中值选址问题的整数规划求解

    P中值选址问题的整数规划求解 一 .P-中值问题 p-中值选址问题是一个常见的选址问题. 问题是给定I个需求结点和J个待选设施地点, 要求选择p个地点建立设施, 使得运输成本最低. 下面是个英文的问题 ...

  2. 图论中TSP问题的LINGO求解与应用

    巡回旅行商问题(Traveling Salesman Problem,TSP),也称为货郎担问题.该问题可简单描述为走遍n个城市的最短路.几十年来,出现了很多近似优化算法.如近邻法.贪心算法.最近插入 ...

  3. Tarjan在图论中的应用(三)——用Tarjan来求解2-SAT

    前言 \(2-SAT\)的解法不止一种(例如暴搜?),但最高效的应该还是\(Tarjan\). 说来其实我早就写过用\(Tarjan\)求解\(2-SAT\)的题目了(就是这道题:[2019.8.14 ...

  4. Lingo求解线性规划案例2——多阶段投资问题

     凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 某公司现有资金30万元可用于投资,5年内有下列方案可供采纳:   1号方案:在年初投资1元,2年后可收回1. ...

  5. 用Lingo求解线性规划问题

    第一步:输入目标条件和约束条件.每行以分号隔开.然后点击工具栏上的Solve按钮,或Lingo菜单下的Solve子菜单. 第二步:检查report中的结果. 默认情况下,Lingo不进行灵敏度分析. ...

  6. 【算法】关于图论中的最小生成树(Minimum Spanning Tree)详解

    本节纲要 什么是图(network) 什么是最小生成树 (minimum spanning tree) 最小生成树的算法 什么是图(network)? 这里的图当然不是我们日常说的图片或者地图.通常情 ...

  7. Prim算法和Kruskal算法(图论中的最小生成树算法)

    最小生成树在一个图中可以有多个,但是如果一个图中边的权值互不相同的话,那么最小生成树只可能存在一个,用反证法很容易就证明出来了. 当然最小生成树也是一个图中包含所有节点的权值和最低的子图. 在一个图中 ...

  8. 图论中DFS与BFS的区别、用法、详解…

    DFS与BFS的区别.用法.详解? 写在最前的三点: 1.所谓图的遍历就是按照某种次序访问图的每一顶点一次仅且一次. 2.实现bfs和dfs都需要解决的一个问题就是如何存储图.一般有两种方法:邻接矩阵 ...

  9. 图论中DFS与BFS的区别、用法、详解?

    DFS与BFS的区别.用法.详解? 写在最前的三点: 1.所谓图的遍历就是按照某种次序访问图的每一顶点一次仅且一次. 2.实现bfs和dfs都需要解决的一个问题就是如何存储图.一般有两种方法:邻接矩阵 ...

随机推荐

  1. 小米手机收到升级鸿蒙OS提示?官方回应

    虽然尚未得到官方确认,但华为“鸿蒙”OS已经成为网络热门话题,在机圈引发热议. 本周,互联网上出现了显示为MIUI 10手机被锁定,屏幕上出现“小米将于2020年9月15日全面停止服务,届时您所有设备 ...

  2. POJ 2142:The Balance

    The Balance Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 4781   Accepted: 2092 Descr ...

  3. 配置anaconda 的仓库镜像

    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config -- ...

  4. Storm 流式计算框架

    1. 简介 是一个分布式, 高容错的 实时计算框架 Storm进程常驻内存, 永久运行 Storm数据不经过磁盘, 在内存中流转, 通过网络直接发送给下游 流式处理(streaming) 与 批处理( ...

  5. Linux学习《第二章命令》本章小结

    经过这一章的学习,了解了常用的命令.这是学习Linux系统最最基础的工作,必须努力掌握,个人觉得,并不是这个章节学习结束之后,命令的学习就结束了,而是刚刚开始,今后在每个知识点学习过程中,都会 学习到 ...

  6. zookeeper 安装及集群

    一.zookeeper介绍 zookeeper是一个中间件,为分布式系统提供协调服务,可以为大数据服务,也可以为java服务. 分布式系统,很多计算机组成一个整体,作为一个整体一致对外并处理同一请求, ...

  7. 13 ~ express ~ 后台页面的搭建

    一, 后台路由文件  /router/admin.js  var express = require('express') var router = express.Router() /** * 验证 ...

  8. 将本地项目映射到外网(tomcat web项目)

    1.首先如上图下载nat123软件,该软件可以免费内网映射. 2.根据上面图片,按要求填写即可:内网端口:自己web服务对应端口,内网地址:本机地址可以使默认localhost,内网ip,其余默认即可 ...

  9. linux中redis伪主从搭建

    1.解压redis.tgz到usr/local/redis下 2.在redis/下执行 make 3.在redis/src/下执行 make install PREFIX=/usr/local/red ...

  10. Oracle 查询重复数据方法

    查询某个字段存在重复数据的方法: select * from tablename where id in (select id from tablename group by id having co ...