Skip to content

v0.6.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@clue clue released this 11 Jul 08:37
  • 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
    chainable Graph (#19)
  • BC break: Move Loader\UmlClassDiagram to separate fhaculty/graph-uml
    repo (#38)
  • BC break: Remove needless Algorithm\MinimumSpanningTree\PrimWithIf
    (use Algorithm\MinimumSpanningTree\Prim instead)
    (#45)
  • BC break: Vertex::createEdgeTo() now returns an instance of type
    Edge\Undirected instead of Edge\UndirectedId
    (#46)
  • BC break: Edge\Base::setCapacity() now consistently throws an RangeException
    instead of InvalidArgumentException 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)