#! /bin/csh -fe # Two-level nested structure, each level with sqrt(NE) edges. set usage = "$0 NV AVGD SEED STAG FLAGS" # AVGD is the average outdegree (or indegree) echo "$0 $*" set NV = "$1"; shift set avgd = "$1"; shift; set seed = "$1"; shift; set tag = "$1"; shift; set flgs = ( $* ) # Equalize complexity of block and skeleton: @ T = ${NV} * ${avgd} set NEA = `apsqrt ${T}` @ NEP = ${T} / ${NEA} if ( ${NEA} < 1 ) then echo "$0"': too few skeleton edges' exit 1 endif if ( ${NEP} < 2 ) then echo "$0"': too few block edges' exit 1 endif @ NE = ${NEA} * ${NEP} echo "edges: block = ${NEP} skeleton = ${NEA} total = ${NE}" @ NVP = ( ( ${NV} + ${NEA} ) + ${NEA} ) / ( 1 + ${NEA} ) @ NVA = ${NV} - ( ${NEA} * ( ${NVP} - 2 ) ) echo "verts: block = ${NVP} skeleton = ${NVA} total = ${NV}" if ( ${NVA} < 2 ) then echo "$0"': too few skeleton vertices' exit 1 endif if ( ${NVP} < 2 ) then echo "$0"': too few block vertices' exit 1 endif @ T = ${NVP} - 2 set WP = `apsqrt ${T}` if ( ${WP} == 0 ) set WP = 1 @ LP = ( ${T} / ${WP} ) + 1 @ T = ${NEP} / ${WP} if ( ${LP} > ${T} ) set LP = ${T} @ T = ( 10 * ${NEP} ) / ${NVP} echo "block: NV = ${NVP} NE = ${NEP} W = ${WP} L = ${LP} avgd = ${T}" @ T = ${NVA} - 2 set WA = `apsqrt ${T}` @ LA = ( ${T} / ${WA} ) + 1 @ T = ( 10 * ${NEA} ) / ${NVA} echo "skelt: NV = ${NVA} NE = ${NEA} W = ${WA} L = ${LA} avgd = ${T}" set name = "Squb-${NV}-${NE}-${seed}${tag}.jcs" set echo MaxFlowProbs \ -seed ${seed} ${flgs} \ -subst 1.00 T -by Rete -NV ${NVA} -NE ${NEA} -W ${WA} -L ${LA} \ -subst 1.00 Tf -by Rete -NV ${NVP} -NE ${NEP} -W ${WP} -L ${LP} \ > ${name} check-reps ${name}