# Random Graphs - 3rd practical exercise


## Goals

    - Acquire the ability to estimate the basic properties of a complex network.
    - Learn to generate synthetic networks with given properties.
    - Learn to assess the basic characteristic of a complex network, which is the distribution of node degrees. 


## Tasks

    Use networkx library.

    1. Generate typical complex networks:
        - regular graph,
        - sparse Erdos-Renyi graph,
        - Watts-Strogatz graph,
        - Barabasi-Albert graph.

        For each graph type, generate one graph with 25 nodes and another with 1000 nodes. 
        Choose the appropriate other necessary parameters.

        Choose at least one of the ER / WS / BA graph models and implement a function that generates such a graph. 

    2. For each graph, generate its appropriate visualization. 
    
        You can use (but you are not restricted to) the GraphVisualiser class, which is attached to this assignment. 

    3. For each graph, determine a histogram of the node degree frequencies. Next, compute the entropy of the histogram. 
        
        Discuss whether the result matches the theoretical distribution, and also discuss the meaning of the degree histogram entropy.
        You can use (but you are not restricted to) the HistogramVisualizer function, which is attached to this assignment. 
    
    4. For each graph, determine its density (implement a function and compare it to the networkx built-in implementation).

    5. For each graph, find a rich-club. If the rich-club exists, compute its coefficient; otherwise, explain what the possible reason is why the rich-club is not present in a particular graph. 

    Important: 
        
        All results and visualisations must be commented on. Just showing an output of code is not sufficient and cannot be taught as a successful fulfilment of the assignment.

## Grading 

    1. 0.7b [0.1b (generate graphs by library methods), 0.6b graph model implementation]
    2. 0.5b [0.1b * 4 (visualisation with discussion; per graph), 0.1b two typical examples of each graph in a real-world scenario]
    3. 0.8b [0.1b * 4 (histogram with discussion; per graph), 0.1b * 4 (entropy with discussion; per graph)]
    4. 0.2b [0.05b * 4 (density with discussion; per graph)]
    5. 0.8b [0.2b * 4 (rich-club with discussion and possible coefficient; per graph)]