1 Exam Paper Distribution: Serial Column-Chain vs. Radial Broadcast-Tree
Classroom: 50 students, arranged 10 rows × 5 columns Timing rules (realistic model): - Take own paper: 1 second - Hand stack to one neighbor (one direction): 1 second - A person can only do one action per second — you cannot take your paper and hand off in the same second, and you cannot hand off to two neighbors simultaneously (one pair of hands). - All students who are free to act do so in parallel, every second (synchronous rounds).
1.1 Algorithm 1: Serial Column-Chain Distribution (traditional method)
1.1.1 Pseudocode
for col in 1..C: # teacher works one column at a time
teacher hands stack to front student of col # 1 sec
for each column, in parallel:
student = front of column
while student has a stack:
student takes own paper # 1 sec
if not last student in column:
student hands remaining stack to next # 1 sec
student = next student in column
1.1.2 Diagram — how the stack moves
Teacher
│ 1s 2s 3s 4s 5s (teacher hands off columns one at a time)
▼ ▼ ▼ ▼ ▼
[S] [S] [S] [S] [S] ← row 1 (front)
↓ ↓ ↓ ↓ ↓ take own paper (1s) → hand back (1s), repeated
[S] [S] [S] [S] [S] ← row 2
↓ ↓ ↓ ↓ ↓
⋮ ⋮ ⋮ ⋮ ⋮
↓ ↓ ↓ ↓ ↓
[S] [S] [S] [S] [S] ← row 10 (back)
1.1.3 Timing
- Teacher hands off to
C = 5column fronts, one at a time → 5 sec - Within a column of
R = 10students: everyone but the last does take (1s) + hand (1s), the last student only takes (1s) →2(R−1) + 1 = 2R − 1 = 19 sec(runs in parallel across all 5 columns) - Columns start staggered (teacher reaches column 5 last), so the last column finishes at:
| Column | Receives stack at | Finishes at |
|---|---|---|
| 1 | t = 1 | t = 20 |
| 2 | t = 2 | t = 21 |
| 3 | t = 3 | t = 22 |
| 4 | t = 4 | t = 23 |
| 5 | t = 5 | t = 24 |
1.1.4 Total: 24 seconds
1.2 Algorithm 2: Radial Broadcast-Tree Distribution
1.2.1 Pseudocode
teacher hands stack to center student # 1 sec
function distribute(student, stack):
directions = neighbors(student) not already served (front/back/left/right)
sort directions by size of the subtree they still need to reach,
largest/farthest subtree FIRST # greedy scheduling
for d in directions:
hand a stack to neighbor in direction d # 1 sec each, sequential
distribute(neighbor_d, that sub-stack) # recurses in parallel
student takes own paper # 1 sec (done last,
# since it doesn't
# block anyone else)
Each student who receives a stack becomes a new local “hub”: they hand off to whichever of their still-unserved neighbors (up to 3, or up to 4 for the very first/center student) remain, one per second, then take their own paper. To finish as fast as possible, each hub sends toward its most distant/largest remaining branch first — this is the standard optimal strategy for minimizing broadcast time in a tree network.
1.2.2 Diagram — wavefront expanding from the center
Numbers = the second each student receives the stack (center student = seat (row 5, col 3)):
9 8 6 7 8
9 8 5 7 8
8 7 4 6 7
7 6 3 5 6
6 5 1 4 5 ← center receives at t = 1
6 5 2 4 5
7 6 3 5 6
8 7 4 6 7
9 8 5 7 8
9 8 6 7 8
Numbers = the second each student has finished taking their own paper (fully done):
10 10 9 9 9
10 10 9 9 9
9 9 8 8 8
8 8 7 7 7
7 7 6 6 6
7 7 6 6 6
8 8 7 7 7
9 9 8 8 8
10 10 9 9 9
10 10 9 9 9
1.2.3 Broadcast tree (levels, from center)
flowchart TD
T[Teacher] -->|1s| C0["Center (t=1)"]
C0 -->|1s| L1a["Right (t=2)"]
C0 -->|1s| L1b["Left (t=3)"]
C0 -->|1s| L1c["Front (t=4)"]
C0 -->|1s| L1d["Back (t=5)"]
L1a --> L2a["3 further neighbors (t=3..5)"]
L1b --> L2b["3 further neighbors (t=4..6)"]
L1c --> L2c["3 further neighbors (t=5..7)"]
L1d --> L2d["3 further neighbors (t=6..8)"]
L2a --> Ln["... wavefront continues outward ..."]
L2b --> Ln
L2c --> Ln
L2d --> Ln
Ln --> Corner["Farthest corner student finishes: t=10"]
1.2.4 Total: 10 seconds
1.3 Comparison & Time Saved
| Serial Column-Chain (traditional) | Radial Broadcast-Tree | |
|---|---|---|
| Total time | 24 sec | 10 sec |
| Bottleneck | Last column, last row | Farthest corner from center |
| Parallelism used | Across columns only | Across all 4 directions, every hub |
1.3.1 Time saved: 24 − 10 = 14 seconds (≈ 58% faster)
1.3.2 Why the gap is so large
- Traditional distribution only parallelizes between columns; within a column it’s a strict 1-D chain of 19 seconds.
- The Radial Broadcast-Tree method parallelizes in all 4 directions simultaneously and keeps splitting the workload at every hub, so the deepest chain any single paper travels is only 9 hops from center to the farthest corner (10×5 grid), instead of up to 13 hops (5 across + 9 down) in the worst traditional path.
- The gain would be even larger in a bigger or more “square” classroom, since the broadcast-tree’s finish time grows roughly with the grid’s radius, while the column-chain’s grows with columns + rows.