/**
  * @expectedException InvalidArgumentException
  */
 public function testInvalidVertexPassedToAlgorithm()
 {
     $graph = new Graph();
     $graph2 = new Graph();
     $v2 = $graph2->createVertex(12);
     $alg = new AlgorithmConnected($graph);
     $alg->createGraphComponentVertex($v2);
 }
Beispiel #2
0
 /**
  * check whether this graph has an eulerian cycle
  *
  * @return boolean
  * @uses ConnectedComponents::isSingle()
  * @uses Degree::getDegreeVertex()
  * @todo isolated vertices should be ignored
  * @todo definition is only valid for undirected graphs
  */
 public function hasCycle()
 {
     $components = new ConnectedComponents($this->graph);
     if ($components->isSingle()) {
         $alg = new Degree($this->graph);
         foreach ($this->graph->getVertices() as $vertex) {
             // uneven degree => fail
             if ($alg->getDegreeVertex($vertex) & 1) {
                 return false;
             }
         }
         return true;
     }
     return false;
 }
Beispiel #3
0
 /**
  * get total number of connected components
  *
  * @return int
  * @uses AlgorithmConnectedComponents::getNumberOfComponents()
  */
 public function getNumberOfComponents()
 {
     $alg = new AlgorithmConnectedComponents($this->graph);
     return $alg->getNumberOfComponents();
 }