v0.6.0
Pre-release
Pre-release
- BC break: Move algorithm definitions in base classes to separate algorithm classes (#27).
The following methods containing algorithms were now moved to separate algorithm classes. This
change encourages code-reuse, simplifies spotting algorithms, helps reducing complexity,
improves testablity and avoids tight coupling. Update your references if applicable:
Old name | New name | Related ticket |
---|---|---|
Set::getWeight() |
Algorithm\Weight::getWeight() |
#33 |
Set::getWeightFlow() |
Algorithm\Weight::getWeightFlow() |
#33 |
Set::getWeightMin() |
Algorithm\Weight::getWeightMin() |
#33 |
Set::isWeighted() |
Algorithm\Weight::isWeighted() |
#33 |
- | - | - |
Graph::getDegree() |
Algorithm\Degree::getDegree() |
#29 |
Graph::getDegreeMin() |
Algorithm\Degree::getDegreeMin() |
#29 |
Graph::getDegreeMax() |
Algorithm\Degree::getDegreeMax() |
#29 |
Graph::isRegular() |
Algorithm\Degree::isRegular() |
#29 |
Graph::isBalanced() |
Algorithm\Degree::isBalanced() |
#29 |
Vertex::getDegree() |
Algorithm\Degree:getDegreeVertex() |
#49 |
Vertex::getDegreeIn() |
Algorithm\Degree:getDegreeInVertex() |
#49 |
Vertex::getDegreeOut() |
Algorithm\Degree:getDegreeOutVertex() |
#49 |
Vertex::isSink() |
Algorithm\Degree:isVertexSink() |
#49 |
Vertex::isSource() |
Algorithm\Degree:isVertexSource() |
#49 |
Vertex::isIsolated() |
Algorithm\Degree::isVertexIsolated() |
#49 |
- | - | - |
Set::isDirected() |
Algorithm\Directed::isDirected() |
#34 |
- | - | - |
Graph::isSymmetric() |
Algorithm\Symmetric::isSymmetric() |
#41 |
- | - | - |
Graph::isComplete() |
Algorithm\Complete::isComplete() |
#43 |
- | - | - |
Set::hasFlow() |
Algorithm\Flow::hasFlow() |
#47 |
Graph::getBalance() |
Algorithm\Flow::getBalance() |
#30, #47 |
Graph::isBalancedFlow() |
Algorithm\Flow::isBalancedFlow() |
#30, #47 |
Vertex::getFlow() |
Algorithm\Flow::getFlowVertex() |
#47 |
- | - | - |
Vertex::isLeaf() |
Algorithm\Tree\Undirected::isVertexLeaf() |
#44 |
- | - | - |
Set::hasLoop() |
Algorithm\Loop::hasLoop() |
#51 |
Vertex::hasLoop() |
Algorithm\Loop::hasLoopVertex() |
#51 |
- | - | - |
Set::hasEdgeParallel() |
Algorithm\Parallel::hasEdgeParallel() |
#52 |
Edge\Base::hasEdgeParallel() |
Algorithm\Parallel::hasEdgeParallelEdge() |
#52 |
Edge\Base::getEdgesParallel() |
Algorithm\Parallel::getEdgeParallelEdge() |
#52 |
- | - | - |
Graph::isEdgeless() |
Algorithm\Property\GraphProperty::isEdgeless() |
#54 |
Graph::isTrivial() |
Algorithm\Property\GraphProperty::isTrivial() |
#54 |
Walk::isCycle() |
Algorithm\Property\WalkProperty::isCycle() |
#54 |
Walk::isPath() |
Algorithm\Property\WalkProperty::isPath() |
#54 |
Walk::hasCycle() |
Algorithm\Property\WalkProperty::hasCycle() |
#54 |
Walk::isLoop() |
Algorithm\Property\WalkProperty::isLoop() |
#54 |
Walk::isDigon() |
Algorithm\Property\WalkProperty::isDigon() |
#54 |
Walk::isTriangle() |
Algorithm\Property\WalkProperty::isTriangle() |
#54 |
Walk::isSimple() |
Algorithm\Property\WalkProperty::isSimple() |
#54 |
Walk::isHamiltonian() |
Algorithm\Property\WalkProperty::isHamiltonian() |
#54 |
Walk::isEulerian() |
Algorithm\Property\WalkProperty::isEulerian() |
#54 |
- BC break: Remove unneeded algorithm alias definitions (#31, #50). The following alias definitions
have been removed, their original/actual name has already existed before and continues to work
unchanged. Update your references if applicable:
Old/removed alias definition | Actual name |
---|---|
Graph::isConnected() |
Algorithm\ConnectedComponents::isSingle() |
Graph::hasEulerianCycle() |
Algorithm\Eulerian::hasCycle() |
Graph::getNumberOfComponents() |
Algorithm\ConnectedComponents::getNumberOfComponents() |
Graph::getNumberOfGroups() |
Algorithm\Groups::getNumberOfGroups() |
Graph::isBipartit() |
Algorithm\Bipartit::isBipartit() |
Vertex::hasPathTo() |
Algorithm\ShortestPath\BreadthFirst::hasVertex() |
Vertex::hasPathFrom() |
Algorithm\ShortestPath\BreadthFirst::hasVertex() |
Vertex::getVerticesPathTo() |
Algorithm\ShortestPath\BreadthFirst::getVertices() |
Vertex::getVerticesPathFrom() |
Algorithm\ShortestPath\BreadthFirst::getVertices() |
- BC break:
Graph::createVertices()
now returns an array of vertices instead of the
chainableGraph
(#19) - BC break: Move
Loader\UmlClassDiagram
to separate fhaculty/graph-uml
repo (#38) - BC break: Remove needless
Algorithm\MinimumSpanningTree\PrimWithIf
(useAlgorithm\MinimumSpanningTree\Prim
instead)
(#45) - BC break:
Vertex::createEdgeTo()
now returns an instance of type
Edge\Undirected
instead ofEdge\UndirectedId
(#46) - BC break:
Edge\Base::setCapacity()
now consistently throws anRangeException
instead ofInvalidArgumentException
if the current flow exceeds the new maximum
capacity (#53) - Feature: New
Algorithm\Tree
namespace with algorithms for undirected and directed,
rooted trees (#44) - Feature: According to be above list of moved algorithm methods, the following algorithm
classes have been added (#27): - New
Algorithm\Weight
(#33) - New
Algorithm\Degree
(#29, #49) - New
Algorithm\Directed
(#34) - New
Algorithm\Symmetric
(#41) - New
Algorithm\Complete
(#43) - New
Algorithm\Flow
(#30, #47) - New
Algorithm\Tree
(#44) - New
Algorithm\Loop
(#51) - New
Algorithm\Parallel
(#52) - New
Algorithm\Property
(#54) - Feature:
Graph::createVertices()
now also accepts an array of vertex IDs
(#19) - Feature: Add
Algorithm\Property\WalkProperty::hasLoop()
alias definition for
completeness (#54) - Feature: Add
Algorithm\Property\WalkProperty::isCircuit()
definition to distinguish
circuits from cycles (#54) - Fix: Checking hamiltonian cycles always returned false
(#54) - Fix: A Walk with no edges is no longer considered a valid cycle
(#54) - Fix: Various issues with
Vertex
/Edge
layout attributes
(#32) - Fix: Getting multiple parallel edges for undirected edges
(#52)