0

0

图表的应用、优点和缺点

WBOY

WBOY

发布时间:2023-08-29 18:13:06

|

1905人浏览过

|

来源于tutorialspoint

转载

图表的应用、优点和缺点

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

使用的方法

  • 设置表示

  • 链接表示

  • 顺序表示

设置表示

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

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

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

算法

  • 图的顶点应该由一个类或数据结构表示。每个顶点对象需要有一个集合来包含其相邻的顶点,同时还需要有一个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 << "Neighbors of vertex " << vertex << ": ";
        for (int neighbor : adjacencySets[vertex]) {
            std::cout << neighbor << " ";
        }
        std::cout << std::endl;
    }
};

int main() {
    Graph graph;

    graph.addEdge(1, 2);
    graph.addEdge(1, 3);
    graph.addEdge(2, 3);
    graph.addEdge(3, 4);
    graph.addEdge(4, 5);

    graph.printNeighbors(1);
    graph.printNeighbors(3);

    graph.removeEdge(2, 3);

    graph.printNeighbors(1);
    graph.printNeighbors(3);

    return 0;
}

输出

Neighbors of vertex 1: 3 2 
Neighbors of vertex 3: 4 2 1 
Neighbors of vertex 1: 3 2 
Neighbors of vertex 3: 4 1

链表表示

每个顶点在图的链接表示中都被表示为一个链表中的节点。图的结构由这些节点形成,它们通过指针或引用相互连接,并保存有关顶点的数据。每个节点还具有一个链表或其他动态数据结构,用于存储边的相邻顶点。这种方法有效地描绘了具有不同连接级别的稀疏图。它支持动态图架构,并允许简单地添加和删除边。然而,与其他表示相比,它可能具有稍大的内存负担。在内存灵活性和效率是首要考虑因素时,使用链接表示是有优势的。

算法

  • 在树中找到与顶点1对应的图节点。

  • 如果无法找到节点,则为vertex1创建一个新的节点并将其添加到图中。

  • 在图中,找到对应于顶点2的节点。

  • 如果无法找到节点,则为vertex2创建一个新节点并将其添加到图中。

  • 要表示边缘,请将vertex2添加到与vertex1对应的节点的链接列表中。

  • 在无向图中,将vertex1链接到vertex2的链表中。

示例

#include 
#include 
#include 

void AddEdge(std::unordered_map>& graph, int vertex1, int vertex2) {
    graph[vertex1].push_back(vertex2);
    graph[vertex2].push_back(vertex1);
}

int main() {
    std::unordered_map> graph;

    AddEdge(graph, 1, 2);
    AddEdge(graph, 1, 3);
    AddEdge(graph, 2, 3);

    for (const auto& entry : graph) {
        std::cout << "Vertex " << entry.first << " is connected to: ";
        for (int neighbor : entry.second) {
            std::cout << neighbor << " ";
        }
        std::cout << std::endl;
    }

    return 0;
}

输出

Vertex 3 is connected to: 1 2 
Vertex 2 is connected to: 1 3 
Vertex 1 is connected to: 2 3 

应用程序

  • 图表用于模拟社交媒体平台上的用户连接,从而可以研究社交互动并识别社群。

    jquery缩略图和大图滚动切换预览特效
    jquery缩略图和大图滚动切换预览特效

    基于jquery加css相框图片预览,侧边缩略图点击展示相应的大图效果。这是一款常用的缩略图和大图结合切换预览特效。

    下载
  • 图表在路径优化、最短路径计算和设计有效的交通网络方面非常有用。

  • 网络的拓扑结构由图形表示,这对于网络设计、分析和故障排除非常有帮助。

  • 图表模拟代谢途径、蛋白质相互作用和基因连接,以帮助研究生物系统。

  • 图表在推荐引擎中被用于根据用户偏好和物品关系为商品、电影或其他材料提供推荐。

  • 他们通过结构化和连接信息,使智能搜索和问答系统成为可能。

  • 欺诈检测、风险评估和投资组合优化都使用图形。

  • 基于图的技术用于包括链接预测、分类和分组等问题。

  • 图表使得更容易理解物联网设备和数据流之间的链接,从而促进物联网应用中的分析。

  • 通过图表支持药物相互作用、患者监测和疾病建模的医学研究,提高了医疗洞察力。

优势

  • 图表提供了一种简单易懂的数据可视化表示,使复杂的关联和关系更易于理解。

  • 通过图表,可以实现模式识别、趋势分析和异常检测,从而提高决策能力和问题解决能力。

  • 为了高效地处理和解释数据,图表展示了各种数据结构,准确模拟复杂的现实世界情况。

  • 在与数据库中的互联数据一起工作时,基于图形的拓扑结构使得数据的检索和遍历成为可能。

  • 图表经常在社交网络分析中使用,以理解社交互动,并确定突出的节点或用户。

  • 图表在交通运输和物流中确定最快或最有效的路线方面非常有用。

  • 图表驱动推荐引擎,根据用户行为和偏好为商品、服务或信息提供推荐。

  • 图表可以以层次结构的方式表示知识和信息,这使得它们在人工智能和语义网络的应用中非常有用。

  • 在结构化数据中,使用基于图的机器学习技术执行聚类、分类和链接预测等任务。

  • 寻找最佳匹配或有效安排工作只是图算法可以帮助解决的众多挑战中的两个例子。

缺点

  • 当处理庞大的数据集或存在大量节点和边时,图形可能变得难以管理和复杂。由于这种复杂性,可能难以充分分析和理解数据。

  • 存储图形可能会消耗大量内存,特别是对于具有许多节点和边的密集图形而言。随着图形变得更大,内存使用可能成为一个问题。

  • 在一个庞大的图中寻找最短路径,例如,可能是一个耗时且计算密集的任务。这可能导致性能问题,特别是在实时应用中。

  • 图表可以具有各种结构,其中一些节点的连接明显多于其他节点。由于这种不均匀性,使用常见技术或从数据中得出有用的推论可能会很困难。

  • 当处理高维图形时,将复杂的图形可视化可能具有挑战性,并且可能无法清晰地表示底层数据。

  • 缺失或不正确的数据可能导致图表中的不一致性,从而影响分析的质量和可靠性。

结论

图表在各个学科中都是灵活且经常被使用的工具,例如生物学、交通运输和社交网络。它们是数据分析的有用工具,因为它们可以可视化复杂的关系并找到模式。然而,处理大型数据集可能会变得复杂,并且需要更多的内存。此外,创建图表需要时间和知识。尽管存在这些缺点,但图表仍然是解决问题和决策的有用工具。通过使用适当的表示形式(例如集合和链接表示)和实施高效的算法,图表可以在多个学科的各种应用中继续提供有益的见解和支持。

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

4

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

7

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

42

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

4

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

3

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

3

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 4.1万人学习

Excel 教程
Excel 教程

共162课时 | 10.2万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.0万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号