Structural and Probabilistic Approaches to Graph Colouring