ArrayAdjacencyGraph


Introduction

FSharp.ArrayAdjacencyGraph is an adjacency list representation of a multigraph. It is a modified verion of the YaccConstructor/QuickGraph/ArrayAdjacencyGraph. In itself the model is a mutable fata type, but it can also be used in a functional, immutable style thanks to added functions.

The model itself works on two different dictionaries, the label dictionary and the edge dictionary. Both feature vertices as keys. In case of the edge dictionary, the bound value is an array that includes all edges the vertex key is part of.

Working with this graph model allows for fast caculations on the edges.

Features

The basic structure of the implementation is done as in YaccConstructor/QuickGraph/ArrayAdjacencyGraph, with minor adjustments to fit FSharp better.
Building a second graph representation type into FSharp.FGL results in improvements like:

- streamlining ArrayAdjacencyGraph is not limited to directed/undirected and therefore allows for a smoother workflow

- readability ArrayAdjacencyGraph features an easy to read code that is easier to understand than the FSharp.FGL variant

- speed Computation on the ArrayAdjacencyGraph model is generally faster compared to the inductive graph model