libgraph icon indicating copy to clipboard operation
libgraph copied to clipboard

failing test case for preorder dft with int vertices

Open jlgeering opened this issue 8 years ago • 4 comments

not sure what is happening, but something weird is going on when vertices are integers.

I did not dig super deep, but it looks like the order of the vertices in the underlying MapSet determines the first vertex to be traversed.

I think that for BFT you sort the vertices first, which you don't do for DFT.

Also, this only fails for certain values, e.g. {1,9000} is fine

jlgeering avatar Oct 16 '17 06:10 jlgeering

Coverage Status

Coverage remained the same at 94.955% when pulling 47c190b06d3a400280f46e7e8543d4f4b2d0934d on jlgeering:first-node-integer-vertices into e94b118e168ffda1f127af0b890aaa831c548e89 on bitwalker:master.

coveralls avatar Oct 16 '17 06:10 coveralls

actually, this has nothing to do with int vertices, as my second test cases shows: a graph with only 1 edge {:b, :a} will be traversed [:a, :b] (like the graph with edge {:a, :b}) instead of [:b, :a]

=> the "sorting" of the underling MapSet seems to be / could be what determines the order

jlgeering avatar Oct 16 '17 06:10 jlgeering

Coverage Status

Coverage remained the same at 94.955% when pulling 47c190b06d3a400280f46e7e8543d4f4b2d0934d on jlgeering:first-node-integer-vertices into e94b118e168ffda1f127af0b890aaa831c548e89 on bitwalker:master.

coveralls avatar Oct 16 '17 06:10 coveralls

You're correct in that currently the order we visit edges/vertices is based on the order of the underlying map/mapset. If we follow any order at all, it should be insertion order, which implies we need to store that information in an ordered datastructure, or store extra information with each vertex so that we can sort the map/mapset. I'll have to think this over, since the solution will have an impact on either performance or space overhead, perhaps both.

bitwalker avatar Dec 02 '17 02:12 bitwalker