0

I'd like to know how to generate random network graphs with a specific number of nodes and edges in PHP. I've scoured the web tirelessly and even came across this SO question but the answers were for Javascript only.
I also saw this SO question but it was for Java and I'm really not a PHP expert to recreate that solution using PHP.

I'd later visualize the graph using GraphViz if that makes the question a little bit clearer.

Community
  • 1
  • 1
Ifeoluwa
  • 114
  • 8

1 Answers1

0

Okay, so I saw this solution somewhere but can't lay my hands on the link

This is the code;

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

Credit to whoever wrote this!

Ifeoluwa
  • 114
  • 8