Implementation of network diffusion algorithms such as heat diffusion or Markov random walks. Network diffusion algorithms generally spread information in the form of node weights along the edges of a graph to other nodes. These weights can for example be interpreted as temperature, an initial amount of water, the activation of neurons in the brain, or the location of a random surfer in the internet. The information (node weights) is iteratively propagated to other nodes until a equilibrium state or stop criterion occurs.

- Removes
`insulated.heat.diffusion`

- Adds matrix inputs for most methods

- Updated exported function names to make registering possible
- Exchanged S3 with S4 classes
- Check for ergodicity in random walk
- Added user interrupt

- Basic S3 methods for:
- Markov random walks
- Laplacian heat diffusion
- Insulated heat diffusion
- Nearest neighbor search
- Matrix utility functions

- Implementation of respective cpp methods
- Setup
- Vignette, documentation for all classes and methods
- License
- Unit-tests
- Config, Readme, Travis
- Lintr
- Codecov

- Initial submission to CRAN

- Simon Dirmeier [email protected]