Библиотеки графика повышения: устанавливание значений веса ребра

Я исследую использование библиотек графика повышения для применения их к различным сетевым проблемам, которые я имею в виду.

В примерах я смотрел на граничные значения графика ("веса"), всегда инициализируются как целые числа, такой как в них Форд Беллмана и алгоритмы Kruskal, например:

int weights[] = { 1, 1, 2, 7, 3, 1, 1, 1 };

Моя проблема состоит в том, если я пытаюсь изменить веса для удвоения, я получаю "кучу" предупреждающих сообщений о преобразованиях и т.д., которые до сих пор я не смог выяснить, как преодолеть.

Кто-либо видит путь вокруг этого?

5
задан Flexo 27 September 2011 в 16:20
поделиться

1 ответ

Это вызвано несоответствием между массивом weights[] и типом, используемым для весов ребер вашим boost-графом/алгоритмом.

В первом примере, например, вам также следует изменить

struct EdgeProperties {
  int weight;
};
[...]
property_map<Graph, int EdgeProperties::*>::type 

на

struct EdgeProperties {
  double weight;
};
[...]
property_map<Graph, double EdgeProperties::*>::type 

Во втором

typedef adjacency_list < vecS, vecS, undirectedS,
    no_property, property < edge_weight_t, int > > Graph;

на

typedef adjacency_list < vecS, vecS, undirectedS,
    no_property, property < edge_weight_t, double > > Graph;
6
ответ дан 14 December 2019 в 13:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: