14. Tétel kész + LaTeX hibák javítása

14. Legrövidebb utak meghatározása adott csúcsból: a Dijkstra- és a
Bellman-Ford algoritmus.
This commit is contained in:
Bazsalanszky 2020-06-15 13:44:33 +02:00
parent cd297e963d
commit 7c69817b8b

123
bsz2.org
View file

@ -109,7 +109,7 @@
$G'(V',G')$ gráf részgráfja $G(V,E)$ -nek,ha $V'\leq V$,$E'\leq E$ és minedn $E'$ -beli él végpontja $V'$ elemei.
** Feszített részgráf
$G'(V',E')$ feszített részgráfja $G(V,E)\text{-nek}$, ha $V'\leq V$ és $E'$ az
összes $E\tex{-beli}$ él,ami a $V'\text{-beli}$ csúcsok között fut.
összes $E\text{-beli}$ él,ami a $V'\text{-beli}$ csúcsok között fut.
** Állítás
A fokok összege az élek számának kétszerese.
*** Bizonyítás
@ -666,7 +666,7 @@
Jelölje $M$ élszámát $|M|=k$. Megmutatjuk hogy $G\text{-ben}$ létezik $k$ pontú
lefogó ponthalmaz,mert ebből következni fog, hogy $M$ maximális. Mivel létezik
$k$ elemű párosítás,így $\nu(G)\geq k$. A $k$ pontú lefogó halmaz létezéséből
$\tau(G)\leq k$. A kettőt összerakva: $\k\leq\nu(G)\leq\tau(G)\leq k \Rightarrow
$\tau(G)\leq k$. A kettőt összerakva: $k \leq\nu(G)\leq\tau(G)\leq k \Rightarrow
\nu(G)=k$,így $M$ tényleg maximális párosítás.
Azt állítjuk hogy a [[#lemma1]] jelölései szerint $X=A_3\cup B_2$ lefogó
@ -682,7 +682,7 @@
*** Következmény (Kőnig tétele)
Minden $G$ páros gráfra $\nu(G) = \tau(G)$ teljesül.
*** Kőnig tétel bizonyítása
Az [[#t_biz1][előző bizonyításban]] már láttuk,hogy $\k\leq\nu(G)\leq\tau(G)\leq k$, ebből
Az [[#t_biz1][előző bizonyításban]] már láttuk,hogy $k \leq\nu(G)\leq\tau(G)\leq k$, ebből
valóban következik az állítás.
*** Következmény
Ha a $G$ páros gráf nem tartalmaz izolált pontot, akkor rá $\alpha(G) = \rho(G)$
@ -989,9 +989,9 @@
**** $\lambda_G (s,t):=$ $s$ és $t$ közötti éldiszjunkt utak maximális száma $G\text{-ben}$
**** $\lambda_G' (s,t):=$ A $G\text{-ben}$ $s\rightarrow t$ utakat lefogó pontok minimális száma
*** Következmény bizonyítása
A tétel 1. pontjából következik,hogy $\lamda_G(s,t)\geq k$. A 2. pontjából pedig
az következik hogy $\lamda_G'(s,t)\geq k$. Mivel a 1. és 2. ekvivalensek,így
$\lamda_G(s,t)=\lamda_G'(s,t)$. Figyeljük meg,hogy ezzel nem vagyunk
A tétel 1. pontjából következik,hogy $\lambda_G(s,t)\geq k$. A 2. pontjából pedig
az következik hogy $\lambda_G'(s,t)\geq k$. Mivel a 1. és 2. ekvivalensek,így
$\lambda_G(s,t)=\lambda_G'(s,t)$. Figyeljük meg,hogy ezzel nem vagyunk
készen,hiszen attól hogy egy $P$ út éldiszjunkt $H\text{-ban}$,nem jelenti
azt,hogy $G\text{-ben}$ is éldiszjunkt. Ez úgy oldható meg,hogy ha egy $e={u,v}$
élből készült $e_1=(u,v)$ és $e_2=(v,u)$ élekre fennáll az,hogy
@ -1104,7 +1104,7 @@ Az előző bekezdés és az [[#pdt][előző tétel]] bizonyításával beláthat
- Ez definíció szerint azt jelenti,hogy $G'$ összefüggő, $G$ pedig
$k\text{szorosan összefüggő}$, ezzel az elégségességet beláttuk
**** 1. pont szükségessége
- Tegyük fel hogy $G$ $k\text{-szorosan}$ összefüggő és legyen $s,t\inV(G),s
- Tegyük fel hogy $G$ $k\text{-szorosan}$ összefüggő és legyen $s,t\in V(G),s
\neq t$ tetszőleges csúcsok.
- Ha nem létezne $k$ éldiszjunkt út, akkor a [[#eldis_tet]] tétel szerint az $s
\rightarrow t$ utakat lefogó $Z$ élhalmaz legfeljebb $k-1$ élű.
@ -1149,7 +1149,7 @@ Ha $G$ $k\text{-szorosan}$ összefüggő, akkor a [[*Tétel (Menger tétele töb
éldiszjunkt út. Mivel a pontdiszjunkt utak éldiszjunktak is egyben,így a [[Tétel
(Menger tétele többszörös összefüggőségre)]] tétel 1. állítása alapján $G$ tényleg
$k\text{-szorosan}$ élösszefüggő.
* Aciklikus irányított gráfok(DAG)
* Aciklikus irányított gráfok(DAG) $\protect\footnote{\cite{hj} alapján.}$
** Fogalma
Egy irányított $G$ gráfot akkor nevezünk *aciklikusnak*,ha nem tartalmaz
irányított kört. Angolul Directed Acyclic
@ -1186,7 +1186,7 @@ Keressük meg a $s \rightarrow v$ legrövidebb utat!
utak mennek bele,amelyek elérhetőek $s\text{-ből}$ és ezek közül kiválasztjuk
a legkisebb súlyút.
Ez az algoritmus leghosszabb út keresésére is alkalmazható.
* Mélységi keresés
* Mélységi keresés $\protect\footnote{\cite{hj} alapján.}$
** Az algoritmus
Vegyünk egy tetszőleges $G$ gráfot, és válasszunk ki egy tetszőleges $s$
csúcsot. Az algoritmus futtatásakor három változót is fenntartunk: A mélységi
@ -1220,10 +1220,10 @@ a $G\text{-nek}$ egy tetszőleges éle. Ekkor
Tegyük fel, hogy a $G$ irányított gráfra a DFS algoritmust futtatva az
éppen az $e = (a, v)$ élen próbál továbblépni (így az aktív csúcs jelenleg $a$). Ekkor
$e$ erre a DFS bejárásra vonatkozóan akkor és csak akkor lesz
1. Faél, ha $d(v) = $;
1. Faél, ha $d(v) = *$;
2. Előreél, ha $d(v) > d(a)$;
3. Visszaél, ha $d(v) < d(a)$ és $f(v) = $;
4. Keresztél, ha $d(v) < d(a)$ és $f(v) \neq $.
3. Visszaél, ha $d(v) < d(a)$ és $f(v) = *$;
4. Keresztél, ha $d(v) < d(a)$ és $f(v) \neq *$.
*** Bizonyítás
- Ha $d(v)=*$,akkor $m(v)=a$,tehát $e$ valóban faél.
- Egészítsük ki az algoritmust egy $T$ változóval, ami az eltelt időt
@ -1263,43 +1263,119 @@ felsorolva $G$ csúcsait topologikus rendezést kapunk.
részgráfja $F_$v\text{-nek}, azaz $f(a)<f(a)$
- Ha $e$ keresztél, akkor $T$ pillanatban már $f(v) \ne *$,viszont $f(a)=*$, így
valóban $f(v)<f(a)$
* Legrövidebb utak meghatározása adott csúcsból
* Legrövidebb utak meghatározása adott csúcsból $\protect\footnote{\cite{hj} alapján.}$
** Definíció
A $G = (V, E)$ irányított gráf élein a $w : E \rightarrow \mathbb{R}$ függvényt
konzervatívnak nevezzük, ha $G$ minden (hurokéltől különböző, vagyis legalább két
élű) irányított körének éleire a $w(e)$ értékek összege nemnegatív.
** Állítás
:PROPERTIES:
:CUSTOM_ID: kort
:END:
Legyen adott a $G = (V, E)$ irányított gráf, az $s, v \in V (G)$, $s \neq v$ csúcsok
és $G$ élein a $w : E\rightarrow\mathbb{R}$ konzervatív hosszfüggvény. Ekkor ha létezik $s\text{-ből}$ $v\text{-be}$ egy
$t$ összhosszúságú, $k$ élből álló $Q$ élsorozat, akkor létezik $s\text{-ből}$ $v\text{-be}$ egy legföljebb $t$
összhosszúságú és legföljebb $k$ élű $P$ út is.
*** Bizonyítás
- Ha $Q$ nem irányított út,akkor van olyan csúcs,amit többször érint
- Keressük meg az ilyen ismétlődő pontpárok közül azt,amelyik között a
legkevesebb él van (Q-ban): legyen ez $u$
- Ekkor létezik egy $C$ irányított élsorozat $u\text{-ból}$
$u\text{-ba}$. $C\text{-nek}$ körnek kell lennie,hiszen $u$ választása
miatt,nem létezhet benne ismétlődő csúcspár (mert akkor azok között kevesebb
él lenne)
- Vágjuk ki $Q\text{-ból}$ a $C$ irányított kört, a kapott élsorozat legyen
$Q_1$.
- Ekkor $Q_1$ is $s\text{-ből}$ $v\text{-be}$,aminek élszáma $k\text{-vál}$
kisebb és összhossza legfeljebb $t$ (mivel $w$ konzervatív,így $C$ összhossza
nemnegatív)
- Ha $Q_1$ nem irányított út,akkor $Q_1$ is tartalmaz ismétlődő csúcsokat
- A fentieket ismételjük,addig amíg van ismétlődő csúcs,akkor a kapott amíg
$Q_n$ egy irányított út lesz.
- Mivel az eljárás során az összhosz nem nőhet,így az állítást beláttuk
*** Következmény
Legyen adott a $G = (V, E)$ irányított gráf, az $s, v \in V (G)$
csúcsok és $G$ élein a $w : E \rightarrow\mathbb{R}$ konzervatív hosszfüggvény. Ha az $s\text{-ből}$ $v\text{-be}$ vezető
$P$ legrövidebb út áthalad az $u$ csúcson, akkor $P\text{-nek}$ az $s\text{-től}$ $u\text{-ig}$ tartó $P$ $u$ szakasza
egy $s\text{-ből}$ $u\text{-ba}$ vezető legrövidebb út.
*** Következmény bizonyítása
- Tegyük fel indirekten,hogy $exists s \rightarrow u$ egy $P_u\text{-nál}$
rövidebb $P'$ út.
- Ekkor $P'$ mentén haladva eljutunk $s\text{-ből}$ $u\text{-ba}$,majd onnan $P$
mentén eljutunk $u\text{-ból}$ $v\text{-be}$. Legyen ez a $Q$ élsorozat.
- Ekkor azonban $Q$ rövidebb $s \rightarrow v$ út $P\text{-nél}$,ami ellentmond
annak, hogy $P$ legrövidebb út
** A Bellman-Ford algoritmus
*** Definíció
Jelölje $\forall v \in V (G)$ csúcsra és $k \geq 0$ egészre $t_k (v)$ a
legrövidebb olyan $s\text{-ből}$ $v\text{-be}$ vezető irányított út hosszát, ami
legföljebb $k$ élből áll; ha pedig ilyen út nincs, akkor legyen $t_k (v) = \infty$.
*** Állítás
:PROPERTIES:
:CUSTOM_ID: kupal
:END:
Legyen adott a $G = (V, E)$ irányított gráf, az $s, v \in V (G)$, $v \neq s$ csúcsok
és $G$ élein a $w : E \rightarrow \mathbb{R}$ konzervatív hosszfüggvény. Ekkor minden $k \geq 1$ esetén
\begin{align}
t_k (v) = \min{\{\{t_{k1}(v)\} \cup \{t_{k1} (u) + w(e) : e = (u, v), e \in E(G)\}\}}
t_k (v) = \min{\{\{t_{k-1}(v)\} \cup \{t_{k-1} (u) + w(e) : e = (u, v), e \in E(G)\}\}}
\end{align}
**** Bizonyítás
- Jelölje $H$ az egyenlet jobb oldalán lévő halmazt.Így azt kell belátnunk hogy
$t_k(v)$ a $H$ minimuma
- Ha $t_k(v) = \infty$,akkor persze $t_{k_1}(v) = \infty$ is igaz.
- Továbbá $e=(u,v)$ élekre is $t_{k-1}(u)= \infty$, hiszen ha nem így volna,akkor
létezne $s\text{-ből}$ $u\text{-ba}$ egy legföljebb $k-1$ élű út, és ezt
$e\text{-vel}$ kiegészítve $v\text{-be}$ vezető,legfeljebb $k$ élű utat kapnánk.
- Tegyük fel tehát,hogy $t_k \neq \infty$
- Ekkor $t_k(v) \leq t_{k-1}(v)$ nyilván igaz,hiszen legföljebb $k-1$ élű utak
egyben legföljebb $k$ élű utak
- Legyen $e=(u,v)$ él. Ekkor $s\text{-ből}$ $u\text{-ba}$ vezető legföljebb $k-1$
élű és $t_{k-1}(u)$ hosszúságú $P$ utat megtoldunk $e\text{-vel}$
- Így egy legfeljebb $k$ élű és $t_{k-1}+w(e)$ hosszúságú $Q$ élsorozatot kapunk
- $Q$, nemfeltétlen út,de [[#kort]] állítás alapján tudjuk,hogy $t_k\leq t_{k-1}+w(e)$
- Beláttuk hogy $t_k\leq \min{H}$,most megmutatjuk,hogy $H\text{-nak}$ van
$t_k\text{-val}$ egyenlő eleme
- Legyen $P$ egy $s\text{-ből}$ $v\text{-be}$ vezető $t_k(v)$ hosszú és
legfeljebb $k$ élű út.
- Ha $P$ legfeljebb $k-1$ élű,akkor nyilván legrövidebb a legföljebb $k -
1$ élű, v-be vezető utak között is, így $t_k= t_{k-1}$
- Ha $P$ pontosan $k$ élű,akkor jelölje az utolsó élét $e=(u,v)$ és $P$
$s\text{-től}$ $u\text{-ig}$ vett szakaszát $P_u$
- Ekkor $P_u$ $t_{k-1}$ hosszú,mivel ha lenne rövidebb és legföljebb $k-1$ élű
út $u\text{-ba}$ akkor, $e\text{-vel}$ kiegészítve egy $P\text{-nél}$ rövidebb
utat kapnánk,ami lehetetlen.
- Így ebben az esetben $t_k(v)=t_{k-1}+w(e)$ tényleg fennáll.
*** Az algoritmus
Tegyük fel,hogy $G$ gráf $s$ csúcsából akarunk legrövidebb utakat keresni. Az
eljárás során mindenegyes csúcshoz hozzárendelhetünk egy számot,ami azt
jelzi,hogy az eddig megtalált legrövidebb út összhossza mekkora. Ezt az értéket
minden csúcsra inicializáljuk $\infty\text{-re}$ (kivéve $s\text{-hez}$,hozzá
nullát rendelünk)
*** Állítás
Az eljárás során minden ciklusban végigmegyünk $G$ összes csúcsán. Minden
csúcsban megvizsgáljuk,hogy a belőle kivezető élek rövidebb utat alkotnak-e az
él végpontjába, mint az eddig megtalált. Ezt ismétli $(n-1)\text{-szer}$.
*** Állítás
Tegyük fel, hogy lefuttattuk a Bellman-Ford algoritmust az $n$ csúcsú
$G = (V, E)$ irányított gráfból, a $w : E \rightarrow \mathbb{R}$ hosszfüggvényből és az $s \in V$ csúcsból
álló bemenetre. Jelölje $G_s$ az $s\text{-ből}$ $G\text{-beli}$ irányított úton
elérhető csúcsok és a köztük vezető élek által alkotott részgráfot. Ekkor $w$
akkor és csak akkor konzervatív $G_s\text{-en}$, ha $G_s$ minden $e = (u, v)$
élére $t_{n1} (v) \leq t_{n1} (u) + w(e)$ teljesül.
élére $t_{n-1} (v) \leq t_{n-1} (u) + w(e)$ teljesül.
**** Bizonyítás
1) Szükségesség:
- Ha $w$ konzervatív,akkor a [[#kupal]] állításból következően minden $v \in
V(G_s)$ csúcsra a $t_{n-1}$ értékek helyesek,másrészt $t_n(v)\leq
t_{n-1}(u)+w(e)$ $G_s$ minden $e=(u,v)$ élére teljesül
- Mivel $t_n(v)=t_{n-1}(v)$,így $t_{n-1}(v) \leq t_{n-1}(v) + w(e)$
2) Elégségesség:
- Tegyük fel,hogy $t_{n-1}(v) \leq t_{n-1}(v) + w(e)$ fennáll
- Legyen $C$ egy tetszőleges irányított kör $G_s\text{-ben}$
- Ekkor $C$ $\forall e=(u,v)$ élre a következő egyenlőtlenséget kapjuk:
\begin{align}
w(e) \geq t_{n-1}(v) - t_{n-1}(v)=0
\end{align}
** Dijkstra algoritmusa
*** Állítás
Legyen adott a $G = (V, E)$ irányított gráf, az $s \in V (G)$ csúcs és a
@ -1313,10 +1389,18 @@ $w : E \rightarrow \mathbb{R}^+ \cup \{0\}$ nemnegatív hosszfüggvény.
- Legyen $a \notin K$ olyan csúcs, amire $t'(a) = \min\{t'(v) : v \notin K\}$.
Ekkor $t\notin (a) = t(a)$.
**** Bizonyítás
*** Az algoritmus
Tegyük fel,hogy $G$ gráf $s$ csúcsából akarunk legrövidebb utakat keresni. Az
eljárás során mindenegyes csúcshoz hozzárendelhetünk egy számot,ami azt
jelzi,hogy az eddig megtalált legrövidebb út összhossza mekkora. Ezt az értéket
minden csúcsra inicializáljuk $\infty\text{-re}$ (kivéve $s\text{-hez}$,hozzá
nullát rendelünk)
Induljunk ki tehát $s\text{-ből}$ és a belőle kiinduló élek alapján frissítsük
az egyes csúcsokhoz tartozó legrövidebb utakat. Ezután zárjuk le $s$
csúcsot,majd folytassuk az eljárást az $s\text{-ből}$ legrövidebb úttal elérhető
csúccsal. Az eljárást addig futtatjuk,ameddig minden csúcsa le nem lesz zárva.
* Hivatkozások
\clearpage
\begin{thebibliography}{99}
@ -1328,3 +1412,4 @@ Ekkor $t\notin (a) = t(a)$.
\end{thebibliography}