2015年7月31日

摘要: 1 # Bellman-Ford核心算法 2 # 对于一个包含n个顶点,m条边的图, 计算源点到任意点的最短距离 3 # 循环n-1轮,每轮对m条边进行一次松弛操作 4 5 # 定理: 6 # 在一个含有n个顶点的图中,任意两点之间的最短路径最多包含n-1条边 7 # 最短路径肯定是一个不包含回... 阅读全文
posted @ 2015-07-31 17:06 hanahimi 阅读(3632) 评论(0) 推荐(0)
摘要: 1 # Dijkstra算法——通过边实现松弛 2 # 指定一个点到其他各顶点的路径——单源最短路径 3 4 # 初始化图参数 5 G = {1:{1:0, 2:1, 3:12}, 6 2:{2:0, 3:9, 4:3}, 7 3:{3:0, 5... 阅读全文
posted @ 2015-07-31 17:03 hanahimi 阅读(14413) 评论(0) 推荐(0)
摘要: 使用Floyd-Warshall算法 求图两点之间的最短路径不允许有负权边,时间复杂度高,思路简单 1 # 城市地图(字典的字典) 2 # 字典的第1个键为起点城市,第2个键为目标城市其键值为两个城市间的直接距离 3 # 将不相连点设为INF,方便更新两点之间的最小值 4 INF = 99999 5... 阅读全文
posted @ 2015-07-31 17:01 hanahimi 阅读(3157) 评论(1) 推荐(0)
摘要: 根据维基百科的伪代码实现:广度优先BFS:使用队列,集合标记初始结点已被发现,放入队列每次循环从队列弹出一个结点将该节点的所有相连结点放入队列,并标记已被发现通过队列,将迷宫路口所有的门打开,从一个门进去继续打开里面的门,然后返回前一个门处 1 """ 2 procedure BFS(G,v) i... 阅读全文
posted @ 2015-07-31 16:52 hanahimi 阅读(1099) 评论(0) 推荐(0)
摘要: 按照《啊哈》里的思路实现这道题目,但是和结果不一样,我自己用一幅牌试了一下,发现是我的结果像一点,可能我理解的有偏差。# 小猫钓鱼# 计算桌上每种牌的数量# 使用defaultdict类,并设置默认类型为int型,即默认值为0# cardcounts = defaultdict(int) #... 阅读全文
posted @ 2015-07-31 16:37 hanahimi 阅读(1514) 评论(0) 推荐(0)
摘要: # 栈# 其实python里面的list就可以当栈使用啦,用collections.deque也可以# 1. 入栈 list.append(item)# 2. 出栈 item = list.pop()# 3. 对于首元素出栈,还可以 item = list.pop(0) 和队列概念一样# 4.... 阅读全文
posted @ 2015-07-31 16:33 hanahimi 阅读(580) 评论(0) 推荐(0)
摘要: 队列结构可以使用数组来模拟,只需要设定头和尾的两个标记参考自《啊哈》 1 # 按书中的代码会出现索引越界的问题(书中申请了超量的空间) 2 # 尝试令tai初始为len(q)-1则不会出错但少了最后一位 3 # 通过异常处理,捕获出界异常则直接跳出循环 4 def queue_demo1(q): 5... 阅读全文
posted @ 2015-07-31 16:28 hanahimi 阅读(421) 评论(0) 推荐(0)
摘要: 具体的数据结构可以参考下面的这两篇博客:python 数据结构之单链表的实现:http://www.cnblogs.com/yupeng/p/3413763.htmlpython 数据结构之双向链表的实现:http://www.cnblogs.com/yupeng/p/3413800.html我这里... 阅读全文
posted @ 2015-07-31 16:21 hanahimi 阅读(599) 评论(0) 推荐(0)
摘要: 快速排序通过不断将数列分段,使得较小的数在左边的序列,较大的数在右边的序列,不断重复此过程实现排序效果。通过设置两个哨兵不断的找两个序列的较小数,较大数,并把左右的数据互换,实现对数据从粗到细的排序。算法如下:快速排序排序 从大到小1. 先让从最右边的哨兵开始出发往左移动,直到找到一个小于 A[ba... 阅读全文
posted @ 2015-07-31 15:40 hanahimi 阅读(549) 评论(0) 推荐(0)
摘要: 桶排序的时间复杂度是O(M+N),通过建立对原始数据的有序统计表,实现非常快速的排序过程可以用hashtable(或者dict)实现,查询复杂度为O(1)贴代码: 1 # 简单桶排序 从小到大 2 def bucksort(A): 3 4 bucks = dict() # 桶 5... 阅读全文
posted @ 2015-07-31 15:33 hanahimi 阅读(598) 评论(0) 推荐(0)

导航