# Mentored Projects#

This page maintains a list of mentored project ideas that contributors can work on if they are interested in contributing to the NetworkX project. Feel free to suggest any other idea if you are interested on the NetworkX GitHub discussions page

These ideas can be used as projects for Google Summer of Code, Outreachy, NumFOCUS Small Development Grants and university course/project credits (if your university allows contribution to open source for credit).

## Pedagogical Interactive Notebooks for Algorithms Implemented in NetworkX#

Abstract: NetworkX has a wide variety of algorithms implemented. Even though the algorithms are well documented, explanations of the ideas behind the algorithms are often missing and we would like to collect these, write Jupyter notebooks to elucidate these ideas and explore the algorithms experimentally, and publish the notebooks at networkx/notebooks. The goal is to gives readers a deeper outlook behind standard network science and graph theory algorithms and encourage them to delve further into the topic.

Recommended Skills: Python, Jupyter notebooks, graph algorithms.

Expected Outcome: A collection of Interactive Jupyter notebooks which explain and explore network algorithms to readers and users of NetworkX. For example, see this notebook on Random Geometric Graphs

Complexity: Depending on the algorithms you are interested to work on.

Expected time commitment: This project can be either a medium project (~175 hours) or a large project (~350 hours). The contributor is expected to contribute 2-3 pedagogical interactive notebooks for the medium duration project and 4-5 notebooks for the long duration project.

## Implement the VF2++ Graph Isomorphism Algorithm#

Abstract: The Graph Isomorphism Problem is a famous difficult network problem at the boundary between P and NP-Complete. The VF2 algorithm is included with NetworkX in a recursive formulation. There is an improved version of this algorithm called VF2++ which we intend to implement. We have early attempts at a nonrecursive version of the main algorithm that also address subgraph isomorphism and subgraph monomorphism. This project involves fully implementing them and extending to directed and multigraph settings.

Recommended Skills: Python, graph algorithms

Expected Outcome: A new set of functions in NetworkX that implement the VF2++ algorithm for all problem and graph types in a nonrecursive manner.

Complexity: Moderate

Expected time commitment: Long project (~350 hours)

# Completed Projects#

- Louvain community detection algorithm
Program: Google Summer of Code 2021

Contributor: @z3y50n

Link to Proposal: GSoC 2021: Community Detection Algorithms

- Asadpour algorithm for directed travelling salesman problem
Program: Google Summer of Code 2021

Contributor: @mjschwenne

Link to Proposal: GSoC 2021: Asadpour algorithm

- Pedagogical notebook: Directed acyclic graphs and topological sort
Program: Google Summer of Code 2021

Contributor: @vdshk

- Pedagogical notebooks: Graph assortativity & Network flow analysis and Dinitz algorithm
Program: Google Summer of Code 2021

Contributor: @harshal-dupare

- Add On system for NetworkX: NetworkX-Metis
Program: Google Summer of Code 2015

Contributor: @OrkoHunter

Link to Proposal: GSoC 2015: Add On System for NetworkX

- NetworkX 2.0 API
Program: Google Summer of Code 2015

Contributor: @MridulS

Link to Proposal: GSoC 2015: NetworkX 2.0 API