Comments (4)
I agree that in your example the hash index given by this function will be the same, so there is a conflict in the table, but the equality operator should be able to distinguish between the two edges.
In the PointerHash.hpp
file where I defined the hash function, I also added an overload of the equality operator for shared pointers of edges:
template <typename T>
bool operator==(shared<const Edge<T>> p1, shared<const Edge<T>> p2) {
return p1->getNodePair().first->getUserId() ==
p2->getNodePair().first->getUserId() &&
p2->getNodePair().second->getUserId() ==
p2->getNodePair().second->getUserId();
}
In this way, even if two edges are given the same hash index, they won't be seen as the same, and will both be added to the set, because if they create a cycle the order of the nodes in the nodepair will be swapped.
Does it make sense or am I missing something?
from cxxgraph.
I think this can be verified with a simple testcase. Anyone can elaborate this testcase with failure result?
from cxxgraph.
@ZigRazor I'll do it
from cxxgraph.
but the equality operator should be able to distinguish between the two edges.
I think I missed this. This does alleviate my concern, thanks! I'm still seeing some odd behavior where unique DirectedEdge's are not being added to the container, so I'll continue to investigate.
I'll open a PR shortly with a test to demonstrate my issue (realistically, I should have started with that).
from cxxgraph.
Related Issues (20)
- For Node<T> move constructor, T copy constructor is called when the move constructor is not defined but the move assignment operator is defined. HOT 1
- Unable to build test "GraphTest" after PullRequest #344 HOT 3
- addEdge() method does not copy the weight HOT 4
- some test fails if test_exe ran from current directory other than build/test HOT 8
- Segmentation fault while running benchmark_exe HOT 3
- Use of cached adjacency matrix in all algorithms HOT 1
- Implement matrices used in network dynamics HOT 2
- Add generic `addNode` and `addEdge` overloads HOT 7
- Break out algorithms in Graph.hpp into Algorithms/ folder HOT 2
- Use Adjacency Matrix to populate the nodeSet. HOT 7
- Inclusion of "sink nodes" in adjacency map HOT 1
- bug on a floyd warshall test
- Introduce Bron-Kerbosch Algorithm
- Introduce Graph Coloring Algorithm
- Introduce Welsh Powell Algorithm HOT 4
- Build a Docusaurus Documentation HOT 9
- [BUG] Illegal Instruction SIGILL in addEgdes_1 HOT 2
- How to best improve results of an algorithm (get nodes and order in path) HOT 4
- Problems in compilation From CodeQL
- Methods `inOut*` broken for directed graphs HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cxxgraph.