python两列数据生成邻接矩阵_用python实现邻接矩阵转换为邻接表,python语言实现...

graph = {'A': ['B', 'C'],

'B': ['C', 'D'],

'C': ['D'],

'D': ['C','G','H'],

'E': ['F'],

'F': ['C']}

#从图中找出任意一条从起始顶点到终止顶点的路径

def find_path(graph, start, end, path=[]):

if start == end:

print "path", path

return True

if not graph.get(start):

path.pop()

return False

for v in graph[start]:

if v not in path:

path.append(v)

if find_path(graph,v,end,path):

return True

return False

path = []

if find_path(graph, 'A', 'C', path=path):

print(path)

else:

print(1)

#从图中找出从起始顶点到终止顶点的所32313133353236313431303231363533e58685e5aeb931333365656465有路径

import copy

def find_path_all(curr, end, path):

'''

:param curr: 当前顶点

:param end: 要到达的顶点

:param path: 当前顶点的一条父路径

:return:

'''

if curr == end:

path_tmp = copy.deepcopy(path)

path_all.append(path_tmp)

return

if not graph.get(curr):

return

for v in graph[curr]:

#一个顶点在当前递归路径中只能出现一次,否则会陷入死循环。

if v in path:

print("v %s in path %s" %(v, path))

continue

#构造下次递归的父路径

path.append(v)

find_path_all(v,end,path)

path.pop()

path_all = []

find_path_all('A', 'G',path=['A'])

print path_all

#遍历图中所有顶点,按照遍历顺序将顶点添加到列表中

vertex = []

def dfs(v):

if v not in graph:

return

for vv in graph[v]:

if vv not in vertex:

vertex.append(vv)

dfs(vv)

for v in graph:

if v not in vertex:

vertex.append(v)

dfs(v)

print(vertex)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值