isisomorphic
确定两个图是否同构
说明
示例
比较图
创建并绘制两个有向图,然后确定它们是否同构。
G1 = digraph([1 1 1 2 3 4],[2 3 4 4 4 1]); G2 = digraph([3 3 3 2 1 4],[1 4 2 3 2 2]); subplot(1,2,1) plot(G1) subplot(1,2,2) plot(G2)
isisomorphic(G1,G2)
ans = logical
1
比较具有不同标签和布局的图
创建并绘制两个图形 G1
和 G2
。
G1 = graph([1 1 1 2 2 3 3 4 5 5 7 7],[2 4 5 3 6 4 7 8 6 8 6 8]); plot(G1,'XData',[1 4 4 1 2 3 3 2],'YData',[4 4 1 1 3 3 2 2])
G2 = graph({'a' 'a' 'a' 'b' 'b' 'b' 'c' 'c' 'c' 'd' 'd' 'd'}, ... {'g' 'h' 'i' 'g' 'h' 'j' 'g' 'i' 'j' 'h' 'i' 'j'}); plot(G2,'XData',[1 2 2 2 1 2 1 1],'YData',[4 4 3 2 3 1 2 1])
确定 G1
和 G2
之间是否存在同构。结果表明,两个图尽管具有不同的标签和布局,但具有相同的结构。
tf = isisomorphic(G1,G2)
tf = logical
1
在同构比较中保留节点属性
通过两种不同的比较,确定两个图之间是否存在同构关系。一种比较保留节点属性,另一种比较忽略节点属性。
创建两个类似的图。在每个图中添加节点属性 Color
。
G1 = graph({'d' 'e' 'f'},{'e' 'f' 'd'}); G1.Nodes.Color = {'red' 'red' 'blue'}'; G2 = graph({'a' 'b' 'c'},{'b' 'c' 'a'}); G2.Nodes.Color = {'blue' 'blue' 'red'}';
在同一个图窗中并排绘制两个图。将 Color = 'red'
的节点标为红色。
subplot(1,2,1) p1 = plot(G1); highlight(p1,{'d' 'e'},'NodeColor','r') subplot(1,2,2) p2 = plot(G2); highlight(p2,'c','NodeColor','r')
确定两个图是否同构,并忽略 Color
属性。
tf = isisomorphic(G1,G2)
tf = logical
1
确定两个图是否同构,并在比较中保留 Color
属性的值。在这种情况下,由于每个图的 Color
属性包含不同数量的 'red'
和 'blue'
值,所以二者之间不存在同构关系。
tf = isisomorphic(G1,G2,'NodeVariables','Color')
tf = logical
0
输入参数
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: tf = isisomorphic(G1,G2,'NodeVariables',{'Var1' 'Var2'})
EdgeVariables
— 要保留的边变量
字符向量 | 字符串标量 | 字符向量元胞数组 | 字符串数组
要保留的边变量,指定为逗号分隔的对组,其中包含 'EdgeVariables'
和一个字符向量、字符串标量、字符向量元胞数组或字符串数组。使用此选项指定同时位于 G1.Edges
和 G2.Edges
中的一个或多个边变量。同构比较必须保留指定的边变量才有效。对于相同的两个节点之间具有多条边的多重图来说,同一个节点对的边变量的排序不受影响。
数据类型: char
| string
| cell
NodeVariables
— 要保留的节点变量
字符向量 | 字符串标量 | 字符向量元胞数组 | 字符串数组
要保留的节点变量,指定为逗号分隔的对组,其中包含 'NodeVariables'
和一个字符向量、字符串标量、字符向量元胞数组或字符串数组。使用此选项指定同时位于 G1.Nodes
和 G2.Nodes
中的一个或多个节点变量。同构比较必须保留指定的节点变量才有效。
数据类型: char
| string
| cell
详细信息
图的同构
两个图 G1
和 G2
,如果存在一种节点置换 P
,使得 reordernodes(G2,P)
与 G1
具有相同的结构,则说明二者是同构图。
同构的两个图具有类似的结构。例如,如果一个图包含一个圆,则与其同构的所有图也都会包含一个圆。
扩展功能
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
版本历史记录
在 R2016b 中推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)