I am trying to perform a very simple mincut on an itkGraph. I create an extremely simple graph: 2 nodes with a weight 2 edge between them. The problem is that the cut weight is 0, when I would expect it to be 2. Can anyone see if I have done something wrong with constructing the graph or performing the cut?<br>
<br>#include &lt;iostream&gt;<br><br>#include &quot;itkGraph.h&quot;<br>#include &quot;itkBoykovGraphTraits.h&quot;<br>#include &quot;itkBoykovMinCutGraphFilter.h&quot;<br><br>int main( int argc, char * argv[] )<br>{<br>    //setup types<br>
    typedef itk::BoykovGraphTraits&lt;short, 3&gt; GraphTraitsType;<br>    typedef itk::Graph&lt;GraphTraitsType&gt;           GraphType;<br>    typedef GraphType::NodePointerType      NodePointerType;<br>
    typedef GraphType::EdgePointerType      EdgePointerType;<br><br>    //create a new graph<br>    GraphType::Pointer graph = GraphType::New();<br> <br>      // Create graph nodes<br>    NodePointerType Nodes[3];<br>      <br>
    for( unsigned int i = 0; i &lt; 2; i++ )<br>    {<br>        Nodes[i] = graph-&gt;CreateNewNode();<br>    }<br>    <br>    /*<br>    //these lines don&#39;t change the behavior<br>    Nodes[0]-&gt;IsSink = true; //set node 0 to be a sink<br>
    Nodes[1]-&gt;IsSink = false; //set node 1 to be a source<br>    */<br>     <br>    //create an edge between nodes 0 and 1 with weight 2<br>    graph-&gt;CreateNewEdge( Nodes[0], Nodes[1], 2);<br>    <br>    //verify that the graph was created correctly<br>
    std::cout &lt;&lt; std::endl;<br>    std::cout &lt;&lt; &quot;Num Nodes: &quot; &lt;&lt; graph-&gt;GetTotalNumberOfNodes() &lt;&lt; std::endl;<br>    std::cout &lt;&lt; &quot;Num Edges: &quot; &lt;&lt; graph-&gt;GetTotalNumberOfEdges() &lt;&lt; std::endl;<br>
<br>    // Set the reverse edges (doesn&#39;t change the behavior)<br>    //graph-&gt;SetAllReverseEdges();<br><br>    //perform the cut<br>    typedef itk::BoykovMinCutGraphFilter  &lt;GraphType&gt; FilterType;<br>    FilterType::Pointer CutFilter = FilterType::New();<br>
    CutFilter-&gt;SetInput(graph);<br>    CutFilter-&gt;Update();<br>    <br>    //see which nodes are sinks<br>    typedef GraphType::NodeIterator         NodeIteratorType;<br>    typedef GraphType::NodeIdentifierType   NodeIdentifierType;<br>
    NodeIteratorType nit( graph );<br>    for( nit.GoToBegin(); !nit.IsAtEnd(); ++nit )<br>    {<br>        NodePointerType node = nit.GetPointer();<br>        NodeIdentifierType Id = graph-&gt;GetNodeIdentifier( node );<br>
        <br>        node = graph-&gt;GetNodePointer( Id );<br>        <br>        if(node-&gt;IsSink)<br>        {<br>            std::cout &lt;&lt; &quot;Node Id: &quot; &lt;&lt; Id &lt;&lt; &quot; is a sink.&quot; &lt;&lt; std::endl;<br>
        }<br>        else<br>        {<br>            std::cout &lt;&lt; &quot;Node Id: &quot; &lt;&lt; Id &lt;&lt; &quot; is a source.&quot; &lt;&lt; std::endl;<br>        }<br>    }<br>    <br>            <br>    //get the cut weight (min cut = max flow)<br>
    typedef GraphType::NodeWeightType       NodeWeightType;<br>    NodeWeightType maxflow = CutFilter-&gt;GetMaxFlow();<br>    std::cout &lt;&lt; &quot;Max Flow: &quot; &lt;&lt; maxflow &lt;&lt; std::endl;<br>    <br>    return EXIT_SUCCESS;<br>
    <br>}<br><br>Thanks!<br><br>Dave<br>