Return-Path: X-Original-To: apmail-commons-commits-archive@minotaur.apache.org Delivered-To: apmail-commons-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 47727911B for ; Tue, 24 Jan 2012 13:33:24 +0000 (UTC) Received: (qmail 41370 invoked by uid 500); 24 Jan 2012 13:33:24 -0000 Delivered-To: apmail-commons-commits-archive@commons.apache.org Received: (qmail 41184 invoked by uid 500); 24 Jan 2012 13:33:23 -0000 Mailing-List: contact commits-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@commons.apache.org Delivered-To: mailing list commits@commons.apache.org Received: (qmail 41177 invoked by uid 99); 24 Jan 2012 13:33:23 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 24 Jan 2012 13:33:23 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 24 Jan 2012 13:33:20 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 2F7522388A56 for ; Tue, 24 Jan 2012 13:32:59 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1235249 - /commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/flow/FordFulkerson.java Date: Tue, 24 Jan 2012 13:32:59 -0000 To: commits@commons.apache.org From: simonetripodi@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120124133259.2F7522388A56@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: simonetripodi Date: Tue Jan 24 13:32:58 2012 New Revision: 1235249 URL: http://svn.apache.org/viewvc?rev=1235249&view=rev Log: no needs to allocate a wrapper method to build the graph Modified: commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/flow/FordFulkerson.java Modified: commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/flow/FordFulkerson.java URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/flow/FordFulkerson.java?rev=1235249&r1=1235248&r2=1235249&view=diff ============================================================================== --- commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/flow/FordFulkerson.java (original) +++ commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/flow/FordFulkerson.java Tue Jan 24 13:32:58 2012 @@ -55,13 +55,34 @@ public final class FordFulkerson * @param orderedMonoid the ordered monoid needed for operations on edge weights * @return the maximum flow between source and target */ - public static , G extends DirectedGraph> W findMaxFlow( G graph, + public static , G extends DirectedGraph> W findMaxFlow( final G graph, V source, V target, - OrderedMonoid orderedMonoid ) + final OrderedMonoid orderedMonoid ) { // create flow network - DirectedGraph flowNetwork = createFlowNetwork( graph, orderedMonoid ); + DirectedGraph flowNetwork = newDirectedMutableWeightedGraph( new AbstractGraphConnection() + { + @SuppressWarnings( "unchecked" ) + @Override + public void connect() + { + // vertices + for ( V vertex : graph.getVertices() ) + { + addVertex( vertex ); + } + // edges + for ( WE edge : graph.getEdges() ) + { + VertexPair edgeVertices = graph.getVertices( edge ); + V head = edgeVertices.getHead(); + V tail = edgeVertices.getTail(); + addEdge( edge ).from( head ).to( tail ); + addEdge( (WE) new BaseLabeledWeightedEdge( "Inverse edge for " + edge.toString(), orderedMonoid.zero() ) ); + } + } + } ); // create flow network handler FlowNetworkHandler flowNetworkHandler = @@ -96,34 +117,4 @@ public final class FordFulkerson return findMaxFlow( graph, source, target, new IntegerWeight() ); } - private static , W, G extends DirectedGraph> DirectedGraph createFlowNetwork( final G graph, - final OrderedMonoid orderedMonoid ) - { - DirectedGraph flowNetwork = - newDirectedMutableWeightedGraph( new AbstractGraphConnection() - { - @SuppressWarnings( "unchecked" ) - @Override - public void connect() - { - // vertices - for ( V vertex : graph.getVertices() ) - { - addVertex( vertex ); - } - // edges - for ( WE edge : graph.getEdges() ) - { - VertexPair edgeVertices = graph.getVertices( edge ); - V head = edgeVertices.getHead(); - V tail = edgeVertices.getTail(); - addEdge( edge ).from( head ).to( tail ); - addEdge( (WE) new BaseLabeledWeightedEdge( "Inverse edge for " + edge.toString(), orderedMonoid.zero() ) ); - } - } - } ); - - return flowNetwork; - } - }