社区
数据结构与算法
帖子详情
请教一个图论算法
haian2442
2007-01-05 11:35:18
在一个无向图中,给出两个点u和v,并且u和v间没有边,求出这两个点间最多的不相交的简单路径数目?
...全文
593
20
打赏
收藏
请教一个图论算法
在一个无向图中,给出两个点u和v,并且u和v间没有边,求出这两个点间最多的不相交的简单路径数目?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lin_programmer
2007-02-28
打赏
举报
回复
一个相似的问题:
给出一组顶点对(ui,vi),如何尽量的把它们连接起来(ui连接vi),并且通路不相交
更实际的问题:
ui,vi是平面上的点,如何用直线段把它们在这个平面上连接起来,通路不相交,并且线段具有宽度
haian2442
2007-02-28
打赏
举报
回复
这个可以用网络流的方法来做。
将这个图中除uv外的节点都分解T成两个节点T1和T2,而T1只继承那些终点为T的边,T2只继承起点为T的边,并且T1和T2间有一条边。这样就会产生一个新的图,并设置每条边的容量为1,这样就可以求出来了
zzwu
2007-01-22
打赏
举报
回复
分2步来求出两点间最多的不相交的简单路径数目:
1.求出两点间所有(不考虑相交不相交)的简单路径;
2.从所有简单路径中,再寻找最大不相交路径子集.
wurenxiao
2007-01-20
打赏
举报
回复
如图:
4----------5
/| /|
/ | / |
0--|-------1 |
| | | |
| 6-------|--7
| / | /
|/ |/
2----------3
求:0 到 1 的路径
#include <iostream.h>
const int MAX = 8;
//建立与图对应的距阵
int num[MAX][MAX]={{1,1,1,0,1,0,0,0}, {1,1,0,1,0,1,0,0},{1,0,1,1,0,0,1,0},
{0,1,1,1,0,0,0,1},{1,0,0,0,1,1,1,0},{0,1,0,0,1,1,0,1},{0,0,1,0,1,0,1,1},
{0,0,0,1,0,1,1,1}};
/**
检测重复循环的可能
*/
bool test(int s[], int length, int key)
{
for(int i=0; i<length; i++)
{
if(s[i] == key)
return false;
}
return true;
}
/**
start:起始点
end:终点
*/
void Search(int start, int end)
{
int top = 0;
int d[MAX]={0};
int s[MAX] = {0};
bool is = true;
d[top] = start;
while(top > -1)
{
is = true;
while(s[d[top]]++ < MAX)
{
if(d[top] != s[d[top]]-1 && num[d[top]][s[d[top]]-1] == 1)
{
if(s[d[top]]-1 == end) //找到输出路径
{
for(int i=0; i<=top; i++)
{
cout<<d[i]<<' ';
}
cout<<end<<endl;
}
else
{
if(test(d, top, s[d[top]]-1))
{
top++;
d[top] = s[d[top-1]]-1;
s[d[top]] = 0;
is = false;
break;
}
}
}
}
if(is == true)
{
top--; //回朔
}
}
}
void main()
{
Search(0,1); //求 0 到 1 的路径
}
输出结果:
0 1
0 2 3 1
0 2 3 7 5 1
0 2 3 7 6 4 5 1
0 2 6 4 5 1
0 2 6 4 5 7 3 1
0 2 6 7 3 1
0 2 6 7 5 1
0 4 5 1
0 4 5 7 3 1
0 4 5 7 6 2 3 1
0 4 6 2 3 1
0 4 6 2 3 7 5 1
0 4 6 7 3 1
0 4 6 7 5 1
Press any key to continue
haian2442
2007-01-20
打赏
举报
回复
bigc:求1-4间长为22时路径
haian2442
2007-01-20
打赏
举报
回复
bigc: 对Google那题我没意识到K可能取很大的情况。但是你的算法在下面的图中可能有问题:
1----2----3----4
/ \ |\
5---6 7--
37为一个长为2的回路,256为一个长为3的回路,那么取k=22时的求解
haian2442
2007-01-20
打赏
举报
回复
zzwu: 3-6间是两条路径
zzwu
2007-01-19
打赏
举报
回复
如果是
5----6
/ /|
/ / |
1----2 |
| | 8
| | /
| |/
3----4
在3-6之间有几个不相交的简单路径数?
bigc2000
2007-01-19
打赏
举报
回复
这个题个人觉得值得关注,希望贴子别掉下去了。
bigc2000
2007-01-19
打赏
举报
回复
To haian2442() ( ) :
当K变得很大时,不现实,最好的探测方式应该是求简单路径数,只要有一条恰好=K-2*n(n〉=0)
haian2442
2007-01-19
打赏
举报
回复
我刚看了些网络流方面的问题,主要针对的是边上的容量,而这个问题可以看成节点的容量。
或者网络流中的还有什么方法来解决这个问题?请赐教
haian2442
2007-01-19
打赏
举报
回复
bigc: u,v之间是否存在一条经过K-1个节点的路径: google的题可以用矩阵运算来求,用求传递闭包的方法来求
bigc2000
2007-01-17
打赏
举报
回复
认为用网络流的朋友们,说说,你们怎么想的?
bigc2000
2007-01-17
打赏
举报
回复
如果这个题很好的解决了,那么
今年google最后一道题目就简单了
请问 u,v之间是否存在一条经过K-1个节点的路径(可以重复)。
ruanzheng13
2007-01-15
打赏
举报
回复
最大流
cjq87
2007-01-05
打赏
举报
回复
每遍历一个元素就打上标记,标记清除之前不再被访问,可以避免“相交”
你说的最优化指什么啊?
haian2442
2007-01-05
打赏
举报
回复
cjq87 : 我也考虑过广度搜索,但是没有一个比较好的方式来解决“不相交”以及最优化这两个限制?你能够说的具体点吗?
cjq87
2007-01-05
打赏
举报
回复
我觉得用广度搜索是很容易实现的
galois_godel
2007-01-05
打赏
举报
回复
网络流吧
haian2442
2007-01-05
打赏
举报
回复
最优化指:最后的不相交路径的数目最多。
如果按照你的方法,那算法的复杂度很高
LightOJ-1192 Left Right
LightOJ-1192 Left Right nim博弈, 将灰色和白色棋子之间的距离看作是石头的数量, 可以转化成简单的nim博弈, 直接以后求解。 #include <bits/stdc++.h> using namespace std; int main () { int t, n, kase = 0; int x1, x2; cin >...
LightOJ 1186/ LightOJ 1192【 Nim博弈变形】距离表示石子数量
You are given an n x n chess board. Only pawn is used in the 'Incredible Chess' and they can move forward or backward. In each column there are two pawns, one white and one black. White pawns are plac...
电力系统机组组合优化调度(IEEE14节点、IEEE30节点、IEEE118节点)(Matlab代码实现)
内容概要:本文介绍了基于Matlab代码实现的电力系统机组组合优化调度方法,适用于IEEE14、IEEE30和IEEE118节点标准测试系统。该资源聚焦于电力系统中发电机组的优化调度问题,通过智能优化算法实现对机组启停、出力分配等决策的最优化,旨在降低运行成本、提升系统可靠性和经济性。文中系统阐述了从数学模型构建、多类型约束处理到优化算法设计与仿真实验验证的完整研究流程,并提供了可复现的Matlab代码,涵盖目标函数设定、约束条件建模及算法求解过程,适用于电力系统调度、能源优化等相关领域的科研与教学实践。; 适合人群:具备电力系统分析、运筹学基础及Matlab编程能力的高校学生、科研人员和工程技术人员,尤其适合从事电力系统优化、智能算法应用研究的研究生与青年学者。; 使用场景及目标:①用于电力系统机组组合(UC)问题的教学实验与课程设计;②支撑科研工作中对遗传算法、粒子群算法等智能优化算法在电力系统调度中应用的研究;③为含可再生能源接入的现代电网调度提供仿真平台与技术参考,助力低碳电力系统规划与运行。; 阅读建议:建议读者结合电力系统调度理论与优化建模知识,深入理解机组组合问题的数学本质与物理约束,再通过Matlab代码进行仿真实践,重点关注算法收敛性、多目标权衡策略与不同测试系统间的性能对比,以实现理论与实践的深度融合。
(共179页PPT)数字化供应链的转型战略与架构设计.pptx
(共179页PPT)数字化供应链的转型战略与架构设计.pptx
【风电功率预测】【多变量输入单步预测】基于TCN-BiGRU-Attention的风电功率预测研究(Matlab代码实现)
内容概要:本文研究了一种基于TCN-BiGRU-Attention混合神经网络模型的风电功率预测方法,旨在提升预测精度。该模型融合了时间卷积网络(TCN)对局部时序特征的强大提取能力、双向门控循环单元(BiGRU)对时间序列前后依赖关系的双向捕捉能力,以及注意力(Attention)机制对关键时间步特征的自适应加权聚焦能力。研究采用多变量输入方式,综合纳入风速、风向、温度等多种气象因素作为输入特征,实现风电功率的单步预测。通过对实际风电场数据的实验验证,该模型在预测精度方面相较于单一模型或其他组合模型展现出显著优势,有效降低了预测误差。; 适合人群:具备一定机器学习与深度学习基础,从事新能源预测、电力系统调度或相关领域研究的科研人员与工程技术人员。; 使用场景及目标:①应用于风电场功率实时预测,提升电网调度的稳定性与安全性;②为电力市场交易、储能配置和可再生能源消纳提供高精度数据支持;③作为深度学习模型融合设计的参考案例,推动时序预测技术的发展。; 阅读建议:此资源提供了完整的Matlab代码实现,读者在学习时应重点关注模型结构的设计原理、多变量特征的处理方式以及Attention机制的融入方法,建议结合代码进行复现实验,调整参数以深入理解各组件对最终预测性能的影响。
数据结构与算法
33,025
社区成员
35,334
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章