Я реализую свой график в C++ как вершину следующим образом:
struct vertex {
string node_id;
string node_name;
int no_servers;
float mu;
int node_type; // 1-7
float lambda;
float time;
bool CD; // 0 if converges join----- and 1 if div split
vector<int> adj; // children :adjacency list -vector- of
// edges contains the indexes to vertex
};
struct fill_data {
vertex node_data;
int ORDER; // for edges --- father
fill_data* next;
};
Мне нужны все возможные пути для моего графика. В каждом узле, к которому я доеду, будут сделаны некоторые вычисления с использованием некоторой информации о его отце.
Я не мог найти структуру или прочь, так как число дочерних элементов для каждого узла отличается от одного узла к другому.
В списке смежности у вас также есть EDGE в стороне от VERTEX. в каждом EDGE вы указываете FROM и TO, это будет представлять вершины на обоих концах EDGE.
Чтобы найти все пути от данного VERTEX, вы просто зацикливаете список смежности и находите, что все EDGES с FROM равны VERTEX, которые вы хотите найти для всех своих детей.
Например: если вы хотите найти все пути из вершины A, затем выполните поиск в списке смежности и отфильтруйте все ребра, у которых есть FROM (или исходный узел), равный A, результатом являются возможные пути от вершины A.