A Boltzmann Machine is a type of stochastic recurrent neural network. As represented in the Boltzmann Machine diagram, the neural network is based on a stochastic spin-glass model with an external field. Boltzmann Machines with unconstrained connectivity have not proven useful for practical problems in machine learning, but if the connectivity is properly constrained, the learning can be made efficient enough to be useful for practical problems. Boltzmann Machine is an applied algorithm used for classification, regression, topic modeling, collaborative filtering, and feature learning. For a search problem, the weights on the connections are fixed as Boltzmann Machines are used to represent the cost function of an optimization problem.