From bc58ea6ee39fb7c62bfb8601af32dc665918165d Mon Sep 17 00:00:00 2001 From: STay HARD Date: Sun, 24 May 2026 15:55:03 +0530 Subject: [PATCH] Implement attempts limit for edge generation Added attempts limit to edge generation to prevent infinite loops. --- scripts/generate-large-graph.mjs | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/scripts/generate-large-graph.mjs b/scripts/generate-large-graph.mjs index ca4c9a13..6a65821f 100644 --- a/scripts/generate-large-graph.mjs +++ b/scripts/generate-large-graph.mjs @@ -62,16 +62,25 @@ function generateEdges(nodes, edgeCount) { const seen = new Set(); const n = nodes.length; - for (let i = 0; i < edgeCount; i++) { - let src, tgt; - // Forward-only edges to avoid cycles (dagre blows the stack on large cyclic graphs) - do { - src = Math.floor(Math.random() * (n - 1)); - const offset = Math.floor(Math.random() * Math.min(50, n - src - 1)) + 1; - tgt = src + offset; - } while (tgt >= n || src === tgt || seen.has(`${src}-${tgt}`)); +for (let i = 0; i < edgeCount; i++) { + let src, tgt; + let attempts = 0; - seen.add(`${src}-${tgt}`); + // Forward-only edges to avoid cycles + do { + src = Math.floor(Math.random() * (n - 1)); + const offset = Math.floor(Math.random() * Math.min(50, n - src - 1)) + 1; + tgt = src + offset; + attempts++; + } while ( + attempts < 20 && + (tgt >= n || src === tgt || seen.has(`${src}-${tgt}`)) + ); + + if (attempts >= 20) continue; + + seen.add(`${src}-${tgt}`); + edges.push({ source: nodes[src].id, target: nodes[tgt].id,