猜你喜欢
相关培训 相关博客
  • 侏儒排序法def gnome_sort(seq): i = 0 while i < len(seq): if i == 0 or seq[i-1] <= seq[i]: i += 1 else: seq[i], seq[i-1] = seq[i-1], seq[i] ...
    2019-08-23 00:38:46
    阅读量:15
    评论:0
  • 在有向非环路图DAG中寻找所有沿着特定顺序前进的边与点。def top_sort(graph): count = dict((gu, 0) for gu in graph) for u in graph: for v in graph[u]: count[v] += 1 init = [u for u in graph if co...
    2019-08-23 00:40:10
    阅读量:22
    评论:0
  • 将一个函数的自我调用操作称为递归。而递归关系则是一种用于反映函数自身关联的等式,表现为某种递归形式,这些等式常会被用来描述递归算法的运行时间。递归式解法主要有三种:反复运用原始等式以展开T的递归部分,直至发现其中的模式。对解决方案进行假设性猜测,然后用归纳法证明其正确性。对符合某种主定理情况的分治递归式,直接采用相应的解决方案。递归式的一般形式:T(n) = a * T[...
    2019-08-23 00:37:24
    阅读量:18
    评论:0
  • 强连通分量(strongly connected components, SCCs)是一个能让有向路径上所有节点彼此到达的最大子图。Kosaraju的查找强连通分量算法def strongly_connected_components(graph): transpose_graph = get_transpose_graph(graph) scc, seen = [], set...
    2019-08-23 00:43:21
    阅读量:15
    评论:0
  • 背包问题可用这一套术语来定义:有一组想要带在身边的物品,每个物品都有各自的质量和价值。但问题是背包有一个最大容量,如何才能使其中所带物品的总价值达到最高呢?选取一些元素组成一个带权值的有限子集,使其权值最大化。无限制背包问题当作一个模式来看待:以某种形式来定义问题的子问题,递归这些子问题之间的关系,然后确保每个子问题都只被计算一次。围绕这背包容量中最后一个单元是否有用来进行。def un...
    2019-09-06 09:53:44
    阅读量:21
    评论:0
  • 将焦点集中在解决问题方法中那些能独立于具体实现的属性,希望能排除那些细节干扰,区分出核心问题所在。渐近记法核心思想是想提供一种资源表示形式,主要用于分析某项功能在应对一定规模参数输入时所需要的资源(通常指的是时间,但有时候也包括内存)。渐近记法使用的是一组由希腊字母构成的记号体系。这之中最重要的记号分别是O(omicron)、Ω(omega)、θ(theta)。其中,O记号的定义可以被当作其他...
    2019-08-23 00:36:10
    阅读量:11
    评论:0
  • 仅当列表是有序的时候,二分查找才管用。def binary_search(seq, num): low, high = 0, len(seq)-1 while low <= high: mid = (low+high) // 2 cur = seq[mid] if num == cur: return ...
    2019-08-26 09:41:14
    阅读量:10
    评论:0
  • 深度优先搜索迭代版深度优先搜索def depth_first_search(graph, start): seen, current = set(), [] current.append(start) while current: u = current.pop() if u in seen: continue ...
    2019-08-23 00:42:39
    阅读量:6
    评论:0
  • 一个图结构的连通分量是能让它里面的所有节点彼此到达的最大子图。def components(graph): component = [] seen = set() for u in graph: if u in seen: continue current = walk(graph, u) seen....
    2019-08-23 00:41:15
    阅读量:113
    评论:0