数日前、巨大なグラフ (ほぼ 100 万の頂点と 600 万のエッジ) でKosaraju のアルゴリズムを実行しているときに問題が発生しました。問題は、アルゴリズムのDFS (Depth First Search)部分にありました。これは再帰的です -スタック レベルが深すぎます。アルゴリズムを Ruby で実装しました。使用した Ruby のバージョンは 1.9.3 でした。
スタック サイズを確認するために、簡単な手順を実行することにしました。
def r n
p n
r n+1
end
r 1
終了前のスタックサイズを示します。使った
ulimit -a
スタックサイズを確認するコマンドと
ulimit -s 32768 # Seems like this is the maximum stack size for mac OS
ulimit -s unlimited # => Invalid argument error
スタックサイズを変更します。スタックサイズを変更した後でも、r-procedure は同じ番号 - 8193 を示しました。Ruby を 1.8.7 に変更した後、最後の番号は 19177 になりました。
最終的に、Ubuntu を使用している友人を見つけました。スタック サイズは無制限です。Kosaraju のアルゴリズムを正常に実行しました。
どうすればMacでできますか?