编程启示录:图Graph的可视化方案

文章讲述了如何使用Java编程语言生成一个全连通图,包括随机生成图的方法以及结构化打印图数据以便于可视化。作者还提到使用GPT辅助生成代码,处理节点值和边权重的限制条件。

图Graph的可视化方案

在线可视化网站

面向GPT的Prompt

01 随机生成图

(1) Prompt

以下是图Graph、结点Node和边Edge的类定义

class Node{
   
   
    int value;
    int in; //入度
    int out; //出度
    ArrayList<Node> nexts; //邻接点
    ArrayList<Edge> edges; //出边集
}
class Edge{
   
   
    int weight;
    Node from;
    Node to;
}
class Graph{
   
   
    HashMap<Integer,Node> nodes;
    HashSet<Edge> edges;
}

请帮我生成一个随机初始化图的算法,要求结点的权值为不超过100的正整数,

结点的value值为不超过100的正整数,要求图全连通,结点的数量不超过10,边的入度出度均不超过3。

(2) 说明
  • 交给GPT的类定义可以不加构造函数,GPT返回代码的时候会贴心地帮我们加上构造函数
  • GPT会帮我们生成一个以结点数量和结点最大度为入参的生成图函数
  • 我们可以根据需要调整 maxNodesmaxDegree 的值来控制生成的图的规模和度数限制
  • 笔者要求使用java语言实现上述功能时,在根据最大度生成边的部分会产生一个死循环的错误,需要手动修改代码

02 结构化打印图

(1) Prompt

以下是图Graph、结点Node和边Edge的类定义

static class Node {
   
   
    int value;
    int in; // 入度
    int out; // 出度
    ArrayList<Node> nexts; // 邻接点
    ArrayList<Edge> edges; // 出边集
}

static class Edge {
   
   
    int weight;
    Node from;
    Node to;
}

static class Graph {
   
   
    HashMap<Integer, Node> nodes;
    HashSet<Edge> edges;
}

请按照以下格式输出图的数据

0
1
2
3
4
5
0 2 2
0 4 3
0 5
1 4
1 5
2 3
2 4
4 5

该数据格式的含义为:

1.首先,逐行打印每个结点的值,每一行只有一个值的时候表示一个新的结点。

2.其次,打印每一条边,每一行表示一条边。

3.当这一行有两个数据时,该行的第一个数据表示源点,第二个数据表示终点。

4.当这一行有三个数据时,该行的第一个数据表示源点,第二个数据表示终点,第三个数据表示权值。

(2) 说明
  • 调用函数打印成功后,将控制台的数据复制,粘贴到在线网站的Graph Data
  • 就可以看到可视化的图结构了

03 自定义图1

java实现,我想要实现类似如下的功能:


                
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值