【发布时间】:2014-03-31 07:34:38
【问题描述】:
我有一个用向量加权的边的强连通有向图,其中每个向量只有非负条目。我想找到一个循环,以使权重之和与对角向量 ([1, 1, 1, ... 1]) 之间的角度最小化。有没有针对这类事情的算法?
我相当有信心 Bellman-Ford 类型的算法会给我一个相当好的解决方案,但我不相信它会是-最好的-...
【问题讨论】:
-
“向量和 [1, 1, ..., 1] 之间的角度被最小化”肯定是一种奇怪的方式来指定最优标准。经过一点代数,这相当于“sum(x_i)^2/sum(x_i^2) 被最大化”,这似乎更有可能导致算法。 (尽管它似乎仍然不适合通常的图搜索算法,因为添加边会使分母比分子膨胀更多......)
-
好点。我一直在使用这种形式,但没有那样想。经过进一步考虑,我总是可以旋转我的参考系,这样我们就可以将投影最小化到任何向量上——比如 [1, 0, 0, 0, ..., 0]。您付出的代价是现在向量条目可能是负数。因此,我们只剩下最小化 xi^2/sum(xi^2)。我想可以节省一个总和。
-
我觉得可能是时候滥用一些不等式来获得“足够好”的近似值了。 Cauchy-Swarz 将 2 范数计算减少到 1 范数,三角不等式将 1 范数之和联系起来......
-
任务是找到一个使 f(x) = x0/2norm(x) 最大化的 x。虽然这是一个标量,但我们必须通过添加更多向量来评估它 - f(x + dx)。如果不保存 x 的每个条目,就无法完全做到这一点,而且由于大多数路径都有不同的向量,我们必须为每个顶点的每个路径保存向量。但是,如果我们愿意牺牲一些正确性并获得“足够好”的解决方案,我们可以使用 2norm(x + dx)
-
如果你坚持一个简单的循环,那么即使是通过汉密尔顿循环的归约来决定是否有可能使角度完全对齐也是 NP 困难的。如果可以重新访问弧,那么问题本质上是连续的,并且可能有一种方法可以通过凸规划计算最大对齐(分数)循环。
标签: algorithm theory graph-theory