算法学习笔记
文章平均质量分 81
ArthurWong7
HSIN-YANG HUANG
展开
-
算法设计技巧与分析(六):图遍历(Graph Traversal)
文章目录图遍历(Graph Traversal)一、深度优先搜索(Depth-First Search)二、寻找关节点(Finding Articulation Points in a Graph)三、广度优先搜索(Depth-First Search)图遍历(Graph Traversal)一、深度优先搜索(Depth-First Search)深度优先搜索如下图所示:图算法伪代码如下:Input: 无向图G=(V, E);Output: 对应深度优先搜索树中顶点的预排序和后排序pred原创 2021-12-07 16:25:44 · 1364 阅读 · 0 评论 -
算法设计技巧与分析(十一):近似算法(approximation algorithms)
文章目录网络流(Network Flow)网络流的性质网络流(Network Flow)网络是一个四元组(G,s,t,c),其中G=(V,E)是一个有向图,s和t是两个分别称为源和汇的不同顶点,c(u,v)是一个容量函数,如果(u,v)属于E,则c(u,v)>0,否则c(u,v)=0,|V|=n,|E|=m。网络流的性质G中的流是顶点对上的实值函数f,具有以下四个条件:对于任意一个时刻,设f(u,v)实际流量,则整个图G的流网络满足3个性质...原创 2021-12-06 21:27:41 · 3106 阅读 · 0 评论 -
算法设计技巧与分析(七):回溯(Backtracking)
文章目录回溯(Backtracking)一、三色问题(The 3-Coloring Problem)回溯(Backtracking)一、三色问题(The 3-Coloring Problem)原创 2021-12-06 10:08:13 · 1204 阅读 · 0 评论 -
算法设计技巧与分析(五):贪心算法(The Greedy Approach)
文章目录贪心算法(The Greedy Approach)一、部分背包问题(The Fractional Knapsack Problem)二、最短路径问题Dijkstra算法Kruskal算法三、文件压缩(File Compression)贪心算法(The Greedy Approach)一、部分背包问题(The Fractional Knapsack Problem)给定大小为s1、s2、…、sn的n个项目以及值v1、v2、…、vn和大小C、背包容量,目标是找到使总和最大化的非负实数x1、x2、原创 2021-12-06 09:42:52 · 1135 阅读 · 0 评论 -
算法设计技巧与分析(十):匹配(Matching)
文章目录匹配(Matching)一、二分图的匈牙利树方法(The Hungarian Tree Method for Bipartite Graphs)二分图(二部图)匹配(Matching)给定一个无向图G=(V,E),|V|=n和|E|=m。G中的匹配是属于E的子集M,使M中的两条边没有共同的顶点。如果边e属于E在M中,则它是匹配的,否则是不匹配的或自由的。如果顶点v属于V与匹配的边关联,则它是匹配的,否则是不匹配的或自由的。匹配M的大小,即其中匹配边的数量,将用|M|表示。图中的最大匹配是最大基原创 2021-12-01 21:09:12 · 1686 阅读 · 1 评论 -
算法设计技巧与分析(九):网络流(Network Flow)
文章目录网络流(Network Flow)网络流的性质割(cut)与流(flow)余量函数(Residual Capacity Function)与余量图(Residual Graph)增广路径(Augmenting Path)一、The Ford-Fulkerson Method二、EK算法(Minimum path length augmentation)最小增广路径长度(MPLA)网络流(Network Flow)网络是一个四元组(G,s,t,c),其中G=(V,E)是一个有向图,s和t是两个分原创 2021-12-01 14:58:30 · 2410 阅读 · 0 评论 -
算法设计技巧与分析(八):随机算法(Randomized Algorithms)
文章目录随机算法(Randomized Algorithms)一、随机选择(Randomized Selection)随机算法(Randomized Algorithms)随机算法可分为两类:第一类被称为拉斯维加斯算法。它由那些总是给出正确答案或根本不给出答案的随机算法组成。第二类被称为蒙特卡罗算法。它总是给出一个答案,但有时可能会产生一个不正确的答案。然而,通过在每次运行中使用独立的随机选择重复运行该算法,产生错误答案的概率可以变得任意小。一、随机选择(Randomized Sel原创 2021-11-30 22:33:23 · 6215 阅读 · 0 评论 -
算法设计技巧与分析(四):动态规划(Dynamic Programming)
文章目录动态规划(Dynamic Programming)一、寻找最长公共子序列(The Longest Common Subsequence)二、寻找所有点对的最短路径(The All-Pairs Shortest Path)三、背包问题(The Knapsack Problem)动态规划(Dynamic Programming)一、寻找最长公共子序列(The Longest Common Subsequence)子序列定义如图所示:问题分析:设A=“a0,a1,…,am”,B=“b0,b1原创 2021-11-29 20:11:51 · 397 阅读 · 0 评论 -
算法设计技巧与分析(三):分而治之(Divide and Conquer)
文章目录分而治之一、寻找最小最大元素(MINMAX)二、寻找中间或第k小的元素(Finding the Median and the kth Smallest Element)三、快速排序(Quicksort)分而治之一、寻找最小最大元素(MINMAX)比起直接寻找最小最大元素,分而治之法能更好的提升算法的性能。算法思想:将数组分为两部分,在每一半中寻找其最小最大元素,而后再对每一半中的最小最大元素进行比较,找到最终的最小最大元素。算法伪代码如下:Input:A[1...n]Output:原创 2021-11-28 12:06:12 · 748 阅读 · 0 评论 -
算法设计技巧与分析(二):几种递归算法
文章目录几种递归算法一、几种递归算法一、选择排序过程:原创 2021-11-26 17:48:10 · 731 阅读 · 0 评论 -
算法设计技巧与分析(一):基本算法(下)
文章目录一、pandas是什么?一、pandas是什么?原创 2021-11-25 14:31:35 · 560 阅读 · 0 评论 -
算法设计技巧与分析(一):基本算法(上)
文章目录基本算法(上)一、二分查找二、合并两个有序表基本算法(上)一、二分查找首先选择数组中间的数字和需要查找的目标值比较如果相等,则直接返回答案如果不相等1、如果中间的数字大于目标值,则中间数字向右的所有数字都大于目标值,全部排除2、如果中间的数字小于目标值,则中间数字向左的所有数字都小于目标值,全部排除算法伪代码如下:Input:升序数组a[n]Output:查找的位置jlow = 1;high = n;j = 0;while(low <= high &原创 2021-11-22 21:08:20 · 839 阅读 · 0 评论