当前位置: 首页 > news >正文

建设汽车网站网页设计与制作课程思政建设内容

建设汽车网站,网页设计与制作课程思政建设内容,自助建站平台哪家好,公司备案可以做购物网站吗贪婪是一种算法范式#xff0c;它逐步构建解决方案#xff0c;始终选择提供最明显和直接收益的下一个部分。贪婪算法用于解决优化问题。 如果问题具有以下属性#xff0c;则可以使用贪心法解决优化问题#xff1a; 每一步#xff0c;我们都可以做出当前看来最好的选择它逐步构建解决方案始终选择提供最明显和直接收益的下一个部分。贪婪算法用于解决优化问题。  如果问题具有以下属性则可以使用贪心法解决优化问题  每一步我们都可以做出当前看来最好的选择从而得到整个问题的最优解。  如果贪婪算法可以解决某个问题那么它通常会成为解决该问题的最佳方法因为贪婪算法通常比动态规划等其他技术更有效。但贪婪算法并不总是适用。例如Fractional Knapsack问题可以使用Greedy来解决但是0-1 Knapsack问题不能使用Greedy来解决。 以下是一些贪婪算法的标准算法 1Kruskal的最小生成树MST          在 Kruskal 算法中我们通过一条一条地选取边来创建 MST。贪心选择是选择在目前构建的 MST 中不会引起循环的最小权重边 2Prim的最小生成树          在 Prim 的算法中我们也是通过逐条选取边来创建 MST。我们维护两个集合一组已包含在 MST 中的顶点和一组尚未包含的顶点。贪心选择是选择连接两个集合的最小权重边 3Dijkstra的最短路径          Dijkstra 算法与 Prim 算法非常相似。最短路径树是逐边构建的。我们维护两个集合一组已包含在树中的顶点和一组尚未包含的顶点。贪心选择是选择连接两个集合并且位于从源到包含尚未包含的顶点的集合的最小权重路径上的边 4霍夫曼编码          霍夫曼编码是一种无损压缩技术。它将可变长度位代码分配给不同的字符。贪心选择是将最小位长的代码分配给最常见的字符。 贪心算法有时也用于获得硬优化问题的近似值。例如旅行商问题是一个 NP 难问题。这个问题的贪婪选择是每一步都选择距离当前城市最近的未访问过的城市。这些解决方案并不总是产生最佳的最优解决方案但可用于获得近似最优的解决方案。 这里让我们看一个可以使用贪心算法解决的问题 问题         您将获得n项活动及其开始和结束时间。选择一个人可以执行的最大活动数假设一个人一次只能从事一项活动。  例子   输入 start[] {10, 12, 20}, finish[] {20, 25, 30}输出 0解释一个人最多可以执行一项活动。 输入 start[] {1, 3, 0, 5, 8, 5}, finish[] {2, 4, 6, 7, 9, 9};输出 0 1 3 4解释一个人最多可以执行四项活动。 可以执行的最大活动集 是  {0, 1, 3, 4} [ 这些是 start[] 和 finish[] 中的索引 方法要解决该问题请遵循以下想法 贪心选择是总是选择剩余活动中完成时间最短的下一个活动并且开始时间大于或等于先前选择的活动的结束时间。我们可以根据活动的完成时间对活动进行排序以便我们始终将下一个活动视为完成时间最短的活动 请按照给定的步骤解决问题 1、根据活动的完成时间对活动进行排序  2、从排序数组中选择第一个活动并打印它  3、对排序数组中的剩余活动执行以下操作 4、如果此活动的开始时间大于或等于先前选择的活动的结束时间则选择此活动并打印注意在实现中假设活动已经按照完成时间排序否则时间复杂度将上升到 O(N*log(N))辅助空间将上升到 O(N)因为我们必须创建一个二维数组来将开始时间和结束时间存储在一起。 下面是上述方法的实现。  # Python3 program for activity selection problem.     # The following implementation assumes that the activities  # are already sorted according to their finish time     # Prints a maximum set of activities that can be done   # by a single person, one at a time  def printMaxActivities(s, f):      n len(f)      print(Following activities are selected)         # The first activity is always selected      i 0     print(i, end )         # Consider rest of the activities      for j in range(1, n):             # If this activity has start time greater than          # or equal to the finish time of previously          # selected activity, then select it          if s[j] f[i]:              print(j, end )              i j        # Driver code  if __name__ __main__:      s [1, 3, 0, 5, 8, 5]      f [2, 4, 6, 7, 9, 9]         # Function call      printMaxActivities(s, f)     # This code is contributed by Nikhil Kumar Singh   输出 选择以下活动 0 1 3 4时间复杂度 O(N)辅助空间 O(1) 贪婪选择如何适用于根据完成时间排序的活动          假设给定的活动集为 S {1, 2, 3, …n}活动按完成时间排序。贪婪选择总是选择活动 1。为什么活动 1 总是提供最佳解决方案之一 我们可以通过证明如果存在另一个解 B 且第一个活动不是 1则也存在一个与活动 1 大小相同的解 A 作为第一个活动。设B选择的第一个活动为k则总存在A {B – {k}} U {1}。 注 B 中的活动是独立的并且 k 的完成时间是所有活动中最小的。由于 k 不为 1所以 finish(k) finish(1)) 当给定的活动未排序时如何实施          我们为活动创建一个结构/类。我们按完成时间对所有活动进行排序请参阅C STL 中的排序。一旦我们对活动进行排序我们就应用相同的算法。 下图是上述方法的说明  下面是上述方法的实现 Python program for activity selection problem   when input activities may not be sorted.       def MaxActivities(arr, n):      selected []         # Sort jobs according to finish time      Activity.sort(keylambda x: x[1])         # The first activity always gets selected      i 0     selected.append(arr[i])         for j in range(1, n):             If this activity has start time greater than or             equal to the finish time of previously selected             activity, then select it         if arr[j][0] arr[i][1]:              selected.append(arr[j])              i j      return selected        # Driver code  if __name__ __main__:      Activity [[5, 9], [1, 2], [3, 4], [0, 6], [5, 7], [8, 9]]      n len(Activity)         # Function call      selected MaxActivities(Activity, n)      print(Following activities are selected :)      print(selected[0], end );      for i in range (1, len(selected)):          print(,, end )          print(selected[i], end )     # This code is contributed by kshitijjainm   输出 选定以下活动 1、2、3、4、5、7、8、9时间复杂度 O(N log N)如果输入活动可能无法排序。当输入活动始终排序时需要 O(n) 时间。辅助空间 O(1) 使用优先级队列的活动选择问题 我们可以使用 Min-Heap 来获取完成时间最短的活动。Min-Heap 可以使用优先级队列实现 请按照给定的步骤解决问题 1、创建优先级队列最小堆并将活动推入其中。 2、将优先级队列的顶部推入答案向量并将变量start设置为第一个活动的开始时间将变量end 3、设置为该活动的结束时间 4、当优先级不为空时执行以下操作         4.1、取出优先级队列的顶部并检查         4.2、如果此活动的开始时间大于或等于最后选择的活动的结束时间则将此活动推入答案向量         4.3、不然就忽略它  5、打印选择的活动存储在答案向量中 下面是上述方法的实现  # Python3 program for activity selection problem  # when input activities may not be sorted.  from heapq import heappop, heappush     # Function to select activites        def SelectActivities(s, f):      ans []      p []         # Pushing elements in the list      for i, j in zip(s, f):          heappush(p, (j, i))         it heappop(p)      start it[1]      end it[0]      ans.append(it)         # Sorting process      while p:          it heappop(p)          if it[1] end:              start it[1]              end it[0]              ans.append(it)         print(Following Activities should be selected.\n)      for f, s in ans:          print(fActivity started at {s} and ends at {f})        # Driver code  if __name__ __main__:      s [1, 3, 0, 5, 8, 5]      finish [2, 4, 6, 7, 9, 9]         # Function call      SelectActivities(s, finish)     # This code is contributed by kraanzu.   输出 应选择以下活动。 活动开始于1 结束于2 活动开始于3 结束于4 活动开始于5 结束于7 活动开始于8 结束于9时间复杂度 O(N * log N)辅助空间 O(N)
http://www.zqtcl.cn/news/415829/

相关文章:

  • 中国城市建设网站宿州网站建设零聚思放心
  • 佛山网站免费制作struts2 做的网站
  • 做网站需要了解什么软件电商网站建设方案道客巴巴
  • 网站开发语言用什么好网站好坏怎么分析
  • 镇江制作网站的dw新建站点
  • 如果将域名指向网站东营网站建设收益高
  • 沈阳seo网站推广优化c2c网站的功能
  • 网站设计深圳云南制作网站的公司
  • 广州的网站建设公司对网络平台的优化有哪些建议
  • 培训网站模板免费网站建设投标书
  • 常德市建设局网站用tornado做网站
  • 网站快速排名优化报价现在最流行的网站开发工具
  • 支付公司网站建设会计分录合肥房产信息网官网
  • 镜像网站能否做google排名宝丰网站制作公司
  • 中国公路建设协会网站网站建设 业务培训
  • 原创文章网站开发教程安徽网站建设获客企业
  • 企业网站后台怎么做南京微网站开发
  • 网站seo在线优化广告策划书的格式
  • 网站解析怎么设置三北防护林体系建设网站
  • 长沙高端网站建设公司wordpress分享缩略图
  • 支付网站建设费管理咨询公司取名
  • dw网站制作的一般流程wordpress 分类列表页
  • 重庆技术支持 网站建设公司wordpress挂黑页
  • 2网站建设类似wordpress
  • 特别酷炫网站惠州的服装网站建设
  • 网站右侧悬浮代码网站新闻前置审批
  • 2015网站建设十堰网站优化排名
  • 营销网站的优点番禺人才网最新招聘市场在哪里?
  • 企业网站建站模板自己做网站网站资源哪里来
  • 接入服务商网站备案管理系统技术规范要求郴州网站建设软件定制开发制作