Нереализованный граф

Я сгенерировал этот код для проверки случайного неориентированного графа 100 раз и случайного генерирования узлов и весов графа. Моя проблема в том, что когда я пытаюсь сохранить кратчайший путь, вызывая минимальное расстояние, что-то идет не так, и когда я возвращаю размер моего списка, он всегда равен 1. Что не так?

// Random Graph Generator
for (int n = 1; n <= 101; ++n)
{
int r = 0;
nodeCount = 10;           //rand() % 8128 + 64;

while (r <= nodeCount)
{

++r;
int nodeNumb = (rand() % 6); // Generates a possible node from 0 to 6 (seven possiblities)
int nodeDest = (rand() % 6); // Generates a possible node destination the same as above

int node_weight = rand() % 100 + 1; // Generate random weight of node from 1 to 101

// Create adjacency list
adjacency_list[nodeNumb].push_back(neighbourer(nodeDest, node_weight));
// For undirected graph create opposite connection back
adjacency_list[nodeDest].push_back(neighbourer(nodeNumb, node_weight));
}

vector<weight_w> min_distance; // declare vector for minimum distance
vector<vertex_v> previous; // declare vector to hold previos

int origin = 3; // origin to be inputted
int destination = 5; // destination to be inputted

list<double> pathCount;
DijkstraComputePaths(origin, adjacency_list, min_distance, previous);
pathCount.push_back(min_distance[destination]);

for (int deleteIterator = 0; deleteIterator <= 6; ++deleteIterator)
{
adjacency_list[deleteIterator].clear();
}

cout << "The List Size is: " << pathCount.size() << endl;

}

0

Решение

Причина, по которой у вас всегда есть только 1 элемент в списке, заключается в том, что у вас есть list<double> pathCount; внутри тела вашего внешнего для петли.

Это означает, что на каждой итерации вы уничтожаете свой старый список и создаете новый, добавляя к нему только одно значение.

Вместо этого перенесите определение pathCount вне для цикла. Таким образом, он будет иметь большую область, чем цикл for.

конечно, я не могу гарантировать правильность вашей программы после этого исправления, потому что определения для neighbourer() vertex_v, weight_w а также DisjkstraComputePaths не хватает.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]