예제 #1
0
 def add_edge(self, u, v=None):  
     if v is None: (u,v)=u  # no v given, assume u is an edge tuple
     if self.has_edge(u,v): return # no parallel edges allowed
     elif u in self and v in self:
         raise NetworkXError("adding edge %s-%s not allowed in tree"%(u,v))
     elif u in self or v in self:
         Graph.add_edge(self,u,v)
         return
     elif len(self.adj)==0: # first leaf
         Graph.add_edge(self,u,v)            
         return
     else:
         raise NetworkXError("adding edge %s-%s not allowed in tree"%(u,v))
예제 #2
0
파일: tree.py 프로젝트: thiagoki/Tdevel
 def add_edge(self, u, v=None):
     if v is None: (u, v) = u  # no v given, assume u is an edge tuple
     if self.has_edge(u, v): return  # no parallel edges allowed
     elif u in self and v in self:
         raise NetworkXError("adding edge %s-%s not allowed in tree" %
                             (u, v))
     elif u in self or v in self:
         Graph.add_edge(self, u, v)
         return
     elif len(self.adj) == 0:  # first leaf
         Graph.add_edge(self, u, v)
         return
     else:
         raise NetworkXError("adding edge %s-%s not allowed in tree" %
                             (u, v))
예제 #3
0
 def add_edge(self, u, v=None):  
     if v is None:
         (u,v)=u  # no v given, assume u is an edge tuple
     if self.has_edge(u,v):  # no parallel edges
         return
     elif u in self and v in self:
         raise NetworkXError, "adding edge %s-%s not allowed in tree"%(u,v)
     elif u in self:
         Graph.add_edge(self,u,v)
         self.par[v]=u
         return
     elif v in self:
         Graph.add_edge(self,u,v)
         self.par[u]=v
         return
     elif len(self.adj)==0: # first leaf
         Graph.add_edge(self,u,v)            
         self.par[v]=u   # u is v's parent          
         return
     else:
         raise NetworkXError, "adding edge %s-%s not allowed in tree"%(u,v)
예제 #4
0
파일: tree.py 프로젝트: thiagoki/Tdevel
 def add_edge(self, u, v=None):
     if v is None: (u, v) = u  # no v given, assume u is an edge tuple
     if self.has_edge(u, v): return  # no parallel edges
     if u in self:  # u is in forest
         if v in self:  # v is in forest
             if self.comp[u] == self.comp[v]:  # same tree?
                 raise NetworkXError, \
                       "adding edge %s-%s not allowed in forest"%(u,v)
             else:  # join two trees
                 Graph.add_edge(self, u, v)
                 ucomp = self.comp[u]
                 # set component number of v tree to u tree
                 for n in component.node_connected_component(self, v):
                     self.comp[n] = ucomp
         else:  # add u-v to tree in component with u
             Graph.add_edge(self, u, v)
             self.comp[v] = self.comp[u]
     else:  # make new tree with only u-v
         Graph.add_edge(self, u, v)
         self.comp[u] = self.nc
         self.comp[v] = self.nc
         self.nc += 1
예제 #5
0
 def add_edge(self, u, v=None):  
     if v is None: (u,v)=u  # no v given, assume u is an edge tuple
     if self.has_edge(u,v):  return # no parallel edges
     if u in self:  # u is in forest
         if v in self: # v is in forest
             if self.comp[u]==self.comp[v]: # same tree?
                 raise NetworkXError, \
                       "adding edge %s-%s not allowed in forest"%(u,v)
             else:  # join two trees 
                 Graph.add_edge(self,u,v)
                 ucomp=self.comp[u]
                 # set component number of v tree to u tree
                 for n in component.node_connected_component(self,v):
                     self.comp[n]=ucomp
         else: # add u-v to tree in component with u
             Graph.add_edge(self,u,v)
             self.comp[v]=self.comp[u]
     else: # make new tree with only u-v
         Graph.add_edge(self,u,v)
         self.comp[u]=self.nc
         self.comp[v]=self.nc
         self.nc+=1
예제 #6
0
파일: tree.py 프로젝트: thiagoki/Tdevel
 def add_edge(self, u, v=None):
     if v is None:
         (u, v) = u  # no v given, assume u is an edge tuple
     if self.has_edge(u, v):  # no parallel edges
         return
     elif u in self and v in self:
         raise NetworkXError, "adding edge %s-%s not allowed in tree" % (u,
                                                                         v)
     elif u in self:
         Graph.add_edge(self, u, v)
         self.par[v] = u
         return
     elif v in self:
         Graph.add_edge(self, u, v)
         self.par[u] = v
         return
     elif len(self.adj) == 0:  # first leaf
         Graph.add_edge(self, u, v)
         self.par[v] = u  # u is v's parent
         return
     else:
         raise NetworkXError, "adding edge %s-%s not allowed in tree" % (u,
                                                                         v)