Hu-Bu-Gui (Different-Speed Minimum, sin-Angle Method)

technique

To minimize PA+kPBPA + k \cdot PB (0<k<10 < k < 1), take an angle α=arcsink\alpha = \arcsin k, draw an auxiliary line through the fixed point, and convert the kPBk \cdot PB term into a perpendicular segment — the whole quantity collapses into "distance from a point to a line".

Hu-Bu-Gui — the standard model for a "weighted sum of distances" with a moving point on a line. Through a fixed point BB, draw an auxiliary line tilted by arcsink\arcsin k to swap kPBk \cdot PB for a perpendicular segment, then close out via "polyline \geq point-to-line distance".

Universal form

minP(PA+kPB),0<k<1\min_{P \in \ell}\,\big(\, PA + k \cdot PB \,\big), \quad 0 < k < 1

Classical model

  • Moving point PP: on a line \ell
  • Fixed point AA: anywhere on one side of \ell
  • Fixed point BB: on \ell (or with a fixed projection direction onto \ell)
  • Key constraint: k(0,1)k \in (0, 1) (if k>1k > 1, rewrite as 1kPA+PB\dfrac{1}{k}\cdot PA + PB and draw the auxiliary line through the PAPA leg instead)

When to use

  • Minimizing PA+kPBPA + k \cdot PB, where k(0,1)k \in (0, 1) and PP is a moving point on some line \ell
  • The problem often mentions "two legs at different speeds", "sand vs. paved road", or "light through two media" — in essence, minimizing total time as (distance/speed)\sum (\text{distance} / \text{speed})
  • The coefficient kk is the given "speed ratio" or "discount ratio" — the story-form version is called 胡不归 (Hu-Bu-Gui)

The core move

Set sinα=k\sin\alpha = k and draw an auxiliary line tilted by α\alpha through the fixed point — this replaces kPBk \cdot PB with a perpendicular segment, and the whole sum collapses into "distance from AA to that auxiliary line".

Moving point P on ℓ, fixed points A and B, and an auxiliary line m (through B, at angle α to ℓ, with sin α = k): the perpendicular from A to m gives the minimum

Construction

Let \ell be the line on which the moving point PP lies, AA a fixed point on one side of \ell, and BB a fixed point on \ell (or with a fixed projection direction onto \ell). We want minP(PA+kPB)\min_{P \in \ell} (PA + k \cdot PB) with k(0,1)k \in (0, 1):

  1. Fix the tilt angle: take α=arcsink\alpha = \arcsin k (i.e. sinα=k\sin\alpha = k).

  2. Draw the auxiliary line: through BB, draw a line mm making angle α\alpha with \ell, on the same side as AA.

    sin α = k → α = arcsin k; construction of the auxiliary line m at the right tilt

  3. Trade for a perpendicular segment: for any PP \in \ell, drop a perpendicular from PP to mm with foot HH. Then PH=PBsinα=kPBPH = PB \sin\alpha = k \cdot PB.

    PH = PB · sin α = k · PB: the geometry inside right triangle PBH

  4. Fold into a polyline: PA+kPB=PA+PHd(A,m)PA + k \cdot PB = PA + PH \geq d(A, m) (the distance from AA to the line mm, i.e. the perpendicular segment from AA to mm).

  5. Equality: holds when A,P,HA, P, H are collinear and AHmAH \perp m — i.e. PP is the intersection of \ell with the perpendicular from AA to mm. The minimum equals d(A,m)d(A, m).

Why it works

The leg with coefficient kk cannot be handled by the usual reflection trick (General Drinking Horse (axial-symmetry shortest path) only works for k=1k = 1). But multiplying "distance from PP to BB" by sinα\sin\alpha gives exactly "distance from PP to a line mm that passes through BB at tilt α\alpha" — this spreads the weight kk into the geometry. After the swap, what remains is the everyday fact that a polyline is at least as long as a straight segment (distance from a point to a line).

Worked examples

  • In ABC\triangle ABC with B=30°\angle B = 30°, DD moves on BCBC; minimize AD+12BDAD + \tfrac{1}{2} BD (take sinα=12\sin\alpha = \tfrac{1}{2}, so α=30°\alpha = 30° — this happens to coincide with B\angle B, and the auxiliary line is the line containing ABAB).
  • Sand-and-road problem: from AA, with sand speed v1v_1 and road speed v2v_2 (v1<v2v_1 < v_2), the road is the line \ell and the target BB lies on the road. Minimizing total time is equivalent to minimizing PA+(v1/v2)PBPA + (v_1 / v_2) \cdot PB.

Variants / generalizations

  • The case k>1k > 1: sinα=k\sin\alpha = k has no solution. Switch to 1kPA+PB\dfrac{1}{k} \cdot PA + PB and run the same playbook (the coefficient 1k<1\dfrac{1}{k} < 1 now applies to the PAPA leg).

  • Three weighted legs (w1PA+w2PB+w3PCw_1 \cdot PA + w_2 \cdot PB + w_3 \cdot PC): a single auxiliary line is not enough — switch to Weighted Fermat Point (rotation + scaling lemma) (rotation + scaling).

  • Physical meaning: sinα=v1/v2\sin\alpha = v_1/v_2 is exactly Snell's law of refraction; Hu-Bu-Gui is, in essence, Fermat's principle at a two-medium boundary turned into an argmin\arg\min construction.

    Degenerates to Snell's law of refraction: a two-medium boundary with sin α = v₁/v₂