I've started looking at the exemples YossiDM gave to me and in particular Lemon which was according to him his best experience. I found the model quite clear and covering all what I expect for a generic graph lib (directed, undirected, mapping concept, iterators, and algorithms of course). Moreover and contrary to Boost, it's still developed in 2010.
To be more precise, here's what I expect for a generic graph lib in smalltalk (note all in Lemon except visualization):
- data structure: directed graphs, undirected graphs, possible loop and parallel edged, ..., trees (?) - mapping: easily map objects, informations on nodes and/or edges (here, don't know if I'd like subclassing nodes/eges instead...) - iterators: efficient way to iterate over nodes and edges - algorithms: basic algorithms implementation (bfs, dfs, ..., shortest paths, ...), and plug-ability for specific ones... - visualization: having an interactive graph visualization web/SVG and eventually morphic (... graphviz, mondrian, .......)
then, I could use this for my research work... - I need "belief" nodes with associated conditional beliefs tables - I need to implement algorithms to propagate an information change (change of a node state) in any nodes... ****mainly, I'd like to get junction trees from a graph [1] which are rely useful for several domains in machine learning field ***
Actually, I don't know if I really need a graph lib as a simple implementation directed to bayesian should be enough but it's the second time I need graphs (last time was for planification) and I think that would be great to have a nice and clean basic implementation.
Couldn't we start developing something similar to Lemon (regarding "API", enitites, etc...) that would work for small scale project project in smalltalk ?
It would be excellent. Because now that you have a full time permanent position you can invest a bit and in 2 years you can get something really sexy.... This is what we are doing all the time around pharo.
Yossi, what were the limitations you found with Lemon ?
Cheers,
Cédrick