1:

Input: G = (V, E), N (number of controllers), Constraints (e.g., number of controllers, number of controllers assigned to each device)

2:

P[]  Descending Sorted (V, Connectivity Degree (V))

3:

M i n C o s t

4:

I  0

5:

Do

6:

Add placement P[i] to the set of possible placements k

7:

Assign the set of the controllers in k to network devices

8:

C o s t k = C o s t F u n c ( G , k )

9:

If ( C o s t k > M i n C o s t ) Then

10:

Remove P[i] from the set of possible placements k

11:

End If

12:

i++

13:

While ( C o s t k < M i n C o s t )

14:

Return N Controller Placements, Controller Assignments, M i n C o s t