Rotor-Router Neighborhood Sampler
Implementation & benchmark of arXiv:2608.23545 — Eulerian walkers on $\mathbb{Z}^2$ have range exponent $2/3$
Source paper: Eulerian walkers on $\mathbb{Z}^2$ have range exponent $2/3$ arXiv:2608.23545 ⓘ · analyzed Aug 29, 2026
AI-generated research hypothesis, automatically tested. Not peer-reviewed.
Idea description
Replace independently sampled random-walk paths used for GNN neighbor or subgraph sampling by persistent rotor walks on the training graph. Each node stores a pointer into a fixed cyclic ordering of its outgoing neighbors; every visit advances the pointer and selects the next neighbor, producing deterministic coverage with no repeated random choices. Use several short rotor trajectories per seed and periodically reinitialize only the rotors in an encountered subgraph.
Formulas
Mathematical statement
The paper defines a rotor configuration rho_t(v), where v is a graph vertex and rho_t(v) is its currently selected outgoing directed edge, together with a cyclic rotor mechanism pi_v. The local update is rho_{t+1}(v)=pi_v(rho_t(v)) when v=X_t and rho_{t+1}(v)=rho_t(v) otherwise; the next position satisfies rho_{t+1}(X_t)=(X_t to X_{t+1}). The visited range is R_t={X_0,...,X_t}. For circuit-based expansion, the paper defines Phi(S) as the union of S and all vertices actuated during a complete boundary routing, and proves A_{n+1}=Phi(A_n) for successive circuit ranges A_n. Here G=(V,E) is the training graph, X_t is a sampled walk position, pi_v is a cyclic permutation of the d_v outgoing neighbors, and S is a sampled seed set. The key usable property is bounded local discrepancy: after k visits to a vertex v, each outgoing edge is selected either floor(k/d_v) or ceil(k/d_v) times, unlike independent random-walk sampling whose count variance is binomial. The paper's stronger limit-shape result is specific to i.i.d. rotors on Z^2 and should not be assumed on arbitrary datasets.
Implementation notes
Integrate this at the neighborhood-sampling layer before message passing, not inside the GNN weights. Store one integer rotor pointer q_v in {0,...,d_v-1} for every graph vertex and a fixed neighbor array N_v; initialize q_v randomly once, or deterministically from a hash of the vertex ID. For each minibatch seed s, run K short trajectories of length L: set x=s, add x to the sampled-node set, read neighbor u=N_x[q_x], update q_x=(q_x+1) mod d_x, and set x=u. The line updating q_x is the paper's rho_{t+1}(X_t)=pi_{X_t}(rho_t(X_t)) rule. Deduplicate visited nodes, gather their induced edges or one-hop message-passing neighborhoods, and feed the resulting subgraph to the baseline GraphSAGE, GAT, or GCN. For directed graphs, use outgoing neighbors; for undirected graphs, store both orientations. Compare against length-L uniform random walks with the same number of sampled edges and against standard neighbor sampling. Measure per-node and per-edge visitation-count variance, duplicate rate, GPU data-loading time, gradient cosine similarity to a full-batch gradient, training loss at equal sampled edges, and validation accuracy. The mathematical discrepancy bound is computed exactly from visit counts; coverage, gradient bias, and accuracy must be measured empirically. Start with Cora or Reddit on a two-layer GraphSAGE, using 1,000--10,000 seeds and K=2--8, L=8--32. Success means lower duplicate rate and gradient variance, with equal or better validation accuracy and no more than 5% sampler overhead. Also test a reset ablation: reset rotors after each minibatch versus persistent rotors, since persistence is the proposed source of coverage improvement.
Verification
This idea has not been verified yet.
Verification happens in two stages: Stage 1 — a mechanism check on a toy system confirms the claimed mathematical phenomenon reproduces; Stage 2 — a benchmark implements the idea on a real (small) neural network task and compares it against a tuned baseline over 8 paired seeds with a permutation test.
Artifacts
Artifacts unavailable.