经典算法python代码实现
来源:互联网 发布:sql 判断是否在一天内 编辑:程序博客网 时间:2024/06/07 02:48
之前学算法经常不求甚解,懒癌发作不敲代码不实践,到头来自己挖的坑还是得自己填,我会陆续更新代码,本文大量代码来自互联网,能找到出处的我会尽量贴上出处
广度优先搜索、深度优先搜索
http://www.cnblogs.com/yupeng/p/3414736.html#commentform
class graph(): def __init__(self,*arg,**kwargs): self.node_neighbors={} self.visited={} def add_nodes(self,nodelist): for node in nodelist: self.add_node(node) def add_node(self,node): if node not in self.node_neighbors.keys: self.node_neighbors[node]=[] def add_edge(self,edge): u,v=edge if (u not in self.node_neighbors[v]) and (v not in self.node_neighbors[u]): self.node_neighbors[u].append(v) if u!=v: self.node_neighbors[v].append(u) def depth_first_search(self,root=None): self.visited={} order=[] def dfs(n): self.visited[n]=True order.append(n) for node in self.node_neighbors[n]: if node not in self.visited: dps(node) if root: dps(root) for n in self.node_neighbors.keys: if n not in self.visited: dps(n) print(order) return order def breadth_first_search(self,root=None): self.visited={} order=[] queue=[] def bfs(): while(len(queue)>0): node = queue.pop(0) self.visited[node]=True for n in self.node_neighbors[node]: if not n in self.visited and not n in queue: order.append(n) queue.append(n) if root: queue.append(root) order.append(root) bfs() for node in self.nodes(): if not node in self.visited: queue.append(node) order.append(node) bfs() print (order) return orderif __name__ == '__main__': g = Graph()g.add_nodes([i+1 for i in range(8)])g.add_edge((1, 2))g.add_edge((1, 3))g.add_edge((2, 4))g.add_edge((2, 5))g.add_edge((4, 8))g.add_edge((5, 8))g.add_edge((3, 6))g.add_edge((3, 7))g.add_edge((6, 7))print ("nodes:", g.node_neighbors)order = g.breadth_first_search(1)order = g.depth_first_search(1)
阅读全文
0 0
- 经典算法python代码实现
- Python:经典排序算法实现
- python实现经典排序算法
- 经典算法的Python实现(1)
- 经典算法的Python实现(2)
- 经典算法的Python实现(3)
- 经典算法的Python实现(4)
- 经典算法的Python实现(5)
- Python实现经典排序算法(转载)
- 经典排序算法及其python实现
- Python实现汉诺塔递归经典算法
- Python实现汉诺塔递归经典算法
- KNN算法--python实现代码
- 决策树算法Python代码实现
- python 实现堆排序算法代码
- PYTHON实现RSA算法之简洁代码
- python实现的各种排序算法代码
- Apriori算法及python代码实现
- WebService之发布CXFREST服务入门
- Win快捷键
- jquery之事件添加和取消
- FZU 1015 土地划分 (计算几何求线段交点个数)
- Dubbo的三种连接方式
- 经典算法python代码实现
- ajax小结
- 使用vue-cli创建项目
- 二维码
- 星月蓝图
- pomelo(十)英文文档首页
- luogu P2368 EXCEEDED WARNING B
- 12进制和20进制计数器用verilog语言实现
- POJ