问个算法,比较难

bentu610 2009-08-06 05:15:57
现在问题如下:
有n个整型变量a1,a2,……,an,每个变量有一个取值范围[bi,di]
另外有一个稀疏矩阵(mij)n*n,
定义
ci=sum(mij*(ai==aj?0:1)) j=0,1,……,n
s=sum(ci) i=0,1,……n
求当s最小时的a1,a2,……,an的值
...全文
228 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hua_zhixing_ 2009-08-07
  • 打赏
  • 举报
回复
依题意:
1,if(mij+mji<0),则ai!=aj;
2.if(mij+mji>=0),则ai==aj;
用矩阵(易证明为对角矩阵)把它存储起来,再根据取值范围[bi,di],求使该矩阵最大程度成立的组合。
fire_woods 2009-08-07
  • 打赏
  • 举报
回复
问题是没有,遍历肯定能解决的,只是时间复杂度.....
yinlu78 2009-08-07
  • 打赏
  • 举报
回复
这个问题求最值,让计算机求解可能有问题!
ToBeTough 2009-08-07
  • 打赏
  • 举报
回复
oyzdz1988 2009-08-06
  • 打赏
  • 举报
回复
请问稀疏矩阵中的值都是非负的吗?
还是不确定。。。
  • 打赏
  • 举报
回复
好难。

最简单的想法。
将所有的取值范围排序,切分成最小长度。

比如[1,4][2,3][2,5] 就被切分成[1,2)[2,3),[3,4),[4,5]小区间

对于变量 a1……an 可能属于其中的几个小区间, 比如ak的取值范围[2,5]则ak可能属于[2,3),[3,4),[4,5]
对于在同一个小区间内的am\an均可以认为是相等的。

所以现在就是给a1…… an 一个分配,每一个分配到一个区间,可以使得
s最小。

最差的方法就可以是枚举了。
不过估计时间复杂度非常高。

大家再想想更好的方法。


[Quote=引用楼主 bentu610 的帖子:]
现在问题如下:
有n个整型变量a1,a2,……,an,每个变量有一个取值范围[bi,di]
另外有一个稀疏矩阵(mij)n*n,
定义
ci=sum(mij*(ai==aj?0:1)) j=0,1,……,n
s=sum(ci) i=0,1,……n
求当s最小时的a1,a2,……,an的值
[/Quote]
bentu610 2009-08-06
  • 打赏
  • 举报
回复
j=1...n,不好意思
bffeey 2009-08-06
  • 打赏
  • 举报
回复
稀疏矩阵(mij)n*n, j=0,1,……,n ?????

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧