我问题的一部分是最小化某些数字的加权和的绝对值。我必须找到重量。
假设我有一组A,a1,a2,a3和a4,使得(a1,a2 > 0),(a3,a4 < 0)
最小重量为0.1 (10%),最大为0.4 (40%)。我在寻找权重w,其方式是加权和为零;如果不可能为零,则最接近于零。可以使用一个简单的线性模型来实现这一点:
Minimise E
E >= SUM w * a
E >= -(SUM w * a)
SUM w = 1
w >= 0.1 for all w
w <= 0.4 for all w
一个简单的线性规划就足以很快地找到解。但是,我非常想找到
我有一个整数序列(正和负),如下所示:
12,-54,32,1,-2,-4,-8,12,56,-22,-21,4,17,35
我需要找到这个序列的任何子序列(当然还有该子序列的起始索引和结束索引)可能出现的最差结果(较小的值总和)。
有没有办法做到这一点而不是2^n (逐个计算所有可能的序列)?
例如,使用这个简单的序列:
1,2,-3,4,-6,4,-10,3,-2
值的较小和将是子序列:
-6,4,-10 (with start index 4 and end index 6)
给定一个参数k,我试图从有向图中删除k个边,这样最大流就会尽可能地减少。这个图有一个源和一个接收器t,每个边的容量是一个。图可能包含循环,也可能不包含循环。
我建议的解决方案是首先对图执行拓扑排序,使用“宽恕”循环的算法--也许是通过忽略将我们带回源的边缘。然后(假设k >= 1):
i = 0
for each vertex u order by topological(u)
for each edge (u, v) order by topological(v) descending
if topological(v) > topological(u) th
我在Java中有一个练习,编写一个方法(如下所示),该方法接收一个包含数字和int x的数组作为参数,如果在数字数组对中(不必按以下顺序)其绝对差大于x,则返回true。
例如,对于数组{1,5,2,18,4,2,11},我只能使用一个循环。谢谢你的帮助
public boolean difference (int[] a, int x)