マイのMathematica(バージョン10.4および新しい11の両方)は、次のループでクラッシュのためにクラッシュ:Mathematicaはループ
count = 0;
findConnectedNodes[start_] := Module[{positions, i},
count++;
positions = adjmatrix[[start]] // ArrayRules // Keys;
positions = positions[[1 ;; -2]] // Flatten;
For[i = 1, i <= Length[positions], i++,
If[Not[MemberQ[connectedNodes, positions[[i]]]],
findConnectedNodes[positions[[i]]]];
AppendTo[connectedNodes, positions[[i]]];
connectedNodes = connectedNodes // DeleteDuplicates;
]
];
findConnectedAddresses[1];
変数adjmatrixはSparseArrayであり、このコードは、隣接して接続されたすべてのノードを見つけることですマトリックス。
興味深いことに、このコードは約14000個の "カウント"(変数数)まで非常によく機能し、その後Mathematicaはクラッシュします。
$ RecursionLimitがInfinityに設定されています。
ありがとうございました。また、コードに関する他の提案も高く評価されています。
私のマシンで問題を再現することはできません。コードを編集して簡単な例の入力と出力を表示してください。ここには疎な配列があります: 'adjmatrix = SparseArray [{{i_、i_} - > 12、{i_、j_} /; @Michael Gwerder –
文書で「実行」よりも優れたパフォーマンスを持つ「Do」を検索することができます。 'Table'と' ParallelTable' –
あなたは 'connectedNodes'に値を割り当てていません@Michael Gwerder –