CS50AI - 第 2 章 - 不确定性
不确定性(Uncertainty)上节课讲的知识,那是布尔式的非黑即白。这里,我们考虑一个更细粒度的刻画,那就是发生的概率。
概率(Probability)样本空间(Possible Worlds)讨论概率,需要事先划定范围,这个范围就是样本空间。
比如,掷一个骰子,只有可能掷出来 ${1, 2, 3, 4, 5, 6}$。
概率的公理(Axioms in Probability)有一些概率相关的道理是人们共同承认的、显而易见的:
所有的概率都在 $[0, 1]$ 之间;
样本空间中所有样本点的概率之和为 1。
无条件概率(Unconditional Probability)考虑扔一个骰子,点数的可能;或者扔两个骰子,点数之和的可能,这种概率都是无条件的。条件的另一种理解方法就是知识。
条件概率(Conditional Probability)条件概率,记作 $P(a | b)$,表达的含义是,在事件 $b$ 发生的情况下,$a$ 发生的概率。也可以有另外一种方式,那就是,已知 $b$ 发生了,$a$ 发生的概率。
条件概率的一个思想是缩小考虑的范围。譬如说,已经知道 $b$ 发生 ...
计组 | 数据的运算
加法之前说过,补码的好处就在于可以直接使用无符号数的加法器硬件。因此,这里说的加法都是补码的加法,当然还涉及到了浮点数的阶码加法运算。
理论在进入到硬件层面之前,需要对加法进行理论分析,尤其是溢出判断的部分。判断溢出有如下几种方法:
双符号位;
进位;
符号位和进位标志;
运算前后的符号位(正 + 正 == 正?负 + 负 == 负?)。
3、4 只适用于同号数求和 or 异号数求差的判断,用得少。
1 在加法运算中对两个 operand 用两个符号位,如果运算结束后两个符号位不一样,那说明发生了溢出,表明当前的长度表示不下结果。扩展后的高位符号位肯定是真的,但是在结果中会被截断,低位的符号位会被保留。所以如果低位的符号位和最高位的符号位不一样,说明最终的符号位不符合预期,发生溢出。
2 记录最高位和次高位的进位情况,二者的异或表示是否发生了溢出。用穷举法证明,思路是:证明异号运算不会满足溢出判断的标准;再证明同号运算用此标准可以判断是否溢出(思路是:如果结果的符号位和加数一样,考察两个进位;如果不一样,也就是溢出了,再考察两个进位情况)。
...
计组 | 校验码
这些校验码的校验原理都是:在数据位之外,增加几个校验位,用来验证传送的数据是否正确。
奇偶校验码比较经典的奇偶校验码是在数据位之外添加一个校验位。分成两种校验方式,奇校验和偶校验。前者要求数据位和校验位中 1 的数量是奇数;后者要求 1 的数量是偶数。
检错能力:1 位;纠错能力:0 位。
如果有两位或两位以上同时在相反方向进行了变化,则不一定检查出错误。如果说 不一定 能检查出错误,就说明纠错的能力丧失了,这种评价标准对于后续的校验方式同理。
如果有 1 位发生了错误,确实不满足校验标准,然而,到底哪一位出错呢?不知道,任何一位出错都会造成校验失败。
举个例子。
偶校验,数据是 ASCII 码的 A: 00010001,当前二进制序列已经有偶数个 1 了,校验位是 0。所以发送方发送的数据是:0 + 00010001。
如果有 1 位发生了错误,不妨是数据位的最低位,那么接收方接收到的是:0 + 0010000,不满足偶校验,检出错误。但是不知道是哪位出了错,所有的位数其中之一,都具有翻转的可能。如果有两位发生了错误,不妨设最低两位,则接收到的是 0 + 0010010,仍然满足偶校 ...
MySQL 的用户和用户权限管理
创建用户1CREATE USER 'username'@'localhost' IDENTIFIED BY 'password123';
删除用户1DROP USER 'username'@'localhost';
授予用户权限12GRANT SELECT, UPDATE ON foo.* TO 'username'@'localhost';FLUSH PRIVILEGES;
查看某个用户的权限1SHOW GRANTS FOR 'username'@'localhost';
删除用户权限12REVOKE ALL PRIVILEGES ON foo.* FROM 'username'@'localhost';FLUSH PRIVILEGES;
MySQL 数据库的导入导出
需求可能需要迁移本地的表格到服务器,或者反之。也有可能在服务器之间传送数据库内容。总结一下。
图形化界面#TODO
命令行导出导出 foo 数据库中 bar 和 baz 表到 mydump.sql 中:
1sudo mysqldump --add-drop-table --databases foo --tables bar baz > /path/to/mydump.sql
导出所有表:
1sudo mysqldump --add-drop-database --databases foo > /path/to/mydump.sql
导入在启动 mysql 后(sudo mysql)
1source /path/to/mydump.sql
或者命令行中输入
1sudo mysql < "/path/to/mydump.sql"
CS50AI - 第 1 章 - 知识
0. 序这节课讲知识。在上节课的搜索中,我们的 agent 在 bfs 和 dfs 中如没头苍蝇一般,到处乱撞。然而有了启发函数和 A* 搜索后,agent 仿佛就智慧了些。
所以这节课就讲一讲,除了这种较为基础的函数来推断之外,还有哪些存储大量知识,并高效的用他们推理的技术。
1. 命题逻辑我们最先接触到的数理逻辑概念叫命题逻辑。
1.1. 符号与连接词命题逻辑有两个组成部分:符号和连接词。
符号很好理解,是非真即假的陈述句。几种常见的错误有疑问句、感叹句、悖论等等。
孤木不成林。连接词指的是把符号连接起来的组分,常见的有与、或、非、蕴含、等价连接词。
如果读者学习过数字逻辑和离散数学,对这些概念应该了然于胸,这里就不赘述了。补充一点,描述这些连接词的性质(什么时候真、什么时候假),经常用到的工具是真值表。
1.2. 模式课程原文用的是 Model,如果用屈婉玲老师《离散数学》那本教材的语言,应该是赋值或解释。也就是把所有的符号都赋一个真 / 假的值。
模式的另一种解释叫 Possible World,一种可能的情形。这个词我认为很科幻、很浪漫。就像是许多平行世界一样,有的 ...
计组 | 数字在计算机中的编码
课程链接B 站
数的表示整数的表示对无符号数,没必要讨论,直接按照每位的权重加起来就好了。
如何高效表示有符号数,是一个漫长的旅程。
先阐明一下设计的思路,然后再具体讲解编码的规则。
直觉上讲,如果要表示整数,如何来标记符号位呢?不妨单独开辟一个位置,来表示符号,比如 1 表示负数,0 表示正数,低位表示绝对值。这就是原码的道理所在。
不过原码有一个问题,在于 0 的表达有二义性,低位为全 0,符号位不论是 1 还是 0,都表示 0。再一个,原码的编码会让有符号数的加法运算无法利用既有的无符号数的加法电路,还要单独设计一套新的电路,不好。
因此,想要设计一个新的编码体系,让有符号数也能利用无符号数的运算电路。这样,反码诞生了。
它的规则是,正数编码不变,负数的编码是它的绝对值的编码按位取反。这样,最高位仍然是符号位,1 负 0 正。而且确实可以实现用无符号数的加法器来进行加法运算。我列了一个 3 位数的表格,读者可以加加看:
反码
真值
000
0
001
1
010
2
011
3
100
-3
101
-2
110
-1
111
-0
比 ...
主定理应试策略
序主定理是用来分析递归算法复杂度的高效工具。不深究原理,只应试,下面给出应试策略。
策略主定理形如:
$$T(n) = aT(\frac{n}{b}) + f(n)$$
主定理的核心是比较,到底递归到叶子结点的每个基本操作 ($log_b{a}$) 增长更快,还是减小问题规模 ($f(n)$) 的过程增长更快。
根据二者复杂度的强弱关系,分成三种情况:
基本操作增长(严格)更快, 则最终 $T(n) \in \Theta(n^{log_b{a}})$;
降低规模增长(严格)更快, 则最终 $T(n) \in \Theta(f(n))$, 但是需要满足一些条件, 否则进入情形 3;
二者速度相当, 则最终 $T(n) \in \Theta(n^{log_b{a}}log^{\varepsilon+1}{n})$, 注意有个 $+1$ 的存在.
其中第 2 点不能一步来判别,还需要验证一个式子 $af(\frac{n}{b}) \leq cf(n)$(即递归调用的贡献足够小)
不过没关系,既然分成了三个 case,不妨用排除法,把剩下两种可能都排除掉,就只剩下第 2 种 ...
Ubuntu 重装系统到 Windows
需求Ubuntu 作为日常的系统还是不习惯,比如在文件的操作上、在软件生态上,以及 Windows Hello 等认证方式上。因此,要把一台装了 Ubuntu 系统的机器重装回 Windows 11。
系统版本:Ubuntu 24.04 LTS机器型号:Lenovo X390 Yoga
步骤
下载 Windows 11 镜像(.iso),不妨从 software.tongji.edu.cn 上下载
准备一个容量 >= 8GB 的 U 盘,准备制作 Bootable Device
下载 Rufus,插入准备好的 U 盘,启动应用。在应用中,选择 U 盘作为介质,选择下载好的 .iso 作为镜像文件,剩下的设置基本不用变,开始制作 Bootable Device
打开要重装系统的机器,中断正常启动,即按下 Enter,进入 BIOS 设置
设置启用 UEFI。如果无法启动,根据提示关闭 Secure Boot 和 Kernel DMA protection,应该是在 Secure 面板下
保存设置,重新启动。插入 U 盘,仍然按下 Enter 中断正常启动,只不过这里选择 ...
CS50AI - 第 0 章 - 搜索
0. 序搜索是人工智能领域很重要的内容,例如如何导航到目标地点,如何在游戏中获得胜利等等,都需要进行最优方法的选择。哈佛大学的 CS50 AI 课程把它作为了课程的第一课。听完后醍醐灌顶,赶紧趁热写一篇文章,把大意整理下来,供未来自己复习。
1. 单机游戏1.1 一般的搜索给定一张有向图,从某个节点寻找前往另一个节点的道路,这很简单。关键在于维护一个 Frontier 列表,然后重复进行如下的操作:
1234561. 如果 `Frontier` 列表为空 * 则中止,无解。2. 从中选取一个结点,作为要考虑的结点。3. 如果这个结点就是目标 * 则返回解,停止。4. 否则,考察这个结点的邻居,把邻居添加到 `Frontier` 中
当然这样的选取有一些问题,不妨考虑这样的一个有向图,其中 A、B 两个结点之间有双向的箭头。把 A 作为起点。
这样的问题是,Frontier 中一开始只有 A,A 不是终点,所以考虑和 A 连接的节点,假设只有 B,所以把 B 放到 Frontier 中。现在从 Frontier 中取 B,B 也不是终点,考虑 B 能连接的节点,假如有 A ...