Ho intenzione di lavorare fuori j_random_hacker's hint. Lascia che sia s, t
una coppia al massimo distante. Sia u
il vertice arbitrario. Abbiamo una schematica come
u
|
|
|
x
/\
/ \
/ \
s t ,
dove x
è la giunzione di s, t, u
.
Supponiamo che v
sia un vertice al massimo distante da u
. Se lo schema ora sembra
u
|
|
|
x v
/\/
/ *
/ \
s t ,
poi
d(s, t) = d(s, x) + d(x, t) <= d(s, x) + d(x, v) = d(s, v),
dove la disuguaglianza perché d(u, t) = d(u, x) + d(x, t)
e d(u, v) = d(u, x) + d(x, v)
. Esiste un caso simmetrico in cui v
si collega tra s
e x
anziché tra x
e t
.
L'altro caso assomiglia
u
|
*---v
|
x
/\
/ \
/ \
s t .
Ora,
d(u, s) <= d(u, v) <= d(u, x) + d(x, v)
d(u, t) <= d(u, v) <= d(u, x) + d(x, v)
d(s, t) = d(s, x) + d(x, t)
= d(u, s) + d(u, t) - 2 d(u, x)
<= 2 d(x, v)
2 d(s, t) <= d(s, t) + 2 d(x, v)
= d(s, x) + d(x, v) + d(v, x) + d(x, t)
= d(v, s) + d(v, t),
così max(d(v, s), d(v, t)) >= d(s, t)
da un argomento media, e v
appartiene ad una coppia massimamente distante.
Puoi dirmi cosa intendi per troppi casi? Teoricamente, tutti i sottocasi dovrebbero essere provati anche per induzione. –
Il passaggio cruciale sta dimostrando che l'endpoint trovato dal primo BFS, chiamiamolo x, deve essere uno degli endpoint del percorso più lungo. Suggerimento: supponiamo (al contrario) che ci sia un percorso più lungo tra due vertici tu e v, nessuno dei quali è x. Sul percorso unico tra uev, deve esserci un vertice più alto (più vicino alla radice) h. Ci sono due possibilità: o h è sul percorso dalla radice a x, o non lo è. Mostra una contraddizione mostrando che in entrambi i casi il percorso u-v può essere reso più lungo sostituendo un segmento di percorso con un percorso a x. –
Errata: la modifica "può essere prolungata" in "a può essere fatta almeno altrettanto lunga". Questo gestisce il caso in cui u o v (o entrambi) sono alla * stessa * profondità di x. –