Rust library for random graph ensembles

If you notice any bugs, or want to request new features: do not hesitate to

Implements simple sampling and monte carlo (or rather markov-) steps, that can be used to create a markov chain.

This is intended to be used for various different use cases. As such, you can easily define additional data that should be stored at each vertex.

Usage

Add this to your Cargo.toml:

[dependencies]
net_ensembles = "0.4"
# for feature "serde_support" (enabled by default) also use
serde = { version = "1.0", features = ["derive"] }

If you do not need serde support, add this instead:

[dependencies]
net_ensembles = { version = "0.4", default-features = false  }

Release Notes

See changelog. Note that savestates (created with serde) of v0.4 are incompatible with savestates generated by older versions and vise versa. It is likely, that savestates generated with v0.4 will be compatible with all following versions, though no guarantees are made.

currently implemented graph ensembles

  • Erdős-Rényi (x2)
  • small-world

work in progress

  • Barabási-Albert
  • Configuration Model

Note

On a 64 bit system drawing an usize consumes more randomness than on a 32 bit system, therefore ensembles drawn etc. are affected by the size of usize.

Graph

  • you can always visualize the current graph by creating a .dot file from it. There are different options for that, choose which one fits you best.

Implements measurable quantities

  • average degree
  • connected components
  • diameter
  • is_connected
  • leaf count
  • q_core
  • transitivity
  • biconnected component
  • vertex_load (closely related, often equal to betweeness)

Iterators

  • depth first search from index
  • breadth first search from index
  • over additional data

For each vertex

methods and more

  • degree
  • check adjacency with other nodes
  • access additional data

Iterators

  • iterate over indices stored in adjacency list

Documentation:

  • current working branch
  • releases

Notes

No warranties whatsoever, but since I am writing this library for my own scientific simulations, I do my best to avoid errors.

You can learn more about me and my research on my homepage.

open a new issue on the repository.

vertices

  • The number of vertices has to be decided when creating a graph and cannot be changed later - at least for now.
  • I might add a method to add vertices if requested or I need it myself.

Due to implementation details, where I prioritize fast access of vertices, it is unlikely, that I will implement the option to remove vertices. If I do, it will likely be a relatively costly operation, so keep that in mind.

crates.io

  • I might move the sampling module into a different crate in the future. If I do, everything will likely be reexported at the same position as currently

License

Licensed under either of

  • Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
  • MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Information - Updated May 24, 2022

Stars: 1
Forks: 0
Issues: 1

Rust library for Self Organising Maps (SOM)

Add rusticsom as a dependency in Cargo

Rust library for Self Organising Maps (SOM)

Rust library for parsing configuration files

The 'option' can be any string with no whitespace

Rust library for parsing configuration files

Rust library for the Pimoroni Four Letter pHAT

This library aims to port ht16k33 (or rather a fork, as of right now) so credit goes to ht16k33-diet

Rust library for the Pimoroni Four Letter pHAT

Rust library for emulating 32-bit RISC-V

This library can execute instructions against any memory and register file that implements

Rust library for emulating 32-bit RISC-V

Rust library for connecting to the IPFS HTTP API using Hyper/Actix

You can use actix-web as a backend instead of hyper

Rust library for connecting to the IPFS HTTP API using Hyper/Actix

Rust library to manipulate file system access control lists (ACL) on macOS, Linux, and FreeBSD

This module provides two high level functions, getfacl and setfacl

Rust library to manipulate file system access control lists (ACL) on macOS, Linux, and FreeBSD

Rust library translation (rust-src/rust-std/stdlib/rustlib translation)

This is the place to translate Having a documentation in your native language is essential if you don't speak English, and still enjoyable even if...

Rust library translation (rust-src/rust-std/stdlib/rustlib translation)

Rust library for using Infrared hardware decoders (For example a Vishay TSOP* decoder),

enabling remote control support for embedded project

Rust library for using Infrared hardware decoders (For example a Vishay TSOP* decoder),

Rust library for interaction with the OriginTrail Decentralized Knowledge Graph

open up an issue on this repository and let us know

Rust library for interaction with the OriginTrail Decentralized Knowledge Graph

Rust library for parsing COLLADA files

Notice: This library is built around files exported from Blender 2

Rust library for parsing COLLADA files

Rust library for low-level abstraction of MIPS32 processors

This project is licensed under the terms of the MIT license

Rust library for low-level abstraction of MIPS32 processors
Facebook Instagram Twitter GitHub Dribbble
Privacy