En riktad graf är ett par $[V,E]$
där $V$ är en mängd vars element är noderna i grafen
och $E$ är en delmängd av mängden $V\times V$ och
elementen i $E$ är (de riktade) bågarna mellan
noderna.
En icke-riktad graf (eller bara graf)
är ett par $[V,E]$ där $V$ är en mängd vars element
är noderna i grafen
$E\subseteq\set{\{a,b\}\mid a, b\in V}$ är mängden av
bågarna mellan noderna.
En icke-riktad graf $[V,E]$ är
enkel om
$\{v,v\}=\{v\}\notin E$ för alla $v\in V$ och en
riktad graf är enkel om $[v,v]\notin E$ för alla
$v\in V$.
Om det i en graf finns en båge mellan två noder
så är dessa noder varandras grannar
och ändnoder för bågen i fråga. I en enkel graf är
alltså ingen nod in egen granne.
Obs! [+]
Vanligtvis antar man att antalet element i
$V$ är positivt men ändligt.
Benämningarna för grafer varierar i olika källor. Här
har tex. en graf definierats så astt det mellan två noder
finns högst en båge (i varje riktning om grafen är
riktad) men ofta tas detta som en egenskap hos
enkla grafer.
Definitioner [-]
En väg (från noden $v_0$
till noden $v_n$) i grafen $[V,E]$ är en följd
$[v_0,v_1,\ldots,v_n]$ där $n\geq 1$ och och det finns
en bågen i grafen mellan noderna $v_{j-1}$
och $v_j$ (dvs. $\{ v_{j-1},v_j\}\in E$ eller
$[v_{j-1},v_j]\in E$) då $1\leq j \leq n$.
Vägens $[v_0,v_1,\ldots,v_n]$ längd
är $n$.
En cykel (eller krets) i grafen
$[V,E]$ är en väg $[v_0,v_1,\ldots,v_n]$ där
$v_n=v_0$.
Vägen $[v_0,v_1,\ldots,v_n]$ är
enkel om $v_j\neq v_k$ när
$0\leq j < k \leq n$.
Cykeln $[v_0,v_1,\ldots,v_n]$ är
enkel om vägen
$[v_0,v_1,\ldots,v_{n-1}]$ är enkel och $n\neq 2$
i en icke-riktad graf.
En Euler-väg (eller -cykel) i en graf
$[V,E]$ är en väg (eller cykel) $[v_0,v_1,\ldots,v_n]$
i grafen så att $\cup_{j=1}^n \{v_{j-1},v_j\} =E$ och
$\{v_{j-1},v_j\}\neq \{v_{k-1},v_k\}$ då
$1\leq j< k\leq n$
($ \cup_{j=1}^n [v_{j-1},v_j] =E$ och $
[v_{j-1},v_j]\neq [v_{k-1},v_k]$ då
$1\leq j< k\leq n$)
dvs. den går genom alla bågar i grafen exakt en gång.
En Hamilton-väg (eller cykel)
i grafen $[V,E]$ är en enkel väg (eller cykel)
$[v_0,v_1,\ldots,v_n]$ i grafen så att
$\{v_0,\ldots,v_n\}=V$ dvs. den går genom alla noder i
grafen (i cykelfallet bortsett från
$v_0=v_n$) exakt en gång.
En graf är är sammanhängande om det
finns en väg i grafen från varje nod till varje annan
nod.
En graf är ett träd om den är enkel
och det finns exakt en enkel väg i grafen från
varje nod till varje annan nod.
En graf är en skog om den är enkel
och det finns exakt en enkel väg i grafen från
varje nod till varje annan nod.
En graf $[V,E]$ är bipartit
med delarna $X$ och $Y$ om $V=X\cup Y$,
$X\cap Y=\emptyset$ och
$E\subseteq \set{\{x,y\}\mid x\in X, y\in Y}$
(eller $E\subseteq X\times Y$).
En matchning i en graf $[V,E]$ är
en delmängd $M\subseteq E$ så att två olika bågar
i $M$ inte har någon gemensam ändnod, dvs. om
$e_1=\{v_1,v_1'\}$ och $e_2=\{v_2,v_2'\}$ så gäller
$e_1\cap e_2\neq \emptyset \leftrightarrow e_1=e_2$
(om $[v_1,v_1']\in M$ och $[v_2,v_2']\in M$
så gäller $\{v_1,v_1'\}\cap \{v_2,v_2'\}\neq \emptyset
\leftrightarrow [v_1,v_1']=[v_2,v_2']$).
En nodfärgning i en enkel graf
$[V,E]$ är en funktion $\omega:V\to K$ så att
$\omega(v_j)\neq \omega(v_k)$ om $\{v_j,v_k\}\in E$
($[v_j,v_k]\in E$). Grafens
kromatiska tal är minsta möjliga
antal färger som behövs för en nodfärgning.
Om det i grafen finns en båge ($E\neq \emptyset$)
är det kromatiska talet åtminstone $2$ och om det
finns en en enkel cykel med udda längd så är det
kromatiska talet åtminstone $3$.
En delgraf av en graf $[V,E]$ är en
graf $[V^*,E^*]$ så att $V^*\subseteq V$ och
$E^*\subseteq E$.
Ett uppspännande träd för en
sammanhängande icke-riktad graf $[V,E]$ är en delgraf
$[V,E^*]$ som är ett träd (och alltså
innehåller alla noder).
Exemple: Olika typer av vägar [+]
Grfen nedan är enkel och sammanhängande, dvs. det finns inte
någon båge från en nod till samma nod och från varje nod
finns det en väg till varje annan nod.
Visa ett exempel på en
Exempel: Träd, bipartit graf och
matchning [+]
Den första grafen (eller den första
sammanhängande delgrafen) är ett träd och den andra är bipartit.
I båda graferna bildar de röda bågarna en matchning och det
är inte möjligt att lägga till någon båge till dessa
matchningar så att de förblir matchningar.
Några resultat om grafer [+]
En graf är bipartit om och endast om dess kromatiska tal är
högst $2$.
Varför? [+]
Om det kromatiska talet är $0$ så finns det inga noder
i grafen och om det är $1$ så finns det inga bågar så
vi behöver inte bry oss om dessa fall.
Om grafen $[X\cup Y,E]$ är bipartit så kan vi färga
noderna i mängden $X$ med färgen $a$ och noderna i
$Y$ med färgen $b$, av vilket följer att det kromatiska
talet är högst $2$.
Om det kromatiska talet är $2$ och $\omega:V\to \{a,b\}$
är en nodfärgning så kan vi välja
$X=\set{v\in V\mid \omega(v)=a}$ och
$Y=\set{v\in V\mid \omega(v)=b}$. Av villkoret
$\{x,y\}\in E \to \omega(x)\neq\omega (y)$ följer nu
att om $\{x,y\}\in E$ dvs. det finns en båge mellan noderna
$x$ och $y$ så antingen gäller $x\in X$ och $y\in Y$ eller
så $x\in Y$ och $y\in X$ av vilket följer att grafen är
bipartit (eftersom $\{x,y\}=\{y,x\}$).
I en enkel sammanhängande och icke-riktad graf finns en
Euler-väg om och endast om det i grafen finns $0$ eller $2$
noder med ett udda antal grannar.
Varför? [+]
Om det finns en Euler-väg så kan vi räkna antalet grannar
till noderna i grafen på följande sätt eftersom bågarna
som förekommer på vägen är olika och varje nod
förekommer åtminstone en gång: Vi går genom
noderna i vägen och om noden är den
första eller sista så adderar vi $1$ till nodens antal
grannar och i annat fall adderar vi $2$ till nodens antal
grannar. Det här betyder att antingen är det frågan om
en Euler-cykel där alla noder har ett jämnt antal grannar
eller så har den första och sista noden i vägen ett udda
antal grannar och resten har ett jämnt antal grannar.
Om det i grafen finns två noder med ett udda antal grannar
så väljer vi den ena av dem som startnod för vägen och
i annat fall väljer vi en godtycklig nod som startpunkt.
Sedan konstruerar vi vägen så att om vi redan har
konstruerat vägen $[v_0,\ldots,v_k]$ där $k\geq 0$
och det finns en nod $v_{k+1}$ så att
$\{v_k,v_{k+1}\}\in E$ men $\{v_k,v_{k+1}\}\notin
\set{\{v_{j-1},v_j\}\mid 1\leq j\leq k}$ så är den nya
vägen $[v_0,\ldots,v_k,v_{k+1}]$ och annars är
konstruktionen färdig (men det betyder inte att vi har
åstadkommit en Euler-väg).
På det här sättet får vi tex. i grafen nedan vägen
$[2,3,6,8,7,5,8]$ (med det är inte den enda möjligheten):
Om vi tar bort från $E$ de bågar som vi redan tagit med i
vägen så blir det kvar en graf där varje nod har ett jämnt
antal grannar och om det finns bågar kvar kan vi, på samma
sätt som ovan konstruera en cykel i vilken varje båge
förekommer högst en gång och vars startnod ligger på den
tidigare konstruerade vägen.
I exemplet ovan får vi på det här sättet tex. cykeln
$[2,1,3,5,6,4,2]$:
En sådan cykel kan vi sätta in i den väg vi redan
konstruerat så att villkoret att varje båge gås genom högst en
gång fortfarande är uppfyllt. Om vi tex. kombinarar vägarna vi
noden $2$ så får vi vägen $[2,1,3,5,6,4,2,3,6,8,7,5,8]$.
På det här sättet kan vi fortsätta tills det inte finns
några bågar kvar och då har vi konstruerat en Euler-väg.
Antag att $[X\cup Y,E]$ är en bipartit (icke-riktad) graf med
delarna $X$ och $Y$. Då
finns det en matchning $M$ så att varje $x\in X$ är
ändnod på någon båge i $M$, dvs. $M$ är en fullständig
matchning i den bipartita grafen
om och endast om
för varje $A\subseteq X$ gäller att antalet element
i $A$ är mindre eller lika med antalet grannar till elementen
i $A$ dvs.
$\card {A}\leq \card {n(A)}$ där
$n(A)\!=\!\set{y\in Y\mid \{x,y\}\in E,\, x\in A}.$
Varför? [+]
Om $M$ är en fullständig matchning i den bipartita
grafen $[X\cup Y,E]$ så är $x\in A \mapsto y\in n(A)$ då
$\{x,y\}\in M$ en injektion enligt definitionen av en
matchning och antagande att $M$ är fullständig för varje
$A\subseteq X$. Det innebär att $\card{A}\leq \card{n(A)}$.
Det andra steget är att visa att om $\card{A}\leq
\card{n(A)}$ för alla $A\subset X$ så finns det en
fullständig matchning i grafen. Det här är säkert sant om
$\card{X}=1$ och vi antar nu att det också är sant när
$1 \leq \card{X}\leq k$ och $k\geq 1$.
Om $\card{X}=k+1$ så väljer vi en nod $a\in X$ och om det
det är möjligt väljer vi en delmängd
$\hat X \subset X\setminus \{a\}$ så att
$\card{n(\hat X)} = \card{\hat X}>0$.
Nu har vi två fall beroende på om det finns en sådan mängd
eller om det är så att
$\card{n(\hat X)} \geq \card{\hat X}+1$
för alla $\hat X \subseteq X\setminus \{a\}$ med
$\hat X\neq \emptyset$.
Om vi lyckas visa att det i båda fallen finns en
fullständig matchning för den bipartita grafen så
har vi bevisat att påståendet gäller med
induktionsprincipen.
Om $\card{n(\hat X)} = \card{\hat X}>0$ och
$\hat X \subset X\setminus \{a\}$ så följer det av
induktionsantagandet att det finns en fullständig
matchning $M_1$ i den bipartita grafen
$G_1=[\hat X\cup n(\hat X),\hat E]$ där
$\hat E= \set{\{x,y\}\in E\mid x\in \hat
X}$. Men antagandet "$\card{A}\leq \card{n(A)}$ för alla
$A\subseteq X$" gäller också i grafen
för om det här villkoret inte skulle gälla för någon mängd
$A\subseteq X\setminus \hat X$ så kan det inte heller
gälla i grafen $[X\cup Y,E]$ för mängden
$A\cup \hat X$ eftersom $\card{n(\hat X)}=\card{\hat X}$.
Det är en följd av induktionsantagandet att det finns en
fullständig matchning $M_2$ i den bipartita grafen $G_2$
och $M_1\cup M_2$ r en fullständig matchning i grafen
$[X\cup Y,E]$.
Det sista steget är att anta att
$\card{n(\hat X)} \geq \card{\hat X}+1$ för alla
$\hat X \subseteq X\setminus \{a\}$ med
$\hat X\neq \emptyset$. Eftersom
$1= \card{\{a\}} \leq \card{n(\{a\})}$
så finns det ett element $b\in Y$ så att $\{a,b\}\in E$
och vi kan välja $M_1=\{\{a,b\}\}$. Villkoret
"$\card{A}\leq \card{n(A)}$ för alla $A\subseteq X$" gäller
i grafen
eftersom högst en granne har tagits bort. Det är en följd av
induktionsantagandet att det finns en fullständig matchning
$M_2$ i den bipartita grafen $G_2$ och därför kommer
$M_1\cup M_2$ att vara en fullständig matchning i grafen
$[X\cup Y,E]$.
Grannmatris [-]
Om $[V,E]$ är en graf i vilken det finns $m4 noder
$V=\{v_1,\ldots v_m\}$ så är dess
grannmatris
$m\times m$-matrisen
\[
A(j,k)=\begin{cases} 1,& \{v_j,v_k\}\in E,\quad
{\small \text{( $[v_j,v_k]\in
E$)}},\\
0 ,& \{v_j,v_k\}\notin E,\quad
{\small\text{($[v_j,v_k]\notin
E$)}}.\end{cases}
\]
Om $n\geq 1$ så är $(A^n)(j,k)$ antalet vägar med längden
$n$ från noden $v_j$ till noden $v_k$.
Grannmatrisen för en icke-riktad graf är symmetrisk dvs.
$A=A^{\textrm{T}}$.
En graf är enkel om och endast om varje element $A(j,j)$ på
diagonalen är $0$.
kan vi skriva
A=[0,1,1,0,0; 1,0,1,0,0; 1,1,0,1,1;
0,0,1,0,1; 0,0,1,1,0]
eller
A=[0 1 1 0 0; 1 0 1 0 0; 1 1 0 1 1; 0 0 1 0 1; 0 0 1 1 0]
och matriserna $A^2$ och $A^3$ kan vi räkna med kommandona
A^2 och A^3.
Obs! [+]
Om man ger bågarna numeriska värden dvs. bestämmer en funktion
$w:E\to \R$, tex. för att beskriva "avstånden" mellan noderna
så lönar det sig att byta definitionen av $A$ till
$A(j,k)=w(\{v_j,v_k\})$ ifall $\{v_j,v_k\}\in E$ och tex.
$+\infty$ annars och man kan som element i en generaliserad
grannmatris i stället för $1$ och $0$ välja nästan vad som
helst.
Isomorfa grafer [-]
Graferna $[V,E]$ och $[V',E']$ är isomorfa om det finns
en bijektion $\psi: V\to V'$ så att
$\{\psi(a),\psi(b)\}\in E' \leftrightarrow
\{a,b\}\in E$ (i det riktade fallet
$[\psi(a),\psi(b)]\in E' \leftrightarrow
[a,b]\in E$) dvs. "grannar avbildas på grannar".
Exempel: Isomorfa grafer?
[+]
Är graferna nedan isomorfa?
Svar [+]
I båda graferna finns det $4$ noder som har tre grannar
och $2$ som har $2$ grannar men med stöd av det kan vi inte
dra slutsatsen att graferna sulle vara isomorfa. Däremot finns
det inte i grafen till vänster någon cykel med längden $3$
men sådana finns i grafen till höger. Det betyder att graferna
inte är isomorfa.
Och hur är det graferna nedan?
Svar [+]
I båda graferna finns $2$ noder som har $3$ grannar,
dvs. noderna $2$ och $4$ och noderna $c$ och $e$.
Om graferna är isomorfa så kan isomorfismen $\psi$ vara sådan
att $\psi(2)=c$ och $\psi(4)=e$ (eller tvärtom). Eftersom nod
$1$ är granne till både nod $2$ och nod $4$ och eftersom
nod $d$ är granne både till nod $c$ och node $e$ så måste
vi ha $\psi(1)=d$. Av de återstående noderna är nod
$3$ granne till nod $2$ men inte till nod $4$ och nod
$b$ är granne till nod $c$ men inte till nod $e$,
så vi får $\psi(3)=b$ och då måste $\psi(5)=a$. Den här
funktionen $\psi$ är en isomorfism och graferna är isomorfa.
Exempel: Hur många icke-riktade,
icke-isomorfa grafer finns det med $3$ noder och $4$
bågar? [+]
Om vi kräver att grafen är enkel finns det inte en enda för i
en enkel graf med $3$ noder finns det högst $3$ bågar.
I grafens grannmatris finns det $3$ rader och kolumner
och eftersom grafen är icke-riktad så är matrisen symmetrisk
vilket betyder att det räcker att känna till elementen på
rad $i$ och kolumn $j$ då $1\leq i\leq j\leq 3$. Eftersom
det finns $4$ bågar i grafen så är $4$ av de här $6$ elementen
ovanför diagonalen $1$ och resten $0$. Det betyder att antalet
alternativ är $\binom 64=15$ men en del av de här näten är
förstås isomorfa.
Eftersom vi skall bestämma antalet icke-isomorfa grafer kan
vi göra en lista över alla alternativ:
Först konstaterar vi som ovan att åtminstone en nod är sin egen
granne så vi har alternativen att $1$, $2$ eller $3$
noder är sin egen granne. antalet bågar mellan olika noder blir
då $3$, $2$ och $1$ för respektive fall.
Om $1$ eller $3$ noder är sin egen granne så har vi bara
ett alternativ och de är
Om $2$ noder är sin egen granne så får vi två icke-isomorfa
grafer och de är:
Således finns det $4$ icke-isomorfa grafer med $3$ noder
och $4$ bågar.
Hur löser man det här problemet med Pólyas teorem?
Svar [+]
Om nodmängden är $\{1,2,3\}$ så permutationerna av noderna
$(1)$, $(1\; 2)$, $(1\; 3)$, $(2\; 3)$, $(1\;2\;3)$
och $(1\;3\;2)$.
För att se hur permutationerna verkar på graferna beskriver vi
graferna med hjälp av grannmatriser i vilka vi inte bryr oss om
elementen under diagonalen:
$\begin{bmatrix} a & b &c \\ & d & e \\ & & f\end{bmatrix}$.
Dessutom ser vi att en graf med $3$ noder och $4$ bågar är en
"färgning" av en matris av detta slag med ettor och nollor så
att $4$ element blir $14 och $2$ blir $0$.
Kravet att grannar förblir grannar ger en homomorfism från
permutationerna av noderna till permutationer av mängden
$\{a,b,c,d,e,f\}$ och den här homomorfismen är följande:
\begin{align*}
\psi((1))&=(a),\\ \psi((1\; 2))&= (a\;d)(c\;e),\\
\psi((1\;3))&= (a\;f)(b\; e)),\\
\psi((2\; 3)&=(d\; f)(b\; c),\\
\psi((1\;2\;3))&=(a\;d\;f)(b\;e\;c),\\
\psi((1\;3\;2))&=(a\;f\;d)(b\;c\;e).
\end{align*}
Av detta får vi cykelindexet
\[
\frac 16\bigl(t_1^6+3\cdot t_1^2\cdot t_2^2+2\cdot t_3^2\bigr ).
\]
Enligt Pólyas teorem är koefficienten för termen $e^4n^2$
i polynomet
antalet icke-isomorfa grafer med $3$ noder och $4$ bågar
och den här koefficienten är
 
Girig nodfärgning [-]
En lätt men inte nödvändigtvis optimal metod för att
hitta en nodfärgning av en graf är följande
giriga algoritm:
Sätt noderna i någon ordning:
$[v_1,v_2,\ldots,v_n]$.
Sätt färgerna i någon ordning:
$[c_1,c_2,\ldots,c_r]$.
Färga den första noden med den första färgen dvs.
$\omega(v_1)=c_1$.
Om noderna $v_1,\ldots ,v_k$ är färgade så färga noden
$v_{k+1}$ med först möjliga färg så att villkoret
att grannar inte får samma färg uppfylls, dvs.
$\omega(v_{k+1}) = c_j$ där
Beroende på i vilken ordning kan den här algoritmen
använda ett antal färger som är större än det kromatiska
talet som är minimiantalet. Men det är alltid möjligt att
välja ordningen så att minimiantalet uppnås.
Varför? [+]
Påståendet att minimiantalet kan uppnås
gäller (förstås) när $\card{V}=1$.
Vi antar nu att påståendet gäller då
antalet noder i grafen är högst $k$ och
vi antar att $[V,E]$ är en graf med $\card{V}=k+1$ och
kromatiskt tal $m\geq 1$.
Om $m=1$ så är $\card{E}=0$ och den giriga
algoritmen använder alltid också bara en färg.
Om $m>1$ så finns det en nodfärgning som
använder $m$ färger, dvs. en funktion
$\omega:V\to \{c_1,c_2, \ldots, c_m\}$
så att $\set{v\in V\mid \omega(v)=c_j}\neq \emptyset$
för alla $j=1,2\ldots,m$ (och
$\omega(v)\neq \omega(v')$ när $\{v,v'\}\in E$).
Nu bildar vi delgrafen $[V^*,E^*]$
så att $V^*=\set{v\in V\mid \omega(v)\neq c_m}$ och
$E^*\!=\!\set{\!\{v,v'\}\!\in\! E\!\mid\!
\omega(v)\neq c_m, \omega(v')\neq c_n}.$
Nu är $\card{V^*}\leq k$ och grafens $[V^*,E^*]$
kromatiska tal är högst $m-1$. Enligt
induktionsantagandet kan vi ordna noderna i grafen
$[V^*,E^*]$ så att den giriga färgningsalgoritmen
använder högst $m-1$ färger. Noderna i mängden
$V\setminus V^*$ är inte grannar med varandra så om vi
lägger noderna i $V\setminus V^*$ efter noderna i $V^*$
i en godtycklig ordning så kommer den giriga algoritmen
att använda (högst men på grund av det kromatiska
talet, precis) $m$ färger för nodfärgningen av grafen
$[V,E]$.
Enligt induktionsprincipen har vi nu visat att det
alltid när $\card{V}<\infty$ är möjligt att ordna
noderna så att den giriga färgningsalgoritmen använder
minimiantalet färger.
Exempel: Gisrig färgning [+]
Vi skall bestämma någon nodfärgning av av grafen nedan:
I enlighet med den giriga färgningsalgoritmen ordnar vi
noderna och färgerna på något sätt och går genom noderna i
ordning och ger varje nod den första möjliga färgen som alltså
inte är samma som någon granne till noden redan har. I det här
fallet låter vi färgernas ordning vara . röd blå, grön,
gul.
Eftersom varje nod i den här grafen har $3$ grannar så
använder den giriga färgningsalgoritmen högst $4$
färger. Eftersom det finns bågar så är det kromatiska talet
minsta $2$.
Beroende på den valda ordningen av noderna använder den giriga
f'rgningsalgoritmen $2$, $3$ eller $4$ färger:
Dynamisk optimering och grafer [-]
Antag att $[V,E]$ är en enkel och sammanhängande
(icke-riktad) graf i vilken varje båge
$\{v_j,v_k\}$ givits en vikt $w(\{v_j,v_k\})\geq 0$
(ja $w(\{v_j,v_k\})=\infty$ ifall
$\{v_j,v_k\}\notin E$). Om uppgiften är att
bestämma en väg $[v_0,v_1,\ldots,v_n]$ från en viss given
nod $v_0$ till någon annan given nod $v_n$ så att
$\sum_{j=1}^n w(\{v_{j-1},v_j\})$ är så liten som möjligt
så kan man gå tillväga på följande sätt:
Låt $s(v)= \min\{\sum_{j=1}^k w(\{v_{j-1},v_j\})\mid
[v_0,v_1,\ldots,v_k]$ är en väg från noden
$v_0$ till noden $v_k=v\}$.
Observera att funktionen $s$ uppfyller principen
för dynamisk optimering:
$\displaystyle
s(v) = \min_{v'\in V}(s(v')+w(\{v',v\})$.
Beräkna de optimala värdena $s(v)$ på följande
sätt:
Välj $V_0=\{v_0\}$ och $s(v_0)=0$.
Ifall de optimala värdena $s(v)$ har blivit
beräknade när $v\in V_j$ så beräkna för
grannarna till noderna i $V_j$ testvärdena
$t(v)=\min_{v'\in V_j}(s(v')+w(\{v',v\})$,
$v\in V\setminus V_j$.
Sätt $V_{j+1}=V_j\cup \{v\}$ och $s(v)=t(v)$
om $v\in V\setminus V_j$ och
$t(v)= \min_{v'\in V\setminusV_j} t(v')$.
Varför fungerar dynamisk optimering när vi
skall bestämma "minimiavstånd"? [+]
Vi defininierar funktionen $s$ med formeln
$s(v)= \min\{\sum_{j=1}^k w(\{v_{j-1},v_j\}\mid
[ v_0, v_1,\ldots,v_k]$ är en stig från noden $v_0$ till
noden n $ v_k=v\}$ när $v\neq v_0$ och vi har
$s(v_0)=0$.
Vi väljer $V_0=\{v_0\}$, $V_{-1}=\emptyset$ och definierar
testvärden $t_0(v)=\infty$ för alla
$v\in V\setminus \{v_0\}$. Om $j\geq 0$ och vi känner till
funktionens $s$ värden för noder i mängden $V_j$ och
testfunktionens
$t_j(v)=\min_{v'\in V_{j-1}}(s(v')+w(\{v',v\})$ värden i
alla andra noder så skall via beräkna en ny testfuntkion och
lägga till nästa nod till mängden $V_{j}$.
Eftersom vi definierar
$t_{j+1}(v)=\min_{v'\in V_j}(s(v')+w(\{v',v\})$,
$v\in V\setminus V_j$, så är $t_{j+1}(v)=t_j(v)$ om $v$
inte är granne till den nod $v_j$ för vilken funktionens $s$
värde senast bestämts så vi skall bara beräkna
$t_{j+1}(v)=\min\{t_j(v),s(v_j)+ w(\{v_j,v\})\}$ då
$v\in V\setminus V_j$ är granne till $v_j$. Sedan väljer vi
noden $v_{j+1}$ ur mängden $V\setminus V_j$ så att
$t_{j+1}(v_{j+1}) = \min_{v\in V\setminus V_j} t_{j+1}(v)$.
Nu gäller antingen $s(v_{j+1})= t_{j+1}(v_{j+1})$ och
och induktionssteget fungerar elelr så är
$s(v_{j+1}) < t_{j+1}(v_{j+1})$ och vi skall visa att detta
senare alternativ leder till en motsägelse.
Om $s(v_{j+1}) < t_{j+1}(v_{j+1})$ så finns det en väg
$[\tilde v_0,\tilde v_1, \ldots ,\tilde v_k]$ så att
$\tilde v_0=v_0$, $\tilde v_k=v_{j+1}$ och
$\sum_{i=1}^{k} w(\{\tilde v_{i-1},\tilde v_i\}) <
t_{j+1}(v_{j+1})$.
Då finns det ett största index $i_0 < k$ så att
$\tilde v_{i_0} \in V_j$ vilket betyder att
$\tilde v_{i_0+1}\in V\setminus V_j$ och av definitionen
av funktionen $t_{j+1}$ och av antagandet att $w(e)\geq 0$
följer att
vilket är en motsägelse. Det här betyder att
$s(v_{j+1}) = t_{j+1}(v_{j+1})$, vi kan välja
$V_{j+1}= V_j\cup\{v_{j+1}\}$ och induktionen fungerar.
Observera att det är väsenmtligt för det här resonemanget
att $w(e)\geq 0$ för alla $e\in E$.
Hur besvärligt är det att bestämma
"minimiavstånd" i en graf? [+]
Vi antar att $G=[V,E]$ är en sammanhängande graf i
vilken varje båge $e\in E$ givits en vikt $w(e)\geq 0$
(och $w(\{v_j,v_k\})=\infty$ om
$\{v_j,v_k\}\notin E$) och uppgiften är att bestämma
en väg $[v_0,v_1,\ldots,v_k]$
kmellan två givna noder $v_*$ och $v_{**}$ så att
$\sum_{j=1}^k w(\{v_{j-1},v_j\})$ är så liten som
möjligt.
Om $\card{V}=n$ och och det finns en båge mellan alla
noder så finns det
$\sum_{j=2}^n\frac {(n-2)!}{(n-j)!} \geq (n-2)!$ olika
alternativ för vägen men vanligtvis är antalet alternativ
mycket mindre.
Om vi använder dynamisk optimering och vi har beräknat
optimivärdet till $j$ noder så skall vi räkna ut nya
testvärden för högst $n-j$ noder och då använder vi
högst $n-j$ additioner och lika många jämförelser och
sedan skall vi välja
det minsta med $n-j-1$ jämförelser.
Det här betyder att att vi skall räkna högst
$\sum_{j=1}^{n-1}(n-j)= \tfrac 12 n(n-1)$ additioner och
göra högst \sum_{j=1}^{n-1}(n-j+n-j-1)= (n-1)^2$
jämförelser. Antalet additioner och jämförelser hör alltså
till mängden $O(n^2)$.
Minimalt uppspännande träd [-]
Minimalt uppspännande träd,
girig algoritm I (Prim) [+]
Om $G=[V,E]$ är en enkel och sammanhängande
(icke-riktad) graf och varje
båge $\{v_j,v_k\}$ har getts en vikt $w(\{v_j,v_k\})$
(och $w(\{v_j,v_k\})=\infty$ när
$\{v_j,v_k\}\notin E$) så är ett minimalt
uppspännande träd för $G$ en delgraf $[V,E_T]$ som
är ett träd och sådan att
$\sum_{\{v_j,v_k\}\in E_T}w(\{v_j,v_k\})$
är minsta möjliga.
Ett minimalt uppspännande träd kan konstrueras tex.
med följande giriga algoritm:
Välj $T_1=[\{v_1\},\emptyset]$ där $v_1$
är en godtycklig nod i $V$.
Om $T_{m} =[V_m,E_m]$ har valts och $V_m\neq V$
så att $w(\{v_j,v_k\})$ är minsta möjliga så är
$T_{m+1}=[V_{m}\cup\{v_k\},E_m\cup\{\{v_j,v_k\}\}]$,
dvs. trädets $ T_m$ noder utökas med $v_k$ och bågar
med bågen mellan $v_j$ och $v_k$.
Varför ger den här algoritmen
ett optimalt resultat? [+]
Låt $[V,E]$ vara en enkel och sammanhängande
graf där varje
båge $\{v_j,v_k\}$ har getts en vikt $w(\{v_j,v_k\})$
och antag att $T_*=[V,E_*]$ är ett träd så att
$w(T_*)=\sum_{e\in E_*} w(e)$ är minsta möjliga.
Med Prims giriga algoritm konstruerar vid träden
$T_j=[V_j,E_j]$, $j=1,\ldots, n$ (där $\card{V_1}=1$,
$\card{V}=n$ och $E_1=\emptyset$).
Om $E_*=E_n$ så fungerar algoritmen som den skall och
om och om $E_*\neq E_n$ så finns det ett största tal
$m$, $1\leq m < n$ så att $E_m\subseteq E_*$.
där
Antag att $\{x,y\}\in E_{m+1}\setminus E_m$ där
$x\in V_m$ och $y\in V_{m+1}\setminus V_m$ och alltså
$\{x,y\}\notin E_*$.
Det finns en väg i grafen $T_*$ fråm noden $x$ till noden
$y$ eftersom $T_*$ är ett träd. I den här vägen ingår en båge
$\{a,b\}$ så att $a\in V_m$ och $b\in V\setminus V_{m}$. Om
vi nu ersätter bågen $\{a,b\}$ i $T_*$ med bågen
$\{x,y\}$ så är den nya grafen $T_{**}$ ocksåp ett träd.
Algoritmens val av $\{x,y\}$ garanterar att
$w(T_{**})\leq w(T_*)$. Det här betyder att vi har ett optimalt
träd $T_{**}=[V,E_{**}]$ så att
$E_{m+1}\subset E_{**}$. Eftersom vi kan upprepa den här
konstruktionen om det behövs så har vi visat att $T_n$ är ett
minimalt uppspännande träd för grafen $[V,E]$.
Minimalt uppspännande träd,
girig algoritm II (Kruskal) [+]
Om $G=[V,E]$ är en enkel och sammanhängande
(icke-riktad) graf och varje
båge $\{v_j,v_k\}$ har getts en vikt $w(\{v_j,v_k\})$
(och $w(\{v_j,v_k\})=\infty$ när
$\{v_j,v_k\}\notin E$) så kan ett minimalt
uppspännande träd också konstrueras med följande
giriga lagoritm:
Välj $E_1=\emptyset$.
Om $m\geq 1$ och $[V,E_m]$ inte är ett trräd så välj
$e\in E\setminus E_m$ så att $w(e)$ är minsta
möjliga och så att grafen $[V,E_{m+1}]$, där
$E_{m+1}=E_m\cup \{e\}$, är en
skog.
Varför ger också den här algoritmen
ett optimalt resultat?
[+]
Låt $[V,E]$ vara en enkel och sammanhängande
graf där varje
båge $\{v_j,v_k\}$ har getts en vikt $w(\{v_j,v_k\})$
och antag att $T_*=[V,E_*]$ är ett träd så att
$w(T_*)=\sum_{e\in E_*} w(e)$ är minsta möjliga.
Med Kruskals giriga algoritm konstruerar vi skogarna
$F_j=[V,E_j]$, $j=1,\ldots, n$. Om $F_n$ inte är ett träd så
finns det noder $a$ och $b$ ågon väg mellan dem i grafen
$F_n$. Men i grafen $[V,E]$ finns det en väg
$[v_0,v_1,\ldots,v_k]$ där $v_0=a$ och $v_k=b$.
Låt $j$ vara minsta möjliga index så att det inte finns en
väg mellan noderna $v_{j-1}$ och $v_j$ i grafen $F_n$ vilket
i synnerhet betyder att $\{v_{j-1},v_j\}\notin E_n$.
(Om ett sådant. Nu kan vi utöka mängden $E_n$ med bågen
$\{v_{j-1},v_j\}$ så att $[V,E_n\cup\{\{v_{j-1},v_j\}\}$
fortfarande är en skog för annars skulle det redan finnas
en väg mellan noderna $v_{j-1}$ och $v_j$ i grafen $F_n$.
Dethär betyder att algoritmen garanterat ger som svar ett träd
när den inte längre kan utöka mängden bågar i skogen.
Om $E_*=E_{n}$ så ger den här algoritmen ett optimalt
resultat och om $E_*\neq E_n$ så finns det ett största tal
$m$,
$1\leq m < n$ så att $E_m\subseteq E_*$ och därför gäller
$\{x,y\}\notin E_*$ om $\{x,y\}\in E_{m+1}\setminus E_m$.
I trädet $T_*$ finns en väg från noden $x$ till noden
$y$. Eftersom $F_n$ är ett träd och $\{x,y\}\notin E_*$
så finns på den här vägen en båge $\{a,b\}$ så att
$\{a,b\}\notin E_n$. Om
$E_{**}= (E_{*}\cup\{x,y\})\setminus \{a,b\}$ så
är också $[V,E_{**}]$ ett träd och eftersom $T_*$ är
optimalt så gäller $w(\{x,y\})\geq w(\{a,b\})$. Eftersom vi tog
med bågen $\{x,y\}$ i mängden $E_{m+1}$, fastän $\{a,b\}$
också kunde ha varit ett möjligt val eftersom
$E_m\cup\{\{a,b\}\} \subseteq E_*$ av vilket följer att också
$[V,E_m\cup\{\{a,b\}\}]$ är en skog, så måste vi ha
$w(\{x,y\})= w(\{a,b\})$ dvs. $T_{**}$ är också ett optimalt
träd och $E_{m+1} \subseteq E_{**}$. Eftersom vi kan upprepa
det här resonemanget om det behövs så har vi visat att
$F_n$ är ett minimalt uppsännande träd för grafen
$[V,E]$.