与多参数函数的递推关系
Recurrence Relations with Multiparameter Functions
我一直在努力思考递归关系的概念,并且了解了如何划分、征服和组合。我无法理解的是如何从处理值数组、最低索引和最高索引的多参数函数中导出正确的递归关系。
更多背景信息:
我的基本情况是最低索引等于最高索引。当满足该条件时,我 return 从最低索引开始的元素。 (也是最高的)是唯一的元素。
我的递归情况是 q 和 p 不相等。这是下面的代码:
int maximum(int[] A, int p, int q) {
if (p == q) {
return A[p];
}
int k, l, max1, max2, max3;
k = p + Math.floor((q-p+2)/3);
l = k + Math.floor((q-p+2)/3);
max1 = maximum(A, p, k-1);
max2 = maximum(A, k, l-1);
max3 = maximum(A, l, q);
if (max1 >= max2 && max1 >= max3) {
return max1;
} else if (max2 >= max1 && max2 >= max3) {
return max2;
} else {
return max3;
}
}
我不确定我会怎么做。从我见过的每个例子来看,我应该使用 n 作为我的输入大小,我唯一关心的参数是我的输入大小。
有人能解释解决几乎所有算法的最佳方法吗?我觉得这种特殊类型很适合我,因为我习惯于在递归关系背后的解释中看到更简单的递归函数。
在这种情况下,我看到函数的输入大小被认为不是文字输入大小(在每次递归调用时可能或多或少保持相同),而是被考虑的数据的有效大小.在你的算法中——很像合并排序——所考虑的数据的有效大小在每次递归调用时都会缩小:你的高索引和低索引绑定了你正在查看的数组部分,所以在某种意义上你的有效输入大小确实收缩。因此,与其将此类情况视为多变量递归,不如将递归视为 T(n) = 3T(n/3) + O(1) 或类似性质的递归。
现在,有些函数具有多个自变量是有意义的......例如,一个函数接受两个数组并以不同的速率缩小范围。图算法通常(但不总是)将顶点和边视为复杂性边界的独立变量,作为一个具体案例。在这些情况下,自变量被认为是真正独立变化的,不能有意义地组合成有效规模的单一衡量标准。在你的函数中不一定是这种情况。
我一直在努力思考递归关系的概念,并且了解了如何划分、征服和组合。我无法理解的是如何从处理值数组、最低索引和最高索引的多参数函数中导出正确的递归关系。
更多背景信息: 我的基本情况是最低索引等于最高索引。当满足该条件时,我 return 从最低索引开始的元素。 (也是最高的)是唯一的元素。
我的递归情况是 q 和 p 不相等。这是下面的代码:
int maximum(int[] A, int p, int q) {
if (p == q) {
return A[p];
}
int k, l, max1, max2, max3;
k = p + Math.floor((q-p+2)/3);
l = k + Math.floor((q-p+2)/3);
max1 = maximum(A, p, k-1);
max2 = maximum(A, k, l-1);
max3 = maximum(A, l, q);
if (max1 >= max2 && max1 >= max3) {
return max1;
} else if (max2 >= max1 && max2 >= max3) {
return max2;
} else {
return max3;
}
}
我不确定我会怎么做。从我见过的每个例子来看,我应该使用 n 作为我的输入大小,我唯一关心的参数是我的输入大小。
有人能解释解决几乎所有算法的最佳方法吗?我觉得这种特殊类型很适合我,因为我习惯于在递归关系背后的解释中看到更简单的递归函数。
在这种情况下,我看到函数的输入大小被认为不是文字输入大小(在每次递归调用时可能或多或少保持相同),而是被考虑的数据的有效大小.在你的算法中——很像合并排序——所考虑的数据的有效大小在每次递归调用时都会缩小:你的高索引和低索引绑定了你正在查看的数组部分,所以在某种意义上你的有效输入大小确实收缩。因此,与其将此类情况视为多变量递归,不如将递归视为 T(n) = 3T(n/3) + O(1) 或类似性质的递归。
现在,有些函数具有多个自变量是有意义的......例如,一个函数接受两个数组并以不同的速率缩小范围。图算法通常(但不总是)将顶点和边视为复杂性边界的独立变量,作为一个具体案例。在这些情况下,自变量被认为是真正独立变化的,不能有意义地组合成有效规模的单一衡量标准。在你的函数中不一定是这种情况。