K i( xdZddlZddlmZmZdgZededejddZy) z= Algorithm to find a maximal (not maximum) independent set. N)not_implemented_forpy_random_statemaximal_independent_setdirectedc |s|jt|h}n t|}|j|st j |dtj |Dcgc]}t|j|c}}tj||rt j |dt|}t|jj|j |}|rY|jt|}|j||jt|j||gz|rY|Scc}w)a'Returns a random maximal independent set guaranteed to contain a given set of nodes. An independent set is a set of nodes such that the subgraph of G induced by these nodes contains no edges. A maximal independent set is an independent set such that it is not possible to add a new node and still get an independent set. Parameters ---------- G : NetworkX graph nodes : list or iterable Nodes that must be part of the independent set. This set of nodes must be independent. seed : integer, random_state, or None (default) Indicator of random number generation state. See :ref:`Randomness`. Returns ------- indep_nodes : list List of nodes that are part of a maximal independent set. Raises ------ NetworkXUnfeasible If the nodes in the provided list are not part of the graph or do not form an independent set, an exception is raised. NetworkXNotImplemented If `G` is directed. Examples -------- >>> G = nx.path_graph(5) >>> nx.maximal_independent_set(G) # doctest: +SKIP [4, 0, 2] >>> nx.maximal_independent_set(G, [1]) # doctest: +SKIP [1, 3] Notes ----- This algorithm does not solve the maximum independent set problem. z" is not a subset of the nodes of Gz is not an independent set of G) choicelistsetissubsetnxNetworkXUnfeasibleunionadj intersectionnodes differenceappenddifference_update)Grseedv neighbors indep_nodesavailable_nodesnodes ]/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/networkx/algorithms/mis.pyrr sf T!W%&E  >>! ##ug-O$PQQ 59aCaM9:I  5)##ug-L$MNNu+K!'')n// 0FGO {{4014 ))$quuT{*;tf*DE  :s&E)NN) __doc__networkxr networkx.utilsrr__all__ _dispatchablerrr%sN ? $ %Z ?!?r$