| 318 | == Boost Graph Library == |
| 319 | |
| 320 | In addition to the graph library that is currently in Boost, Indiana University has also created parallel extensions to BGL (the Parallel |
| 321 | Boost Graph Library) for distributed-memory computers. Several of the projects below would also be worthwhile to integrate into the parallel |
| 322 | framework. |
| 323 | |
| 324 | === Hierarchical graph layout algorithms === |
| 325 | |
| 326 | The Boost Graph Library (BGL) currently only implements a small number |
| 327 | of graph layout algorithms, primarily spring-based layout algorithms. This project would involve implementing other layout algorithms, |
| 328 | especially hierarchical algorithms such as that used in the dot program of Graphviz ([http://www.graphviz.org/]). |
| 329 | |
| 330 | === Bindings to Python or other languages === |
| 331 | |
| 332 | BGL has some bindings to Python and R, but they do not exist for all algorithms. This project would be to either extend the Python or R bindings, or write a set of BGL bindings to another language. |
| 333 | |
| 334 | === Semantic graphs === |
| 335 | |
| 336 | A semantic graph is a graph that can have multiple distinct types of vertices and edges, with restrictions on connections between vertices and edges based on their types. There may also be more efficient representations of the graph based on storing different vertex and edge types separately. This project would be to define appropriate concepts, algorithms, and data structures for semantic graphs in BGL. |
| 337 | |
| 338 | === Graph partitioning === |
| 339 | |
| 340 | This project would involve implementing graph partitioning algorithms, such as those used in METIS ([http://www.cs.umn.edu/~metis]), using BGL. Integrating this support into the Parallel BGL would also be useful. |
| 341 | |
| 342 | === Computer vision algorithms === |
| 343 | |
| 344 | This project would be to implement computer vision algorithms based on max-flow problems on graphs using BGL. Implementing a specialized graph |
| 345 | type for grids would also be needed in order to avoid storing the graph topology explicitly. |
| 346 | |
| 347 | === Network Workbench integration === |
| 348 | The Network Workbench ([http://nwb.slis.indiana.edu/]) is a GUI-based framework for analysis of large-scale networks. This project would involve implementing components for NWB based on BGL and/or Parallel BGL. |