Credits
-------

NetworkX was originally written by Aric Hagberg, Dan Schult, and Pieter Swart,
and has been developed with the help of many others.   

Thanks to Guido van Rossum for the idea of using Python for
implementing a graph data structure
http://www.python.org/doc/essays/graphs.html

Thanks to David Eppstein for the idea of representing a graph G so
that "for n in G" loops over the nodes in G and G[n] are node n's
neighbors.

Thanks to everyone who has improved NetworkX by contributing code,
bug reports (and fixes), documentation, and input on design, featues,
and the future of NetworkX.

Thanks especially to the following contributors:

 - Katy Bold contributed the Karate Club graph.
 - Hernan Rozenfeld added dorogovtsev_goltsev_mendes_graph and did 
   stress testing.
 - Brendt Wohlberg added examples from the Stanford GraphBase.
 - Jim Bagrow reported bugs in the search methods. 
 - Holly Johnsen helped fix the path based centrality measures. 
 - Arnar Flatberg fixed the graph laplacian routines.
 - Chris Myers suggested using None as a default datatype, suggested
   improvements for the IO routines, added grid generator index tuple
   labeling and associated routines, and reported bugs.
 - Joel Miller tested and improved the connected components methods
   fixed bugs and typos in the graph generators, and contributed
   the random clustered graph generator.
 - Keith Briggs sorted out naming issues for random graphs and
   wrote dense_gnm_random_graph.
 - Ignacio Rozada provided the Krapivsky-Redner graph generator.
 - Phillipp Pagel helped fix eccentricity etc. for disconnected graphs. 
 - Sverre Sundsdal contributed bidirectional shortest path and
   Dijkstra routines, s-metric computation and graph generation  
 - Ross M. Richardson contributed the expected degree graph generator
   and helped test the pygraphviz interface.
 - Christopher Ellison implemented the VF2 isomorphism algorithm
   and is a core developer.
 - Eben Kenah contributed the strongly connected components and
   DFS functions.
 - Sasha Gutfriend contributed edge betweenness algorithms.
 - Udi Weinsberg helped develop intersection and difference operators.
 - Matteo Dell'Amico wrote the random regular graph generator.
 - Andrew Conway contributed ego_graph, eigenvector centrality,
   line graph and much more.
 - Raf Guns wrote the GraphML writer.
 - Salim Fadhley and Matteo Dell'Amico contributed the A* algorithm.
 - Fabrice Desclaux contributed the Matplotlib edge labeling code.
 - Arpad Horvath fixed the barabasi_albert_graph() generator.
 - Minh Van Nguyen contributed the connected_watts_strogatz_graph()
   and documentation for the Graph and MultiGraph classes.
 - Willem Ligtenberg contributed the directed scale free graph
   generator.
 - Loïc Séguin-C. contributed the Ford-Fulkerson max flow and min cut 
   algorithms, and ported all of NetworkX to Python3.  He is a 
   NetworkX core developer.
 - Paul McGuire improved the performance of the GML data parser.
 - Jesus Cerquides contributed the chordal graph algorithms.
 - Ben Edwards contributed tree generating functions, the rich club 
   coefficient algorithm, the graph product functions, and a whole lot
   of other useful nuts and bolts.
 - Jon Olav Vik contributed cycle finding algorithms.
 - Hugh Brown improved the words.py example from the n^2 algorithm.
 - Ben Reilly contributed the shapefile reader and writer.
 - Leo Lopes contributed the maximal independent set algorithm.
 - Jordi Torrents contributed the bipartite clustering, bipartite
   node redundancy, square clustering, bipartite projection
   articulation point, and flow-based connectivity algorithms.  
 - Dheeraj M R contributed the distance-regular testing algorithm
 - Franck Kalala contributed the subgraph_centrality and communicability 
   algorithms
 - Simon Knight improved the GraphML functions to handle yEd/yfiles data,
   and to handle types correctly.
 - Conrad Lee contributed the k-clique community finding algorithm.
 - Sérgio Nery Simões wrote the function for finding all simple paths,
   and all shortest paths.
 - Robert King contributed union, disjoint union, compose, and intersection
   operators that work on lists of graphs.
 - Nick Mancuso wrote the approximation algorithms for dominating set,
   edge dominating set, independent set, max clique, and min-weighted
   vertex cover.
 - Brian Cloteaux contributed the linear-time graphicality tests and Havel-Hakimi graph generators
 - Alejandro Weinstein contributed the directed Laplacian code
 - Dustin Smith wrote the dictionary to numpy array function
 - Mathieu Larose sped up the topological sort code
 - Vincent Gauthier contributed the Katz centrality algorithm
 - Sérgio Nery Simões developed the code for finding all simple paths
