// trivial strategy:
// do a topological sort of the tree
// build eval units in that order
void EvalHeuristicTrivial::build(EvalGraphBuilder& builder)
{
    const ComponentGraph& compgraph = builder.getComponentGraph();

    ComponentContainer comps;
    evalheur::topologicalSortComponents(compgraph.getInternalGraph(), comps);

    for(ComponentContainer::const_iterator it = comps.begin();
    it != comps.end(); ++it) {
        std::list<Component> comps, ccomps;
        comps.push_back(*it);
        EvalGraphBuilder::EvalUnit u = builder.createEvalUnit(comps, ccomps);
        LOG(ANALYZE,"component " << *it << " became eval unit " << u);
    }
}