我想知道如何在PHP中生成具有特定数量的节点和边的随机网络图。我不知疲倦地搜索了网络,甚至遇到了this SO question,但答案只针对Javascript。
我也看到了this SO question,但它是针对Java的,我真的不是PHP专家,可以使用PHP重新创建该解决方案。
我稍后会使用GraphViz将图表可视化,如果这样可以使问题更清晰一点。
答案 0 :(得分:0)
好的,所以我在某个地方看到了这个解决方案,但无法将手放在链接上
这是代码;
<?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;
?>
相信谁写过这个!