斯坦福 Algorithms: Design and Analysis 1 第四周作业
来自斯坦福网站的Algorithms: Design and Analysis,与目前coursera上的版本内容没有变化,不过时间安排略有不同。
1. Problem Set 4
从出度邻接表计算每个点的入度,必须遍历所有的边。
使用邻接矩阵,计算s到t是否联通。先要把邻接矩阵改为邻接表,这就是平方复杂度。然后再用DFS或者BFS。
这题的答案解释很有必要认真看。有时候把问题思路形式化写出来真的不容易。
可以找到反例,所以有时可以有时不行。
上面三个都有反例,其中第一个可以想一个只差一条边就变成强联通图的SCC构成的图,加一条边之后SCC数量变成了1。
2. Optional Theory Problems
2SAT问题。看这个英文描述我是真没看懂是啥,虽然SAT问题很有名,不过很久不看突然看到确实很懵。大致就是有n个布尔变量,每两个布尔变量之间满足一些限制,比如a为真或b为假这种算是一个限制,一共有m个限制条件。需要找到给定的m个限制条件下是否存在可行的n个布尔变量的取值能够满足条件。
这里显然考虑用图搜索算法了,提示也说了用找强联通图的方法。于是把问题建模为一个判断一个图是否是强联通分量的问题。
建图需要考虑点与边分别是啥。点很明显得考虑变量,而边就是每个条件了。假如每个点的取值都满足边代表的限制条件,那么