Created
September 18, 2013 16:43
-
-
Save sosoyososo/6611926 to your computer and use it in GitHub Desktop.
python:生成一个graph中的节点,并建立各个节点之间的关系,实现对graph的遍历,对graph的copy#def Graph struct
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Node(): | |
index = 0 | |
neighbors = [] | |
def __init__(self, arg): | |
self.index = arg | |
def description(self): | |
out = [] | |
out.append (self.index) | |
for item in self.neighbors: | |
out.append(item.index) | |
print (out) | |
def allNode (self, checkArray, out) : | |
tempNodesArray = self.neighbors[:] | |
tempNodesArray.append(self) | |
for node in tempNodesArray: | |
if node in checkArray: | |
pass | |
else: | |
checkArray.append(node) | |
if node in out: | |
pass | |
else: | |
out.append(node) | |
node.allNode(checkArray, out) | |
def makeGraphNodesCopy(self): | |
nodes = [] | |
self.allNode([],nodes) | |
newNodes = [] | |
for node in nodes: | |
newNode = Node(node.index) | |
newNodes.append(newNode) | |
return newNodes, nodes | |
def createRelation(self, graphNodes, newNodes): | |
if len(graphNodes) == len(newNodes) : | |
for node in graphNodes: | |
newIndex = graphNodes.index(node) | |
newNode = newNodes[newIndex] | |
newNode.neighbors = [] | |
for subItem in node.neighbors: | |
index = graphNodes.index(subItem) | |
newSubItem = newNodes[index] | |
newNode.neighbors.append(newSubItem) | |
# node.description() | |
else: | |
print ("error!!!!!") | |
def copyGraph(self): | |
newNodes,allNode = self.makeGraphNodesCopy() | |
self.createRelation(allNode, newNodes) | |
return newNodes | |
#create nodes in graph | |
nodes = [] | |
for i in range (0, 7) : | |
node = Node(i) | |
nodes.append(node) | |
#create relation ships among all nodes | |
for node in nodes: | |
tempNodesArray = nodes[:] | |
tempNodesArray.remove(node) | |
node.neighbors = tempNodesArray | |
print("old graph") | |
for node in nodes: | |
node.description() | |
newNodes = nodes[0].copyGraph() | |
print ("new graph") | |
for node in newNodes: | |
node.description() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment