当前位置:首页>python>学Python5️⃣1️⃣ 实战VibeCoding 图论起步(Graph ABC)

学Python5️⃣1️⃣ 实战VibeCoding 图论起步(Graph ABC)

  • 2026-10-11 05:42:08
学Python5️⃣1️⃣ 实战VibeCoding 图论起步(Graph ABC)
学Python5️⃣1️⃣ 实战VibeCoding 图论起步(Graph ABC)
作者 小号🎺

上一集,介绍了小号想借助VibeCoding,学习一下线性代数和图论的内容。小号向AI讨教。AI也很知趣,一来二去就进入了正题:以可视化的方式展现线性代数(行列式、矩阵)与图(graph)之间的关系,并且给出了Python代码。(学Python5️⃣0️⃣ 实战VibeCoding+人工debug)

上一集还说到,AI给出的代码似乎有个小bug,小号依据自己的理解,做了一些修改,然后代码就跑通了,而且得到了预期的结果。

代码跑通了,心里很有些小激动。但是小号也知道,说代码“跑通了”,其实只是“跑起来了”。就是说,看似“跑通”了,但结果不一定正确。虽然“可视化”的目的看似已经实现了,但其中一定还有些不足之处。

还记得小号曾经说过,在代码调试中遇到错误,一般有以下几步方面可以逐项尝试:

① 先尝试自己独立分析一下。
② 提交错误信息给AI(指给出该代码的AI)
③ 将该份代码及相关的背景信息提交给另一个AI,并要求检查其中的错误。
④ 其他方法。
以上几步,并不互相排斥,也不是必须按照这个顺序。可以根据情况灵活选择。
这一次,小号选择第③种方法:找另一个AI。
这次,小号找了DeepSeek。
与DeepSeek对话截图
与DeepSeek对话截图(与手机版同步)
由于有了之前的经验,这一回小号谈起同一个话题也可以说更加轻车熟路,游刃有余了。[手动狗头]
DeepSeek(快速模式)也是很轻松的就get到话题的核心,一方面很委婉的指出了小号的话语中的一些(小小的)用词错误,一方面也干净利落、大大方方的解答问题,并给出了新的代码。
import matplotlibmatplotlib.use('TkAgg')   # 强制使用 Tkinter 图形界面后端import numpy as npimport networkx as nximport matplotlib.pyplot as plt# 中文字体设置 - 放在所有绘图代码之前plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'SimSun']plt.rcParams['axes.unicode_minus'] = FalseA = np.array([    [0.5, 1.0, 0.0],    [0.2, 0.0, 0.8],    [0.0, 1.8, 0.0]])# 1. 创建有向图G = nx.DiGraph()# 2. 添加节点(3个)G.add_nodes_from([0, 1, 2])# 3. 遍历矩阵添加加权边for i in range(A.shape[0]):    for j in range(A.shape[1]):        if A[i][j] != 0:            G.add_edge(i, j, weight=A[i][j])# 4. 打印所有边看看for u, v, data in G.edges(data=True):    print(f"{u} -> {v} (权重: {data['weight']})")# 5. 绘制图形(可选)fig, ax = plt.subplots(figsize=(6, 6))pos = nx.spring_layout(G)  # 布局labels = nx.get_edge_attributes(G, 'weight')nx.draw(G, pos, with_labels=True, node_color='lightblue',        node_size=500, arrowsize=20)nx.draw_networkx_edge_labels(G, pos, edge_labels=labels)#plt.title("Visualization of 3x3 Adjacency Matrix as a Directed Graph")plt.title("3节点有向图\n3x3 有向图 邻接矩阵 可视化")plt.show()
代码也是一点不含糊,一次跑通,并正常显示结果,以可视化的形式显示小号给出的3x3邻接矩阵所对应的有向图。代码运行截图如下:
新代码运行及结果
大家如果想看看小号和DeepSeek的对话的详细过程,可以拿上面小号的问题再重新亲自向DeepSeek提问。为方便操作,小号把那个问题的文字版放在这里。
A = np.array([   [0.5, 1.0, 0.0],   [0.2, 0.0, 0.8],  [0.0, 1.8, 0.0]])如果有这样一个3×3行列式,想把它转化成图(graph)。应该怎样做?

好了,今天就分享到这里吧,祝大家周末愉快!

VibeCoding的话题有可能比较费脑子,大家也可以找一找前后两份代码的差异。(提示:重点在19~30行之间)欢迎大家到评论区交流。

备注:小号最近把自己用的PyCharm升级到了2026最新版(免费),操作更方便了,当然也有些小变化。小号也准备写一篇升级安装PyCharm2026最新版的实操,欢迎大家关注。

#Python#学Python#大白#小号#大白小号学Python#原创#分享#实战#图论#线性代数#矩阵#graph#VibeCoding

最新文章

随机文章