From: Martin Mares Date: Wed, 18 Jan 2012 14:41:28 +0000 (+0100) Subject: Floyd: V Seidelove algoritmu opraveno floor na ceil X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=beccc6423e66e774eefe783c0e5a83909fc0b3d0;hp=7d2994e51b4fc43408766c4e134ce735a4090af1;p=ga.git Floyd: V Seidelove algoritmu opraveno floor na ceil Tim padem bylo nutne prohodit sudou a lichou variantu o kus nize. --- diff --git a/14-floyd/14-floyd.tex b/14-floyd/14-floyd.tex index 42e096a..18e6498 100644 --- a/14-floyd/14-floyd.tex +++ b/14-floyd/14-floyd.tex @@ -322,17 +322,17 @@ zadan souvislosti zahu¹tìna na~úplný graf, tak¾e matice vzdáleností je rovna matici sousednosti. Zbývá ukázat, jak z~matice~$D'$ spoèítat matici~$D$. Zvolme pevnì~$i$ a zamìøme -se na funkce $d(v)=D_{iv}$ a $d'(v)=D'_{iv}$. Jistì platí $d'(v) = \lfloor d(v)/2 \rfloor$, -proèe¾ $d(v)$ je buï rovno $2d'(v)$ nebo o~1 vy¹¹í. Nauèíme se rozpoznat, jestli -$d(v)$ má být sudé nebo liché, a~z~toho v¾dy poznáme, jestli je potøeba jednièku pøièíst. +se na funkce $d(v)=D_{iv}$ a $d'(v)=D'_{iv}$. Jistì platí $d'(v) = \lceil d(v)/2 \rceil$, +proèe¾ $d(v)$ je buï rovno $2d'(v)$ nebo o~1 ni¾¹í. Nauèíme se rozpoznat, jestli +$d(v)$ má být sudé nebo liché, a~z~toho v¾dy poznáme, jestli je potøeba jednièku odeèíst. Jak vypadá funkce~$d$ na sousedech vrcholu~$v\ne i$? Pro alespoò jednoho souseda~$u$ je $d(u) = d(v)-1$ (to platí pro sousedy, kteøí le¾í na nìkteré z~nejkrat¹ích cest z~$v$ do~$i$). Pro v¹echny ostatní sousedy je $d(u)=d(v)$ nebo $d(u)=d(v)+1$. -Pokud je $d(v)$ liché, vyjde pro sousedy le¾ící na nejkrat¹ích cestách $d'(u)=d'(v)$ +Pokud je $d(v)$ sudé, vyjde pro sousedy le¾ící na nejkrat¹ích cestách $d'(u)=d'(v)$ a pro ostatní sousedy $d'(u)\ge d'(v)$, tak¾e prùmìr z~$d'(u)$ pøes sousedy je -alespoò~$d'(v)$. Je-li naopak $d(v)$ sudé, musí být pro sousedy na nejkrat¹ích cestách +alespoò~$d'(v)$. Je-li naopak $d(v)$ liché, musí být pro sousedy na nejkrat¹ích cestách $d'(u) < d(v)$ a pro v¹echny ostatní $d'(u) = d(v)$, tak¾e prùmìr klesne pod~$d'(v)$. Prùmìry pøes sousedy pøitom mù¾eme spoèítat násobením matic: vynásobíme matici