Есть ли возможность создать лимонный граф с помощью цикла в C ++?
Моя проблема:
Мой желаемый результат:
Мой вопрос
Можно ли использовать цикл для каждой записи в пределах t_nodes
Таблица добавить узел на график
Как я могу использовать цикл для всех отношений, упомянутых в t_edges
?
Спасибо за ваше время и любая помощь с благодарностью!
После того, как у меня было немного свободного времени на выходных и я провел некоторое время на своем велосипеде, я нашел решение 🙂
Мое решение:
Похоже, что лимон не предлагал возможность поддерживать дополнительную информацию по краям графика. Поэтому я просто создал дополнительный вектор для хранения этой информации. Однако для некоторых целей может быть более разумно использовать хэш-карту для доступа к узлам.
Взгляните на разработанный пример скрипта (очень тривиально;))
Lemon C ++ — Пример кода (ссылка: http://lemon.cs.elte.hu/pub/tutorial/a00022.html):
/* -*- mode: C++; indent-tabs-mode: nil; -*-
*
* This file is a part of LEMON, a generic C++ optimization library.
*
* Copyright (C) 2003-2010
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
* (Egervary Research Group on Combinatorial Optimization, EGRES).
*
* Permission to use, modify and distribute this software is granted
* provided that this copyright notice appears in all copies. For
* precise terms see the accompanying LICENSE file.
*
* This software is provided "AS IS" with no warranty of any kind,
* express or implied, and with no claim as to its suitability for any
* purpose.
*
*/#include <iostream>
#include <lemon/list_graph.h>
using namespace lemon;
using namespace std;
int main()
{
ListDigraph g;ListDigraph::Node u = g.addNode();
ListDigraph::Node v = g.addNode();
ListDigraph::Arc a = g.addArc(u, v);
cout << "Hello World! This is LEMON library here." << endl;
cout << "We have a directed graph with " << countNodes(g) << " nodes "<< "and " << countArcs(g) << " arc." << endl;
return 0;// Further development
ListDigraph graph;
vector <string> name;
name.push_back("A");
name.push_back("B");
name.push_back("C");
for (unsigned int n=0; n<name.size(); n++) {
ListDigraph::Node node = graph.addNode();
lemon_node_vector[n].id = n;
lemon_node_vector[n].name = name[n];
}
}
Конечно, вы можете выполнить AddNode и AddArc в цикле. Или в рекурсивной функции. Или любым другим способом, которым вы хотите.
Вы пробовали это? Была ли какая-то ошибка?
Других решений пока нет …