Complete enumeration of minimal siphons in ordinary Petri nets based on problem partitioning