A. NOTATION

S: source node;

D: destination node;

B: bandwidth demand;

N: number of slots between two nodes;

C: number of core;

V: set of nodes

e u , v , n : the nth edges connecting u and v;

E = { e u , v , n } : set of edges;

G = ( V , E , W ) : label multigraph composed of edges E and a set of edge weight, W.

m = 1 , , M : modulation formats;

Bm: bandwidth demand in slots in the basis of the modulation format chosen;

R ( s , d , b ) : request from the node s to the node d with bandwidth demand b;

δ ( G , r ( s , d , b m ) ) : shortest path between s and d in G that satisfies the request for b m slots:

ω ( e u , v , n ) : Weight of the edge e u , v , n ;

G ˜ n , b m = ( V ˜ , E ˜ , W ˜ ) : the nth labeled graph such that E ˜ is the set of edges connecting { u ˜ , v ˜ } V ˜ and W ˜ is the set of costs associated with E ˜ . The edges in E ˜ correspond to the mapping of b m edges in G, starting at the nth edges;

σ = | { G ˜ n , b m } | = C × ( N b m + 1 ) : Number of graphs extracted from the multigraph;

τ ( G , C , b m ) = { G ˜ n , b m } : Function which produces all σ graphs from G;

P n : chain of G ˜ n , b m such that the source node s is the least ordered node and d is the greatest ordered node;

W ( P n ) : Weight of the path P n , which is the sum of the weights of all the edges in the chain;

W P s , d = weight of the shortest path between s and d;

B n : Chain of G ˜ n , b m such that the number of vertices is equal to the number of edges, and every vertex has degree 2;

B u , v : set of all p-cycles containing the vertices u and v in G;

θ ( G ˜ n , b m , P n , r ( s , d , b ) ) : Shortest cycle between s and d in G ˜ n , b m , which P B s , d ate link disjoint to P n ;

υ ( P n , B u , v , r ( s , d , b ) ) : P-cycle in B u , v which P B u , v are link disjoint to P n and satisfies the request of bandwidth b;

W ( B n ) : The weight of the p-cycle B n , which is the sum of the weights of all the edges in the chain;

W B s , d = weight of the p-cycle which protects the path between s and d;

B. POPETA

The POPETA algorithm is introduced in Algorithm 1. Line 1 transforms the multigraph into C × ( N b m + 1 ) graphs. Line 2 finds the shortest path for all G ˜ n , b m graphs and chooses the cheapest one. If all of the shortest path weights are ∞, it signifies that there is no path for demand b that observes the contiguity requirement.

Line 3 chooses the shortest path with the lowest weight value out of all the shortest paths. There is no path in the network that satisfies the request for b m slots under the contiguity constraint if the weight of all the shortest paths is ∞ (Line 4). The request is blocked if no path is available (Line 5).

Otherwise, a p-cycle is required to preserve this light-path (Line 7). When a p-cycle shields both an active and a new request, a light-path (Line 8) is constructed, with the weight of the associated edges in the multi-graph G altered to ∞ (Line 9).

If no such p-cycle exists, one is constructed to protect the newly established light-path (Line 12). The shortest possible cycle between source and destination nodes is considered while creating the p-cycle, however if no such p-cycle can be found, the request is blocked (Line 15).

Aside from that, the major path and the p-cycle (Line 17) have been established. Lines 18 and 19 alter the weight of relevant edges in the multi-graph G to ∞, indicating that the slots have been assigned to the newly formed light-path. The PERFECTA algorithm’s complexity is examined next. M × O ( E + V ) , where M is the number of modulation levels that can be employed, is the complexity of changing the original multi-graph into alp graphs. The Dijkstras algorithm is run at least M × C × ( N b ) times for the major path. The Suurballe algorithm is run at least M × C × ( N b ) times to generate p-cycles. Given that both Dijkstra’s and Suurballe’s algorithms have a complexity of O ( E + V log V ) , Because C, N, M, and b are constants, the PERFECTA algorithm’s complexity is O ( E + V log V ) .