Rejigging the DAG traversal so it is a bit more efficient

This commit is contained in:
Ian Roddis
2021-06-11 10:20:15 -03:00
parent 7a6dbb85c2
commit 9cfa8cab7f
6 changed files with 139 additions and 142 deletions

View File

@@ -5,14 +5,14 @@
#include "catch.hpp"
TEST_CASE("DAG Construction Tests", "[dag]") {
daggy::DAG<int> dag;
daggy::DAG dag;
REQUIRE(dag.size() == 0);
REQUIRE(dag.empty());
REQUIRE_NOTHROW(dag.addVertex(0));
REQUIRE_NOTHROW(dag.addVertex());
for (int i = 1; i < 10; ++i) {
dag.addVertex(i);
dag.addVertex();
dag.addEdge(i-1, i);
}
@@ -21,21 +21,14 @@ TEST_CASE("DAG Construction Tests", "[dag]") {
// Cannot add an edge that would result in a cycle
REQUIRE_THROWS(dag.addEdge(9, 5));
SECTION("Visit State") {
dag.setVisitState(daggy::VertexState::VISITING);
for (const auto v : dag.getVertices()) {
REQUIRE(dag.getVertexState(v) == daggy::VertexState::VISITING);
}
}
}
TEST_CASE("DAG Traversal Tests", "[dag]") {
daggy::DAG<int> dag;
daggy::DAG dag;
const int N_VERTICES = 10;
for (int i = 0; i < N_VERTICES; ++i) { dag.addVertex(i); }
for (int i = 0; i < N_VERTICES; ++i) { dag.addVertex(); }
/*
0 ---------------------\
@@ -61,7 +54,7 @@ TEST_CASE("DAG Traversal Tests", "[dag]") {
}
SECTION("Baisc Traversal") {
dag.setVisitState(daggy::VertexState::UNVISITED);
dag.reset();
std::vector<int> visitOrder(N_VERTICES);
size_t i = 0;
while (! dag.allVisited()) {