What is the perceptron algorithm, and where does it take its roots? How does the Perceptron algorithm function in the context of binary classification, and what are its key components and training principles? Additionally, discuss its applications and limitations, highlighting scenarios where it excels and those where it may face challenges.