📝 DAA

95篇技术文档
  小背包问题

📅  最后修改于: 2020-12-10 06:40:52        🧑  作者: Mango

小背包可以取项目的分数,而不必对每个项目进行二进制(0-1)选择。分数背包问题可以通过贪婪策略解决,而0-1问题则无法解决。解决分数问题的步骤:计算每磅的价值对于每个项目。遵循贪婪策略,我们尽可能选择每磅最高价值的物品。如果该元素的供应已用尽,并且我们仍然可以运载更多,则我们将以每磅下一个值取尽可能多的元素。排序,按每磅值排序的项目,贪婪算法以O(n log n)时间运行。示例:沿着其各自的权重和...

  霍夫曼代码

📅  最后修改于: 2020-12-10 06:41:46        🧑  作者: Mango

霍夫曼码(i)可以使用霍夫曼码对数据进行有效编码。(ii)它是一种广泛使用的有益数据压缩技术。(iii)霍夫曼的贪婪算法使用每个字符出现频率的表来建立将每个字符表示为二进制字符串的最佳方式。假设数据文件中有10个5个字符。普通存储:每个字符8位(ASCII)-文件中的8 x 105位。但是我们要压缩文件并紧凑地保存它。假设文件中仅出现六个字符:我们如何以紧凑的方式表示数据?(i)固定长度代码:每个...

  霍夫曼编码算法

📅  最后修改于: 2020-12-10 06:42:42        🧑  作者: Mango

霍夫曼编码算法示例:为以下一组频率找到最佳霍夫曼码:解:即再次对于i = 2同样,我们采用相同的过程因此,最终输出为:...

  活动或任务计划问题

📅  最后修改于: 2020-12-10 06:43:36        🧑  作者: Mango

活动或任务计划问题这是在单个处理器上最佳安排单位时间任务的争议,其中每个作业都有最后期限,如果错过了最后期限,则必须支付罚款。单位时间任务是一项工作,例如要在计算机上匆忙完成的程序,而该程序恰好需要一个单位时间才能完成。给定单位任务的有限集合S,S的时间表是S的排列,指定执行这些任务的顺序。计划中的第一个任务在时间0开始,在时间1结束;第二个任务在时间1开始,在时间2完成,依此类推。为每个处理器安...

  销售人员问题

📅  最后修改于: 2020-12-10 06:44:33        🧑  作者: Mango

销售人员问题旅行推销员的问题由推销员和一组城市遵守。推销员必须从某个城市(例如家乡)开始访问每个城市,然后返回同一城市。问题的挑战在于,旅行推销员需要使旅行的总长度最小化。假设城市为x1x2….. xn,其中成本cij表示从城市xi到xj的旅行成本。旅行推销员的问题是找到一条始于x1的路线,该路线将以最低的成本在所有城市中行驶。示例:一家报纸代理商每天将报纸投到指定的区域,这样他就必须以最小的旅行...

  动态编程与贪婪方法

📅  最后修改于: 2020-12-10 06:45:26        🧑  作者: Mango

动态规划与贪婪方法的区别Dynamic ProgrammingGreedy Method1. Dynamic Programming is used to obtain the optimal solution.1. Greedy Method is also used to get the optimal solution.2. In Dynamic Programming, we choose...

  回溯简介

📅  最后修改于: 2020-12-10 06:46:20        🧑  作者: Mango

回溯介绍回溯是一种通过其他方式解决问题的算法方法。它使用递归方法来解释问题。我们可以说需要回溯才能找到所有可能的组合来解决优化问题。回溯是一种尝试不同决策序列的系统方法,直到找到一个可行的决策为止。在下图中:树中的每个非叶节点都是一个或多个其他节点(其子节点)的父节点除了根之外,树中的每个节点都只有一个父节点但是,通常,我们将树木向下拖,根部放在顶部。一棵树由节点组成。回溯可以理解为在树中搜索特定...

  递归迷宫算法

📅  最后修改于: 2020-12-10 06:47:13        🧑  作者: Mango

递归迷宫算法递归迷宫算法是回溯算法的最佳示例之一。递归迷宫算法是解决迷宫的一种可能的解决方案。迷宫迷宫是一个被墙壁包围的区域。在这两者之间,我们有一条从起点到终点的路径。我们必须从起点开始,然后从终点开始。迷宫原理如上所述,在迷宫中,我们必须从起点移动到终点。问题是选择路径。如果在终点之前发现任何死角,则必须回溯并移动方向。遍历的方向是北,东,西和南。我们必须继续“前进和后退”,直到到达终点为止。...

  哈密顿回路问题

📅  最后修改于: 2020-12-10 06:48:06        🧑  作者: Mango

哈密顿回路问题给定图G =(V,E),我们必须使用回溯法找到哈密顿回路。我们从任何说“ a”的任意顶点开始搜索。顶点“ a”成为隐式树的根。我们局部求解的第一个元素是要构建的哈密顿循环的第一个中间顶点。下一个相邻的顶点按字母顺序选择。如果在任何阶段任何任意顶点与顶点“ a”以外的任何顶点构成一个循环,那么我们就说达到了死角。在这种情况下,我们回溯一个步骤,再次从选择另一个顶点开始搜索,然后从局部中...

  子集总和问题

📅  最后修改于: 2020-12-10 06:49:00        🧑  作者: Mango

子总和问题子集和问题是找到给定集合S =(S1S2S3… Sn)的子集,其中集合S的元素是n个正整数,其方式为s'∈S子集的元素之和等于某个正整数“ X”。子集和问题可以通过使用回溯方法来解决。在这个隐式树中是一个二叉树。选择树的根的方式表示尚未对任何输入做出决定。我们假设给定集合的元素按升序排列:根节点的左子节点指示我们必须包含集合“ S”中的“ S 1”,而根节点的右子节点指示我们必须执行“ ...

  N个皇后区问题

📅  最后修改于: 2020-12-10 06:49:55        🧑  作者: Mango

N皇后问题N-Queens问题是将n-Queens放置在nxn棋盘上的方式,使得没有Queens可以通过在同一行,同一列或对角线上相互攻击。可以看出,对于n = 1,该问题具有微不足道的解决方案,对于n = 2和n = 3,不存在任何解决方案。因此,首先我们将考虑4个皇后问题,然后将其生成为n个皇后问题。给定一个4 x 4的棋盘,并为棋盘的行和列编号1至4。既然如此,我们必须在棋盘上放置q 1q2...

  MST简介|最小生成树介绍

📅  最后修改于: 2020-12-10 06:50:49        🧑  作者: Mango

最小生成树介绍树:树是具有以下属性的图:图形已连接(可以从任何地方到任何地方)没有循环(Acyclic)生成树:给定一个相连的无向图,该图的生成树是一个子图,该子图是一棵树,并连接了所有顶点。单个图可以具有许多生成树。例如:对于上面连接的图。可能有多个生成树,例如生成树的属性:可能有几个具有相同权重的最小生成树,并且边缘数量最少。如果给定图的所有边缘权重都相同,则该图的每个生成树都是最小的。如果每...

  MST |最小生成树的应用

📅  最后修改于: 2020-12-10 06:51:42        🧑  作者: Mango

最小生成树的应用考虑要使用通信网络链接n个站点,并且在任意两个站点之间铺设通信链接会产生成本。理想的解决方案是提取称为最小成本生成树的子图。假设您要构建跨越多个城市的高速公路或铁路,那么我们可以使用最小生成树的概念。设计局域网。铺设连接海上钻井站点,炼油厂和消费市场的管道。假设您要套用电力水电话线污水管为了降低成本,您可以使用成本最低的生成树连接房屋。例如,问题在于铺设电话线。...

  Kruskal的最小生成树算法

📅  最后修改于: 2020-12-10 06:52:37        🧑  作者: Mango

最小生成树的方法有两种查找最小生成树的方法克鲁斯卡尔算法普里姆算法克鲁斯卡尔算法:一种为连接的加权图构造最小生成树的算法。这是一个贪婪算法。贪婪的选择是将最小的重量边缘放置,这并不是因为到目前为止构造的MST中的一个循环。如果未链接该图,则它将找到最小生成树。使用Kruskal算法查找MST的步骤:按重量增加的顺序排列G的边缘。仅从G的顶点开始,然后依次进行添加不会导致循环的每个边,直到使用(n-...

  Prim的最小生成树算法

📅  最后修改于: 2020-12-10 06:53:35        🧑  作者: Mango

普里姆算法这是一个贪婪的算法。它从一棵空的生成树开始。这个想法是维护两组顶点:包含MST中已包含的顶点。包含尚未包含的顶点。在每一步中,它都会考虑所有边缘并选择最小重量的边缘。拾取边缘后,它将边缘的另一个端点移动到包含MST的集合。使用Prim算法找到MST的步骤:创建MST集,以跟踪已包含在MST中的顶点。将键值分配给输入图中的所有顶点。将所有键值初始化为INFINITE(∞)。为第一个顶点分配...