图表的应用、优点和缺点

2023年 8月 30日 144.6k 0

图表的应用、优点和缺点

图表在不同学科中被使用。它们被用于生物学中表示基因相互作用,用于交通运输中的路线优化,以及用于社交网络中的用户连接分析。图表的视觉表示复杂关系和观察模式和趋势的能力是其两个优点。然而,处理大型数据集可能会使图表变得笨重且难以理解。此外,创建图表可能需要时间和知识。尽管存在这些缺点,图表仍然是跨学科数据分析和决策制定的有效工具。

使用的方法

  • 设置表示

  • 链接表示

  • 顺序表示

设置表示

图中的每个顶点都与一个包含其周围顶点的集合相关联,该集合表示图。在这种方法中,图的边存储在包含集合的邻接集或哈希表中。每个顶点的集合确保没有重复的相邻顶点,并且它有效地管理稀疏图。与其他表示方法相比,添加和删除边更容易,并且内存利用率降低。在处理具有不同连接程度的网络时,这种技术非常有帮助,因为它可以有效地执行诸如检查边缘和迭代附近顶点等操作。

  • 邻接集:在图的集合表示中,邻接集使用集合记录每个顶点的邻居,防止重复,并便于有效处理边缘。

  • 哈希表:哈希表在图的集合表示的上下文中使用,将每个顶点与包含其相邻顶点的集合相连。

算法

  • 图的顶点应该由一个类或数据结构表示。每个顶点对象需要有一个集合来包含其相邻的顶点,同时还需要有一个ID或标签。

  • 创建一个空的存储空间来保存图的顶点(例如数组、向量或哈希表)。

  • 对于图中的每个顶点:

    为图中的每个顶点创建一个具有指定ID或标签的新顶点对象。

    将与其相邻的顶点添加到邻接集中。

  • 使用以下技术在顶点之间添加边:

    收集源顶点和目标顶点的顶点对象。

    将目标顶点包含在源顶点的邻接集合中。

  • 实现以下边缘移除技术:

    收集源顶点和目标顶点的顶点对象。

    从源顶点的邻接集中删除目标顶点。

  • 实现图操作所需的其他技术,例如确定边是否存在以及获取顶点的邻居。

示例

#include
#include
#include

class Graph {
private:
std::unordered_map adjacencySets;

public:
void addEdge(int source, int destination) {
adjacencySets[source].insert(destination);
adjacencySets[destination].insert(source); // If the graph is undirected, add both edges
}

void removeEdge(int source, int destination) {
adjacencySets[source].erase(destination);
adjacencySets[destination].erase(source); // If the graph is undirected, remove both edges
}

void printNeighbors(int vertex) {
std::cout

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论