在模块内使用 For 循环迭代排列的问题

Problem using For loop inside module to iterate over permutations

我正在尝试编写一些代码,通过创建所有可能的顶点排列并使用每个顶点绘制子图,从随机图中提取给定大小的所有不同子图。但是,当我尝试使用 For 循环执行此操作时,它只会绘制第一个子图。我对Mathematica不是很熟悉,所以我不确定问题出在哪里。

创建随机图和排列列表的各个组件有效,只有在循环中放在一起时才会失败。

模块创建具有n个点和边概率p的随机图

G[n_, p_] := Module[{A, M}, A = Table[If[i < j, If[RandomReal[] < p, 1, 0], 0], {i, 1, n}, {j, 1, n}];
  M = A + Transpose[A];
  Return[AdjacencyGraph[M]];]

求G(n,p)的所有d个顶点的子图的函数


Subcount[n_, p_, d_] := 
 Module[{i, ex, per, sub1}, ex = G[n, p]; per = Permutations[Range[n], {d}];
  For[i = 1, i <= Length[per] , i++, Print[i]; 
   sub1 = HighlightGraph[ex, Subgraph[ex, Part[per, i]]]; 
   Return[sub1]];]

测试时 n =5,p = 0.4,d = 3

Subcount[5, 0.4, 3]

https://imgur.com/10jv51R 给出通过示例测试看到的输出。

试试这个

Subcount[n_, p_, d_] := Module[{i, ex, per, sub1},
  ex = G[n, p];
  per = Permutations[Range[n], {d}];
  Table[{i,{HighlightGraph[ex, Subgraph[ex, Part[per, i]]]}},{i,Length[per]}]];
Subcount[5, 0.4, 3]

应该会显示所有 60 个图表。