当前课程知识点:算法设计与分析 > 4 Greedy Algorithms > 4.9 Clustering > Clustering
下面我们来讨论聚类问题
聚类问题中
给定n个对象
标记为p_1到p_n
把它们分为相关的一些类
这里对象可以是照片 文件 微生物等
我们用距离函数来描述
不同对象之间的远近程度
聚类问题 是一个基础问题
它要求我们进行类的划分
使得不同类之间的点离得尽量远
在移动网络的路由
基因表达式的模式识别
文件分类
医学数据的相似性搜索
星体的辨别和区分等
聚类问题都有重要的应用
我们考虑k聚类问题
要求把对象分为k个非空的类
对于距离函数
我们有一些基本要求
第一个 不同的对象是可区分的
pi和pj的距离为零
当且仅当
它们是同一个对象
还要满足非负的性质
任何两个点p_i和p_j
它们之间的距离是非负的
第三个要求是对称性
p_i和p_j之间的距离
等于p_j和p_i之间的距离
我们定义
类的间隔(spacing)
为来自不同两类中的两点的最小距离
k聚类问题中
给定一个整数k
进行一个k类的划分
并且使得类的间隔最大
比如下面例子中 取k=4
在不同的类中
点对的最近距离为类的间隔
我们给出基于贪婪算法的k聚类算法
首先 我们把对象对应为图中的点
并把每个点作为一个类
得到了n个类
寻找来自不同类的最近的两个点
并且把它们连接起来
类的数目会减少1个
我们重复上述的操作
直到恰有n-k个类
我们发现 这个算法实际上就是Kruskal算法
只是我们在得到k个连通分支的时候
终止了算法
或者我们可以这样的理解所得到的解
它是最小支撑树中删掉k-1条费用最大的边
而得到的结果
下面我们来证明算法的正确性
令C^*表示上述算法中所返回的解
也就是在最小支撑树中
删除掉k-1条费用最大的边
而得到的结果
令得到的聚类为C_1^*到C_k^*
则C^*得到间隔最大的k聚类
令C表示另外的一个聚类
对应的类为C_1一直到C_k
注意到 我们算法所得到的目标值
最大的间隔d^*为
费用第k-1大的边上的费用
由于C^*和C不同
一定存在着点p_i和p_j
它们在C^*中
被分在了同一类C_r^*之中
但是 在C中它被分入了不同的类
我们称为C_s和C_t
如图 我们可以看出
p_i,p_j在聚类C^*中被分到了同一类C_r^*中
它们两个之间是连通的
那么一定有这条连通路上的某条边p-q
联通了C_s和C_t
对于C_r^*中联通p_i,p_j的路
其上的边被加入了进来
费用一定不大于第k-1大的边上的费用
也就是d^*
对于聚类C来说
它的目标 是不同类中的最小距离
一定不大于(p,q)的费用
因此也不大于d^*
这样 我们就得到了所需的结论
-1.1 Introduction
-1.2 A First Problem: Stable Matching
--A First Problem: Stable Matching
-1.3 Gale-Shapley Algorithm
-1.4 Understanding Gale-Shapley Algorithm
--Understanding Gale-Shapley Algorithm
-Homework1
-Lecture note 1
--Lecture note 1 Introduction of Algorithm
-2.1 Computational Tractability
-2.2 Asymptotic Order of Growth
-2.3 A Survey of Common Running Times
--A Survey of Common Running Times
-Homework2
-Lecture note 2
--Lecture note 2 Basics of Algorithm Analysis
-3.1 Basic Definitions and Applications
--Basic Definitions and Applications
-3.2 Graph Traversal
-3.3 Testing Bipartiteness
-3.4 Connectivity in Directed Graphs
--Connectivity in Directed Graphs
-3.5 DAG and Topological Ordering
--DAG and Topological Ordering
-Homework3
-Lecture note 3
-4.1 Coin Changing
-4.2 Interval Scheduling
-4.3 Interval Partitioning
-4.4 Scheduling to Minimize Lateness
--Scheduling to Minimize Lateness
-4.5 Optimal Caching
-4.6 Shortest Paths in a Graph
-4.7 Minimum Spanning Tree
-4.8 Correctness of Algorithms
-4.9 Clustering
-Homework4
-Lecture note 4
--Lecture note 4 Greedy Algorithms
-5.1 Mergesort
-5.2 Counting Inversions
-5.3 Closest Pair of Points
-5.4 Integer Multiplication
-5.5 Matrix Multiplication
--Video
-5.6 Convolution and FFT
-5.7 FFT
--FFT
-5.8 Inverse DFT
-Homework5
-Lecture note 5
--Lecture note 5 Divide and Conquer
-6.1 Weighted Interval Scheduling
--Weighted Interval Scheduling
-6.2 Segmented Least Squares
-6.3 Knapsack Problem
-6.4 RNA Secondary Structure
-6.5 Sequence Alignment
-6.6 Shortest Paths
-Homework6
-Lecture note 6
--Lecture note 6 Dynamic Programming
-7.1 Flows and Cuts
-7.2 Minimum Cut and Maximum Flow
--Minimum Cut and Maximum Flow
-7.3 Ford-Fulkerson Algorithm
-7.4 Choosing Good Augmenting Paths
--Choosing Good Augmenting Paths
-7.5 Bipartite Matching
-Homework7
-Lecture note 7
-8.1 Polynomial-Time Reductions
-8.2 Basic Reduction Strategies I
--Basic Reduction Strategies I
-8.3 Basic Reduction Strategies II
--Basic Reduction Strategies II
-8.4 Definition of NP
-8.5 Problems in NP
-8.6 NP-Completeness
-8.7 Sequencing Problems
-8.8 Numerical Problems
-8.9 co-NP and the Asymmetry of NP
--co-NP and the Asymmetry of NP
-Homework8
-Lecture note 8
--Lecture note 8 NP and Computational Intractability
-9.1 Load Balancing
-9.2 Center Selection
-9.3 The Pricing Method: Vertex Cover
--The Pricing Method: Vertex Cover
-9.4 LP Rounding: Vertex Cover
-9.5 Knapsack Problem
-Homework9
-Lecture note 9
--Lecture note 9 Approximation Algorithms
-10.1 Landscape of an Optimization Problem
--Landscape of an Optimization Problem
-10.2 Maximum Cut
-10.3 Nash Equilibria
-10.4 Price of Stability
-Homework10
-Lecture note 10
--Lecture note 10 Local Search
-11.1 Contention Resolution
-11.2 Linearity of Expectation
-11.3 MAX 3-SAT
-11.4 Chernoff Bounds
-Homework11
-Lecture note 11
--Lecture note 11 Randomized Algorithms
-Exam