Skip to main content
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Tweeted twitter.com/StackSoftRecs/status/682138497550053376
added 57 characters in body
Source Link
Tom
  • 7.7k
  • 9
  • 35
  • 64

I'm currently working on a research project that makes use of proprietary software. I'm trying to replace the proprietary C libraries for graph representation. Doing this will make it easier to migrate our project to an open platform and make it available to everyone for free.

The project mixes C with C++, so if it's a C library we are going to adopt, it needs to play along nicely with C++.

The current libraries use pointers for everything and casts to and from void* in order to store and retrieve stuff.

It makes it fairly easy to:

  • add vertices and remove themvertices
  • add edges and remove themedges
  • get a list with the edges of a vertex
  • get a list with the neighbors of a node
  • calculate connected components
  • calculate shortest paths (using DijkstraDijkstra)

Vertices have type PrgT_Graph_Vertex* and can have an associated void* pointer to store related information. A similar logic is used with respect to edges. Here's a concrete example.

The replacement needs to have a license that does not enforce copyleft, so it can't be GPL. BSD-style licenses are fine.

Boost Graph Library, BGL from now on, has an OK license and is part of a well-known suite. However, its documentation is fragmentary and looks like it was "patched up" together rather than thoughtfully "built". Removing vertices does not seem to be easy as it can mess with vertex indexes.

Lemon Graph Library has the same license as the BGL, looks easier, but is not as actively maintained (see roadmap).

Stanford SNAP has an OK license is the one with the nicest website, but the documentation appears very lacking.

iGraph is not an option because it's GPL licensed. Also, from what I understand, it would require a wrapper to be used in C++.

Network Graph Toolkit, developed by the NIST, is released in the public domain, but does not look like it's documented at all (aside from code comments).

BGL seems to be the one with the best guarantees it will remain actively developed. But it's also quite far from my current implementation logic and will take a lot of time just to get started with.

Any suggestion?

I'm currently working on a research project that makes use of proprietary software. I'm trying to replace the proprietary C libraries for graph representation. Doing this will make it easier to migrate our project to an open platform and make it available to everyone for free.

The project mixes C with C++, so if it's a C library we are going to adopt, it needs to play along nicely with C++.

The current libraries use pointers for everything and casts to and from void* in order to store and retrieve stuff.

It makes it fairly easy to:

  • add vertices and remove them
  • add edges and remove them
  • get a list with the edges of a vertex
  • get a list with the neighbors of a node
  • calculate connected components
  • calculate shortest paths (using Dijkstra)

Vertices have type PrgT_Graph_Vertex* and can have an associated void* pointer to store related information. A similar logic is used with respect to edges. Here's a concrete example.

The replacement needs to have a license that does not enforce copyleft, so it can't be GPL. BSD-style licenses are fine.

Boost Graph Library, BGL from now on, has an OK license and is part of a well-known suite. However, its documentation is fragmentary and looks like it was "patched up" together rather than thoughtfully "built". Removing vertices does not seem to be easy as it can mess with vertex indexes.

Lemon Graph Library has the same license as the BGL, looks easier, but is not as actively maintained (see roadmap).

Stanford SNAP has an OK license is the one with the nicest website, but the documentation appears very lacking.

iGraph is not an option because it's GPL licensed. Also, from what I understand, it would require a wrapper to be used in C++.

Network Graph Toolkit, developed by the NIST, is released in the public domain, but does not look like it's documented at all (aside from code comments).

BGL seems to be the one with the best guarantees it will remain actively developed. But it's also quite far from my current implementation logic and will take a lot of time just to get started with.

Any suggestion?

I'm currently working on a research project that makes use of proprietary software. I'm trying to replace the proprietary C libraries for graph representation. Doing this will make it easier to migrate our project to an open platform and make it available to everyone for free.

The project mixes C with C++, so if it's a C library we are going to adopt, it needs to play along nicely with C++.

The current libraries use pointers for everything and casts to and from void* in order to store and retrieve stuff.

It makes it fairly easy to:

  • add and remove vertices
  • add and remove edges
  • get a list with the edges of a vertex
  • get a list with the neighbors of a node
  • calculate connected components
  • calculate shortest paths (using Dijkstra)

Vertices have type PrgT_Graph_Vertex* and can have an associated void* pointer to store related information. A similar logic is used with respect to edges. Here's a concrete example.

The replacement needs to have a license that does not enforce copyleft, so it can't be GPL. BSD-style licenses are fine.

Boost Graph Library, BGL from now on, has an OK license and is part of a well-known suite. However, its documentation is fragmentary and looks like it was "patched up" together rather than thoughtfully "built". Removing vertices does not seem to be easy as it can mess with vertex indexes.

Lemon Graph Library has the same license as the BGL, looks easier, but is not as actively maintained (see roadmap).

Stanford SNAP has an OK license is the one with the nicest website, but the documentation appears very lacking.

iGraph is not an option because it's GPL licensed. Also, from what I understand, it would require a wrapper to be used in C++.

Network Graph Toolkit, developed by the NIST, is released in the public domain but does not look like it's documented at all (aside from code comments).

BGL seems to be the one with the best guarantees it will remain actively developed. But it's also quite far from my current implementation logic and will take a lot of time just to get started with.

Any suggestion?

added license references
Source Link
Agostino
  • 701
  • 2
  • 9
  • 18

I'm currently working on a research project that makes use of proprietary software. I'm trying to replace the proprietary C libraries for graph representation. Doing this will make it easier to migrate our project to an open platform and make it available to everyone for free.

The project mixes C with C++, so if it's a C library we are going to adopt, it needs to play along nicely with C++.

The current libraries use pointers for everything and casts to and from void* in order to store and retrieve stuff.

It makes it fairly easy to:

  • add vertices and remove them
  • add edges and remove them
  • get a list with the edges of a vertex
  • get a list with the neighbors of a node
  • calculate connected components
  • calculate shortest paths (using Dijkstra)

Vertices have type PrgT_Graph_Vertex* and can have an associated void* pointer to store related information. A similar logic is used with respect to edges. Here's a concrete example.

The replacement needs to have a license that does not enforce copyleft, so it can't be GPL. BSD-style licenses are fine.

Boost Graph Library seems to be the most widely adopted, BGL from now on, has an OK license and also the one with the steepest learning curveis part of a well-known suite. However, its documentation is fragmentary and looks like it was "patched up" together rather than thoughtfully "built". Removing vertices does not seem to be easy as it can mess with vertex indexes. Still, judging from the questions on SO, it appears there's somebody to ask to for some support.

Lemon Graph Library has the same license as the BGL, looks easier, but is not as actively maintained (see roadmap).

Stanford SNAP has an OK license is the one with the nicest website, but the documentation appears very lacking.

iGraph is not an option because it's GPL licensedGPL licensed. Also, from what I understand, it would require a C++ wrapper to be used in C++.

Network Graph Toolkit, developed by the NIST, is released in the public domain, but does not look like it's documented at all (aside from code comments).

I'm inclined to use Boost, because itBGL seems to be the one with the best guarantees it will remain actively developed. But it's also quite far from themy current implementation logic, and pronewill take a lot of time just to misunderstandingget started with.

Any suggestion?

I'm currently working on a research project that makes use of proprietary software. I'm trying to replace the proprietary C libraries for graph representation. Doing this will make it easier to migrate our project to an open platform and make it available to everyone for free.

The project mixes C with C++, so if it's a C library we are going to adopt, it needs to play along nicely with C++.

The current libraries use pointers for everything and casts to and from void* in order to store and retrieve stuff.

It makes it fairly easy to:

  • add vertices and remove them
  • add edges and remove them
  • get a list with the edges of a vertex
  • get a list with the neighbors of a node
  • calculate connected components
  • calculate shortest paths (using Dijkstra)

Vertices have type PrgT_Graph_Vertex* and can have an associated void* pointer to store related information. A similar logic is used with respect to edges. Here's a concrete example.

The replacement needs to have a license that does not enforce copyleft, so it can't be GPL. BSD-style licenses are fine.

Boost Graph Library seems to be the most widely adopted, and also the one with the steepest learning curve. Removing vertices does not seem to be easy as it can mess with vertex indexes. Still, judging from the questions on SO, it appears there's somebody to ask to for some support.

Lemon Graph Library looks easier, but not as actively maintained.

Stanford SNAP is the one with the nicest website, but the documentation appears very lacking.

iGraph is not an option because it's GPL licensed. Also, from what I understand, it would require a C++ wrapper.

Network Graph Toolkit by the NIST, is released in the public domain, but does not look like it's documented at all (aside from code comments).

I'm inclined to use Boost, because it seems to be the one with the best guarantees it will remain actively developed. But it's also quite far from the current implementation logic, and prone to misunderstanding.

Any suggestion?

I'm currently working on a research project that makes use of proprietary software. I'm trying to replace the proprietary C libraries for graph representation. Doing this will make it easier to migrate our project to an open platform and make it available to everyone for free.

The project mixes C with C++, so if it's a C library we are going to adopt, it needs to play along nicely with C++.

The current libraries use pointers for everything and casts to and from void* in order to store and retrieve stuff.

It makes it fairly easy to:

  • add vertices and remove them
  • add edges and remove them
  • get a list with the edges of a vertex
  • get a list with the neighbors of a node
  • calculate connected components
  • calculate shortest paths (using Dijkstra)

Vertices have type PrgT_Graph_Vertex* and can have an associated void* pointer to store related information. A similar logic is used with respect to edges. Here's a concrete example.

The replacement needs to have a license that does not enforce copyleft, so it can't be GPL. BSD-style licenses are fine.

Boost Graph Library, BGL from now on, has an OK license and is part of a well-known suite. However, its documentation is fragmentary and looks like it was "patched up" together rather than thoughtfully "built". Removing vertices does not seem to be easy as it can mess with vertex indexes.

Lemon Graph Library has the same license as the BGL, looks easier, but is not as actively maintained (see roadmap).

Stanford SNAP has an OK license is the one with the nicest website, but the documentation appears very lacking.

iGraph is not an option because it's GPL licensed. Also, from what I understand, it would require a wrapper to be used in C++.

Network Graph Toolkit, developed by the NIST, is released in the public domain, but does not look like it's documented at all (aside from code comments).

BGL seems to be the one with the best guarantees it will remain actively developed. But it's also quite far from my current implementation logic and will take a lot of time just to get started with.

Any suggestion?

one more possibility
Source Link
Agostino
  • 701
  • 2
  • 9
  • 18

I'm currently working on a research project that makes use of proprietary software. I'm trying to replace the proprietary C libraries for graph representation. Doing this will make it easier to migrate our project to an open platform and make it available to everyone for free.

The project mixes C with C++, so if it's a C library we are going to adopt, it needs to play along nicely with C++.

The current libraries use pointers for everything and casts to and from void* in order to store and retrieve stuff.

It makes it fairly easy to:

  • add vertices and remove them
  • add edges and remove them
  • get a list with the edges of a vertex
  • get a list with the neighbors of a node
  • calculate connected components
  • calculate shortest paths (using Dijkstra)

Vertices have type PrgT_Graph_Vertex* and can have an associated void* pointer to store related information. A similar logic is used with respect to edges. Here's a concrete example.

The replacement needs to have a license that does not enforce copyleft, so it can't be GPL. BSD-style licenses are fine.

Boost Graph Library seems to be the most widely adopted, and also the one with the steepest learning curve. Removing vertices does not seem to be easy as it can mess with vertex indexes. Still, judging from the questions on SO, it appears there's somebody to ask to for some support.

Lemon Graph Library looks easier, but not as actively maintained.

Stanford SNAP is the one with the nicest website, but the documentation appears very lacking.

iGraph is not an option because it's GPL licensed. Also, from what I understand, it would require a C++ wrapper.

Network Graph Toolkit by the NIST, is released in the public domain, but does not look like it's documented at all (aside from code comments).

I'm inclined to use Boost, because it seems to be the one with the best guarantees it will remain actively developed. But it's also quite far from the current implementation logic, and prone to misunderstanding.

Any suggestion?

I'm currently working on a research project that makes use of proprietary software. I'm trying to replace the proprietary C libraries for graph representation. Doing this will make it easier to migrate our project to an open platform and make it available to everyone for free.

The project mixes C with C++, so if it's a C library we are going to adopt, it needs to play along nicely with C++.

The current libraries use pointers for everything and casts to and from void* in order to store and retrieve stuff.

It makes it fairly easy to:

  • add vertices and remove them
  • add edges and remove them
  • get a list with the edges of a vertex
  • get a list with the neighbors of a node
  • calculate connected components
  • calculate shortest paths (using Dijkstra)

Vertices have type PrgT_Graph_Vertex* and can have an associated void* pointer to store related information. A similar logic is used with respect to edges. Here's a concrete example.

The replacement needs to have a license that does not enforce copyleft, so it can't be GPL. BSD-style licenses are fine.

Boost Graph Library seems to be the most widely adopted, and also the one with the steepest learning curve. Removing vertices does not seem to be easy as it can mess with vertex indexes. Still, judging from the questions on SO, it appears there's somebody to ask to for some support.

Lemon Graph Library looks easier, but not as actively maintained.

Stanford SNAP is the one with the nicest website, but the documentation appears very lacking.

iGraph is not an option because it's GPL licensed. Also, from what I understand, it would require a C++ wrapper.

I'm inclined to use Boost, because it seems to be the one with the best guarantees it will remain actively developed. But it's also quite far from the current implementation logic, and prone to misunderstanding.

Any suggestion?

I'm currently working on a research project that makes use of proprietary software. I'm trying to replace the proprietary C libraries for graph representation. Doing this will make it easier to migrate our project to an open platform and make it available to everyone for free.

The project mixes C with C++, so if it's a C library we are going to adopt, it needs to play along nicely with C++.

The current libraries use pointers for everything and casts to and from void* in order to store and retrieve stuff.

It makes it fairly easy to:

  • add vertices and remove them
  • add edges and remove them
  • get a list with the edges of a vertex
  • get a list with the neighbors of a node
  • calculate connected components
  • calculate shortest paths (using Dijkstra)

Vertices have type PrgT_Graph_Vertex* and can have an associated void* pointer to store related information. A similar logic is used with respect to edges. Here's a concrete example.

The replacement needs to have a license that does not enforce copyleft, so it can't be GPL. BSD-style licenses are fine.

Boost Graph Library seems to be the most widely adopted, and also the one with the steepest learning curve. Removing vertices does not seem to be easy as it can mess with vertex indexes. Still, judging from the questions on SO, it appears there's somebody to ask to for some support.

Lemon Graph Library looks easier, but not as actively maintained.

Stanford SNAP is the one with the nicest website, but the documentation appears very lacking.

iGraph is not an option because it's GPL licensed. Also, from what I understand, it would require a C++ wrapper.

Network Graph Toolkit by the NIST, is released in the public domain, but does not look like it's documented at all (aside from code comments).

I'm inclined to use Boost, because it seems to be the one with the best guarantees it will remain actively developed. But it's also quite far from the current implementation logic, and prone to misunderstanding.

Any suggestion?

edited tags
Link
Loading
Post Migrated Here from cs.stackexchange.com (revisions)
Source Link
Agostino
  • 701
  • 2
  • 9
  • 18
Loading