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

青岛城市建设集团网站教育网站制作开发

青岛城市建设集团网站,教育网站制作开发,网站浏览器兼容,深圳设计网站公司网站KMP算法#xff08;Knuth-Morris-Pratt算法#xff09; KMP算法是一种用于字符串匹配的算法#xff0c;它的时间复杂度为O(mn)。该算法的核心思想是在匹配失败时#xff0c;利用已经匹配的信息#xff0c;减少下一次匹配的起始位置。 def kmp(text, pattern): n len(… KMP算法Knuth-Morris-Pratt算法 KMP算法是一种用于字符串匹配的算法它的时间复杂度为O(mn)。该算法的核心思想是在匹配失败时利用已经匹配的信息减少下一次匹配的起始位置。 def kmp(text, pattern): n len(text) m len(pattern) lps [0] * m j 0 compute_lps(pattern, m, lps) i 0 while i n: if pattern[j] text[i]: i 1 j 1 if j m: print(Found pattern at index str(i-j)) j lps[j-1] elif i n and pattern[j] ! text[i]: if j ! 0: j lps[j-1] else: i 1 def compute_lps(pattern, m, lps): length 0 lps[0] 0 i 1 while i m: if pattern[i] pattern[length]: length 1 lps[i] length i 1 else: if length ! 0: length lps[length-1] else: lps[i] 0 i 1 运行示例 text ABABDABACDABABCABAB pattern ABABCABAB kmp(text, pattern) # Found pattern at index 10 动态规划Dynamic Programming 动态规划是一种用于解决复杂问题的方法它将问题分解为更小的子问题并存储这些子问题的解决方案以便在需要时可以重复使用。动态规划通常用于最优化问题如最短路径、最长公共子序列和背包问题等。 def knapsack(weights, values, W): n len(weights) dp [[0 for _ in range(W1)] for _ in range(n1)] for i in range(1, n1): for w in range(1, W1): if weights[i-1] w: dp[i][w] max(dp[i-1][w], dp[i-1][w-weights[i-1]] values[i-1]) else: dp[i][w] dp[i-1][w] return dp[n][W] 运行示例 weights [2, 3, 4, 5] values [3, 4, 5, 6] W 5 print(knapsack(weights, values, W)) # Output: 7 3.拓扑排序Topological Sort 拓扑排序是一种用于有向无环图DAG的排序算法它按照一定的顺序访问DAG的顶点使得对于任何一条有向边u, vu都出现在v之前。拓扑排序在计算机科学中有许多应用如任务调度和代码编译等。 from collections import deque def topological_sort(graph): in_degree {u: 0 for u in graph} # 初始化所有顶点的入度为0 for u in graph: for v in graph[u]: in_degree[v] 1 # 计算每个顶点的入度 queue deque([u for u in graph if in_degree[u] 0]) # 将入度为0的顶点加入队列 result [] while queue: u queue.popleft() # 从队列中取出一个顶点 result.append(u) for v in graph[u]: # 减少v的入度 in_degree[v] - 1 if in_degree[v] 0: # 将入度为0的顶点加入队列 queue.append(v) if len(result) len(graph): # 如果所有顶点都已被访问则返回结果否则说明图中存在环 return result else: return [] 运行示例 graph {A: [B, C], B: [D, E], C: [E], D: [], E: []} print(topological_sort(graph)) # Output: [A, B, C, D, E] 4.最短路径算法Dijkstra算法 Dijkstra算法是一种用于解决带权重图的最短路径问题的算法。它能够找到从起点到终点的最短路径其中路径可以经过多个节点。 def dijkstra(graph, start): n len(graph) dist [float(inf)] * n dist[start] 0 prev [None] * n visited [False] * n queue [(0, start)] while queue: d, u heapq.heappop(queue) if visited[u]: continue visited[u] True for v, w in graph[u]: if not visited[v] and dist[u] w dist[v]: dist[v] dist[u] w prev[v] u heapq.heappush(queue, (dist[v], v)) return dist, prev 运行示例 graph [([(1, 9), (2, 6)], [(0, 5)]), ([(2, 4), (3, 5), (4, 2)], [(1, 8)]), ([(3, 1), (4, 2)], [(2, 3)]), ([(0, 1), (2, 5)], [(1, 10), (3, 1)]) start 0 print(dijkstra(graph, start)) # Output: ([0, 5, 8, 11], [0, 1, 2, 3]) 这些算法都有一定的难度需要深入理解才能正确实现。在数学建模应用中这些算法也有广泛的应用场景。
http://www.zqtcl.cn/news/150415/

相关文章:

  • 如何建国际商城网站海门做网站公司
  • 做网站应该画什么图注册子公司流程及所需资料
  • 嵊州市建设银行网站怎么自己做游戏软件
  • 用模板快速建站中园建设银行网站
  • 网站建设罒金手指下拉壹陆韩国最新新闻消息
  • 东莞企业网站推广技巧wordpress怎么汉化
  • 17网站一起做网店如何下单iis服务器网站301重定向怎么做
  • 网站如何做线上支付功能seo网站推广优化费用
  • 贵州灵溪seo整站优化wordpress进行不
  • 三网一体网站建设网站开发环境分析
  • 广州白云机场网站建设查询域名备案信息
  • 苗族网站建设中牟做网站
  • 潍坊网站建设建站哪个网站的课件做的好处
  • 网站建设平台杭州网上交易平台
  • 您提交的网站域名无备案我想学网站建设
  • 怎样做国际网站dw网页设计代码免费
  • wordpress做企业站基础微网站开发公司
  • 用上海注册的公司建的网站怎么做asp网站
  • 一个专做特卖的网站千鸟云网站建设
  • 哈尔滨网站优化seo知名公司
  • 企业网站的开发流程个人免费建网站
  • 旅游网站平台建设方案策划书wordpress 自建cdn
  • 网站开发回访话术内容电商网站有哪些
  • 网络广告投放网站网站如何做关
  • 葫芦岛住房和城乡建设厅网站野望王绩
  • 小说网站怎么做网站建设需求分析班级
  • 开设购物网站的方案网站免费seo
  • 免费手机h5模板网站模板下载wordpress所有插件
  • 北京做网站开发公司wordpress主题创建后门
  • 企业门户网站建设内容企业建设网站的功能是什么意思