The object-oriented approach to modelling has recently made possible to build models of large-scale real systems. However, the resulting system of equations is generally a nonlinear DAE (Differential Algebraic Equations) system of large dimension, which must be reduced in some way to make it tractable for numerical solutions. A way to do this is automatic symbolic tearing, which aims at splitting the DAE system into two parts: a core consisting of a reduced implicit DAE system and a set of explicit assignments. The problem is here dealt with by a graph theoretic approach, first proving the NP-completeness in the general case, then formulating the problem with reference to a bipartite graph and finally defining an efficient and flexible algorithm for automatic tearing. It is also shown how the proposed algorithm can easily incorporate both general and domain-specific heuristic rules, and can also be used to deal with equations in vector form. The application to serial multibody systems is considered as a significant example.