📝 DAA
95篇技术文档📅  最后修改于: 2020-12-10 06:25:51        🧑  作者: Mango
二叉搜索树二进制搜索树被组织在二进制树中。这样的树可以由链接的数据结构定义,其中特定的节点是对象。除键字段外,每个节点还包含字段left,right和p,这些字段分别指向分别对应于其左子节点,右子节点和父节点的节点。如果缺少孩子或父母,则适当的字段包含值NIL。根节点是树中唯一其父字段为Nil的节点。二进制搜索树属性令x为二叉搜索树中的一个节点。如果y是x的左子树中的节点,则键[y]≤键[k]。如...
📅  最后修改于: 2020-12-10 06:26:48        🧑  作者: Mango
红黑树红黑树是自平衡二进制搜索树的类别。它由鲁道夫·拜耳(Rudolf Bayer)于1972年创建,他将其称为“对称二叉B树”。红黑树是二叉树,其中特定节点具有颜色作为额外属性,无论是红色还是黑色。通过检查从根到叶的任何简单路径上的节点颜色,红黑树确保该路径的长度不超过其他任何路径的两倍,因此树通常是平衡的。红黑树的性质红黑树必须满足以下属性:根始终是黑色的。零被识别为黑色。每个非NIL节点都有...
📅  最后修改于: 2020-12-10 06:27:46        🧑  作者: Mango
动态编程介绍动态编程是解决优化问题的最强大的设计技术。分而治之算法将问题划分为不相交的子问题,然后递归地解决子问题,然后结合它们的解决方案来解决原始问题。当子问题不是独立的时,例如当它们共享相同的子问题时,将使用动态编程。在这种情况下,分治法可能会做比必要的事情更多的工作,因为它可以多次解决同一个子问题。动态编程只解决一次每个子问题,并将结果存储在表中,以便在需要时可以重复检索它。动态编程是一种自...
📅  最后修改于: 2020-12-10 06:28:41        🧑  作者: Mango
区分征服法与动态规划的区别。Divide & Conquer MethodDynamic Programming1.It deals (involves) three steps at each level of recursion:Dividethe problem into a number of subproblems.Conquerthe subproblems by solving th...
📅  最后修改于: 2020-12-10 06:29:36        🧑  作者: Mango
斐波那契数列斐波那契数列是数字序列,其中每个下一个项目是前两个项目的总和。斐波那契数列的每个数字称为斐波那契数。示例:0,1,1,2,3,5,8,13,21,…………………..是斐波那契数列。斐波那契数F_nare定义如下:图:显示了调用fib(8)的四个递归级别:图:计算斐波那契数期间的递归调用对fib(n)的单个递归调用会导致对fib(n-1)的一个递归调用,对fib(n-2)的两个递归调用,...
📅  最后修改于: 2020-12-10 06:30:34        🧑  作者: Mango
矩阵链乘法这是动态编程下的一种方法,其中以前的输出用作下一个的输入。在这里,Chain表示一个矩阵的列等于第二个矩阵的行(总是)。一般来说:然后给定以下矩阵{A1,A2,A3,… An},我们必须执行矩阵乘法,这可以通过一系列矩阵乘法来实现矩阵乘法运算本质上是关联的,而是可交换的。这样,我们的意思是我们必须遵循上述矩阵顺序进行乘法运算,但是我们可以根据需要随意在上面的括号中加上括号。通常,对于1≤...
📅  最后修改于: 2020-12-10 06:31:32        🧑  作者: Mango
矩阵链乘法的例子示例:给定序列{4、10、3、12、20和7}。矩阵的大小为4 x 10、10 x 3、3 x 12、12 x 20、20 x7。我们需要计算M [i,j],0≤i,j≤5。我们知道M [i,i对于所有i = 0。让我们继续远离对角线。我们为2个矩阵的乘积计算最佳解。其中P0至P5为Position,M1至M5为大小矩阵(pi至pi-1)在顺序的基础上,我们制定一个公式在动态编程中...
📅  最后修改于: 2020-12-10 06:32:27        🧑  作者: Mango
矩阵链乘法算法我们将使用table来构建最佳解决方案。步骤1:构建最佳解决方案:分析:有三个嵌套循环。每个循环最多执行n次。l,长度,O(n)次迭代。i,开始,O(n)次迭代。k,分割点,O(n)次迭代主体循环常数复杂度总复杂度为:O(n3)带有示例的算法问题:P [7、1、5、4、2}解决方案:在这里,P是矩阵维的数组。因此,这里将有4个矩阵:步骤1:现在,根据算法的步骤2情况1:1.当l-22...
📅  最后修改于: 2020-12-10 06:33:22        🧑  作者: Mango
最长公共序列(LCS)给定序列的子序列就是给定序列,其中遗漏了一些元素。给定两个序列X和Y,如果Z是X和Y的子序列,我们说序列Z是X和Y的公共序列。在最长的公共子序列问题中,我们给定两个序列X =(x1x2…. xm)和Y =(y1y2yn),并希望找到X和Y的最大长度公共子序列。LCS问题可以使用动态编程解决。最长公共序列的特征蛮力方法我们找到X的所有子序列,并检查每个子序列是否也是Y的子序列,...
📅  最后修改于: 2020-12-10 06:34:17        🧑  作者: Mango
最长公共序列算法最长公共序列的示例示例:给定两个序列X [1 … m]和Y [1 ….. n]。找到两者的最长共同子序列。那是:步骤4:构建LCS:初始调用为PRINT-LCS(b,X,X.length,Y.length)示例:确定(1,0,0,1,0,1,0,1)和(0,1,0,1,1,0,1,1,0)的LCS。解决方案:令X =(1,0,0,1,0,1,0,1)和Y =(0,1,0,1,1,0...
📅  最后修改于: 2020-12-10 06:36:08        🧑  作者: Mango
0/1背包问题:动态编程方法:背包问题:背包基本上是指背包。一袋给定的容量。我们想在您的行李中装n件物品。第i个项目是值得VI美元和重量WI磅。承受尽可能多的负载,但不能超过W磅。viwiW是整数。输入:容量背包重量列表(数组)及其相应的值。产出:最大化利润并最小化生产能力。背包问题,我们必须以最大的价值包装背包,以使物品的总重量不大于背包的容量。背包问题可进一步分为两部分:1.小背包:小背包问题...
📅  最后修改于: 2020-12-10 06:37:06        🧑  作者: Mango
荷兰国家国旗荷兰国旗(DNF)-这是Edsger Dijkstra提出的编程问题。荷兰的国旗由三种颜色组成:白色,红色和蓝色。任务是以相同颜色的球放置在一起的方式随机排列白色,红色和蓝色的球。对于DNF(荷兰国旗),我们在线性时间内对数组0、1和2进行了排序,而不会占用任何额外的空间。我们必须记住,该算法只能在具有三个唯一元素的数组上实现。算法-取三分,即-低,中,高。我们在开头使用低指针和中指针...
📅  最后修改于: 2020-12-10 06:38:08        🧑  作者: Mango
最长回文序列它是在一个字符串的字符可以拼写和阅读同样的两种方式,向前和向后的顺序。诸如思域,雷迪维德,神化,雷达,水平,夫人,转子,参考,皮划艇,赛车和复活器之类的词。但是在回文性子序列中,序列可以但不一定以相同的相对顺序出现,但是本质上必然是连续的和回文性的机会可以忽略不计。动态编程解决方案-示例-给我们一个序列“ BDBADBDCBDCADB”。那么最长的回文将是11-“ BDABDCDBAD...
📅  最后修改于: 2020-12-10 06:39:01        🧑  作者: Mango
贪婪算法介绍“贪婪方法可从许多选项中找到,但您必须选择最佳选项。”在这种方法中,我们必须从许多现有方法中找出最佳方法/选项。在这种方法/方法中,我们专注于第一阶段并确定输出,而不考虑未来。此方法可能会或可能不会提供最佳输出。贪婪算法通过做出在特定时刻看起来最好的最佳选择来解决问题。可以使用贪婪算法确定许多优化问题。某些问题没有有效的解决方案,但是贪婪算法可能会提供接近最佳的解决方案。如果问题具有以...
📅  最后修改于: 2020-12-10 06:39:55        🧑  作者: Mango
活动选择问题活动选择问题是数学优化问题。我们的第一个例子是在几个挑战活动之间安排资源的问题。我们发现,贪心算法为选择最大规模的手动兼容活动提供了一种精心设计且简单的方法。假设S = {1,2 …. n}是n个提议活动的集合。该活动分享这只能由一个活动同时使用的资源,例如,网球场,演讲厅等。每个活动,“我”开始时间si和结束时间Fi,其中的I≤f我。如果选择的活动“ i”同时发生在半开放时间间隔[s...