图论(一)之概念介绍与图形#matlab

图论(一)之概念介绍与图形目录

前言

一、图论介绍

二、基本概念 

2.1图的概念

2.2图形分类

2.3邻接矩阵

 2.3.1无向图

2.3.2有向图

2.3.3有向赋权图

2.4出度(Outdegree)

2.5入度(Indegree)

3.四种图论图形的matlab代码

4.运行结果

5.图论应用

6.算法

总结


前言

        图论——这一专注于点和线之间关系的学科,如同一条独特的脉络,将无数看似孤立的领域紧密地连接在一起。


一、图论介绍

        从数学建模角度来看,图论(Graph Theory)是数学的一个分支,主要研究由若干给定的点(通常称为顶点或节点)以及连接这些点的线(通常称为边)所构成的图形。这种图形通常用来描述某些事物之间的某种特定关系,其中点代表事物,边表示事物之间具有的关系。

二、基本概念 

2.1图的概念

        图G通常表示为二元组(V(G),E(G))。公式(1)是非空有限集,称为顶点集,其中元素称为图G的顶点。顶点(或节点、点)是图中的基本元素,用来表示不同的对象、事件或位置。

V(G)=\{\nu_1,\nu_2,\cdots,\nu_\nu\},公式(1)

        公式(2)是顶点集V(G)中的无序(无向图)有序(有向图)的两个元素组合组成的集合,即称为边集,其中元素称为。边是连接两个顶点的线,表示顶点之间的关系或连接。边可以是有向的(单向关系),也可以是无向的(双向关系)。

E(G)=\{e_1,e_2,\cdots,e_n\}公式(2)

        赋权图:若图G=(V(G),E(G))的每一条边e都赋以一个实数w(e),称w(e)为边e的,G连同边上的权称为赋权图。

2.2图形分类

        所有图论里的图都可以根据是否有向和是否加权分类。

2.3邻接矩阵

       

图1 四种图论基本图

 2.3.1无向图

      

根据上图1中的无权无向图可以得出其邻接矩阵为:

2.3.2有向图

根据上图1中的无权有向图可以得出其邻接矩阵为:

2.3.3有向赋权图

根据上图1中的有权有向图可以得出其邻接矩阵为:

2.4出度(Outdegree)

        定义:由某个顶点指出的边的个数称为该顶点的出度;解释:在有向图中,一个顶点的出度表示从这个顶点出发的边的数量;换句话说,这些边都是以该顶点为“尾”(tail),指向其他顶点作为“头”(head)。

示例:在图3中,顶点D指向顶点A和顶点C,那么顶点D的出度就是2。

2.5入度(Indegree)

        定义:指向某个顶点的边的个数称为该顶点的入度;解释:在有向图中,一个顶点的入度表示指向这个顶点的边的数量;这些边都是以其他顶点为“尾”,以该顶点为“头”。

3.四种图论图形的matlab代码

clc; clear; 
%% 1. 创建无权的有向图和无向图 
V = {'A', 'B', 'C', 'D'}; 
E = {'A' 'B'; 'B' 'C'; 'C' 'D'; 'D' ,'A'}; 
% 1.1 创建无权有向图 
G_directed = digraph(E(:,1), E(:,2)); 
% 绘制图形 
figure; % 只在这里调用 figure,以创建一个新的图形窗口 
subplot(2,2,1); 
plot(G_directed, 'Layout', 'circle', 'NodeColor', [0.5294 0.8078 0.9804], ... 
'MarkerSize', 10, 'EdgeColor', 'black', 'ArrowSize', 10); 
title('无权有向图'); 
% 获取有向图的邻接矩阵 
adjacency_directed = adjacency(G_directed); 
disp('无权有向图的邻接矩阵:'); 
disp(adjacency_directed);
% 1.2 创建无权无向图 
E = {'A' 'B'; 'B' 'C'; 'C' 'D'; 'D' ,'A'}; 
G_undirected = graph(E(:,1), E(:,2)); 
subplot(2,2,2); 
plot(G_undirected, 'Layout', 'circle', 'NodeColor', [0.5294 0.8078 0.9804], ... 
'MarkerSize', 10, 'EdgeColor', 'black'); 
title('无权无向图'); 
% 获取无向图的邻接矩阵 
adjacency_undirected = adjacency(G_undirected); 
disp('无权无向图的邻接矩阵:'); 
disp(adjacency_undirected);
%% 2. 创建加权的有向和无向图 
weights = [1, 2, 3, 4,5]; % 边的权重 
% 2.1 创建有权有向图 
E = {'A', 'B'; 'B', 'C'; 'C', 'D'; 'D', 'A';'D','C'}; 
G_weighted_directed = digraph(E(:,1), E(:,2), weights); 
subplot(2,2,3); 
plot(G_weighted_directed, 'Layout', 'circle', 'NodeColor', [0.5294 0.8078 0.9804], ... 
'MarkerSize', 10, 'EdgeColor', 'black', 'ArrowSize', 10, 'EdgeLabel', weights); 
title('加权有向图'); 
% 初始化邻接矩阵(全无穷大) 
num_nodes = numel(V); 
adjacency_matrix_weighted_directed = inf(num_nodes, num_nodes); 
% 将对角线元素设置为0(节点到自身的权重为0) 
% 因为这里我们不需要考虑节点到自身的边(通常默认为0或不考虑),所以这步可以省略 
% 但为了保持一致性,我们还是设置它为0 
adjacency_matrix_weighted_directed(logical(eye(num_nodes))) = 0; 
% 填充邻接矩阵的权重 
for i = 1:length(E) 
source_index = find(strcmp(V, E{i, 1}), 1); % 找到源节点在V中的索引 
target_index = find(strcmp(V, E{i, 2}), 1); % 找到目标节点在V中的索引 
adjacency_matrix_weighted_directed(source_index, target_index) = weights(i); 
end 
% 显示邻接矩阵(可选) 
disp('有权有向图的邻接矩阵(权重表示,无边为无穷大):'); 
disp(adjacency_matrix_weighted_directed);
% 2.2 创建有权无向图 
E = {'A', 'B'; 'B', 'C'; 'C', 'D'; 'D', 'A';'D','C'}; 
G_weighted_undirected = graph(E(:,1), E(:,2), weights); 
subplot(2,2,4); 
plot(G_weighted_undirected, 'Layout', 'circle', 'NodeColor', [0.5294 0.8078 0.9804], ... 
'MarkerSize', 10, 'EdgeColor', 'black', 'EdgeLabel', weights); 
title('加权无向图');

4.运行结果

5.图论应用

        图论的应用范围非常广泛,涉及电信网络、电力网络、交通运输、计算机科学、控制论、人工智能、社会网络分析等多个领域。图论中的算法和理论在解决诸如最短路径问题、最小生成树问题、网络流问题等实际问题中发挥着重要作用。

6.算法

        图论算法包括深度优先搜索(DFS)、广度优先搜索(BFS)、Dijkstra算法(用于求解最短路径问题)、Prim算法和Kruskal算法(用于求解最小生成树问题)等。这些算法在图论的理论研究和实际应用中都具有重要意义。


总结

        综上所述,图论是一门研究图及其相关性质的数学分支,具有广泛的应用背景和重要的理论价值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/711184.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Apollo9.0 PNC源码学习之Control模块(五)—— 基于LQR的横向控制

前面文章: Apollo9.0 PNC源码学习之Control模块(一) Apollo9.0 PNC源码学习之Control模块(二) Apollo9.0 PNC源码学习之Control模块(三) Apollo9.0 PNC源码学习之Control模块(四&…

GenICam标准(六)

系列文章目录 GenICam标准(一) GenICam标准(二) GenICam标准(三) GenICam标准(四) GenICam标准(五) GenICam标准(六) 文章目录 系列文…

鸿蒙用 BuilderParam 实现同一个布局不同内容组件

面通过一个案例展示BuilderParam的具体用法,例如,现需要实现一个通用的卡片组件,如下图所示 卡片中显示的内容不固定,例如 具体实现代码如下: Entry Component struct BuildParamDemo {build() {Column(){Card() {imag…

C++:STL容器-->set

使用set容器时需要导入头文件&#xff1a;#include <set> set和multiset区别&#xff1a; set不允许容器中有重复的元素 multiset允许容器中有重复的元素 1. 构造函数 set<T> st; set s(const &st); void printSet(set<int>& s) {for (set<int>…

CC2500和CC1101移植说明

主要通过如何移植、移植注意、关于芯片配置、如何生成导出配置四大步骤来说明CC2500和CC1101移植 首先通过下图1这个宏进行选择 如何移植 要移植的部分在 CC2500_hal.c 和 CC2500_hal.h中, 搜索 "//移植" 就可以定位到 库 所需的依赖, 需要根据 您的环境实现这些…

【机器学习】LightGBM: 优化机器学习的高效梯度提升决策树

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 LightGBM: 优化机器学习的高效梯度提升决策树引言一、LightGBM概览二、核心技术…

VSCode格式化插件-prettier

VSCode格式化插件 1.安装插件&#xff1a;prettier 2.设置默认格式化工具 设置中&#xff0c;搜索 “Default Formatter”。 在编辑器设置中&#xff0c;将默认格式化工具设为 Prettier。 3.启用格式化选项&#xff1a; 在设置中搜索 “Format On Save”&#xff0c;并勾选…

【机器学习】机器学习与物流科技在智能配送中的融合应用与性能优化新探索

文章目录 引言机器学习与物流科技的基本概念机器学习概述监督学习无监督学习强化学习 物流科技概述路径优化车辆调度需求预测 机器学习与物流科技的融合应用实时物流数据分析数据预处理特征工程 路径优化与优化模型训练模型评估 车辆调度与优化深度学习应用 需求预测与优化强化…

从 Solana 课程顺利毕业获得高潜岗位,他的 Web3 开发探险之旅

在 TinTinLand 的学习&#xff0c;给了我入门 Web3 行业的 Entry Ticket&#xff0c;我认为这张 Ticket 是非常宝贵和重要的。 Alex&#xff0c;一位从某家知名研究所毅然辞职&#xff0c;踏入Web3世界的年轻开发者&#xff0c;凭借在 TinTinLand 推出的「Solana 黑客松先锋训练…

leetcode(力扣)第15题-三数之和---使用c语言双指针法,二级指针的应用

题目&#xff1a; 15. 三数之和 - 力扣&#xff08;LeetCode&#xff09; 编写过程的问题&#xff1a; 记住线索 1、对数组使用快排排序&#xff1b;2、固定 a 对 b、c 使用双指针&#xff1b;3、注意去重问题。函数返回值的类型。{1&#xff0c;2&#xff0c;-3}。结果作为…

Unity动态添加聊天文本

1.创建一个滚动视图 2.调整滚动视图的位置并删掉这个 3.创建一个输入框和一个按钮 这里插一句一定要给content添加这个组件并设置单元格大小 4创建一个脚本并编写下面代码 using System.Collections; using System.Collections.Generic; using TMPro; using Unity.VisualScrip…

云原生系列之Docker常用命令

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 系列文章目录 云原生之…

宠物空气净化器避坑指南:希喂、霍尼韦尔、安德迈谁是性价比之王

作为一个拥有两只布偶的猫奴&#xff0c;家中猫浮毛无处不在&#xff0c;稍有松懈&#xff0c;出门衣物上便沾满猫毛&#xff0c;影响形象。不仅如此&#xff0c;空气中还飘浮着猫咪们的浮毛和异味。难以清理。经过我不懈的努力&#xff0c;我终于找到了解决这一问题的神器——…

救命!挖到宝了,这本计算机书真的巨巨好看

一本适合大学生使用的计算机科学和编程学习指南&#xff0c;它通过丰富的内容和多样的学习形式&#xff0c;帮助学生建立坚实的计算机科学基础&#xff0c;并激发他们对计算机科学的兴趣。 这本书涵盖了多种类型的练习题&#xff0c;旨在帮助读者巩固理论知识并提高实际编程技能…

前端菜鸡流水账日记 -- pnpm的学习

哈咯哇大家&#xff0c;我又来了&#xff0c;最近稍微悠闲一些&#xff0c;所以就趁着这个机会学习一些新的知识&#xff0c;今天就是碰巧遇到了pnm&#xff0c;这个可以看作是npm的升级版本&#xff0c;比npm要快&#xff0c;用起来也更得劲更迅速 官网地址&#xff1a;https…

React入门教程:构建你的第一个React应用

在当今快速发展的Web开发领域&#xff0c;前端技术日新月异&#xff0c;而React作为一款强大的JavaScript库&#xff0c;已经成为众多开发者的首选。React以其组件化、高效的性能和灵活的数据处理机制闻名于世&#xff0c;被广泛用于构建动态且复杂的用户界面。在本教程中&…

Oracle数据库连接并访问Microsoft SQL Server数据库

Oracle数据库连接并访问Microsoft SQL Server数据库 说明&#xff1a;  1.实际开发中&#xff0c;Oracle数据库与SQLServer数据库之间可能需要相互进行访问&#xff0c;方便业务数据抽取&#xff0c;编写视图及表等操作。  2.SQLServer访问Oracle数据库配置相对较为简单&…

制作自己的 @OnClick、@OnLongClick(告别 setOnClickListener,使用注解、反射和动态代理)

前言 前面我们说过 ButterKnife 这个库&#xff0c;这个库实现不仅实现了 View 的绑定&#xff0c;而且还提供了大量的注解如 BindView、OnClick、OnLongClick 等来简化开发过程中事件绑定。而这些功能的实现是通过 APT 也就是注解处理器&#xff0c;在编译期间生成 Java 代码…

实用软件下载:XMind 2024最新安装包及详细安装教程

​XMind不仅是一款易用且功能强大的思维导图软件&#xff0c;也是一个开源项目。XMind以构建一个社区向全球提供领先的跨平台思维导图和头脑风暴软件为目标&#xff0c;以帮助用户提升效率。XMind公司是XMind开源项目的主要代码贡献者&#xff0c;与此同时&#xff0c;我们欢迎…

回答网友的一个Delphi问题

网友想在grid 中 加一个水印&#xff0c;俺就给他写了个例子。先靠效果&#xff1a; 这个例子 包含下面几步&#xff1a; 1、创建背景 dg_bmp:Tbitmap.Create; w: Image1.Picture.Bitmap.width; h: Image1.Picture.Bitmap.height; dg_bmp.width: w*2; dg_bmp.height: …