常用算法定义

1. stable matching: 稳定匹配(给出N男N女的偏好列表)

如果匹配后剩余的元素间不存在不稳定对优于当前匹配结果,那么是稳定匹配;如果存在不稳定对,那么是不稳定匹配

1962年Gale-shapley算法-追求拒绝算法,找到稳定匹配:

a. 初始化S -匹配表为空

b. while(存在某个m没有匹配,且没有追求过所有女人的时候)(循环)

c. 找到m还没有追求过的偏好最高的女人w, 如果w没有匹配,则将配对m-w加入s; 否则如果w喜欢m优于当前的配偶m', 将m'-w移出匹配表,并添加m-w对到匹配表; 否则w拒绝m的追求

d. 直到所有男人找到配偶,循环终止

e. 返回稳定匹配S

证明算法有限不终止:

a. 男人按偏好从高到低 b. 女人匹配后不会恢复单身 每次迭代每个男人追求的女人不一样,最多N的平方次

反证法:证明所有的男人和女人都有匹配

反证法:匹配是稳定的。如果A-Z不稳定,假设2种情况:1. A没追求过Z,那么匹配表中的Z的配偶要优于A,所以A-Z是稳定的,与如果矛盾。  2. A追求过Z, 那么匹配表中Z的配偶优于A并拒绝A,所以A-Z是稳定的,与如果矛盾。

 

本来存在多种稳定匹配结果

G-S算法总是男性最优的分配,也是一个稳定匹配;女性最差分配,但女人会通过撒谎(附加假的条件作用于匹配过程)得到更好的配偶

 

2. 算法的时间复杂度定义及分析

对理想算法的期望:当输入加倍时,算法的运行时间只增加常数倍,多项式时间算法(低常系数和低幂次,也有例外使用高常系数以及高幂次,以及指数时间算法,因为最坏输入情况很少出现)。

使用最坏情形分析。

f(n)是T(n)的上界,T(n) = O(f(n)); f(n)是T(n)的下界, T(n) = Ω(f(n)).  分为多项式函数,对数函数,指数函数

运行时间:O(n) 输入的常数倍   举例:a.找出数组

你可能感兴趣的:(leetcode)