1.图的定义

图(Graph)是由顶点(vertex)的有穷非空集合和顶点之间边(edge)的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合 a.若顶点之间 Vi 和 Vj 之间没有方向,则为无向边,用无序偶对( Vi , Vj )表示 b.若顶点之间 Vi 和 Vj 之间有方向,则为有向边(也称弧),用有序偶对< Vi , Vj >表示, Vi 为弧尾,Vj为弧头

2.图的基本概念

(1)简单图    图中既无吊环又无多重边,即为简单图 (2)无向图   如果图中任意两个顶点之间的边都是无向边(简而言之就是没有方向的边),则称该图为无向图(Undirected graphs) (3)有向图 如果图中任意两个顶点之间的边都是有向边(简而言之就是有方向的边),则称该图为有向图(Directed graphs) (4)完全图      ①无向完全图:在无向图中,如果任意两个顶点之间都存在边,则称该图为无向完全图。(含有n个顶点的无向完全图有(n×(n-1))/2条边)

在无向图中, 顶点的度—TD(v):指依附于该顶点的边的个数,n个顶点e条边的无向图中有以下成立的公式: 权    网 在图中,权(weight)通常是对边赋予的有意义的数值量,边上带权的图称为网或网图(network)

3.图的抽象数据类型定义

ADT Graph DATA 顶点的有穷非空集合和边的集合 InitGraph 前置条件: 图不存在 输入:        无 功能:        图的初始化 输出:        无 后置条件: 构造一个空的图 DestoryGraph 前置条件: 图已存在 输入:        无 功能:        销毁图 输出:        无 后置条件: 释放图所占的存储空间 GetVex 前置条件: 图已存在 输入:        顶点V 功能:        在图中查找顶点V的数据信息 输出:        顶点V的数据信息 后置条件: 图不变 putVex 前置条件: 图已存在 输入:        顶点V,顶点信息value 功能:        在图中查找顶点V并将value的值赋给顶点V 输出:        无 后置条件: 无 InsertVex 前置条件: 图已存在 输入:        顶点V 功能:        在图中插入一个顶点 输出:        如果插入不成功,抛出异常 后置条件:如果插入成功,图中增加了一个顶点

deleteVex 前置条件: 图已存在 输入:        顶点V 功能:        在图中删除一个顶点 输出:        如果删除不成功,抛出异常 后置条件:如果删除成功,图中少了一个顶点 insertArc 前置条件: 图已存在 输入:        顶点U,顶点V,顶点U和V之间边的信息 功能:        在图中插入一条边 输出:        如果插入不成功,抛出异常 后置条件: 如果插入成功,图中增加了一条边 deleteArc 前置条件:  图已存在 输入:        顶点U,顶点V 功能:        在图中删除顶点U和V之间的边 输出:        如果删除不成功,抛出异常 后置条件: 如果删除成功,图中少了一个顶点 DFSTraverse 前置条件: 图已存在 输入:        遍历的起始顶点V 功能:        从顶点V出发深度优先遍历图 输出:        图中顶点的一个线性排序 后置条件: 图保持不变 BFSTraverse 前置条件: 图已存在 输入:        遍历的起始顶点V 功能:        从顶点V出发广度优先遍历图 输出:        图中顶点的一个线性排序 后置条件: 图保持不变

4.无向图的遍历

1问:以哪个顶点为起始顶点 1答:顶点都是平等的,可以选取任意一个顶点,可以按照编号小的开始 2问:图中有回路(几个顶点构成一个圆环),可能重复访问,陷入死循环 2答:给顶点设置一个访问标志,visited[n],n为图中顶点的个数,未访问标志0,如果顶点被访问标志1深度优先遍历: 基本思路: 1.访问顶点V 2.从V的未被访问的邻接点中选取一个顶点W,从W出发进行深度优先遍历 3.重复以上2步,直到图中所有和V有路径相通的顶点被访问到伪代码:(类似树的前序遍历) 1.访问顶点,visited[v]=1; 2.w=顶点v的第一个邻接点; 3.while(w){     if(w未被访问) 从顶点w出发递归执行该算法     w=顶点v的下一个邻接点 }广度优先遍历: 基本思路: 1.访问顶点V 2.依次访问V的各个未被访问的邻接点V1,V2,V3……VK 3.分别V1,V2,V3……VK从出发依次访问他们未被访问的邻接点,并使“先被访问顶点的邻接点”先于“后被访问顶点的邻接点”被访问,直到图中所有与顶点V有路径相通的顶点都被访问到

伪代码:(类似树的层序遍历) 1.初始化队列Q 2.访问顶点v,visited[v]=1,顶点入队Q; 3.while(队列Q非空){     v=队列Q的队头元素出队     w=顶点v的第一个邻接点     while(w存在){         if(w未访问){           访问顶点w,visited[w]=1;顶点w入队列Q         }         w=顶点v的下一个邻接点     } }

java 数据结构 无向图_数据结构-无向图相关推荐

  1. java 栈 先进后出_数据结构: 先进后出——堆栈

    栈是一种常用的数据结构,在生活中经常遇到这样的例子,如铁路调度站.本节将详细介绍堆栈的实现过程. 算法点拨(顺序栈) 栈是一种重要的数据结构.从数据结构的角度看,栈也是线性表,其特殊性在于栈的基本操作 ...

  2. python数据结构算法_数据结构与算法(Python)

    数据结构与算法(Python) Why? 我们举一个可能不太恰当的例子: 如果将最终写好运行的程序比作战场,我们码农便是指挥作战的将军,而我们所写的代码便是士兵和武器. 那么数据结构和算法是什么?答曰 ...

  3. java 数据结构实例_数据结构(Java)——栈的实例

    惟大英雄能本色,是真名士自风流 --易中天(百家讲坛) 1.表达式的转换 1.1 中缀表达式转前缀表达式 中缀表达式转前缀表达式有许多的方式,有加括号去除法.语法树遍历法.堆栈处理法1. 测试程序的实 ...

  4. java链表实现_数据结构——基于java的链表实现(真正理解链表这种数据结构)...

    一.链表介绍 1.什么是链表? 链表是一种物理存储结构上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.如下图所示,在数据结构中,a1里面的指针存储着a2的地址,这样一个 ...

  5. java环形链表_数据结构和算法(四)Java实现环形链表

    1. 数据结构和算法(四)Java实现环形链表 1.1 约瑟夫问题 约瑟夫问题:公元66年,约瑟夫不情愿地参与领导了犹太同胞反抗罗马统治的起义,后来起义失败,他和一些宁死不降的起义者被困于一个山洞之中 ...

  6. java城市链表_数据结构城市链表 1. 城市链表 [问题描述]将若干城市的信息 联合开发网 - pudn.com...

    数据结构城市链表 所属分类:文章/文档 开发工具:Java 文件大小:174KB 下载次数:7 上传日期:2017-12-18 18:37:53 上 传 者:叁佰 说明:  1. 城市链表 [问题描述 ...

  7. 数据结构java教学计划编排_数据结构课程设计_教学计划编制问题

    数据结构课程设计_教学计划编制问题 (教学计划编制问题)目 录1.需求分析 -------.3-52.概要设计 -------.6-83.详细设计 ------ 8-134.调试分析 ------ 1 ...

  8. 数据结构java版 大学_数据结构(Java版)

    "数据结构"是计算机科学与技术专业.软件工程专业甚至于其它电气信息类专业的重要专业基础课程.它所讨论的知识内容和提倡的技术方法,无论对进一步学习计算机领域的其它课程,还是对从事大型 ...

  9. java 跳表_数据结构跳表学习并用Java实现

    前面学习很多类的源码过程中,底层基本都是数组和链表,今天学习第三种结构跳表(SkipList). 跳表解决的问题 一个有序的数组如果我们要判断一个数据是否存在可以通过二分查找法非常快速的判断出来,但是 ...

最新文章

  1. 计算机中音乐设备数字接口,一种计算机用声卡封存装置的制作方法
  2. navicat无法连接远程的数据库解决
  3. [转] apache2: bad user name ${APACHE_RUN_USER}
  4. 打印机是微型计算机必须配置的一种,计算机第一章测试卷
  5. RAC对单实例DG redo大小日志修改
  6. VC++程序开机自启动(注册表上注册)
  7. git学习资料整理(知乎搜集的)
  8. 【OS学习笔记】三十五 保护模式十:中断描述符表、中断门和陷阱门
  9. python语言常量_python---01.各类计算机语言,python历史,变量,常量,数据类型,if条件...
  10. 第一 二章 计算机基础知识,[精品]第二章-计算机基础知识.doc
  11. 拆解任務與目標、按時完成,不再被deadline追著跑
  12. fiddler模拟弱网测试
  13. 基于STM32F103驱动TM1640LED数码管代码实现
  14. pcr计算码率的过程
  15. ssh关闭linux的网卡,linux操作系统修改网卡mac地址 ssh -X
  16. appium2.0+ 单点触控和多点触控新的解决方案
  17. 资深电竞发烧友走心盘点,五款高续航游戏低延迟蓝牙耳机分享
  18. Linux网络连接命令
  19. python枚举是什么意思_什么是枚举python,
  20. TIA博途中如何使用符号方式按位,字节,字访问非结构数据类型

热门文章

  1. 在kotlin companion object中读取Bean,注入Bean对象
  2. 2022-2028年中国第五代移动通信技术(5G)市场研究及前瞻分析报告
  3. 2021-2027年中国玩具行业市场研究及前瞻分析报告
  4. VS Code 离线安装插件方法
  5. 浅显易懂 Makefile 入门 (09)— include 文件包含、MAKECMDGOALS
  6. Python 标准库之 sys
  7. 第五周周记(国庆第三天)
  8. TVM 各个模块总体架构
  9. 使用卷积神经网络的自动心电图诊断
  10. 介绍一下android的事件分发机制