典型算法
mmmmmk_
这个作者很懒,什么都没留下…
展开
-
最大流的增广路算法(EK)
首先介绍算法中的一些基本概念: 容量:c(u,v)。表示边 最大可以承载的流量。 流量:f(u,v)。表示边 中已经有多少流量。 残量:r(u,v)。表示边 还可以走多少的流量会达到饱和。r = c – f。为了理解最大流算法,可以形象的将网络中的各个边联想成水管。那么c和f表示水管内的最大水流量以及水流量。r表示这个水管还能够增加多少单位的水流量。而对于一条路径,其能够增加的最大水流量原创 2017-03-18 11:12:31 · 4491 阅读 · 1 评论 -
最短路径最大流的SAP算法
EK算法的时间复杂度为O(VE^2),效率比较低。使用最短路径最大流的SAP算法,时间复杂度为O(EV^2),速度快很多。EK算法使用BFS计算增广路径,耗费时间长。SAP算法在引入了距离标号,加快了计算求增广路径的过程。下面介绍一些概念: 距离标号:每个结点到宿结点所需要经过的弧数量的下界。 允许弧:d[u] = d[v] + 1,并且c[u, v]>0的边称为允许弧。每次都走允许弧可以保证走原创 2017-03-19 15:56:11 · 1366 阅读 · 0 评论 -
最大流之Dinic算法
Dinic是一个分层的增广路算法。Dinic中分层的概念定义为:到原结点的最小距离相同的点为同一层。 假设有拓扑如下:如果源点为1,宿点为4;拓扑可以分成4层。 首先,回想E-K算法是怎么算的:使用DFS在1到4之间计算一条增广路,并计算残量网络;再进行循环。我们观察计算第一次增广路(1->2->3->4)之后的残量网络,橙色的表示反向弧。 从图中可以看出,其实这个时候1->2->5->4原创 2017-04-09 16:10:17 · 642 阅读 · 0 评论 -
朴素贝叶斯
朴素贝叶斯分类器是一个简单有效的分类模型。贝叶斯定位公式为:P(A|B) = P(B|A)*P(A)/P(B) 其中P(A|B)表示在B发生的前提下A发生的概率。公式具体就不多说了,下面举一个例子来说明。那么现在假设食堂来了10个四川人,8个人要了夫妻肺片。2个人要了酸辣土豆丝。来了10个湖北人;7个人要了酸辣土豆丝,3个人要了夫妻肺片。现在又来了一个四川人,预测它会点一个什么菜呢?原创 2017-05-01 15:22:14 · 369 阅读 · 0 评论 -
FR算法
FR算法将所有的结点看做是电子,每个结点收到两个力的作用:1. 其他结点的库伦力(斥力)2. 边对点的胡克力(引力)。那么在力的相互作用之下,整个布局最终会称为一个平衡的状态。算法结构: 1. 给所有的点一个初始的随机位置 2. 计算每个点收到其他点的库伦力以及所有边对该点的胡克引力,得到该点受到的最终力。 3. 根据步骤2计算的力得到位置的偏移,调整布局中点的位置。 4. 迭代2,原创 2017-06-28 23:43:44 · 4158 阅读 · 0 评论 -
典型排序算法之:冒泡排序/直接插入排序/希尔排序/选择排序/快速排序
// sort_test.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "stdio.h"#include "stdlib.h"void swap(int&a, int &b){ int temp = b; b = a; a = temp;}void print_arr(int* arr, int...原创 2018-09-02 22:20:44 · 748 阅读 · 0 评论