邻接矩阵-建立图

1.介绍图的相关概念

  图是由顶点的有穷非空集和一个描述顶点之间关系-边(或者弧)的集合组成。通常,图中的数据元素被称为顶点,顶点间的关系用边表示,图通常用字母G表示,图的顶点通常用字母V表示,所以图可以定义为:

  G=(V,E)

其中,V(G)是图中顶点的有穷非空集合,E(G)是V(G)中顶点的边的有穷集合

1.1 无向图:图中任意两个顶点构成的边是没有方向的

1.2 有向图:图中任意两个顶点构成的边是有方向的,通常有向图的边也称之为弧

1.3 完全图:图中任意一个顶点与其他节点之间都有边

1.4 稠密图、稀疏图:一个图接近完全图称为稠密图,边数很少的图称为稀疏图

1.6 顶点的度:依附于某顶点的边数称为该顶点的度,在有向图中,以顶点为终点的弧的数目为该顶点的入度,以该点为始点的弧数为该顶点的出度

1.7 权:图中与边或弧有关的数据信息

1.8 网:边上带权的图称为网或带权图

1.9 路径、路径长度:无向图中,从任意一点到另一点所经过的顶点序列称为路径,路径上的边数称为路径长度

2.0 简单路径、简单回路、回路:一条路径中,若路径序列中所有顶点除起始点和中止点之外,彼此都不同,则该路径为简单路径。简单路径中的起始点与中止点相同,该路径为简单回路。如果路径序列中起始点与中止点相同,则该路径为回路或者环。

2.1 连通、连通图:无向图中,某两顶点之间有路径,则称这两个顶点是连通的。如果图中任意两顶点都是连通的,则该无向图为连通图,否则为非连通图。

2.2 极大连通子图、连通分量:如果在向无向连通图中加入原图的任何一个顶点,子图就不连通,则为极大连通分量。无向连通图中的极大连通子图称为该无向图的连通分量。/在有向图中若任意两顶点存在两条弧(一个入度一个出度),则称为强连通图,强连通分量同理。

图G的三个连通分量:

 

2.图的存储

邻接矩阵是表示顶点间相邻关系的矩阵,无向图中,如果两顶点有边,则G[i][j] = G[j][i] = 1,反之为0,有向图中G[i][j] = 1,但是G[j][i] 未必等于1

也可以表示带权图,即将1换位权值即可

程序:

 1 //建立图的邻接矩阵算法程序 /有向图,无权值,两顶点之间有边就用1表示,无边用0表示 
 2 #include<stdio.h>
 3 #include<string.h>
 4 #define MAX_VEX 100 
 5 
 6 int creatcost(int cost[][MAX_VEX])             //*cost数组表示所有带权图的邻接矩阵 
 7 {
 8     int vexnum,arcnum,i,j,k,v1,v2;             //输入图的顶点数和边数(或弧数)
 9 
10     printf("\n请输入顶点数,边数:\n");
11     scanf("%d %d",&vexnum,&arcnum);
12     for(i = 1;i <= vexnum;i++)                 //初始化带权图的邻接矩阵
13         for(j = 1;j <= vexnum;j++)
14             cost[i][j] = 0;                    //0表示无穷大
15     //memset(cost,0,vexnum*vexnum);            //也可以使用memset()函数进行初始化,将整个矩阵置0,需要有文件string.h 
16     for(k = 0;k < arcnum;k++)
17     {
18         printf("v1,v2= ");
19         scanf("%d %d",&v1,&v2);
20         cost[v1][v2] = 1;
21         //cost[v2][v1] = 1;                    //若建立无向图的邻接矩阵就应该加上这句话 
22     } 
23     
24     return vexnum; 
25 }
26 
27 int main()
28 {
29     int i,j,vexnum;
30     int cost[MAX_VEX][MAX_VEX];
31     vexnum = creatcost(cost);
32     printf("所建图的邻接矩阵为:\n");
33     for(i = 1;i <= vexnum;i++)
34     {
35         for(j = 1;j <= vexnum;j++)
36             printf("%3d",cost[i][j]);
37         printf("\n");
38     }
39     
40     return 0;
41 }

邻接矩阵存储其实有一些问题,对于边数相对顶点较少的图,这种存储结构对存储空间存在极大的浪费

 

转载于:https://www.cnblogs.com/mlblog27/p/9535240.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Busybox 制作文件系统并用 Qemu 启动编译的内核镜像

编译内核操作&#xff1a;https://blog.csdn.net/assiduous_me/article/details/120938556安装Busybox操作&#xff1a;https://blog.csdn.net/assiduous_me/article/details/120939319syzDESKTOP-B10G93S:~$ ls -l total 20 drwxr-xr-x 44 syz syz 4096 Oct 26 22:05 busybox …

深入浅出Win32多线程程序设计之线程通信

简介  线程之间通信的两个基本问题是互斥和同步。  线程同步是指线程之间所具有的一种制约关系&#xff0c;一个线程的执行依赖另一个线程的消息&#xff0c;当它没有得到另一个线程的消息时应等待&#xff0c;直到消息到达时才被唤醒。  线程互斥是指对于共享的操作系统…

Kafka Producer源码简述

接着上文kafka的简述&#xff0c;这一章我们一探kafka生产者是如何发送消息到消息服务器的。 代码的入口还是从 kafkaTemplate.send开始 最终我们就会到 org.springframework.kafka.core.KafkaTemplate#doSend方法 这里的关键就是 org.apache.kafka.clients.producer.Producer#…

原来搞单片机也可以面向对象

摘要&#xff1a;在看别人单片机程序时&#xff0c;你也许是奔溃的&#xff0c;因为全局变量满天飞&#xff0c;不知道哪个在哪用了&#xff0c;哪个表示什么&#xff0c;而且编写极其不规范。自己写单片机程序时&#xff0c;也许你也是奔溃的。总感觉重新开启一个项目&#xf…

雅虎年底升级IPv6标准 100万用户恐受影响

雅虎年底升级IPv6标准 100万用户恐受影响 http://network.51cto.com 2011-01-20 17:34 佚名 cnBeta 我要评论(0) 据国外媒体报道&#xff0c;雅虎计划今年年底将主站点Yahoo.com升级为IPv6标准&#xff0c;此举可能会使约100万用户在初期无法访问雅虎站点。据国外媒体报道&…

Linux v4l2框架分析

背景说明&#xff1a;Kernel版本&#xff1a;4.14ARM64处理器&#xff0c;Contex-A53&#xff0c;双核使用工具&#xff1a;Source Insight 3.5&#xff0c; Visio1. 概述V4L2(Video for Linux 2)&#xff1a;Linux内核中关于视频设备驱动的框架&#xff0c;对上向应用层提供统…

JAVA自学笔记23

JAVA自学笔记23 1、多线程 1&#xff09;引入&#xff1a; 2&#xff09;进程 是正在运行的程序。是系统进行资源分配和调用的独立单位。每一个进程都有它自己的内存空间和系统资源。 多进程&#xff1a; 单进程的计算机只能做一件事情&#xff0c;而现在的计算机都可以做…

上午写了一段代码,下午就被开除了~

俗话说得好&#xff0c;“代码写的少&#xff0c;离职少不了”。最近畅游互联网&#xff0c;发现一些离职小技巧&#xff0c;读后&#xff0c;内心被深深地打动了……但是&#xff0c;细细品过之后&#xff0c;发现对我们程序员不太适用了。例如&#xff1a;领导夹菜你转桌&…

nginx加载html目录下图片,nginx配置访问图片路径以及html静态页面的调取方法

nginx配置访问图片路径以及html静态页面的调取方法发布时间&#xff1a;2017-03-09 12:06来源&#xff1a;互联网当前栏目&#xff1a;web技术类给大家讲一个快速配置nginx访问图片地址&#xff0c;以及访问html静态页面的配置。1.实验环境首先随便某个路径下创建相应的目录。如…

微信小程序继续入坑指南

微信小程序继续入坑指南 wxml 类似于html 感觉和ejs灰常的相似 数据绑定 js Page({data: {message: "hello world"} })wxml <view>{{message}}</view> 使用的是https://mustache.github.io/模板引擎系统 对组件的属性和控制属性的更改 <view id"…

思科收购网络安全管理厂商Pari Networks

思科收购网络安全管理厂商Pari Networkshttp://netsecurity.51cto.com 2011-01-28 09:39 胡杨 译 网界网 我要评论(0)摘要&#xff1a;思科本星期宣布&#xff0c;它打算收购私营企业Pari Networks。这个企业是前思科工程师创建的&#xff0c;主要提供网络配置、变更和合规…

20年软件工程师的经验

软件工程师在做设计的时候&#xff0c;一定要有设计的思维&#xff0c;码农如果只是砌砖的&#xff0c;那么他的可替代性和技能能力并不高。前段时间看到一个设计师傅&#xff0c;在很狭小的空间内设计了非常非常不错的室内设计&#xff0c;利用了每一个可以利用的地方。如果我…

html超市代码,前端 CSS : 5# 纯 CSS 实现24小时超市

介绍原文链接感謝 comehope 大佬的 [前端每日实战]效果预览源代码地址代码解读1. html 结构命名规则使用了 BEM常规样式初始化* {margin: 0;padding: 0;box-sizing: border-box;}body {height: 100vh;overflow: hidden;}2. 街道背景街道背景分为两部分深蓝色的天空.street {hei…

送30块树莓派PICO 开发板!

大家好&#xff0c;今天是周日&#xff0c;给大家搞个小抽奖&#xff0c;送30块。嵌入式猛男必备&#xff0c;学嵌入式看『我要学嵌入式』&#xff0c;知识持久有力。点击关注&#xff0c;回复【1031】参与抽奖&#xff0c;免费送 10块 树莓派最新PICO开发板。学C语言看『写代码…

嘉立创又搞大事情了,与你我相关!

你们一定不知道嘉立创最近又悄咪咪的做了一件大事儿&#xff0c;硬创社硬件项目共享平台上线公测啦&#xff0c;这是一个帮助电子工程师实现技术变现的平台&#xff0c;平台刚刚上线公测&#xff0c;前期还在邀请电子工程师填充内容阶段&#xff0c;即日起平台每上传一个项目就…

c html联调,JS与native 交互简单应用

JS与native 交互简单应用一、objectiveC 语法简介二、简易项目浏览器搭建新建项目步骤&#xff1a;1>DraggedImage.png2>2222.png3>33333.png4>4444.png建立一个小的浏览器即webview关键代码如下&#xff1a;// context 上下文也可以在此处获取&#xff0c;开始加载…

写给我弟

我堂弟今年24岁&#xff0c;也是我最小的一个堂弟&#xff0c;我想给他说点事&#xff0c;想告诉他一些东西&#xff0c;但是也担心自己所说的&#xff0c;并不能让他认同和接受。我心里一定是有我弟的&#xff0c;也是装着我弟的&#xff0c;所以我弟的事情&#xff0c;我自己…

Chrome插件(扩展)

【干货】Chrome插件(扩展)开发全攻略 写在前面 我花了将近一个多月的时间断断续续写下这篇博文&#xff0c;并精心写下完整demo&#xff0c;写博客的辛苦大家懂的&#xff0c;所以转载务必保留出处。本文所有涉及到的大部分代码均在这个demo里面&#xff1a;https://github.com…

Apache OpenJPA 2.1.0 发布

OpenJPA 是 Apache 组织提供的开源项目&#xff0c;它实现了 EJB 3.0 中的 JPA 标准&#xff0c;为开发者提供功能强大、使用简单的持久化数据管理框架。OpenJPA 封装了和关系型数据库交互的操作&#xff0c;让开发者把注意力集中在编写业务逻辑上。OpenJPA 可以作为独立的持久…

手把手带你写一个中断输入设备驱动

今天群里有人问&#xff0c;要开始驱动开发的话从什么开始比较好。我说&#xff0c;应该开始去摸索触摸屏驱动&#xff0c;现在我想了下&#xff0c;触摸屏驱动可能会难了些&#xff0c;但是从一个GPIO开始&#xff0c;我觉得一定是一件很容易的事情。所以这篇文章就来了。大家…