Skip to main content

Tutorial 9 — Distributed Quantum Computing: Mesh vs Ring

Objective: Run the same 3-party computation under mesh and ring coordination topologies to compare latency, fidelity, and resource usage trade-offs.

The choice of coordination topology directly affects performance: mesh provides direct pairwise links but consumes more resources; ring uses fewer links but requires sequential message passing through intermediate nodes.

Define the Two Topologies

from qnet_core import QNetEngine, NodeDefinition, LinkDefinition, CoordinationTopology, MeasurementBasis, BasisType

participants = ["Alice", "Bob", "Charlie"]
basis = MeasurementBasis(basis_type=BasisType.GHZ, correlation_strength=0.85)

# Mesh: all-party pairwise links (more resources, lower latency)
mesh_links = [
LinkDefinition("Alice", "Bob", distance_km=10.0, base_fidelity=0.95, generation_rate_hz=1_000.0),
LinkDefinition("Bob", "Charlie", distance_km=10.0, base_fidelity=0.93, generation_rate_hz=1_000.0),
LinkDefinition("Charlie", "Alice", distance_km=12.0, base_fidelity=0.92, generation_rate_hz=900.0),
]

# Ring: only a cycle (fewer links, higher coordination latency)
ring_links = [
LinkDefinition("Alice", "Bob", distance_km=10.0, base_fidelity=0.95, generation_rate_hz=1_000.0),
LinkDefinition("Bob", "Charlie", distance_km=10.0, base_fidelity=0.93, generation_rate_hz=1_000.0),
]

nodes = [
NodeDefinition(id="Alice", memory_lifetime_t2=0.8),
NodeDefinition(id="Bob", memory_lifetime_t2=0.8),
NodeDefinition(id="Charlie", memory_lifetime_t2=0.8),
]


def run_comparison(label, link_list, coord_type):
engine = QNetEngine()
engine.define_network(nodes, link_list)

if coord_type == "mesh":
coordination = CoordinationTopology.mesh()
else:
coordination = CoordinationTopology.ring()

result = engine.run_distributed_computation(
participants=participants,
coordination_topology=coordination,
measurement_basis=basis,
classical_relay_latency_ms=5.0,
)

print(f"\n=== {label} ===")
print(f"Success: {result.success}")
print(f"Computation fidelity: {result.computation_fidelity:.4f}")
print(f"Total latency: {result.total_latency_ms:.1f} ms")
print(f"Coordination overhead: {result.coordination_overhead_ms:.1f} ms")
print(f"Links used: {len(result.resource_links_used)}")


run_comparison("Mesh Topology", mesh_links, "mesh")
run_comparison("Ring Topology", ring_links, "ring")

Comparison Results Interpretation

MetricMesh AdvantageRing Advantage
Links usedMore (3 vs 2 for 3 parties)Fewer resources
LatencyLower (parallel coordination)Higher (sequential relay)
FidelityOften higher (more direct paths)May be lower (longer paths)
ScalabilityO(n²) links requiredO(n) links — better scaling

Trade-off Summary

Mesh: Resources = n(n-1)/2 | Coordination = parallel
Ring: Resources = n | Coordination = sequential (n-1 hops)
Star: Resources = n-1 | Coordination = via center node

For small networks (3–4 nodes), mesh usually wins on performance. For larger networks, ring or star topology is more practical due to fewer required links.

What's next