Cluster Monte Carlo Algorithms and Their Applications