You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言中绘制给定邻接矩阵的哈密顿图?

在R中绘制含哈密顿环的无向图

我们可以借助igraph包完成这个网络图的绘制任务,以下是具体操作步骤:

1. 安装并加载igraph包

如果还未安装该包,先执行安装命令:

install.packages("igraph")

加载包:

library(igraph)

2. 基于邻接矩阵创建图对象

使用你提供的邻接矩阵生成无向图,并为顶点设置名称:

# 定义邻接矩阵
Ham = matrix(c(0,1,0,1,1,0,0,0,
             1,0,1,0,0,1,0,0,
             0,1,0,1,0,0,0,1,
             1,0,1,0,0,0,1,0,
             1,0,0,0,0,1,1,0,
             0,1,0,0,1,0,0,1,
             0,0,0,1,1,0,0,1,
             0,0,1,0,0,1,1,0),8,8)
# 设置顶点名称
rownames(Ham) <- colnames(Ham) <- c("A","B","C","D","E","F","G","H")
# 转换为无向图对象
g <- graph_from_adjacency_matrix(Ham, mode = "undirected", weighted = NULL)

3. 标记哈密顿环的边

根据图中红色哈密顿环的顶点顺序(A-B-F-H-C-D-G-E-A),为对应边设置红色,其余边为黑色:

# 定义哈密顿环的顶点顺序
hamiltonian_vertices <- c("A","B","F","H","C","D","G","E","A")
# 生成环对应的边列表
hamiltonian_edges <- apply(matrix(hamiltonian_vertices, ncol=2, byrow=TRUE), 1, function(x) E(g)[x[1] %--% x[2]])
# 设置边颜色
E(g)$color <- ifelse(E(g) %in% hamiltonian_edges, "red", "black")

4. 绘制图形

使用圆形布局让环结构更直观,同时调整顶点样式提升可读性:

# 采用圆形布局
layout <- layout_in_circle(g)
# 绘制图形
plot(g, 
     layout = layout,
     vertex.label = V(g)$name,
     vertex.size = 25,
     vertex.color = "white",
     vertex.frame.color = "black",
     edge.width = 2)

执行上述代码后,就能得到和示例图一致的网络图,其中红色线条即为指定的哈密顿环。

内容的提问来源于stack exchange,提问作者Homer Jay Simpson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 14:30:45