使用php生成随机网络图

时间:2015-07-30 16:39:56

标签: php graph

我想知道如何在PHP中生成具有特定数量的节点和边的随机网络图。我不知疲倦地搜索了网络,甚至遇到了this SO question,但答案只针对Javascript。
我也看到了this SO question,但它是针对Java的,我真的不是PHP专家,可以使用PHP重新创建该解决方案。

我稍后会使用GraphViz将图表可视化,如果这样可以使问题更清晰一点。

1 个答案:

答案 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;
?>

相信谁写过这个!