【Java】图论笔记

已含dfs和bfs,相关算法正在研究

代码

import java.util.*;public class Prim{public static void main(String[] args) {Graph graph=new Graph();graph.addVertex("A");graph.addVertex("B");graph.addVertex("C");graph.addVertex("D");graph.addVertex("E");graph.addEdge("A","B",1);graph.addEdge("A","E",2);graph.addEdge("B","C",2);graph.addEdge("B","F",2);graph.addEdge("C","D",2);graph.addEdge("D","F",2);graph.addEdge("E","F",2);System.out.println(graph.dfs());graph.addVertex("1");System.out.println(graph.dfs());}}
class Graph{public Boolean isConnected(){List<String> visited=new ArrayList<>();for(String v1:vertexs.keySet()){visited.add(v1);dfs(v1,visited);break;}return visited.size()==vertexs.size();}public void prim(){List<String> list=new ArrayList();putFirst(list);int size=vertexs.size();for(int i=1;i<size;i++){int min=Integer.MAX_VALUE;String next=null;for(String key:list){Map<String,Integer>neighbors=vertexs.get(key);for(Map.Entry<String,Integer> nbsentry:neighbors.entrySet()){if(!list.contains(nbsentry.getKey())){if(nbsentry.getValue()<min){min= nbsentry.getValue();next=nbsentry.getKey();}}}}if(next!=null){list.add(next);}}System.out.println(list);}public void putFirst(List<String> list){for(Map.Entry<String,Map<String,Integer>>entry:vertexs.entrySet()){String key=entry.getKey();Map<String,Integer> value=entry.getValue();list.add(key);break;}}private Map<String,Map<String,Integer>>vertexs;public Graph(){vertexs=new HashMap<>();}public void addVertex(String v1){if(!vertexs.containsKey(v1)){vertexs.put(v1,new HashMap<>());}}public void addEdge(String v1,String v2,int weight){if(!vertexs.containsKey(v1)){vertexs.put(v1,new HashMap<>());}vertexs.get(v1).put(v2,weight);if(!vertexs.containsKey(v2)){vertexs.put(v2,new HashMap<>());}vertexs.get(v2).put(v1,weight);}public Map<String,Integer> getNeighbors(String v1){return vertexs.get(v1);}public static void my_traverseNeighbors(Map<String, Integer> neighbors) {for (Map.Entry<String, Integer> entry : neighbors.entrySet()) {String vertex = entry.getKey();Integer weight = entry.getValue();System.out.println("顶点: " + vertex + ", 权重: " + weight);}}public void bfs(){List<String> visited=new ArrayList<>();for(String v1:vertexs.keySet()){bfs(v1,visited);}System.out.println("null");}private void bfs(String v1,List visited) {if(!visited.contains(v1)){System.out.print(v1+"->");visited.add(v1);}Map<String,Integer> map=vertexs.get(v1);for(Map.Entry<String,Integer>entry:map.entrySet()){String v2 = entry.getKey();if(!visited.contains(v2)){System.out.print(v2+"->");visited.add(v2);}}}public List dfs(){List<String> visited=new ArrayList<>();for(String v1:vertexs.keySet()){if(!visited.contains(v1)){visited.add(v1);dfs(v1,visited);}}return visited;}private List dfs(String v1, List<String> visited) {Map<String,Integer> map =vertexs.get(v1);for(Map.Entry<String,Integer>entry:map.entrySet()){String key=entry.getKey();if(!visited.contains(key)){visited.add(key);dfs(key,visited);}}return visited;}
}

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

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

相关文章

2分钟带你了解什么是Vsync

了解Vsync&#xff0c;首先我们需要认知如下问题 什么是GPUCPU在渲染之前起到什么作用什么是帧&#xff0c;帧率什么是画面撕裂 什么是GPU GPU为图形处理器&#xff0c;又称显示核心、视觉处理器、显示芯片。 是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑…

C++设计模式——Adapter(适配器)模式

一、Adapter模式是个啥&#xff1f; 适配器模式在软件开发的江湖里&#xff0c;可以说用途是非常广的。下面几个经典的场景来说明适配器模式的使用。 场景一 场景二 假如你正在开发一款股票市场监测程序&#xff0c; 它会从不同来源下载 XML 格式的股票数据&#xff0c; 然后…

vscode 通过 ssh 远程开发解决 node.js 版本问题

vscode 通过官方提供的 Remote-ssh 插件&#xff0c;让我们可以直接通过 ssh 的连接方式&#xff0c;打开服务器上的代码库&#xff0c;远程进行开发。 我相信&#xff0c;“高端” vscode 玩家一定尝试过该玩法&#xff0c;简直好处多多。 但是用久了&#xff0c;难免会碰到…

软考2018下午第六题改编逻辑(状态模式)

在状态模式中&#xff0c;我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象 package org.example.状态模式.软考航空;/*** author lst* date 2023年12月07日 15:37*/ class FrequentFlyer {CState state;double flyMiles;public FrequentFlyer() {…

【开源】基于JAVA语言的农家乐订餐系统

项目编号&#xff1a; S 043 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S043&#xff0c;文末获取源码。} 项目编号&#xff1a;S043&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户2.2 管理员 三、系统展示四、核…

深圳锐杰金融:用金融力量守护社区健康

深圳市锐杰金融投资有限公司&#xff0c;作为中国经济特区的中流砥柱&#xff0c;近年来以其杰出的金融成绩和坚定的社会责任立场引人注目。然而&#xff0c;这并非一个寻常的金融机构。锐杰金融正在用自己的方式诠释企业责任和慈善精神&#xff0c;通过一系列独特的慈善项目&a…

springboot(ssm高校失物招领平台 校园失物招领系统Java(codeLW)

springboot(ssm高校失物招领平台 校园失物招领系统Java(code&LW) 开发语言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5.7&#xff08;或8.0&am…

Leetcode算法题笔记(1)

目录 哈希1. 两数之和1.1 解法11.1 解法2 2. 字母异位词分组2.1 解法12.2 解法2 3. 最长连续序列3.1 解法 小结 双指针4. 移动零4.1 解法14.2 解法2 5. 盛最多水的容器5.1 解法一5.2 解法二 6. 三数之和6.1 解法16.2 解法2 7. 接雨水7.1 解法1 小结 滑动窗口8. 无重复字符的最长…

自然语言处理基础知识 学习

参考&#xff1a;OpenBMB - 让大模型飞入千家万户 【清华NLP】刘知远团队大模型公开课全网首发&#xff5c;带你从入门到实战_哔哩哔哩_bilibili 图灵测试&#xff1a;imitation Game 模仿游戏 Part of speech tagging 词性标注 Named entity recognition &#xff1a; 命名…

【CMake入门】第三节——构建项目并调用或生成库

系列文章&#xff1a; 【CMake入门】第一节——CMake的安装与简单样例 【CMake入门】第二节——CMake常用指令介绍 构建单文件项目&#xff0c;调用第三方库 # CMake最低版本号要求 cmake_minimum_required(VERSION 2.8)# 项目名称 project(demo)# 设置编译方式 set( CMAKE_B…

[Kubernetes]1.Kubernetes(K8S)介绍,基于腾讯云的K8S环境搭建集群以及裸机搭建K8S集群

一. Kubernetes(K8S)简介 Kubernetes (K8S) 是一个为 容器化应用 提供 集群部署 和 管理 的开源工具,和docker swarm类似,由 Google 开发. Kubernetes 这个名字源于希腊语,意为 “ 舵手 ” 或 “ 飞行员 ” , k8s 这个缩写是因为 k 和 s 之间有八个字符的关系, Google…

Mac电脑统计分析绘图 GraphPad Prism 10 最新 for Mac

GraphPad Prism 10是一款强大的科学数据分析和可视化软件&#xff0c;提供了丰富的统计工具、数据可视化选项和报告生成功能。它使用户能够更轻松地分析和解释实验数据&#xff0c;以支持科学研究和决策。 数据导入和整理&#xff1a;GraphPad Prism 10支持从多种数据源导入数据…

GO设计模式——10、组合模式(结构型)

目录 组合模式&#xff08;Composite Pattern&#xff09; 优缺点 使用场景 代码实现 组合模式&#xff08;Composite Pattern&#xff09; 组合模式&#xff08;Composite Pattern&#xff09;&#xff0c;又叫部分整体模式&#xff0c;是用于把一组相似的对象当作一…

Mac M1芯片安装es,kibana

安装&#xff1a;brew search elasticsearch //查看版本 brew install elastic/tap/elasticsearch-full //安装这个full版本 。。。等待安装 启动&#xff1a;cd /opt/homebrew/bin ./elasticsearch 访问&#xff1a; http://localhost:9200/ 安装&#xff1a;brew sear…

flink源码分析之功能组件(六)-心跳组件

简介 本系列是flink源码分析的第二个系列,上一个《flink源码分析之集群与资源》分析集群与资源,本系列分析功能组件,kubeclient,rpc,心跳,高可用,slotpool,rest,metrics,future。 本文解释心跳组件,心跳组件监听组件间连接活性,超时触发重连,保证连接有效性;断连…

ChatGPT/GPT4科研实践篇: AI绘图+论文写作+编程

1、熟练掌握ChatGPT提示词技巧及各种应用方法&#xff0c;并成为工作中的助手。 2、通过案例掌握ChatGPT撰写、修改论文及工作报告&#xff0c;提供写作能力及优化工作 3、熟练掌握ChatGPT融合相关插件的应用&#xff0c;完成数据分析、编程以及深度学习等相关科研项目。 4、…

Kafka -- 初识

目录 kafka是什么 Topic Partition Broker Cousumer CousumerGroup Offset reblance broker 消息存储 Isr kafka是什么 Kafka 是一个分布式的消息引擎&#xff0c;能够发布和订阅消息流&#xff08;类似于消息队列&#xff09; 以容错的、持久的方式存储消息流 多分区…

MYSQL练题笔记-高级查询和连接-最后一个能进入巴士的人

一、题目相关内容 1&#xff09;相关的表和题目 2&#xff09;帮助理解题目的示例&#xff0c;提供返回结果的格式 二、自己初步的理解 一群人要上巴士但是巴士有体重限制&#xff0c;那只能有限个人才能上去 最后输出这个最后一个上去还不超重的人的名字 我认为首先要缩小…

HarmonyOS 开发基础(二)Image

HarmonyOS 开发基础&#xff08;二&#xff09;Image Entry Component struct Index {// 创建一个状态变量 img 存储 img 网络地址State img: string https://img1.baidu.com/it/u4049022245,514596079&fm253&app138&sizew931&n0&fJPEG&fmtauto?sec1…

创建vue项目:node.js下载安装、配置环境变量,下载安装cnpm,配置npm的目录、镜像,安装vue、搭建vue项目开发环境(保姆级教程一)

今天讲解 Windows 如何创建 vue 项目&#xff0c;搭建 vue 开发环境&#xff0c;这是这个系列的第一章&#xff0c;有什么问题请留言&#xff0c;请点赞收藏&#xff01;&#xff01;&#xff01; 文章目录 一、Vue简单介绍二、开始搭建1、安装node.js环境2、配置npm下载时的默…