【发布时间】:2015-07-30 16:39:55
【问题描述】:
我想知道如何在 PHP 中生成具有特定数量的节点和边的随机网络图。我不知疲倦地搜索了网络,甚至遇到了this SO question,但答案仅适用于 Javascript。
我还看到了this SO question,但它是针对 Java 的,我真的不是使用 PHP 重新创建该解决方案的 PHP 专家。
我稍后会使用GraphViz 可视化图表,如果这样可以让问题更清楚一点。
【问题讨论】:
我想知道如何在 PHP 中生成具有特定数量的节点和边的随机网络图。我不知疲倦地搜索了网络,甚至遇到了this SO question,但答案仅适用于 Javascript。
我还看到了this SO question,但它是针对 Java 的,我真的不是使用 PHP 重新创建该解决方案的 PHP 专家。
我稍后会使用GraphViz 可视化图表,如果这样可以让问题更清楚一点。
【问题讨论】:
好的,所以我在某处看到了这个解决方案,但无法找到链接
这是代码;
<?php
$maxNode = 100;
$maxEdge = 500;
//generate random edges
$e =[];
for ($n=1; $n <= $maxEdge; $n++) {
$e[] = [rand(1, $maxNode), rand(1, $maxNode)];
}
//remove duplicates and self-loops
$dup = [];
foreach ($e as $i => $v) {
if ($v[0] == $v[1]) {
unset($e[$i]);
}
$d = $v[0] .':' .$v[1];
if (isset($dup[$d])) {
unset($e[$i]);
}
else{
$dup[$d] = true;
}
}
$graph = <<<EOF
digraph randomGraph {
graph [ dpi = 300 ];
size ="5,8"
node [shape = circle];
EOF;
foreach ($e as $edge) {
list($from, $to) = $edge;
$graph .= "$from -> $to \n";
}
echo $graph;
?>
感谢写这篇文章的人!
【讨论】: