for循环语句java图形_Java图形开发人员指南,用于其中的图形和检测循环
for循环语句java图形
在我第一次接受全栈软件工程职位的现场采访时,我被要求编写一个函数,该函数可以检测有向图中是否存在循环。
读者:我没有成功编写该函数。
坦白说,我有一个什么样的图形,甚至是朦胧的,在最佳的想法。 在我一生的大部分时间里,我都以为这张图是这样的:
![](/assets/blank.gif)
原来,图实际上是这样的:
![](/assets/blank.gif)
我知道,我认为第一个看起来也更有趣。 但是图实际上是一个非常酷的数据结构。 它们在计算机科学中无处不在,用于推荐引擎和Google Maps ,当然还有GraphQL 。 问题是,没有多少文章详细介绍Javascript中图的实现/技巧。 所以我决定写一个。
那图到底是什么?
关于图的最基本知识是它们由顶点和边组成。 顶点是图的东西 :一个整数,对象,一个网站等边连接一对顶点。
图形可以是:
- 加权或未加权-这是指图形的边缘是否用值标记。 如果是,则对其进行加权。
- 有向还是无向-这是指边缘的行为像桥(无向)还是保龄球道(有向)。
- 循环或非循环-这是指图形中是否存在循环。
表示图形的主要方法有两种:使用邻接表 ,它是与每个节点相关联的数组(或对象,如果需要的话)的集合:
{a: [b,c,d],b: [c,f],d: [e],e: [a,f],f: [a, c, d, e]}
或带有邻接矩阵,这是一个二维数组,其中顶点之间的边用1表示:
[ [0, 1, 0, 0, 0, 0, 1, 0, 1, 0],
[1, 0, 0, 0, 1, 0, 1, 0, 0, 1],
[0, 0, 0, 0, 1, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 1, 1, 0, 0, 1, 0],
[0, 1, 1, 1, 0, 1, 0, 0, 0, 1],
[0, 0, 0, 1, 1, 0, 0, 0, 0, 0],
[1, 1, 1, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 1, 1],
[1, 0, 0, 1, 0, 0, 0, 1, 0, 0],
[0, 1, 0, 0, 1, 0, 0, 1, 0, 0] ]
每种表示形式都有其优缺点 。 一般而言,具有大量边的图的表现比矩阵更好,而具有较少边的图的表现比列表更好。 邻接列表往往更常见,而今天我们将使用它。
制作图表
因此,让我们开始吧! 呜。 我们要做的第一件事是…制作一张图表。
![](/assets/blank.gif)
Graph构造函数内部的逻辑很简单:只是实例化为对象文字的邻接列表。 接下来的两种方法并不复杂:添加顶点的方法将每个顶点初始化为一个空数组,添加边缘的方法将一个顶点推入另一个顶点的数组。 像这样
![](/assets/blank.gif)
制作一个看起来像这样的图:
![](/assets/blank.gif)
或换一种说法:
![](/assets/blank.gif)
现在我们有了一个图! 好极了。 不仅仅是任何图:未加权的有向无环图。
遍历图
现在我们有了一个图,我们将需要找出一种访问不同顶点的方法—毕竟,我们的最终目标是检测该图是否为周期性的,这意味着沿着顶点在顶点之间遍历。图的边缘。
有两种遍历图形的方式: 广度优先遍历,即先访问顶点的每个子级,然后再访问该子级中的每个子级;以及深度优先遍历,即遵循由边连接的一系列顶点,直到我们到达顶点为止在继续到原始顶点的下一个子节点之前,不能再进行任何操作。 我们在有向图中检测循环的算法将使用深度优先遍历的修改版本,因此让我们快速看一下该遍历方法的外观。
![](/assets/blank.gif)
这里有两个函数:dfs函数和_dfsUtil函数。
dfs函数仅做三件事:
- 创建一个名为“ nodes”的数组; 每个元素都是我们图中的一个顶点
- 创建一个称为“ visited”的对象文字
- 在图形的每个顶点上调用我们的效用函数。
与二叉树(例如)相反,在执行图的深度优先遍历时,要记住的重要一点是,我们需要跟踪已经访问过的节点,而不是第二次访问它们,即使另一个顶点在该节点上有一条边。 例如,如果我们不跟踪所访问的顶点,那么从起点“ A”遍历图形将导致我们四次访问“ B”,而不仅仅是一次!
for循环语句java图形_Java图形开发人员指南,用于其中的图形和检测循环相关推荐
- 【源码+教程】Java课设项目_12款最热最新Java游戏项目_Java游戏开发_Java小游戏_飞翔的小鸟_王者荣耀_超级玛丽_推箱子_黄金矿工_贪吃蛇
马上就要期末了,同学们课设做的如何了呢?本篇为大家带来了12款热门Java小游戏项目的源码和教程,助力大家顺利迎接暑假![源码+教程]Java课设项目_12款最热最新Java游戏项目_Java游戏开发 ...
- Java 8 失宠!开发人员向 Java 11 转移...
以下文章来源方志朋的博客,回复"666"获面试宝典 作者:白开水 来源:OSC开源社区(ID:oschina2013) 此前的 Java 社区报告曾指出,Java 8 仍是开发人员 ...
- aws搭建java项目_开发人员指南 - AWS SDK for Java 1.x - 适用于 Java 的 AWS 开发工具包...
本文属于机器翻译版本.若本译文内容与英语原文存在差异,则一律以英文原文为准. 开发人员指南 - AWS SDK for Java 1.x 适用于 Java 的 AWS 开发工具包为 Amazon We ...
- delphi5开发人员指南_非设计人员的网页设计开发人员指南
delphi5开发人员指南 I created my first website as a school project when I was 14. The task was simple: cre ...
- nvidia linux路径,NVIDIA Jetson Linux驱动程序包开发人员指南 - 快速入门指南
这里的信息旨在帮助您开始使用NVIDIA很快上手®Jetson™驱动程序支持包(L4T与Jetson开发包一起).(名称L4T源自" Linux for Tegra"的描述,Teg ...
- delphi5开发人员指南_成为企业家并发挥作用的开发人员指南
delphi5开发人员指南 by Isabel Nyo 通过伊莎贝尔·尼奥 成为企业家并发挥作用的开发人员指南 (A developer's guide to becoming an intrapre ...
- Apex开发人员指南
Apex开发人员指南 调用顶点 匿名块 : 匿名块是Apex代码 , 他不会存储在元数据中 , 但是可以编译 触发器 : 可以使用触发器来调用Apex . Apex触发器使您呢不挂钩在更改Salesf ...
- GeoWave0.9.8开发人员指南
GeoWave0.9.8开发人员指南 官方英文地址:http://s3.amazonaws.com/geowave/0.9.8/docs/devguide.html 介绍 什么是GeoWave Geo ...
- 亚马逊 新版卖家中心 销售伙伴API(amazon selling partner API)开发人员指南
文章目录 关于本指南 术语 什么是销售合作伙伴 API? 主要特点 全球应用 销售合作伙伴 API 端点 市场 ID 值 注册为开发者 检查您注册为开发人员的请求的状态 创建和配置 IAM 策略和实体 ...
最新文章
- MobaXterm使用
- 浅谈MVP与Model-View-ViewModel(MVVM)设计模式
- Robust Point Cloud Registration Framework Based on Deep Graph Matching (RGM) 简略分析
- CALayers详解
- UIImageView 响应UIButton的点击事件
- sql oltp_SQL Server中的内存中OLTP的快速概述
- c# 解析Xml文件
- 嵌入式系统与人工智能
- pr视频两边模糊_干货!Pr教程:如何在视频中添加模糊效果?
- qt中c语言运行中文字体乱码,QString 与中文问题/Qt界面中文字体及大小设置
- 排列组合之插板法实例
- 上传图片到淘宝 API 返回值说明
- kali之beef的使用
- Sentiment Embeddings with Applications to Sentiment Analysis
- 半小时教你做大转盘游戏(QT篇)
- python2和python3 with open as f写中文乱码
- 动态规划:求两个字符串的最长公共子序列
- 数据库--mysql(SQL语句)
- 只有170字节,最小的64位Hello World程序这样写成
- android 蓝牙扫描流程,Android 9.0 Bluetooth源码分析(二)蓝牙扫描流程
热门文章
- 批量插入报错:Parameter ‘id‘ not found. Available parameters are [forlonList, param1]
- 【工作技巧】Ubuntu备忘记录
- linux双引号输出输出不正确
- 你所不知道的蓝牙适配器的好处
- apk软件管理——玩转alpine linux
- java正则匹配英文句号_java正则表达式最简单 学习教程
- “失”失物招领App——项目需求分析
- Image captioning评价方法之BLEU (bilingual evaluation understudy)
- 基于PLECS的离网(孤岛)并联逆变器的Droop Control下垂控制仿真
- 恐龙机器人钢索恐龙形态_《变形金刚5》角色大解析2,机器恐龙钢索成主角,恐龙宝宝登场...