Update punctuation

This commit is contained in:
krahets
2023-08-27 23:40:39 +08:00
parent c5a7323817
commit 57851ab11e
50 changed files with 100 additions and 100 deletions

View File

@@ -128,18 +128,18 @@
**我们考虑在搜索过程中通过剪枝进行去重**。观察下图,重复子集是在以不同顺序选择数组元素时产生的,例如以下情况。
1. 当第一轮和第二轮分别选择 $3$ , $4$ 时,会生成包含这两个元素的所有子集,记为 $[3, 4, \dots]$ 。
1. 当第一轮和第二轮分别选择 $3$ $4$ 时,会生成包含这两个元素的所有子集,记为 $[3, 4, \dots]$ 。
2. 之后,当第一轮选择 $4$ 时,**则第二轮应该跳过 $3$** ,因为该选择产生的子集 $[4, 3, \dots]$ 和 `1.` 中生成的子集完全重复。
在搜索中,每一层的选择都是从左到右被逐个尝试的,因此越靠右的分支被剪掉的越多。
1. 前两轮选择 $3$ , $5$ ,生成子集 $[3, 5, \dots]$ 。
2. 前两轮选择 $4$ , $5$ ,生成子集 $[4, 5, \dots]$ 。
3. 若第一轮选择 $5$ **则第二轮应该跳过 $3$ 和 $4$** ,因为子集 $[5, 3, \dots]$ 和子集 $[5, 4, \dots]$ `1.` , `2.` 中描述的子集完全重复。
1. 前两轮选择 $3$ $5$ ,生成子集 $[3, 5, \dots]$ 。
2. 前两轮选择 $4$ $5$ ,生成子集 $[4, 5, \dots]$ 。
3. 若第一轮选择 $5$ **则第二轮应该跳过 $3$ 和 $4$** ,因为子集 $[5, 3, \dots]$ 和 $[5, 4, \dots]$ 与第 `1.` `2.` 中描述的子集完全重复。
![不同选择顺序导致的重复子集](subset_sum_problem.assets/subset_sum_i_pruning.png)
总结来看,给定输入数组 $[x_1, x_2, \dots, x_n]$ ,设搜索过程中的选择序列为 $[x_{i_1}, x_{i_2}, \dots , x_{i_m}]$ ,则该选择序列需要满足 $i_1 \leq i_2 \leq \dots \leq i_m$ **不满足该条件的选择序列都会造成重复,应当剪枝**。
总结来看,给定输入数组 $[x_1, x_2, \dots, x_n]$ ,设搜索过程中的选择序列为 $[x_{i_1}, x_{i_2}, \dots, x_{i_m}]$ ,则该选择序列需要满足 $i_1 \leq i_2 \leq \dots \leq i_m$ **不满足该条件的选择序列都会造成重复,应当剪枝**。
### 代码实现