次小生成树 POJ 2728

本文介绍了一种使用Prim算法求解最小生成树(MST)的问题,并在此基础上提出了一种优化方法,通过比较MST与原始边集的差异来寻找可能的更优解。文章详细解释了算法实现过程,包括初始化地图、执行Prim算法获取初步MST,以及进一步优化MST的过程。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 110;
const int INF = 0x3f3f3f3f;
int map[maxn][maxn], used[maxn][maxn], lowc[maxn],pre[maxn];
int n, m, vis[maxn], Max[maxn][maxn];
void init ()
{
for (int i=0; i<maxn; i++)
for (int j=0; j<maxn; j++)
if (i == j)
map[i][j] = 0;
else
map[i][j] = INF;
memset (used, 0, sizeof(used));
memset (lowc, 0, sizeof(lowc));
memset (pre, 0, sizeof(pre));
memset (vis, 0, sizeof(vis));
}
int prim (int s)
{
int ans = 0, mini, p;
for (int i=1; i<=n; i++)
{
lowc[i] = map[s][i];
pre[i] = s;
}
vis[s] = 1;
for (int i=1; i<n; i++)
{
mini = INF;
for (int j=1; j<=n; j++)
{
if (!vis[j] && mini>lowc[j])
{
mini = lowc[j];
p = j;
}
}
ans += mini;
vis[p] = 1;
used[p][pre[p]] = used[pre[p]][p] = 1;
for (int j=1; j<=n; j++)
{
if (vis[j] && p!=j)
Max[p][j] = Max[j][p] = max (Max[j][pre[p]], lowc[p]);
if (!vis[j] && map[j][p]<lowc[j])
{
lowc[j] = map[j][p];
pre[j] = p;
}
}
}
return ans;
}
int SMST (int ans)
{
int mini = INF;
for (int i=1; i<=n; i++)
for (int j=i+1; j<=n; j++)
if (!used[i][j] && map[i][j]!=INF)
mini = min (mini, ans - Max[i][j] + map[i][j]);
return mini;
}

 

int main ()
{
int t;
scanf ("%d", &t);
while (t --)
{
init ();
scanf ("%d %d", &n, &m);
while (m --)
{
int u, v, s;
scanf ("%d %d %d", &u, &v, &s);
map[u][v] = map[v][u] = s;
}
int num1 = prim(1);
int num2 = SMST(num1);
if (num1 != num2)
printf ("%d\n", num1);
else
printf ("Not Unique!\n");
}
return 0;
}

转载于:https://www.cnblogs.com/wazqWAZQ1/p/4680257.html

数据驱动的两阶段分布鲁棒(1-范数和∞-范数约束)的电热综合能源系统研究(Matlab代码实现)内容概要:本文围绕“数据驱动的两阶段分布鲁棒(1-范数和∞-范数约束)的电热综合能源系统研究”展开,提出了一种结合数据驱动与分布鲁棒优化方法的建模框架,用于解决电热综合能源系统在不确定性环境下的优化调度问题。研究采用两阶段优化结构,第一阶段进行预决策,第二阶段根据实际场景进行调整,通过引入1-范数和∞-范数约束来构建不确定集,有效刻画风电、负荷等不确定性变量的波动特性,提升模型的鲁棒性和实用性。文中提供了完整的Matlab代码实现,便于读者复现和验证算法性能,并结合具体案例分析了不同约束条件下系统运行的经济性与可靠性。; 适合人群:具备一定电力系统、优化理论和Matlab编程基础的研究生、科研人员及工程技术人员,尤其适合从事综合能源系统、鲁棒优化、不确定性建模等相关领域研究的专业人士。; 使用场景及目标:①掌握数据驱动的分布鲁棒优化方法在综合能源系统中的应用;②理解1-范数和∞-范数在构建不确定集中的作用与差异;③学习两阶段鲁棒优化模型的建模思路与Matlab实现技巧,用于科研复现、论文写作或工程项目建模。; 阅读建议:建议读者结合提供的Matlab代码逐段理解算法实现细节,重点关注不确定集构建、两阶段模型结构设计及求解器调用方式,同时可尝试更换数据或调整约束参数以加深对模型鲁棒性的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值