Advertisement
thinkpad20

algorithms 4 DFS progress

Apr 15th, 2012
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.61 KB | None | 0 0
  1. ##file1 = open("SCC.txt")
  2. ##map1 = {}
  3. ##revMap1 = {}
  4. ##count = 0
  5. ##for line in file1:
  6. ## #if count == 10:
  7. ## # break
  8. ## node, edge = int(line.split()[0]), int(line.split()[1])
  9. ## if node in map1:
  10. ## map1[node].append(edge)
  11. ## else:
  12. ## map1[node] = [edge]
  13. ## if edge in revMap1:
  14. ## revMap1[edge].append(node)
  15. ## else:
  16. ## revMap1[edge] = [node]
  17. ## count += 1
  18. ## if count % 50000 == 0:
  19. ## print count, "edges added."
  20. ##print count, "total edges added."
  21. ##print len(map1), len(revMap1)
  22. ##file1.close()
  23.  
  24. def mapReverser(map1):
  25. revMap = {}
  26. for node in map1:
  27. for edge in map1[node]:
  28. if edge in revMap:
  29. revMap[edge].append(node)
  30. else:
  31. revMap[edge] = [node]
  32. return revMap
  33.  
  34. testMap = {1:[4],2:[8],3:[6],4:[7],5:[2],6:[9],7:[1],8:[5,6],9:[3,7]}
  35. testRevMap = mapReverser(testMap)
  36.  
  37. def dfs(map1, startvertex):
  38. explored = []
  39. toExplore = [startvertex]
  40. while toExplore:
  41. currentVertex = toExplore.pop()
  42. print "Currently exploring vertex", currentVertex,
  43. print "which has edges",map1[currentVertex]
  44. explored.append(currentVertex)
  45. for edge in map1[currentVertex]:
  46. if edge not in explored:
  47. toExplore.append(edge)
  48. return explored
  49.  
  50. def dfs_loop(graph):
  51. t = 0
  52. s = 0
  53. f = {}
  54. explored = []
  55. for i in graph:
  56. if i not in explored:
  57. s = i
  58. dfs_mod(graph, i)
  59.  
  60. print testMap
  61. print testRevMap
  62. print dfs(testMap, 2)
  63. print dfs(testRevMap,4)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement