Как найти все пути для ориентированного графа, реализованного в c ++, в виде списка смежности?

0

Я реализую свой график в 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;
};

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

Я не мог найти структуру или прочь, так как число дочерних элементов для каждого узла отличается от одного узла к другому.

  • 0
    у вашего графика есть циклы?
  • 0
    нет цикла в моем графе, но ориентированный граф от начальной вершины до конечной вершины
Теги:

1 ответ

0

В списке смежности у вас также есть EDGE в стороне от VERTEX. в каждом EDGE вы указываете FROM и TO, это будет представлять вершины на обоих концах EDGE.

Чтобы найти все пути от данного VERTEX, вы просто зацикливаете список смежности и находите, что все EDGES с FROM равны VERTEX, которые вы хотите найти для всех своих детей.

Например: если вы хотите найти все пути из вершины A, затем выполните поиск в списке смежности и отфильтруйте все ребра, у которых есть FROM (или исходный узел), равный A, результатом являются возможные пути от вершины A.

  • 0
    Я хочу получить все пути не по количеству путей, а чтобы указать пути, например: sabcde, safge, сдвиг от начальной вершины до конечной вершины и некоторые вычисления во время пути

Ещё вопросы

Сообщество Overcoder
Наверх
Меню