有一些N城市通过N-1公路连接起来。每一对相邻的城市都由双向道路连接,即
i-th城市与i+1-th市连接为所有1 <= i <= N-1,如下所示:
1 --- 2 --- 3 --- 4...............(N-1) --- N
我们得到了类型为M的(c1, c2)到的查询,断开了对城市c1和c2的。为此,我们决定block一些道路来满足所有这些M查询。
现在,我们必须确定需要阻塞的最少道路数,这样所有查询都将被服务。
示例:
inputs:
- N = 5 // number of cities
- M = 2 // number of query re
最近,我在Tardos和Kleinberg的“算法设计”第四章中读到了区间调度算法。为间隔调度问题提供的解决方案如下:
Sort the n intervals based on their finishing time and store in array F
A = [] #list of intervals
S = array with property that S[i] contains the finishing time of the ith interval
i = 0
For j = 0 to n-1
if S[j] >= F[i] #this interval
我问题的一部分是最小化某些数字的加权和的绝对值。我必须找到重量。
假设我有一组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
一个简单的线性规划就足以很快地找到解。但是,我非常想找到
广度优先搜索和深度优先搜索是两个相同的算法,除了它们所做的事情,以及它们使用的数据结构。
广度优先搜索:
q := queue
q.append(root node of tree)
while q is not empty:
n := q.pop()
if n is the node being searched for:
return n
if n has children:
c := children of node
for i in c:
q.push(i)
深度优先搜索:
s := sta
基本上,我正在编写的这个算法将一个列表L作为输入,并希望找到一个数字x,使得L,i中的所有项,减去x的平方和和都最小化。求出abs(L[i]-x)**2之和的最小x。到目前为止,我的算法正在做它应该做的事情,只是在浮点的情况下不是这样。我不确定如何实现浮点。例如,理想情况下,[2, 2, 3, 4]会产生结果2.75,但我的算法目前不能产生浮点整数。
def minimize_square(L):
sumsqdiff = 0
sumsqdiffs = {}
for j in range(min(L), max(L)):
for i in
我无法理解我的算法书中给出的优化链式矩阵乘法(使用DP)代码示例。
int MatrixChainOrder(int p[], int n)
{
/* For simplicity of the program, one extra row and one extra column are
allocated in m[][]. 0th row and 0th column of m[][] are not used */
int m[n][n];
int i, j, k, L, q;
/* m[i,j] = Minimum number