小编ani*_*udh的帖子

在没有任何负前缀的图表中查找最短路径

在具有正边缘和负边缘的有向图中找到从源到目的地的最短路径,使得在路径中的任何点处,在其之前的边缘的总和为负.如果不存在这样的路径也报告.

我试图使用改良的Bellman Ford,但找不到正确的解决方案.


我想澄清几点:

  1. 是的,可以有负重量循环.
  2. n是边数.
  3. 假设问题有解,则存在O(n)长度路径.
  4. + 1/-1边缘权重.

algorithm constraints shortest-path bellman-ford

17
推荐指数
3
解决办法
2412
查看次数

优化matlab for循环

我有一个代码的后续循环(计算直方图).我在Matlab写作.由于我是Matlab的新手,我不知道有任何更快的方法可以做到这一点.我现在正在写作

for i=1:size(b)
    a(b(i)) = a(b(i)) + 1;
end
Run Code Online (Sandbox Code Playgroud)

有没有更快的方法来执行此操作,最好是那些不需要for循环的方法?

matlab

6
推荐指数
1
解决办法
164
查看次数

如何使用clang在另一个语句之前检测语句

我必须通过在它之前添加一个语句来处理clang中的某些语句.我有一个指向Expr对象的指针,我需要在包含它的语句之前插入另一个语句.现在我正在使用一个hacky方法,它只是移回SourceLocation指针直到我看到一个; 或}或{.但这并不适用于所有情况.例如,当我尝试检测for语句时,它失败了.clang中是否有任何类提供了一种更清洁的方法?

编辑:这是我的代码片段.我需要在包含指针解除引用的语句之前插入一个断言.

bool MyRecursiveASTVisitor::VisitUnaryOperator(UnaryOperator *E){
    if (E->getOpcode() == UO_Deref ){
        Expr *e1 = E->getSubExpr();
        SourceLocation SL = E->getLocStart();
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

instrumentation llvm clang

6
推荐指数
1
解决办法
581
查看次数

找到属于图的两个不相交子集的任何两个节点之间的最短路径

有一个无向图,其中每个节点都分配了一些颜色.我必须找到从任何蓝色节点到任何红色节点的最短路径.(其他颜色也可能存在于图表中,虽然它无关紧要,但不知道有多少颜色.)我怎样才能在多项式时间内完成?

algorithm graph shortest-path graph-algorithm

5
推荐指数
1
解决办法
1225
查看次数

动态最小生成树

我想制作一个动态最小生成树。我在 n 个顶点上有一个现有的 MS 树,我向这个新顶点的所有现有顶点添加了一个顶点和边。如何有效地更新新图的 MST?O(n) 将是最优的。我也可以使删除顶点操作有效吗?

algorithm insert minimum-spanning-tree

5
推荐指数
1
解决办法
5265
查看次数

LLVM 中基本块的拓扑排序

我希望能够按拓扑顺序获取函数中的基本块。有一个迭代器可以迭代函数中的基本块,但是我不确定它是否按拓扑顺序执行。我无法获得特定基本块的下一个基本块,也无法自己进行拓扑排序。

您可以假设 CFG 中没有循环。

llvm topological-sort

0
推荐指数
1
解决办法
1866
查看次数

这个班级是如何构建的?

我很困惑该类如何通过将自身作为模板参数传递而继承自RecursiveASTVisitor类.此外,写行Rewrite(R)

MyRecursiveASTVisitor(Rewriter &R) : Rewrite(R) { }
Run Code Online (Sandbox Code Playgroud)

将值R赋值给变量Rewrite?在代码中的任何地方都没有定义Rewrite类.":"运算符是否用于除继承类之外的其他内容?

class MyRecursiveASTVisitor
    : public RecursiveASTVisitor<MyRecursiveASTVisitor>
{

 public:
  MyRecursiveASTVisitor(Rewriter &R) : Rewrite(R) { }
  void InstrumentStmt(Stmt *s);
  bool VisitStmt(Stmt *s);
  bool VisitUnaryOperator(UnaryOperator *e);

  Rewriter &Rewrite;
};
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
130
查看次数