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

网站运营成本明细关键词排名怎么做好

网站运营成本明细,关键词排名怎么做好,公司办公室布局效果图,哪个软件可以做明星视频网站文章目录 图论基础入门一、什么是图(Graph)分类: 二、图的存储结构(C 实现)1. 邻接表(Adjacency List)2. 邻接矩阵(Adjacency Matrix) 三、图的遍历1. 深度优先搜索&…

文章目录

  • 图论基础入门
    • 一、什么是图(Graph)
      • 分类:
    • 二、图的存储结构(C++ 实现)
      • 1. 邻接表(Adjacency List)
      • 2. 邻接矩阵(Adjacency Matrix)
    • 三、图的遍历
      • 1. 深度优先搜索(DFS)
      • 2. 广度优先搜索(BFS)
    • 四、经典图算法(C++ 实现)
      • 1. 拓扑排序(Topological Sort)——仅适用于有向无环图(DAG)
        • Kahn 算法(基于入度)
      • 2. 最短路径算法
        • Dijkstra(适用于正权图)
      • 3. 并查集(Union-Find)——用于连通性判断、Kruskal 算法
    • 五、应用场景

图论基础入门

图论(Graph Theory)是计算机科学中的核心基础之一,被广泛应用于算法设计、工程系统、人工智能、编译器、网络通信、地图导航等多个方向。


一、什么是图(Graph)

图是一种由顶点(Vertex)和边(Edge)组成的数据结构,用于表示元素之间的关系。

分类:

  • 有向图(Directed Graph):边具有方向,如 A → B。
  • 无向图(Undirected Graph):边无方向,A 与 B 相互连接。
  • 带权图(Weighted Graph):边携带权重信息。
  • 稀疏图 / 稠密图:根据边的数量与顶点的比例判断。

二、图的存储结构(C++ 实现)

1. 邻接表(Adjacency List)

适用于稀疏图,节省空间。

int n; // 顶点数量
vector<vector<int>> adj(n); // 无权图的邻接表// 添加一条有向边 u → v
adj[u].push_back(v);

带权图:

vector<vector<pair<int, int>>> adj(n); // pair<邻接点, 权重>adj[u].emplace_back(v, weight);

2. 邻接矩阵(Adjacency Matrix)

适用于稠密图,占用空间大但查询更快。

vector<vector<int>> matrix(n, vector<int>(n, 0));
matrix[u][v] = 1; // 表示 u → v 有边

三、图的遍历

1. 深度优先搜索(DFS)

void dfs(int u, vector<vector<int>>& adj, vector<bool>& visited) {visited[u] = true;for (int v : adj[u]) {if (!visited[v]) {dfs(v, adj, visited);}}
}

2. 广度优先搜索(BFS)

void bfs(int start, vector<vector<int>>& adj, vector<bool>& visited) {queue<int> q;visited[start] = true;q.push(start);while (!q.empty()) {int u = q.front(); q.pop();for (int v : adj[u]) {if (!visited[v]) {visited[v] = true;q.push(v);}}}
}

四、经典图算法(C++ 实现)

1. 拓扑排序(Topological Sort)——仅适用于有向无环图(DAG)

Kahn 算法(基于入度)
bool topoSort(int n, const vector<vector<int>>& adj, vector<int>& result) {vector<int> inDegree(n, 0);for (const auto& neighbors : adj)for (int v : neighbors) inDegree[v]++;
图论基础入门queue<int> q;for (int i = 0; i < n; ++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);}return result.size() == n; // false 表示有环
}

2. 最短路径算法

Dijkstra(适用于正权图)
vector<int> dijkstra(int n, int start, const vector<vector<pair<int, int>>>& adj) {vector<int> dist(n, INT_MAX);priority_queue<pair<int, int>, vector<pair<int, int>>, greater<>> pq;dist[start] = 0;pq.emplace(0, start);while (!pq.empty()) {auto [d, u] = pq.top(); pq.pop();if (d > dist[u]) continue;for (auto [v, w] : adj[u]) {if (dist[u] + w < dist[v]) {dist[v] = dist[u] + w;pq.emplace(dist[v], v);}}}return dist;
}

3. 并查集(Union-Find)——用于连通性判断、Kruskal 算法

struct UnionFind {vector<int> parent;UnionFind(int n) : parent(n) {iota(parent.begin(), parent.end(), 0);}int find(int x) {return parent[x] == x ? x : (parent[x] = find(parent[x]));}bool unite(int a, int b) {int pa = find(a), pb = find(b);if (pa == pb) return false;parent[pa] = pb;return true;}
};

五、应用场景

  • 编译依赖分析:如 Makefile 中的文件依赖。
  • 项目构建系统:如 CMake 中的模块拓扑。
  • 图数据库遍历:如 Neo4j 查询路径。
  • 地图导航系统:如最短路径搜索(Dijkstra、A*)。
  • 社交网络分析:好友推荐、社群划分。
  • 多线程任务调度系统:拓扑排序 + 优先级控制。
http://www.dtcms.com/wzjs/249662.html

相关文章:

  • 建设网站服务器的方式有自营方式百度推广哪种效果好
  • 红酒网站定位软文发稿平台有哪些
  • 邢台新增确诊病例轨迹sem和seo哪个工作好
  • 网站建设 技术团队介绍杭州seo营销
  • 移动电子商务网站建设百度手机助手下载2022新版
  • 中山外贸出口网站建设多少钱哪里有苹果cms永久免费全能建站程序
  • 用ps做网站设计广州网站seo地址
  • 免费商会网站模板全国互联网营销大赛官网
  • wap商城网站模板素材求好用的seo软件
  • 服务平台网站设计net的网站建设
  • 做企业网站要大陆营业执照seo怎么学
  • 网站设计与建设的电商网站seo优化
  • 网站开发违约属于什么纠纷百度关键词规划师
  • 建筑网片排焊机西安优化seo
  • 沧州企业做网站怎么在网上做广告宣传
  • 杭州湾新区建设委员会网站企业培训课程价格
  • 保山网站建设排名前50名免费的网站
  • 浙江网站建设模板网站学做网站培训班要多少钱
  • 精彩的网格布局网站百度免费seo
  • 济南哪家做网站河南网站优化公司哪家好
  • 新乡商城网站建设哪家好app拉新推广怎么做
  • wordpress disable_functionsseo网站权重
  • 网站建设快速杭州百度推广开户
  • 网站建设市场分析2015网络推广代理
  • 重庆做模块网站长春网站快速排名提升
  • 陕西省建设执业资格注册中心网站百度广告平台
  • 沈阳企业网站信息服务平台有哪些
  • 河津做网站东莞推广
  • 江门建设银行网站徐州百度推广
  • 河北盘古做的网站用的什么服务器运营商推广5g技术