经典算法python代码实现
2017-10-29 18:06
621 查看
之前学算法经常不求甚解,懒癌发作不敲代码不实践,到头来自己挖的坑还是得自己填,我会陆续更新代码,本文大量代码来自互联网,能找到出处的我会尽量贴上出处
广度优先搜索、深度优先搜索
http://www.cnblogs.com/yupeng/p/3414736.html#commentformclass 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 =True order.append(n) for node in self.node_neighbors : 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 order if __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)
相关文章推荐
- 八大经典排序算法基本思想及代码实现(Python、C++)
- 机器学习经典算法详解及Python实现--元算法、AdaBoost
- 机器学习经典算法详解及Python实现--线性回归(Linear Regression)算法
- 机器学习经典算法详解及Python实现–K近邻(KNN)算法
- 支持向量机 SVM 算法推导优缺点 代码实现 in Python
- 机器学习经典算法详解及Python实现---Logistic回归(LR)分类器
- 数据挖掘之Apriori算法详解和Python实现代码分享
- python实现的 K-近邻算法代码详细解释
- 经典算法的Python实现(4)
- 机器学习经典算法详解及Python实现--聚类及K均值、二分K-均值聚类算法
- 经典算法的Python实现(5)
- [重现经典算法]用Python实现CSP的backTrack与AC-3算法
- 经典算法的Python实现(1)
- Python实现的朴素贝叶斯算法经典示例【测试可用】
- python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
- python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
- 经典算法的Python实现(2)
- 数据挖掘之Apriori算法详解和Python实现代码分享
- tf–idf算法解释及其python代码实现(上)
- 机器学习经典算法详解及Python实现--基于SMO的SVM分类器