# Network Properties and Centrality Measures

1. Load libraries (0b)

2. Dataset generation (0b)
    - Use the WebsiteGraphGenerator class to create a reproducible synthetic websites network.
    - Focus: just generating the dataset; no analysis yet.
  
3. Quick exploration (0.5b)
    - Print basic graph info: number of nodes, edges, category counts.
    - Create histogram of visits per day.
    - Compute mean, median, std and discuss distributions.
    
4. Degree centrality (0.2b)
    - Compute in-degree and out-degree centrality using NetworkX.
    - Show top-15 nodes by in-degree.
    - Create Pandas DataFrame with: node, in_deg, out_deg, in_deg_c, out_deg_c, category.
    - Describe meaning of degree centrality.

5. Closeness centrality (0.1b)
    - Compute closeness centrality using NetworkX.
  
6. Betweenness centrality (0.1b)
    - Compute betweenness centrality and list top-10 nodes.

7. Eigenvector & Katz centrality (0.2b)
    - Compute eigenvector centrality and Katz centrality (alpha=0.01, beta=1.0) and list top-10 nodes for both.
  
8. PageRank (1.2b)
    - Implement manual PageRank (power iteration) with dangling node handling.
    - Compare with NetworkX PageRank.
    - Show top-10 nodes.
    - Hyperparameters setup: damping factor 0.85, convergence tolerance 1e-9, max iterations 1000.

9. SEO manipulation experiment (0.3b)
    - Choose a shop node and boost it with strong links from 10 blog nodes.
    - Compute PageRank before and after, report the changes.
    - Discuss how artificial links affect node importance.

10. Correlation of metrics (0.4b)
    - Compute correlation matrix across centrality metrics.
    - Write a paragraph interpreting which metrics correlate and why.

Introduce all terms and describe their mathematical expressions.