Focus-aware hop attenuation is a degree-of-interest graph rendering heuristic that replaces integer breadth-first search steps with a continuous effective hop distance [Fur86] [HMM00]. Implemented in graph-payload.ts, it bounds ego-network expansion via a 16-node focus budget, logarithmic hub penalties, and parametric power-decay curves.
| Highlighting Strategy | Distance Metric | Scale-Free Hub Behavior | Visual Retention Profile |
|---|---|---|---|
| 1-Hop Binary Highlighting | Discrete | Collapses on popular tag hubs; hides indirect semantic bridges | Binary step function (full opacity vs. uniform dimming) |
| Unweighted -Hop BFS | Integer shortest path | Small-world explosion floods of the graph at [BA99] | Linear or uniform shell decay without density awareness |
Focus-Aware Effective Distance (graph-payload.ts) | Continuous with focusBudgetNodes: 16 | Logarithmic hub penalty () pushes hub children outward | Coupled power-decay curves across scale, color, and edges |
The contrast across these three strategies illustrates why density-aware distance modulation is mandatory for interactive portfolio graphs.
Why Does Unweighted Breadth-First Search Fail in Hub-Heavy Knowledge Graphs?
Unweighted breadth-first search fails in bipartite content-tag knowledge graphs because scale-free tag hubs create a small-world fan-out explosion within two hops [BA99]. When an interactive viewer highlights all nodes at integer distance equally, a single high-degree hub illuminates almost the entire graph and destroys visual figure-ground separation [HMM00].
In our portfolio graph, articles, publications, and courses connect through shared taxonomic tags. While specific engineering tags connect 2–4 artifacts, foundational hubs like #Software-Architecture or #Artificial-Intelligence link dozens of nodes. Under naive -hop traversal, stepping from a post into a hub at immediately pulls every sibling artifact into shell at identical visual salience.
To preserve cognitive ergonomics without severing multi-hop exploration, we adapt Furnas’s Generalized Fisheye Degree-of-Interest () decomposition [Fur86]. Rather than treating topological distance as an unweighted integer, computeHopDistances stretches effective distance whenever a path traverses a crowded shell or high-degree hub.
How Do Focus Budgets and Hub Penalties Shape Effective Hop Distance?
In computeHopDistances, effective hop distance combines three deterministic regulators: a 16-node cumulative focus budget (focusBudgetNodes: 16), a logarithmic step penalty for parent hubs exceeding degree 4 (hubDegreeBaseline: 4), and a shared-parent multi-path discount (/ sharedParents) that preserves tightly coupled semantic clusters.
First, if direct 1-hop neighbors exceed directHubSoftThreshold: 8, shell 1 receives a crowding offset . For outer shells , each candidate parent incurs a logarithmic degree penalty above baseline 4, while multiple shared parents divide the excess penalty and budgetDist enforces the 16-node focus horizon:
const stepCost =
1 +
HOP_ATTENUATION_CONFIG.hubPenaltyWeight *
Math.log2(
Math.max(HOP_ATTENUATION_CONFIG.hubDegreeBaseline, degU) /
HOP_ATTENUATION_CONFIG.hubDegreeBaseline
);
const candidateCost = (minPathCost.get(u) ?? (d - 1)) + stepCost;
if (candidateCost < bestParentCost) {
bestParentCost = candidateCost;
}
// After evaluating all parent neighbors u in shell d - 1:
const parentCount = Math.max(1, sharedParents);
const resolvedBestCost = Number.isFinite(bestParentCost) ? bestParentCost : d;
const hubAdjustedDist = d + Math.max(0, resolvedBestCost - d) / parentCount;
const dEff = Math.max(hubAdjustedDist, budgetDist);Dividing the hub penalty excess by parentCount rewards triangulation: an artifact sharing three tags with the focused node remains visually close even if one of those tags is a broad hub.
Coupling Node Scale and Color Retention via Parametric Power Curves
Once computeHopDistances assigns an effective distance to every reachable node, computeHopCurve maps onto continuous visual channels using a bounded power-decay law that smoothly couples node scale, foreground color retention, and edge stroke width across both light and dark themes.
In HOP_ATTENUATION_CONFIG, each visual channel is parameterized with a tailored range and concavity exponent over :
- Node Scale (
getAttenuatedNodeScale): Decays from at the focused node () down to at with exponent . - Node Color Retention (
getAttenuatedNodeColor): Interpolates foreground hex color against the active light/dark canvas background viablendHexColorfrom down to (). - Edge Width & Retention (
getAttenuatedEdgeStyle): Scales stroke width from to () and color retention from to () using shifted hop distance . - Depth-Ordered Z-Indexing (
getNodeHopZIndex): Assigns discrete layer priorities () so foreground ego-neighborhoods always render above attenuated background shells during cosine-eased transitions.
Together, these coupled power curves and discrete z-index layers guarantee that hovering or dragging any node produces a clear, flicker-free ego-neighborhood spotlight across every visualization engine—building upon our May 2026 Interactive Graph Visualizations Update and 2D Elliptical Bin-Packing Tag Cloud Layout Engine, while laying the mathematical foundation for Five Graph Engines Under One Interaction Physics Contract, Voronoi Proximity Picking and 8-Way Tooltip Placement, and live exploration in our Cytoscape.js and Sigma.js WebGL sandboxes.
References
- [Fur86]George W. Furnas (1986). Generalized Fisheye Views. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems (CHI '86), pp. 16--23. DOI: 10.1145/22627.22342.
- [BA99]Albert-László Barabási and Réka Albert (1999). Emergence of Scaling in Random Networks. Science, 286(5439), pp. 509--512. DOI: 10.1126/science.286.5439.509.
- [HMM00]Ivan Herman, Guy Melançon and M. Scott Marshall (2000). Graph Visualization and Navigation in Information Visualization: A Survey. IEEE Transactions on Visualization and Computer Graphics, 6(1), pp. 24--43. DOI: 10.1109/2945.841119.