算法学习
文章平均质量分 79
土肥宅娘口三三
这个作者很懒,什么都没留下…
展开
-
生成不重复的随机数的高效的算法
#include#include#include#define SIZE 10void generateRandom();int main(){ srand((unsigned)time(NULL)); generateRandom(); return 0;}/* * 产生 1~SIZE 之间的不重复的随机数 * */void generateRandom(){原创 2016-05-19 15:45:09 · 2143 阅读 · 1 评论 -
找出无向图中所有的环的算法
本文给出了一个找到无向图中所有的环的递归算法,该算法是基于DFS(深度优先搜索)的,大概的思路是:在深度优先搜索无向图的过程中,当遇到起始点的时候,会认定为出现环(在本文中只是找出了无向图中所有的长度大于等于3的环(长度为1和2的环没有意思),所以在深搜的过程中,当遇到的是起始点的时候,还需要进行判断是否是环),当确定是出现了环之后,根据是否在遇到环之前的那个点还有其他的路径,来决定是进一步的进行原创 2016-07-13 16:25:47 · 46535 阅读 · 20 评论 -
二叉树的基本操作
常用的二叉树的链式存储结构有二叉链表和三叉链表来表示,其数据结构的C语言定义以及示意图如下:本来介绍基于二叉链表的存储结构上的二叉树的几个常用的操作: 1.二叉树的创建, 2.使用递归算法进行二叉树的先序,中序和后序遍历。 3.使用非递归算法进行二叉树的中序遍历(u需要借助于栈) 4.借助于数据结构队列实现二叉树的层序遍历。 5.一些其他的函数,求取叶子节原创 2016-11-09 09:20:50 · 992 阅读 · 0 评论 -
八大排序算法及实现
将一个元素插入到已经排好序的有序表中,从而使得有序表的 个数+1。 算法从第二个元素开始。将一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。 * *2) 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置以使得其变成有序的序列。 * (如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。) *原创 2016-10-03 22:41:19 · 1198 阅读 · 0 评论 -
higher-ordering cluster的C语言实现
#include#include#include#include#define INITIAL_SIZE 100#define INCREMENT_SIZE 100int vertax_size;int edge_size;char filename_edge[20];typedef struct Node{ double value; int index;}Node原创 2016-09-20 22:00:43 · 1315 阅读 · 1 评论 -
《Higher-order organization of complex networks》-论文学习笔记
0.前言: 最近阅读了Benson等人发表在science上的论文《Higher-order organization of complex networks》,在该论文中作者提出了一种通用的框架,可在网络中基于高阶连接模式进行聚类。 和以往接触的聚类方法(K-means, 层次聚类, DBSCAN, 或者OPRICS)等不同的是: K-means等在对item进行聚类的时候,原创 2016-09-20 16:47:29 · 6282 阅读 · 12 评论 -
通过似然分析预测丢失的边和虚假的边--的C语言代码实现
#include#include#include#includeint kc = 12;int training_set_size;int probe_set_size;int vertax_set_size;char training_filename[200];char probe_filename[200];char vertax_filename[200];int原创 2016-08-24 20:33:29 · 790 阅读 · 0 评论 -
通过似然分析预测丢失的边和虚假的边(潘黎明,周涛著)
真实网络中的数据往往是不完全,存在噪音的。这时, 丢失边预测算法和虚假边的识别算法就有了用武之地。在这里提出了一种算法的框架:网络的似然可以通过预先定义好的哈密顿量来计算, 这个哈密顿量的定义考虑了网络形成的一些重要的驱动因素, 这样的话,一条没有被观测到的边的存在的“得分”可以通过计算将这条边加入已经观测到的网络中的似然来表示。对于丢失边的预测问题,其目的是要根据已有的网路的拓扑结构和节点的原创 2016-08-24 20:21:30 · 1797 阅读 · 0 评论 -
层次聚类算法之single-linkage和complete-linkage(C语言实现)
层次聚类试图在不同层次上对数据集合进行划分, 从而形成树形的聚类结构。数据集的划分可采用“自底向上”的聚合策略,也可以采用“自顶向下”的分拆策略。AGNES是一种采用自底向上的聚合策略的层次聚合算法,它先将数据集中的每个样本看作是一个初始的聚类簇,然后在算法进行的每一步中找出距离最近的两个聚类来进行合并,该过程不断的重复,直到到达预设的聚类簇的个数。改算法的关键是如何计算聚类之间的距离,原创 2016-06-17 19:34:05 · 16483 阅读 · 1 评论 -
基于密度的聚类算法C语言实现--DBSCAN
#include#include#include#include#include//#define INITIALASSIGN_COREOBJECT 100//#define INCREASEMENT_COREOBJECT 100 #define INITIALASSIGN_DIRECTLYDENSITYREACHABLE 100#define INCREASEMENT_D原创 2016-06-13 08:54:38 · 6593 阅读 · 2 评论 -
生成螺旋线形状的随机点
#include#include#include#include#define PI 3.1415926535void generate_spiral();int size_of_point; //the total size of pointsint range; //the range of x and y of all pointsint initial_phas原创 2016-06-12 12:26:18 · 2038 阅读 · 0 评论 -
OPTICS算法的C语言实现
在这个方法中,不像前面的相关的聚类的文章中产生数据集合的聚类结果,而是产生一个基于密度的表示数据的固有的聚类结构的一个增广的排序,除了应用到DBSCAN中的相关的概念(核心对象, 直接密度可达,密度可达,和密度相连),有增加了两个概念, 一个是核心距离:即使得一个object满足称为核心对象的最小的距离(即,在用户输入的ε和MinPtr的情况下成为核心对象的最小的距离,如果改对象不是在ε和MinP原创 2016-06-24 20:42:11 · 3353 阅读 · 4 评论 -
对递归的理解
#include#include//假设只能打印一位数,即0~9void printDigit(int n){ printf("%d", n);}//使用递归,利用上面的printDigit打印任一数void printOut(int data){ if( data >= 10 ) printOut(data / 10); printDigit(data % 10);}原创 2016-05-19 21:45:06 · 567 阅读 · 0 评论 -
聚类系数可调的无标度网络生成算法
0. BA无标度网络模型简单介绍:实际网络的两个重要的特性: (1)增长性:即网络的规模是不断的增长的,ER随机图和WS小世界模型中的网络的大小是固定 (2)优先连接(Preferential attachment以下简称PA):新的节点更倾向于和那些具有较高的连接度的hub节点相连。这种现象也叫作“富者更富(Rich get richer)”或者是“马太效应”原创 2017-04-17 22:33:25 · 8120 阅读 · 10 评论