To start the EGP, we first randomly assign every node into two groups A and B. We then move all nodes in A that is connected to B, and all nodes in B that is connected to A, into a third group C (also called the separator group). Once this is done, there are no nodes in A that is connected directly to B and vice versa. Following this we minimize the size of group C by swapping nodes in C with those in A and B, without introducing direct connections between A and B. A swap is accepted if it results in a smaller group C. We perform repeated swaps until no further improvements can be made. If we then remove this optimal set of nodes in C, the network will be efficiently broken into two disconnected chunks. When necessary, the resulting chunks can be further fragmented into even smaller pieces by applying EGP recursively.