blob: d2a8a47c5a33edc057497b03fc803de1f44a2bcb [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Kronecker graph generator parameters:
a = 0.30;
b = 0.25;
c = 0.25;
d = 1-(a+b+c);
function randomEdge ( imin: int, imax: int, jmin: int, jmax: int ): (int,int) {
if (imin = imax and jmin = jmax)
then (imin,jmin)
else let n = random(1000)
in if (n as float <= 1000*a)
then randomEdge(imin,(imin+imax)/2,jmin,(jmin+jmax)/2)
else if (n as float <= 1000*(a+b))
then randomEdge((imin+imax)/2,imax,jmin,(jmin+jmax)/2)
else if (n as float <= 1000*(a+b+c))
then randomEdge(imin,(imin+imax)/2,(jmin+jmax)/2,jmax)
else randomEdge((imin+imax)/2,imax,(jmin+jmax)/2,jmax)
};
store "tmp/graph.bin"
from select distinct randomEdge(0,toInt(args[0]),0,toInt(args[0]))
from i in 1...(toLong(args[1]));