Flocking for Multi-Agent Dynamic Systems: Algorithms and Theory | Synapse