
算法与数据结构
开开_王子
逆风的方向更适合飞翔,我不怕万人阻挡,只怕自己投降。
展开
-
图论基本概念2
1、欧拉图 图G的一个回路,若通过G的每条边一次,则称为欧拉回路,具有这种回路的图叫做欧拉图。2、哈密尔顿图 图G的一个回路,若通过G的每个顶点一次,则称为哈密尔顿回路,具有这种回路的图叫做哈密尔顿图。3、团(clique) 对于给定图G=(V,E)。其中,V={1,…,n}是图G的顶点集,E是图G的边集。图G的团就是一个两两之间有边的顶点集合。简单地说,团是G的一个完全无向图的子图,该子图中原创 2017-06-06 00:17:28 · 784 阅读 · 0 评论 -
冒泡排序(python实现)
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。算法原理:冒泡排序算法的运作如下:(从后往前) (1)比较相邻的元素。如果第一个比第二个大,就交换他们两个。 (2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 (3)针对所有的元素重复以上的步骤,除了最后一个。 (4)持续每次对越来越少的元素重复上面的步骤,直到原创 2017-09-19 22:52:50 · 741 阅读 · 1 评论 -
选择排序(python实现)
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。def selection_sort(list2): for i in rang原创 2017-09-23 00:20:12 · 273 阅读 · 0 评论 -
斐波拉切数列(python实现)
斐波那契数列,简单地说,起始两项为0和1,此后的项分别为它的前两项之后。方式1:def fibo(num): numList = [0,1] for i in range(num - 2): numList.append(numList[-2] + numList[-1]) print ("前%d项斐波拉切数列为:" %num, numList)if __na原创 2017-09-27 22:52:20 · 2995 阅读 · 0 评论 -
社区发现评估指标-NMI
1、介绍 NMI(Normalized Mutual Information)常用在聚类中,度量两个聚类结果的相近程度。是社区发现(community detection)的重要衡量指标,基本可以比较客观地评价出一个社区划分与标准划分之间相比的准确度。NMI的值域是0到1,越高代表划分得越准。2、python代码# coding=utf-8import numpy as npimport ma原创 2017-06-27 23:46:15 · 13138 阅读 · 1 评论 -
复杂网络的统计特征
不同于规则网络和随机网络,复杂网络具有小世界效应和无标度特性。小世界效应:大的簇系数和小的平均距离。 无标度特性:节点度服从幂律分布—具有某个特定度的节点数目与这个特定度之间的关系可用一个幂函数近似表示。 统计特征:(1) 簇系数:用来衡量网络节点聚类的情况,对于某个节点,它的簇系数被定义为它所有相邻节点之间连边的数目占可能的最大连边数目(k(k-1)/2,k为节点数)的比例,网络的簇系数C则是原创 2017-06-22 21:57:36 · 13634 阅读 · 0 评论 -
最小生成树-Prim算法
1、算法概述 图论中的一种算法,可在加权连通图里搜索最小生成树。由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点,且其所有边的权值之和最小。2、算法流程 (1).输入:一个加权连通图,其中顶点集合为V,边集合为E;(2).初始化:Vnew = {x},其中x为集合V中的任一节点(起始点),Enew = {},为空;(3).重复下列操作,直到Vnew = V结束. a.在集合E中原创 2017-06-08 00:25:26 · 525 阅读 · 0 评论 -
最小生成树-Kruskal算法
1、kruskal算法(克鲁斯卡尔)思想该算法是基于贪心的思想得到的,假设有n个顶点的连通网G = {V,E} 中,最初每个顶点都是孤立点,没有边的非连通图G’= {V, E},图中每个顶点自成一个连通分量。把每条边按照权值从小到大排列,按照顺序选取每条边,若该边的两个顶点落在不同的连通分量上,则将此边加入到G’中;否则将此边舍去,重新选择下一条边。如此重复下去,直到所有顶点在同一个连通分量上为止。原创 2017-06-06 22:16:57 · 491 阅读 · 1 评论 -
图的实现(python)
比如有这么一张图:(1)可以用字典和列表来表示graph = {'V0':['V1','V5'], 'V1':['V2'], 'V2':['V3'], 'V3':['V4','V5'], 'V4':['V0'], 'V5':['V2','V4']}找到一条路径:def find_path(graph, sta原创 2017-06-07 00:04:28 · 1038 阅读 · 0 评论 -
图的表示
一个图(graph)G=(V,E)是由顶点集V和边集E组成。每一条边就是一个顶点对(v,w),其中v,w∈V。如果点对是有序的,那么图就是有向图。 图中的一条路径path是一个顶点序列w1,w2,w3,…,wk,使得(wi,wi+1)∈E,1<=i<=k。路径的长是该路径上的边数。1、二维数组表示用邻接矩阵表示,空间需求为Θ(V²):若图很稠密(边很多),则邻接矩阵是合适的表示方法。如果很稀疏,更原创 2017-06-06 21:06:49 · 331 阅读 · 0 评论 -
图论基本概念3
1、定义 二叉树是计算机中一种重要的数据结构,二叉树是一个连通的无环图,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”和“右子树”,左子树和右子树同时也是二叉树。二叉树的子树有左右之分,并且次序不能任意颠倒。2、相关术语 树的结点:包含一个数据元素及若干指向子树的分支; 结点层:根结点的层定义为1;根的孩子为第二层结点,依此类推; 树的深度:树中最大的结点层 结点的度:结原创 2017-06-06 15:13:31 · 532 阅读 · 0 评论 -
图论基本概念1
图论〔Graph Theory〕是数学的一个分支。它以图为研究对象。图论中的图是由若干给定的点及连接两点的线所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系,用点代表事物,用连接两点的线表示相应两个事物间具有这种关系。① 顶点:表示事物或对象。 ② 边:事物与事物之间的关系。 ③ 度:顶点拥有边的个数。 出度:以之为起点的边的条数。 入度:以之为终点的边的条数。 ④ 同构:不改原创 2017-06-05 23:48:47 · 422 阅读 · 0 评论 -
快速排序(python实现)
快速排序(Quicksort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前原创 2017-10-12 00:55:23 · 547 阅读 · 0 评论