def main(args): # TODO: add proper TESTs to initialize Graph and Vertex with graph example from GeeksForGeeks! # print type(Graph) # print dir(Graph) # print type(Vertex) # print dir(Vertex) # help(Vertex.__init__) # print dir(PriorityQueue) vertex0 = Vertex(0) vertex0.setDistance(0) # print vertex0 vertex1 = Vertex(1) # print vertex1 vertex7 = Vertex(7) # print vertex7 vertex2 = Vertex(2) # print vertex2 graph1 = Graph() graph1.addVertex(vertex0) graph1.addVertex(vertex1) graph1.addVertex(vertex7) graph1.addVertex(vertex2) print 'Initialized Vertex Dump:' # for aVertex in graph1.getVertices(): # print aVertex print 'Initialized Edges Dump:' graph1.addEdge(vertex0, vertex1, 4) graph1.addEdge(vertex0, vertex7, 8) graph1.addEdge(vertex1, vertex2, 8) print 'Vertex Sequenced after Djikstra from starting point with key 0' try: dijkstra(graph1, vertex0) for aVertex in graph1.getVertices(): print aVertex except Exception as ex: logging.exception("BURP!")
def main(): #file opening alphabet = "abcdefghijklmnopqrstuvwxyz" #file parsing word = [] for line in fileinput.input(): x = line.strip() t = x.lower() word.append(t) fileinput.close() g = Graph() for i in word: vertlist = g.getVertices() if i not in vertlist: g.addVertex(i) #vert0 = g.getVertex(i) fhalf = shalf = [] tmp = [] for idx,ch in enumerate(i): l = list(i) for a in alphabet: l[idx] = a final = "".join(l) if final in word and final not in vertlist: g.addVertex(final) vertlist = g.getVertices() if final in word and final in vertlist: #vert1 = g.getVertex(final) g.addEdge(i, final) g.addEdge(final, i) go = g.getVertex(i) s = go.getConnections() print i, len(s) return 0
if f not in self.vertList: self.addVertex(f) if t not in self.vertList: self.addVertex(t) self.vertList[f].addNeighbor(self.vertList[t], cost) def getVertices(self): return self.vertList.keys() def __iter__(self): return iter(self.vertList.values()) g = Graph() for i in range(6): g.addVertex(i) g.addEdge(0, 1, '01') g.addEdge(1, 2, '12') g.addEdge(2, 3, '23') g.addEdge(3, 4, '34') g.addEdge(4, 5, '45') g.addEdge(5, 0, '50') for v in g: for w in v.getConnections(): print('(%s, %s, %s)' % (v.getId(), w.getId(), v.getWeight(w))) #构建字梯图 from pythonds.graphs import Graph def buildGraph(wordFile):
from pythonds.graphs import Graph from pythonds.basic import Queue queue=Queue() graph=Graph(); start=graph.addVertex("0,0") def extractQuantity(quantities): quants=quantities.split(",") return [int(quants[0]),int(quants[1])] def makeVertex(list): newList=[str(list[0]),str(list[1])] return ",".join(newList) def findPossibleChildrens(vertex,q1,q2): childrens=[] quantities=extractQuantity(vertex.getId()) quant1=quantities[0] quant2=quantities[1] # first quantity to river if not quant1==0: childrens.append(makeVertex([0,quant2])) if not quant2==q2: canHold=q2-quant2 if(canHold>=quant1): temp2=quant2+quant1 temp1=0 else: temp2=canHold temp1=abs(canHold-quant1) childrens.append(makeVertex([temp1,temp2]))
# 5: [2], # 6: [5], # 7: [3, 6], # 8: [4, 7] } graph = {1: [2, 8], 2: [1, 8, 3], 3: [2, 4, 6, 9], 4: [3, 5, 6], 5: [4, 6], 6: [3, 5, 7, 4], 7: [6, 8, 9], 8: [1, 2, 7, 9], 9: [3, 7, 8]} # 1. Create graph graphl = Graph() for k,v in graph.iteritems(): graphl.addVertex(k) for i in v: graphl.addEdge(k, i) # 2. Draw the graph draw_graph(graph, len(edges) ) # 3. Run the algorithm dfs(graphl) pause(30)
if not done: path.pop() u.setColor('white') #搜索成功 else: done = True #将路径上的点都打印出来 for each in path: print(each.id) return done '''建图''' g = Graph() for each in 'ABCDEF': g.addVertex(each) g.addEdge('A', 'B', 1) g.addEdge('A', 'D', 1) g.addEdge('B', 'D', 1) g.addEdge('B', 'C', 1) g.addEdge('C', '', 1) g.addEdge('D', 'E', 1) g.addEdge('E', 'B', 1) g.addEdge('E', 'F', 1) g.addEdge('F', 'C', 1) A = g.getVertex('A') lst = [] print(knightTour(1, lst, A, 6))
class SearchTrees: def __init__(self): self.d = {} self.g = Graph() self.ve = Vertex self.lines = [] self.spe = [[], []] self.x = 0 with open("content/C_10_50.mis", encoding='UTF-8') as f: sizes = f.readline() sp = sizes.split(" ") # print(sp) amt_node = int(sp[2]) # print(amt_node) amt_edges = int(sp[3]) next(f) self.lines = f.readlines() f.close() for i in self.lines: x = i[:-1].split(' ', 3) self.spe[0].append(x[1]) self.spe[1].append(x[2]) # self.g = Graph() for i in range(int(amt_node)): self.g.addVertex(i) self.g.addEdge((int(self.spe[1][i])), int(self.spe[0][i])) def build_graph(self, wordFile): self.d = {} self.g = Graph() wfile = open(wordFile, 'r') # create buckets of words that differ by one letter for line in wfile: word = line[:-1] for i in range(len(word)): bucket = word[:i] + '_' + word[i + 1:] if bucket in self.d: self.d[bucket].append(word) else: self.d[bucket] = [word] # add vertices and edges for words in the same bucket for bucket in self.d.keys(): for word1 in self.d[bucket]: for word2 in self.d[bucket]: if word1 != word2: self.g.addEdge(word1, word2) return self.g def check_graph(self, g): for v in g: for w in v.getConnections(): print("( %s , %s )" % (v.getId(), w.getId())) def bfs(self, g, start): start.setDistance(0) start.setPred(None) vertQueue = Queue() vertQueue.enqueue(start) while vertQueue.size() > 0: currentVert = vertQueue.dequeue() for nbr in currentVert.getConnections(): # print(nbr) if nbr.getColor() == 'white': nbr.setColor('gray') nbr.setDistance(currentVert.getDistance() + 1) nbr.setPred(currentVert) vertQueue.enqueue(nbr) currentVert.setColor('black') def traverse(self, y): x = y while x.getPred(): print(x.getId()) x = x.getPred() print(x.getId()) def prim(self, g, start): pq = PriorityQueue() for v in g: print(v) v.setDistance(sys.maxsize) v.setPred(None) start.setDistance(0) pq.buildHeap([(v.getDistance(), v) for v in g]) while not pq.isEmpty(): currentVert = pq.delMin() for nextVert in currentVert.getConnections(): # print(nextVert) newCost = currentVert.getWeight(nextVert) if nextVert in pq and newCost < nextVert.getDistance(): nextVert.setPred(currentVert) nextVert.setDistance(newCost) pq.decreaseKey(nextVert, newCost)