Package ptolemy.graph.analysis.strategy
Class KarpCycleMeanStrategy
- java.lang.Object
-
- ptolemy.graph.analysis.strategy.CachedStrategy
-
- ptolemy.graph.analysis.strategy.KarpCycleMeanStrategy
-
- All Implemented Interfaces:
Analyzer
,CycleMeanAnalyzer
,GraphAnalyzer
public class KarpCycleMeanStrategy extends CachedStrategy implements CycleMeanAnalyzer
An analyzer for computing the maximum/minimum cycle mean of a graph. This implementation uses the Karp's algorithm described in:A.Dasdan, R.K. Gupta, "Faster Maximum and Minimum Mean Cycle Algorithms for System Performance".
Note that the mathematical definition of maximum cycle mean and maximum profit to cost are different, though some time the name "maximum cycle mean" is used to refer to the maximum profit to cost ratio.
- Since:
- Ptolemy II 4.0
- Version:
- $Id$
- Author:
- Shahrooz Shahparnia
- See Also:
CycleMeanAnalysis
- Pt.AcceptedRating:
- Red (ssb)
- Pt.ProposedRating:
- Red (shahrooz)
-
-
Constructor Summary
Constructors Constructor Description KarpCycleMeanStrategy(Graph graph, ToDoubleMapping edgeLengths)
Construct a maximum cycle mean analyzer for a given graph, using the Karp's algorithm.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.lang.Object
_compute()
Perform the graph analysis and return the resulting value.java.util.List
cycle()
Return the nodes on the cycle that corresponds to the maximum/minimum cycle mean as an ordered list.double
cycleMean(boolean maximum)
Finds the cycle mean for a given directed graph.double
maximumCycleMean()
Return the maximum cycle mean.double
minimumCycleMean()
Return minimum cycle mean.java.lang.String
toString()
Return a description of the analyzer.boolean
valid()
Check for compatibility between the analysis and the given graph.-
Methods inherited from class ptolemy.graph.analysis.strategy.CachedStrategy
_convertResult, _result, cachingStatus, disableCaching, enableCaching, getCachedResult, graph, obsolete, reset, setCachedResult
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface ptolemy.graph.analysis.analyzer.GraphAnalyzer
graph
-
-
-
-
Constructor Detail
-
KarpCycleMeanStrategy
public KarpCycleMeanStrategy(Graph graph, ToDoubleMapping edgeLengths)
Construct a maximum cycle mean analyzer for a given graph, using the Karp's algorithm.- Parameters:
graph
- The given graph.edgeLengths
- The lengths associated with the edges of the given graph.
-
-
Method Detail
-
cycle
public java.util.List cycle()
Return the nodes on the cycle that corresponds to the maximum/minimum cycle mean as an ordered list. If there is more than one cycle with the same maximal/minimal MCM, one of them is returned randomly, but the same cycle is returned by different invocations of the method, unless the graph changes. A call to maximumCycleMean() or minimumCycleMean() should precede a call to this method, in order to return a valid cycle.- Specified by:
cycle
in interfaceCycleMeanAnalyzer
- Returns:
- The nodes on the cycle that corresponds to one of the maximum/minimum cycle means as an ordered list.
-
cycleMean
public double cycleMean(boolean maximum)
Finds the cycle mean for a given directed graph. Strongly connected components are being considered separately. And the CycleMean is the maximum/minimum among them. When there are multiple edges between two nodes, the edge with the maximum/minimum weight is considered for the cycle that gives the maximum/minimum cycle mean.- Parameters:
maximum
- True if the maximum cycle mean is requested.- Returns:
- The maximum/minimum cycle mean.
-
maximumCycleMean
public double maximumCycleMean()
Return the maximum cycle mean.- Specified by:
maximumCycleMean
in interfaceCycleMeanAnalyzer
- Returns:
- The maximum cycle mean value.
-
minimumCycleMean
public double minimumCycleMean()
Return minimum cycle mean.- Specified by:
minimumCycleMean
in interfaceCycleMeanAnalyzer
- Returns:
- The minimum cycle mean value.
-
toString
public java.lang.String toString()
Return a description of the analyzer.- Specified by:
toString
in interfaceAnalyzer
- Overrides:
toString
in classCachedStrategy
- Returns:
- Return a description of the analyzer..
-
valid
public boolean valid()
Check for compatibility between the analysis and the given graph. A graph needs to be an instance of a DirectedGraph and cyclic in order to have a cycle mean. In addition the given object should be the same graph associated with this analyzer.
-
_compute
protected java.lang.Object _compute()
Description copied from class:CachedStrategy
Perform the graph analysis and return the resulting value. Upon entry,CachedStrategy.getCachedResult()
provides the result of the previous invocation of the analysis; this value can be used, for example, to facilitate incremental analyses. This method just returns null, and will typically be overridden in each derived class to perform the appropriate graph analysis.- Overrides:
_compute
in classCachedStrategy
- Returns:
- The results of the graph analysis. In this base class, null is returned.
-
-