New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update LAD #540
Comments
Or maybe we already have the latest version? Hmmm..... |
I verified that as of today igraph has LAD v1. I contacted the LAD author to ask about the differences between LAD v1 and v2. She said that while both support either directed or undirected graphs, LAD v2 is going to perform better on directed ones. |
Thanks for the clarifications! |
Version 3 is available since Dec 2015. |
I see three difficulties with integrating LAD into igraph:
Currently this was solved by modifying the LAD code significantly to use igraph data structures ( I would like to propose an alternative approach if/when future LAD versions get integrated: Use (very simple) C++ to provide array data structures that can be used (as much as possible) with the exact same syntax as C arrays. The goal is to keep modifications to the LAD source code as minimal as possible, thus reducing the change of mistakes, reducing the amount of work needed to integrate the code and increasing maintainability. Memory management would be done using RAII and interruptability by throwing exceptions (which are of course always caught by the outermost wrapper). In principle the only changes needed are to the initialization of arrays and converting the graph to use LAD data structures. What do you think? Note: I definitely won't have time to work on this for at least a couple of months, but I'd really like to see LAD updated. I would like to see igraph provide the best and most extensive isomorphism testing functionality of all packages. Finally, I would also like to hear your opinion on whether the time limit functionality currently in igraph-LAD is really necessary. igraph functions are already interruptable. I think the high level interfaces (R, Python) could in principle provide time constraint functionality for any interruptable function (Mathematica does this). |
So far this approach I proposed above works well. Question: Do we really need to keep the time limit functionality? It would make things simpler if I could just leave it out. Why I think timing is not necessary:
Note: Timing appears to have been included in the original LAD mainly for benchmarking and testing purposes. |
I forgot to say that the API needs to be broken anyway if LAD is updated because later versions handle coloured graphs differently. There won't be a |
It would be good to get some feedback on this proposal before putting too much work into it. In particular on the following points: 1) breaking the API (this is simply necessary IMO) 2) remove time limit functionality 3) alternative LAD port using C++ (this is mostly done and it is much faster than the original LAD port in igraph due to using different memory management) |
I'm on the road at the moment - if @gaborcsardi could take a look at it in the next few days, that would be great. Otherwise, I'll try to do it early next week. |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
http://liris.cnrs.fr/csolnon/LAD.html
The text was updated successfully, but these errors were encountered: