# sf.apps.clique.swap¶

swap(clique, graph, node_select='uniform')[source]

If possible, generates a new clique by swapping a node in the input clique with a node outside the clique.

Proceeds by calculating the set $$C_1$$ of nodes in the rest of the graph that are connected to all but one of the nodes in the clique. If this set is not empty, this function randomly picks a node and swaps it with the corresponding node in the clique that is not connected to it. The set $$C_1$$ and corresponding nodes in the clique are provided by the c_1() function.

Whenever there are multiple nodes within $$C_1$$, one must choose which node to add to the growing clique. This function allows a method of choosing nodes to be set with the node_select argument, which can be any of the following:

• "uniform" (default): choose a node from the candidates uniformly at random;

• "degree": choose the node from the candidates with the greatest degree, settling ties by uniform random choice;

• A list or array: specifying the node weights of the graph, resulting in choosing the node from the candidates with the greatest weight, settling ties by uniform random choice.

Example usage:

>>> graph = nx.wheel_graph(5)
>>> graph.remove_edge(0, 4)
>>> clique = [0, 1, 2]
>>> swap(clique, graph)
[0, 2, 3]

Parameters
• clique (list[int]) – a subgraph specified by a list of nodes; the subgraph must be a clique

• graph (nx.Graph) – the input graph

• node_select (str, list or array) – method of selecting incoming nodes from $$C_1$$ during swapping. Can be "uniform" (default), "degree", or a NumPy array or list.

Returns

a new clique subgraph of equal size as the input

Return type

list[int]