斯坦福 算法1 第四周作业

本文详细解析斯坦福算法课程第四周作业,包括Problem Set 4的邻接表计算入度、邻接矩阵判断联通性、2SAT问题的解决策略,以及Programming Assignment 4的强联通分量实现。重点讨论了算法复杂度和数据结构选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

斯坦福 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个布尔变量的取值能够满足条件。

这里显然考虑用图搜索算法了,提示也说了用找强联通图的方法。于是把问题建模为一个判断一个图是否是强联通分量的问题。

建图需要考虑点与边分别是啥。点很明显得考虑变量,而边就是每个条件了。假如每个点的取值都满足边代表的限制条件,那么

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值