基础算法
Aaron2333
Buck up muggles!
展开
-
[Python]图的遍历-DFS
__author__ = 'Aaron Yang'__email__ = 'byang971@usc.edu'__date__ = '6/30/2020 3:44 PM'result = list()def dfs(graph, visited, init_node): if init_node not in visited: visited.append(init_node) for connected_node in graph[init_node]原创 2020-07-01 06:58:57 · 360 阅读 · 0 评论 -
[Python]图的遍历-BFS
__author__ = 'Aaron Yang'__email__ = 'byang971@usc.edu'__date__ = '6/30/2020 11:50 AM'def bfs(graph, init_node): visited = [init_node] # List to keep track of visited nodes. queue = [init_node] # Initialize a queue while len(queue) >.原创 2020-07-01 03:17:10 · 269 阅读 · 0 评论 -
[Python]图的遍历-拓扑排序
在有向无环图DAG中, 使用拓扑排序,将获得一个包含所有顶点的一个列表组合, 因此可以用来遍历DAG。步骤从 DAG 图中选择一个 没有前驱(即入度为0)的顶点并输出。从图中删除该顶点和所有以它为起点的有向边。重复 1 和 2 直到当前的 DAG 图为空或当前图中不存在无前驱的顶点为止。后一种情况说明有向图中必然存在环。可以得到拓扑排序后的结果是 { 1, 2, 4, 3, 5 }。通常,一个有向无环图可以有一个或多个拓扑排序序列代码import itertoolsdef top原创 2020-07-01 02:20:53 · 705 阅读 · 0 评论 -
[Python]哈夫曼编码
生成树from heapq import heapify, heappush, heappopfrom itertools import count"""https://www.cnblogs.com/xuchunlin/p/7247346.html"""def huffman(nodes, frequent): num = count() trees = list(zip(frequent, num, nodes)) # num ensures valid orde.原创 2020-06-28 08:30:33 · 420 阅读 · 0 评论 -
[Python]贪心算法-Prim-和-Kruskal实现-最小生成树
目标在连通网的所有生成树中,找到所有边的代价和最小的生成树,简称最小生成树问题.(简要的来说,就是在AOV网中找出串联n个顶点代价总和最小的边集)下面记录最小生成树的两种算法,Prim和KruskalPrim算法思路从任意一个顶点开始,每次选择与当前顶点最近的一个顶点,并将两点之间的边加入到树中被选中的点构成一个集合,剩下的点是候选集每次从已选择的点的集合中,查找花费最小的点,加入进来同时在候选集中删去,重复3和4,知道候选集中没有元素。Prim算法代码def cmp(key1,原创 2020-06-27 12:32:35 · 1159 阅读 · 0 评论 -
[Python]贪心算法-Dijkstra-实现
目标带权重的有向图上单源最短路径问题。且权重都为非负值。如果采用的实现方法合适,Dijkstra运行时间要低于Bellman-Ford算法。思路选择一个节点开始蔓延计算自身到连接它的一级节点之间的距离, 全部作为候选集在候选集中,找到距离最短的,对应的那个节点删除这个节点在候选集中的信息继续蔓延,还是找最小的距离直到候选集为空最小距离的判断标准 dist[j] = min(dist[j], dist[i] + weight[i][j])完善版本import heapqimpor原创 2020-06-26 08:48:49 · 419 阅读 · 0 评论 -
[python3]稳定匹配算法实现和优化
问题的描述在这里就不赘述了,你能搜到这篇文章,那肯定知道只算法的背景是啥解决思路男生向还未拒绝其的女生中选出优先级最高的,并向其求婚女生如果没有已经被优先级更高的男生求婚,则答应(女生以后可以反悔)。 如果反之,则拒绝对此步骤进行loop,直到没有求婚发生这篇文章,讲一个自己实现的GS算法的版本看过一些博文,比如这篇文章 https://blog.csdn.net/lonfee88/article/details/6678190文章使用的代码上面那篇文章使用的代码是这样的,很清晰。d原创 2020-06-24 14:22:16 · 1453 阅读 · 0 评论 -
普通MLP处理图像时遇到了什么样的问题,才导致后续各种模型的出现
普通MLP处理图像时遇到了什么样的问题,才导致后续各种模型的出现出现的问题参数过多比如输入一张大小为1000x1000的图像, 第一层要使用1000个神经元,下一层的神经元使用10^6个那么,全连接参数就是1000 * 1000 * 10^6 = 10^12 一万亿个参数 这还仅仅是前两层。很明显,网络的参数过多, 参数过多 意味着 模型容易过拟合, 也就需要更多训练数据。 首先数据不容易获得,而且即使拿到海量数据去训练这个模型也会使模型的泛化能力差。同时还可以看到,因为参数过多,数据原创 2020-06-17 07:25:03 · 711 阅读 · 0 评论 -
算法的时间复杂度到底怎么算?
算法的时间复杂度到底怎么算?引言假设计算机运行一行简单语句算作一次运算。def func1(num): print("Hello, World!\n") # 需要执行 1 次 return 0 # 需要执行 1 次那么上面这个方法需要执行 2 次运算def func2(num): for i in range(num): # 需要执行 (n + 1) 次 print("Hello原创 2020-06-14 02:54:31 · 4148 阅读 · 0 评论 -
[Python]7种基础排序算法-Python实现
Basic 7 Algorithms in PythonBubble Sort(冒泡排序)Main Idea: use two loops to iterate data array, find the maximum, and throw it to the end.(两次循环,每次选大的放在后面,重复,直到没有数据)Feature: Stable O(n^2) def bubble_sort(arr): for i in range(len(arr)):原创 2020-06-13 08:20:36 · 248 阅读 · 0 评论