代码之家  ›  专栏  ›  技术社区  ›  rasul

如何使用GOBLIN最大流解算器

  •  0
  • rasul  · 技术社区  · 6 年前

    根据 The Algorithm Design Manual 教科书,我们可以用 GOBLIN 许多图算法的库。现在我试着用 Maximum Flow solver 我研究的地精项目。然而,我很难找到一个如何做到这一点的例子。首先,我不知道如何创建图表。根据文件,

    http://goblin2.sourceforge.net/refman/tutorialConstruction.html#secPlainConstruction

    ,当我创建下面的cpp文件()时,它会将TNode识别为一个类型,但不识别“graph”类型。谢谢你的帮助。

    #include <iostream>
    #include <fstream>
    #include <time.h>
    #include <math.h>
    #include <vector>
    #include <random>
    #include <algorithm>
    #include <iomanip>
    #include <string>
    #include <stdlib.h>
    #include <deque>
    #include <ilcplex/ilocplex.h>
    #include <goblin.h>
    // #include <abstractMixedGraph.h>
    using namespace std ;
    
    int main()
    {
    cout.precision ( 1 ) ;
    cout << fixed ;
    ////////////////////////////
    graph G(TNode(0));
        TNode** subset = new TNode*[cardinality];
    
        for (TNode i=0;i<cardinality;++i) {
           subset[i] = new TNode[cardinality];
    
           for (TNode j=i+1;j<cardinality;++j) {
              subset[i][j] = G.InsertNode();
    
              for (TNode k=0  ;k<i;++k) G.InsertArc(subset[i][j],subset[k][j]);
              for (TNode k=i+1;k<j;++k) G.InsertArc(subset[i][j],subset[i][k]);
              for (TNode k=0  ;k<i;++k) G.InsertArc(subset[i][j],subset[k][i]);
           }
        }
    
        for (TNode i=0;i<cardinality;++i) delete[] subset[i];
        delete[] subset;
    
    return 0 ;
    }
    
    0 回复  |  直到 3 年前
    推荐文章