May-25-2020, 05:02 PM
Hi everyone. I'm amateur on Python3 and Jupyter Notebook. For learning Python properly, I'm developing Python on the Jupyter Notebook. When i develop my project, i couldn't solve particular part which include listing opposite attributes according to maximal_matching(G) function.
First of all, i have an Erdös-Rengi graph with N nodes and probability of 0.5. I have specified number of N with random number generator 100 to 200. The value of N changes by 100 to 200.
Then, i successfully assigned variable to number of N nodes with in a for loop using a random number generator
that only generates 0 or 1. This means that in Erdös-Rengi graph, each node has value of 0 or 1.(randomly generated)
After that, i have specified 'pol' attribute to each node with using a user-defined node attribute. This means that;
If a node has variable of 0, 'pol' attribute will be done with '-'.
If a node has variable of 1, 'pol' attribute will be done with '+'.
My code:
For this problem,i tried this code but i think it was ridiculous.
First of all, i have an Erdös-Rengi graph with N nodes and probability of 0.5. I have specified number of N with random number generator 100 to 200. The value of N changes by 100 to 200.
Then, i successfully assigned variable to number of N nodes with in a for loop using a random number generator
that only generates 0 or 1. This means that in Erdös-Rengi graph, each node has value of 0 or 1.(randomly generated)
After that, i have specified 'pol' attribute to each node with using a user-defined node attribute. This means that;
If a node has variable of 0, 'pol' attribute will be done with '-'.
If a node has variable of 1, 'pol' attribute will be done with '+'.
My code:
def listToDict(lst): op = dict.fromkeys(lst , N) return op pol_list=[] for(N,value) in G.nodes(data=True): value['variable'] = random.randint(0, 1) if value['variable'] == 0: pol = "-" elif value['variable'] == 1: pol = "+" pol_list.append(pol) nx.set_node_attributes(G,'pol',pol) node_list = list(G.nodes()) count_dict = { k:v for k,v in zip(node_list,pol_list)} nx.set_node_attributes(G, count_dict, 'pol') print(G.nodes('variable')) print(" ") print(G.nodes('pol'))Then, i calculated maximal_matching of the Erdös-Rengi Graph(G). Now my problem is i want to take only opposite 'pol' values from the maximal_matching and i would like to print output like this:
NodeDataView({1: {'pol': '+'}, 3: {'pol': '-'}}) NodeDataView({5: {'pol': '-'}, 9: {'pol': '+'}}) NodeDataView({12: {'pol': '+'}, 32: {'pol': '-'}}) NodeDataView({25: {'pol': '-'}, 36: {'pol': '+'}}) …I have searched lots of time in Internet but i can't get any informations.
For this problem,i tried this code but i think it was ridiculous.
def listToMaximalMatching(lst): op = dict.fromkeys(lst , N) return op final_list = [] for(N,L1) in G.nodes(data=True): if(maximal_matching(G[0]) == '-' & maximal_matching(G[1]) == '+' ): list(G.nodes()) elif(maximal_matching(G[0]) == '+' & maximal_matching(G[1]) == '-' ): list(G.nodes()) else: break