Implement simple "minimum length" forecast

This looks how much the current solution grows if all subsequent
transitions have the minimal cost.

Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
Expose Distance_matrix::min_cost() to python

Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
Add some debug output to the integration test

Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
Put forecast calculation into a seperate class

The forecasts for the combination tesps are now precalculated from the
Distance_matrix and can be simply queried

Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
Add unittests for the forecast calculation

Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
Replae on-the-fly forecast with Distance_forecast

Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
Add some heuristic approach for a faster firstround

This adds a Firstround_team_selection class that gets the
Distance_matrix and sort for all firstround-hosts the guests by
"reachability".

Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
Wrap Firstround_team_selection to python for testing

Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
Bugfix firstround selection algorithm

There was a double adding of the own distance if the firstround host
and a missing sort for distance after erasing duplicates.

Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
Hide firstround candidate struct in the cpp file

Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
Add a simple unittest for Forstround selection

Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
Enable unittest for Firstround_selection

Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
make Firstround_team_selection::for_host const

Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
Unittest that firstround order is preserved...

...using the Guest_tuple_generator.

Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
Integrate firstround selection into algorithm

This splits the first round procesing from the other rounds and use the
Firstround_team_selection for it.

Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
Remove dummy distances for first round

Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
Refactor guest pair slice handling

Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>