主要内容

同构

计算两个图形之间的同构

描述

例子

P=同构(G1, G2)计算一个图的同构等价关系图G1G2,如果一个人的存在。如果不存在同构,那么P是一个空数组。

例子

P=同构(___,名称,值)与一个或多个名称-值对参数指定附加选项。例如,您可以指定“NodeVariables”和一个节点列表变量表明同构必须保持这些变量是有效的。

(P,edgeperm)=同构(___)此外返回一个向量的边缘排列,edgeperm。这个输出使您能够保持边缘变量在处理多重图。

例子

全部折叠

创建和阴谋的两个有向图,然后计算它们之间的同构关系。

G1 =有向图([1 1 1 2 3 4],[1 2 3 4 4 4]);G2 =有向图([3 3 3 2 1 4],[1 4 2 3 2 2]);次要情节(1、2、1)情节(G1)次要情节(1、2、2)情节(G2)

图包含2轴对象。坐标轴对象1包含一个graphplot类型的对象。坐标轴对象2包含一个graphplot类型的对象。

p =同构(G1, G2)
p =4×13 1 4 2

结果表明,reordernodes (G2, p)有相同的结构G1

创建和情节两个图,G1G2

G1 =图([1 1 1 2 3 2 3 4 5 5 7 7]、[4 2 3 4 5 6 7 8 6 8 6 8]);情节(G1,“XData”,[1 4 4 1 2 3 3 2],“YData”,(4 4 1 1 3 3 2 2])

图包含一个坐标轴对象。坐标轴graphplot类型的对象包含一个对象。

G2 =图({“一个”“一个”“一个”“b”“b”“b”“c”“c”“c”' d '' d '' d '},{‘g’“h”“我”‘g’“h”“j”‘g’“我”“j”“h”“我”“j”});情节(G2,“XData”,(1 2 2 2 1 2 1 1),“YData”,(4 4 3 2 3 1 2 1))

图包含一个坐标轴对象。坐标轴graphplot类型的对象包含一个对象。

计算图形之间的同构关系,如果一个人的存在。结果表明,可以排列图节点代表相同的图尽管他们不同的标签和布局。

p =同构(G1, G2)
p =8×11 2 3 4 5 6 7 8

计算两个不同的两个图形之间的同构关系。保存节点属性的关系之一,而另一个忽略了它。

创建两个类似的图。添加一个节点属性颜色每一个图。

G1 =图({' d '“e”“f”},{“e”“f”' d '});G1.Nodes。颜色= {“蓝”“红色”“红色”}';G2 =图({“一个”“b”“c”},{“b”“c”“一个”});G2.Nodes。颜色= {“红色”“红色”“蓝”}';

画出图并排在同一图。颜色的红色节点颜色= '红色'

次要情节(1、2、1)p1 =情节(G1);突出(p1, {“e”“f”},“NodeColor”,“r”次要情节(1、2、2)p2 =情节(G2);突出(p2, {“一个”“b”},“NodeColor”,“r”)

图包含2轴对象。坐标轴对象1包含一个graphplot类型的对象。坐标轴对象2包含一个graphplot类型的对象。

计算之间的同构图形,忽略了颜色财产。

p =同构(G1, G2)
p =3×11 2 3

再次计算同构,但这一次保存的值颜色属性的比较。同构返回一个不同的排列,保留了颜色财产。

p =同构(G1, G2,“NodeVariables”,“颜色”)
p =3×13 1 2

视图中的节点G1G2同构匹配在一起。

[G1.Nodes。的名字,G2.Nodes。的名字(p)]
ans =3 x2细胞{' d '} {' c '} {“e”} {a} {' f '} {b}

输入参数

全部折叠

输入图,指定为单独的参数有向图对象。使用创建一个无向图有向图创建一个有向图。

G1G2必须两个对象或两有向图对象。

例子:G1 =图(1、2)

例子:G1 =有向图(2 [1],[2 3])

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:P =同构(G1、G2 NodeVariables, {‘Var1’‘Var2})

边缘变量保存,指定为逗号分隔组成的“EdgeVariables”和一个特征向量,字符串标量,单元阵列的特征向量,或字符串数组。使用这个选项来指定一个或多个变量,在边缘G1.EdgesG2.Edges。同构必须保持指定的边缘变量是有效的。

如果G是油印,那么您可以指定第二个输出edgeperms使重新排序变量边缘。

数据类型:字符|字符串|细胞

节点变量来保存,指定为逗号分隔组成的“NodeVariables”和一个特征向量,字符串标量,单元阵列的特征向量,或字符串数组。使用这个选项来指定一个或多个节点在两个变量G1.NodesG2.Nodes。同构必须保留指定节点变量是有效的。

数据类型:字符|字符串|细胞

输出参数

全部折叠

同构排列向量,作为一个列向量返回当一个同构的存在或空数组[]当一个同构并不存在。如果P不是空的,然后呢reordernodes (G2, P)有相同的结构G1

边缘排列,作为一个列向量返回。在处理多重图时,边缘排列向量使您能够保持边缘变量指定的“EdgeVariables”名称-值对。使用这些命令来重新排序重复边缘的边缘变量:

[p, edgeperm] =同构(g1、g2 EdgeVariables, edgevars);g2perm = reordernodes (g2, p);g2perm。(:,2:结束)= g2perm边缘。边(edgeperm, 2:结束);

更多关于

全部折叠

图的同构

两个图,G1G2同构,如果存在一个节点的排列P这样reordernodes (G2, P)有相同的结构G1

两个同构的图也有类似的结构。例如,如果一个图包含一个周期,那么所有图同构,图也包含一个周期。

版本历史

介绍了R2016b