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

易思企业网站青岛网络优化代理

易思企业网站,青岛网络优化代理,成立公司需要哪些手续,龙岩建设局招聘网站一:概述 Kahn 拓扑排序算法是一种基于入度的广度优先搜索方法。它通过反复选择入度为 0 的节点加入结果序列,并移除相关边、更新入度,直到所有节点处理完毕。若最后结果中节点数小于图中节点总数,则说明图中存在环,拓扑…

一:概述

        Kahn 拓扑排序算法是一种基于入度的广度优先搜索方法。它通过反复选择入度为 0 的节点加入结果序列,并移除相关边、更新入度,直到所有节点处理完毕。若最后结果中节点数小于图中节点总数,则说明图中存在环,拓扑排序失败。该算法时间复杂度为 O(V+E),既高效又能检测环,是处理任务依赖等问题的常用方法。

二:实现

#pragma once 
#include <iostream>
#include <vector>
#include <queue>
#include <cassert>class Graph
{
private:int V; std::vector<std::vector<int>> adj; 
public:Graph(int vertices): V(vertices), adj(vertices) {}void addEdge(int u, int v){adj[u].push_back(v);}std::vector<int> topologicalSort(){std::vector<int> indegree(V, 0);std::vector<int> result; for (const auto& neighbors : adj){for (int v : neighbors)indegree[v]++;}std::queue<int> q;for (int i = 0; i < V; ++i){if (indegree[i] == 0)q.push(i);}while (!q.empty()){int u = q.front();q.pop(); result.push_back(u);for (int v : adj[u]){if (--indegree[v] == 0)q.push(v);}}if (result.size() != V){return {};}return result;}
};int test() {// Test A: multiple paths convergingstd::cout << "Test A: multiple paths converging\n";Graph ga(4);ga.addEdge(0, 1);ga.addEdge(0, 2);ga.addEdge(1, 3);ga.addEdge(2, 3);auto ans_a = ga.topologicalSort();std::cout << "Topological Sorting Order: ";for (int i : ans_a) std::cout << i << " ";std::cout << '\n';// Test B: complex DAG with multiple sources and sinksstd::cout << "Test B: complex DAG with multiple sources and sinks\n";Graph gb(8);gb.addEdge(0, 1);gb.addEdge(0, 3);gb.addEdge(1, 4);gb.addEdge(3, 4);gb.addEdge(4, 6);gb.addEdge(4, 7);gb.addEdge(5, 6);auto ans_b = gb.topologicalSort();std::cout << "Topological Sorting Order: ";for (int i : ans_b) std::cout << i << " ";std::cout << '\n';// Test C: with expected outputstd::cout << "Test C: expected order check\n";Graph g2(5);g2.addEdge(0, 1);g2.addEdge(0, 2);g2.addEdge(1, 2);g2.addEdge(2, 3);g2.addEdge(1, 3);g2.addEdge(2, 4);auto ans_c = g2.topologicalSort();std::vector<int> expected_c = { 0, 1, 2, 4, 3 };std::cout << "Topological Sorting Order: ";for (int i : ans_c) std::cout << i << " ";std::cout << '\n';//assert(ans_c == expected_c);std::cout << "Test Passed\n\n";// Test D: multiple independent chains mergedstd::cout << "Test D: multiple independent chains merged\n";Graph gc(7);gc.addEdge(0, 1);gc.addEdge(1, 2);gc.addEdge(2, 3);gc.addEdge(3, 4);gc.addEdge(6, 4);gc.addEdge(5, 4);auto ans_d = gc.topologicalSort();std::cout << "Topological Sorting Order: ";for (int i : ans_d) std::cout << i << " ";std::cout << '\n';// Test E: graph with cyclestd::cout << "Test E: graph with cycle\n";Graph g3(3);g3.addEdge(0, 1);g3.addEdge(1, 2);g3.addEdge(2, 0);try {g3.topologicalSort();std::cout << "Test Failed: should have thrown an exception\n";}catch (const std::invalid_argument& e) {std::cout << "Test Passed: cycle correctly detected\n";}return 0;
}

http://www.dtcms.com/wzjs/172718.html

相关文章:

  • 闵行三中网站苏州首页排名关键词优化
  • 推广图片怎么做百度网站排名优化
  • 做性的视频网站百度站长之家工具
  • 美食网站页面设计模板最新网络营销方式
  • html网站列表怎么做seo是免费的吗
  • 永兴网站建设报价日本疫情最新数据
  • 深圳福永网站建设公司网页设计与制作
  • 网站建设推广图片站长网站提交
  • 河北网站建设报价百度seo优化招聘
  • wamp环境下做网站seo关键词排名优化报价
  • 温州微网站制作哪里有百度指数的使用
  • 做网站送独立ip什么意思北京seo排名收费
  • 西安建站套餐中国seo网站
  • 国内比较高端的设计网站广东优化疫情防控措施
  • 网站的自动登录是怎么做的网站设计制作培训
  • 网站搭建在线支付上海网络推广营销策划方案
  • 深圳宝安网站建设最吸引人的营销广告文案
  • 嵌入式软件开发属于前端还是后端seo优化报告
  • 网站备案文件有没有永久免费crm
  • 什么网站是做货到付款的百度搜索关键词规则
  • fomo3d网站开发2024年瘟疫大爆发
  • 创建一个网站的创业计划书产品推广软文
  • 淄博seo深圳网站搜索优化
  • 网站开发 改进舆情监测系统
  • 企业网站管理系统aspseo原创工具
  • 如何销售做网站巩义网站推广优化
  • 商机互联做的网站和推广怎么样百度快照投诉中心
  • 网站域名实名制站长工具seo综合查询源码
  • 做电子商务平台网站需要多少钱企业网站代运营
  • 目前做网站需要什么cms网站性能优化