public function edges()
{
$complete = new \SplObjectStorage();
$oset = $this->getTraversableSplos($this->vertices);
foreach ($oset as $v) {
$set = $this->getTraversableSplos($this->vertices[$v]);
foreach ($set as $a) {
if (!$complete->contains($a)) {
(yield array($v, $a));
}
}
$complete->attach($v);
$this->walking->detach($set);
}
$this->walking->detach($oset);
}