CS170 Efficient Algorithms and Intractable Problems Section11
课程主页:
https://inst.eecs.berkeley.edu/~cs170/fa18/
课程视频:
https://www.bilibili.com/video/BV1wK411g7ck
这次回顾Section 11。
1. Local Search for Max Cut
(a)
因为每步操作会让cut的大小至少增加$1$,而cut的最大值为$|E|$,所以最多循环$|E|$次。
(b)
对于$v\in V$,记
那么Max Cut为
注意到对于任意$v$,都有
以及
所以
另解:
考虑$S$中内部边$(u,v )$(即$u, v\in S$),根据定义可得,必然存在$p,q\in T$,使得$(u,p),(v,q)$为cut边(否则$u,v$的外部边数量小于内部边),因此$S$中一条内部边至少对应两个cut,同理可得$T$中一条内部边至少对应两个cut边。假设$S$中内部边数量为$a$,$T$中内部边数量为$b$,cut数量为$c$,那么
2. Multiway Cut
(a)
取$s=s_i$,构造点$t$,增加边$(s_j,t),j\neq i$,令边的容量为正无穷,那么$F_i$即为$s-t$的最小割。
(b)
根据定义$F^{\star}$中每条边属于两个$F_i^{\star}$,因为每条边的两个端点不可能属于同一个$F_i^{\star}$,否则将其删除即可。
另一方面,显然$|F_i|\le |F_i^{\star}|$。
(c)
剩余部分参考了习题解答。
方案是计算出$F_i$之后,删除元素最多的$F_i$,不妨记为$F_j$,最终得到
注意到我们有
此外,$s_j$和每个$s_i,i\neq j$都不属于同一个元素,所以$F$依然为multiway cut,那么
3. Fast Modular Exponentiation
假设
那么根据费马小定理可得
对于最后一项,利用快速幂可以在$O(\log r_1)=O(\log p )$时间内求出结果。
所以问题转化为求出$r_1$。
假设
那么
利用快速幂可以在$O(\log c)$时间内求出结果。
因此总时间复杂度为
4. Fermat’s Little Theorem as a Primality Test
(a)
def f(p):
i = 2
while 1:
if (i ** (p - 1) % p) == 1:
print(i)
break
else:
i += 1
f(15)
得到结果
4
验证后不难发现
(b)
假设$b$满足
那么
对于$b_1\neq b_2$,满足
那么可以证明
这是因为如果该事实不成立,那么必然有
因为$p,a$互素,所以
但是$b_1\neq b_2$,并且$b_1 -b_2\in [-(p-2),p-2]$,所以该事实不可能成立。
从而映射$f(b)=ab \bmod p$是单射,将每个通过费马测试的数映射为一个不通过费马测试的数,因此不通过费马测试的数的数量必然大于等于通过费马测试的数的数量。
备注:这里的数属于范围$\{1,\ldots, p-1\}$。
(c)
$a$不一定存在。