<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sk">
	<id>http://www.kiwiki.info/index.php?action=history&amp;feed=atom&amp;title=H%C4%BEadanie_najkrat%C5%A1ej_cesty</id>
	<title>Hľadanie najkratšej cesty - História úprav</title>
	<link rel="self" type="application/atom+xml" href="http://www.kiwiki.info/index.php?action=history&amp;feed=atom&amp;title=H%C4%BEadanie_najkrat%C5%A1ej_cesty"/>
	<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=H%C4%BEadanie_najkrat%C5%A1ej_cesty&amp;action=history"/>
	<updated>2026-05-03T18:07:17Z</updated>
	<subtitle>História úprav pre túto stránku na wiki</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=H%C4%BEadanie_najkrat%C5%A1ej_cesty&amp;diff=6664&amp;oldid=prev</id>
		<title>Juraj na 20:22, 16. august 2010</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=H%C4%BEadanie_najkrat%C5%A1ej_cesty&amp;diff=6664&amp;oldid=prev"/>
		<updated>2010-08-16T20:22:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sk&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Staršia verzia&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Verzia zo dňa a času 20:22, 16. august 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Riadok 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riadok 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategória:&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Študijné materiály]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategória:&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Grafové algoritmy&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;[[Kategória:Programovanie]] &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;[[Kategória:Informatika]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;[[Kategória:Teória grafov&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Draft}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Draft}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Skripta programovanie}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Skripta programovanie}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Juraj</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=H%C4%BEadanie_najkrat%C5%A1ej_cesty&amp;diff=4672&amp;oldid=prev</id>
		<title>Juraj: /* Implementácia v jazyku C */</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=H%C4%BEadanie_najkrat%C5%A1ej_cesty&amp;diff=4672&amp;oldid=prev"/>
		<updated>2010-05-30T17:19:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Implementácia v jazyku C&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sk&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Staršia verzia&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Verzia zo dňa a času 17:19, 30. máj 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l193&quot; &gt;Riadok 193:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riadok 193:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;void Cesta(int **R,int i,int j)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;void Cesta(int **R,int i,int j)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{    &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{    &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    cout&amp;lt;&amp;lt;&amp;quot;cesta z &amp;quot;&amp;lt;&amp;lt;i&amp;lt;&amp;lt;&amp;quot; do &amp;quot;&amp;lt;&amp;lt;j&amp;lt;&amp;lt;&amp;quot;: &amp;quot;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     cout&amp;lt;&amp;lt;i&amp;lt;&amp;lt;&amp;quot; &amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     cout&amp;lt;&amp;lt;i&amp;lt;&amp;lt;&amp;quot; &amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     cesta(R,i-1,j-1);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     cesta(R,i-1,j-1);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     cout&amp;lt;&amp;lt;j&amp;lt;&amp;lt;&amp;quot; &amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     cout&amp;lt;&amp;lt;j&amp;lt;&amp;lt;&amp;quot; &amp;quot;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;&amp;lt;endl&lt;/ins&gt;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Vzorové výstupy programu===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Vzorové výstupy programu===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Výpis všetkých matíc použitých v príklade:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Výpis všetkých matíc použitých v príklade:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Juraj</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=H%C4%BEadanie_najkrat%C5%A1ej_cesty&amp;diff=4670&amp;oldid=prev</id>
		<title>Juraj: Vytvorená stránka „Kategória:Študijné materiály Kategória:Programovanie  Kategória:Informatika Kategória:Teória grafov {{Draft}} {{Skripta programovanie}} Medzi algori…“</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=H%C4%BEadanie_najkrat%C5%A1ej_cesty&amp;diff=4670&amp;oldid=prev"/>
		<updated>2010-05-30T17:14:46Z</updated>

		<summary type="html">&lt;p&gt;Vytvorená stránka „&lt;a href=&quot;/index.php/Kateg%C3%B3ria:%C5%A0tudijn%C3%A9_materi%C3%A1ly&quot; title=&quot;Kategória:Študijné materiály&quot;&gt;Kategória:Študijné materiály&lt;/a&gt; &lt;a href=&quot;/index.php/Kateg%C3%B3ria:Programovanie&quot; title=&quot;Kategória:Programovanie&quot;&gt;Kategória:Programovanie&lt;/a&gt;  &lt;a href=&quot;/index.php/Kateg%C3%B3ria:Informatika&quot; title=&quot;Kategória:Informatika&quot;&gt;Kategória:Informatika&lt;/a&gt; &lt;a href=&quot;/index.php?title=Kateg%C3%B3ria:Te%C3%B3ria_grafov&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Kategória:Teória grafov (stránka neexistuje)&quot;&gt;Kategória:Teória grafov&lt;/a&gt; {{Draft}} {{Skripta programovanie}} Medzi algori…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Kategória:Študijné materiály]]&lt;br /&gt;
[[Kategória:Programovanie]] &lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Teória grafov]]&lt;br /&gt;
{{Draft}}&lt;br /&gt;
{{Skripta programovanie}}&lt;br /&gt;
Medzi algoritmy hľadajúce najkratšie cesty medzi vrcholmi grafu patria:&lt;br /&gt;
;Floyd–Warshallov algoritmus:používa sa pre nájdenie najkratšej cesty v orientovanom grafe s hranami, ktoré majú rôzne váhy. Jediný priechod algoritmu spočíta najkratšiu cestu medzi všetkými dvojicami vrcholov. Floyd–Warshallov algoritmus je typickým príkladom dynamického programovania &amp;lt;ref&amp;gt;http://cs.wikipedia.org/wiki/Floyd%C5%AFv-Warshall%C5%AFv_algoritmus&amp;lt;/ref&amp;gt;.&lt;br /&gt;
;Dijkstrov algoritmus : je jedným zo základných algoritmov  teórie grafov, jeho primárnym využitím je hľadanie najkratšej cesty v hranovo-ohodnotenom digrafe G = (V, H, c). Tento graf pozostáva z množiny  vrcholov V, množiny orientovaných hrán H a funkcie c, ktorá zobrazuje množinu hrán do množiny reálnych čísel. Teda pre ňu platí H → R. Ďalším predpokladom je aby c(h) ≥ 0, pre všetky hrany h z množiny H. Jeho autorom je holandský matematik E. W. Dijkstra a typovo ide o algoritmus najkratšej cesty z jedného vrcholu (počiatok, označme ho aj s) do ostatných, najčastejšie však do jedného konkrétneho (cieľ d)&amp;lt;ref&amp;gt;http://sk.wikipedia.org/wiki/Dijkstrov_algoritmus&amp;lt;/ref&amp;gt;.&lt;br /&gt;
;Johnsonov algoritmus: hľadá najkratšiu cestu medzi všetkými dvojicami vrcholov v riedkom orientovanom grafe. Algoritmus dovoľuje, aby mali niektoré hrany zápornú hodnotu. Hrany, ktoré sa nachádzajú v cykle, nemôžu mať zápornú hodnotu. Algoritmus pracuje na základe Belmann-Fordovho algoritmu, ktorý vypočíta transformáciu vstupného grafu, aby sa odstránili záporné hodnoty hrán. Pre výpočet najkratších ciest v tomto transformovanom grafe sa používa Dijkstrov algoritmus.&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Johnson%27s_algorithm&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Floyd–Warshallov algoritmus=&lt;br /&gt;
Floyd–Warshallov algoritmus porovnáva všetky možné cesty v grafe medzi všetkými dvojicami vrcholov. Pracuje tak, že postupne vylepšuje odhad na najkratšiu cestu potiaľ, až je zrejmé, že odhad je optimálny.&lt;br /&gt;
==Princíp algoritmu==&lt;br /&gt;
Celý princíp hľadania najkratšej cesty je postavený na elementárnej nerovnosti: Uvažujme ľubovoľný trojuholník ''ijk''. Platí, že cesta z ''i'' do ''j'' je určite kratšia ako z ''i'' do ''k'' a z ''k'' do ''j''.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:Floyd–Warshallov cesty.png|framed|center|Trojuholníková nerovnosť]]&lt;br /&gt;
&lt;br /&gt;
Pre trojuholník ''ijk'' platí:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u\left( i,j \right)\le u\left( i,k \right)+u\left( k,j \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
kde u(i,j) znamená  hrana z vrcholu ''i'' do vrcholu ''j''.&lt;br /&gt;
&lt;br /&gt;
Podmienkou pre nájdenie všetkých najkratších ciest je, že v grafe nesmie existovať cyklus v ktorom je hrana so zápornou hodnotou.&lt;br /&gt;
&lt;br /&gt;
Pri hľadaní najkratšej cesty začíname zo známymi vzdialenosťami v grafe. Ak pre 2 vrcholy v grafe G poznáme ich vzdialenosť, pokúsime sa do cesty medzi tieto dva vrcholy vložiť iný vrchol, ktorý by mohol cestu vylepšiť (pre tento vrchol nebude platiť trojuholníková nerovnosť).&lt;br /&gt;
&lt;br /&gt;
===Príprava vstupných údajov===&lt;br /&gt;
Majme graf G, ktorý je opísaný maticou [[Grafové_algoritmy#Matica susednosti |susednosti vrcholov]] &amp;lt;math&amp;gt;M_g&amp;lt;/math&amp;gt;. Túto maticu si pretransformujeme na maticu vzdialeností &amp;lt;math&amp;gt;W_G&amp;lt;/math&amp;gt; nasledovne:&lt;br /&gt;
*&amp;lt;math&amp;gt;w(i,i)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt;w(i,j)=vzdialenosť(i,j)&amp;lt;/math&amp;gt;, ak je medzi ''i'' a ''j'' hrana&lt;br /&gt;
*&amp;lt;math&amp;gt;w(i,j)=\infty &amp;lt;/math&amp;gt;, ak medzi i a j nie je hrana&lt;br /&gt;
&lt;br /&gt;
Pre graf &lt;br /&gt;
&lt;br /&gt;
[[Súbor:Directed graph w.svg|center|framed|graf G]]&lt;br /&gt;
&lt;br /&gt;
je matica susednoti:&lt;br /&gt;
&lt;br /&gt;
{{vzorec|:&amp;lt;math&amp;gt;{{M}_{G}}=\left( \begin{matrix}&lt;br /&gt;
   0 &amp;amp; 4 &amp;amp; 0 &amp;amp; 1 &amp;amp; 0  \\&lt;br /&gt;
   0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 8 &amp;amp; 0  \\&lt;br /&gt;
   0 &amp;amp; 9 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0  \\&lt;br /&gt;
   0 &amp;amp; 0 &amp;amp; 7 &amp;amp; 0 &amp;amp; 5  \\&lt;br /&gt;
   3 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0  \\&lt;br /&gt;
\end{matrix} \right)&amp;lt;/math&amp;gt;|1}}&lt;br /&gt;
&lt;br /&gt;
a matica nakratších ciest:&lt;br /&gt;
&lt;br /&gt;
{{vzorec|:&amp;lt;math&amp;gt;{{W}_{G}}=\left( \begin{matrix}&lt;br /&gt;
   0 &amp;amp; 4 &amp;amp; \infty  &amp;amp; 1 &amp;amp; 3  \\&lt;br /&gt;
   4 &amp;amp; 0 &amp;amp; 9 &amp;amp; 8 &amp;amp; \infty   \\&lt;br /&gt;
   \infty  &amp;amp; 9 &amp;amp; 0 &amp;amp; 7 &amp;amp; 0  \\&lt;br /&gt;
   1 &amp;amp; 8 &amp;amp; 7 &amp;amp; 0 &amp;amp; 5  \\&lt;br /&gt;
   3 &amp;amp; \infty  &amp;amp; \infty  &amp;amp; 5 &amp;amp; 0  \\&lt;br /&gt;
\end{matrix} \right)&amp;lt;/math&amp;gt;|2}}&lt;br /&gt;
&lt;br /&gt;
===Pseudokód===&lt;br /&gt;
Algoritmus pracuje s maticou najkratších ciest ''W''. Hranu, resp. cestu medzi vrcholmi i a j budeme označovať u(i,j).&lt;br /&gt;
&lt;br /&gt;
Princíp funkčnosti&lt;br /&gt;
#Pre všetky kombinácie vrcholov ''i'', ''j'' grafu G:&lt;br /&gt;
#Do cesty u(i,j) pridaj ľubovoľný vrchol k. (postupne budeme skúšať všetky vrcholy)&lt;br /&gt;
#Ak platí: &amp;lt;math&amp;gt;u\left( i,j \right)\ge u\left( i,k \right)+u\left( k,j \right)&amp;lt;/math&amp;gt; tak 4&lt;br /&gt;
#&amp;lt;math&amp;gt;u\left( i,j \right)= u\left( i,k \right)+u\left( k,j \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Preudokód&lt;br /&gt;
&amp;lt;source lang=&amp;quot;pascal&amp;quot; line&amp;gt;&lt;br /&gt;
funkcia FloydWarshall ()&lt;br /&gt;
cesta[][] // dvojrozmerné pole - matica najkratších ciest.&lt;br /&gt;
 pre vsetky k: k = 1 .. N&lt;br /&gt;
   begin&lt;br /&gt;
    pre každú dvojicu (i,j) z množiny vrcholov (1..N)&lt;br /&gt;
    begin&lt;br /&gt;
       cesta[i][j] = min(cesta[i][j], cesta[i][k] + cesta[k][j]);&lt;br /&gt;
    end&lt;br /&gt;
 end&lt;br /&gt;
endproc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ukážkový príklad===&lt;br /&gt;
Majme graf G, ktorého maticu najkratších ciest opisuje vzorec 2.&lt;br /&gt;
&lt;br /&gt;
*Hľadáme cestu z vrholu 1 do vrcholu 3. Hodnota v matici W je nekonečno. &amp;lt;math&amp;gt;w(i,j)=\infty&amp;lt;/math&amp;gt;&lt;br /&gt;
*Do cesty sa pokúsime pridať vrchol k=2. Platí teda: w(1,3)&amp;gt;w(1,2)+w(2,3)&lt;br /&gt;
*Vrchol k vylepší cestu, teda ho do cesty zaradíme&lt;br /&gt;
**w(1,3)=4+9=13&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;{{W}_{G}}=\left( \begin{matrix}&lt;br /&gt;
   0 &amp;amp; 4 &amp;amp; 13  &amp;amp; 1 &amp;amp; 3  \\&lt;br /&gt;
   4 &amp;amp; 0 &amp;amp; 9 &amp;amp; 8 &amp;amp; \infty   \\&lt;br /&gt;
   \infty  &amp;amp; 9 &amp;amp; 0 &amp;amp; 7 &amp;amp; 0  \\&lt;br /&gt;
   1 &amp;amp; 8 &amp;amp; 7 &amp;amp; 0 &amp;amp; 5  \\&lt;br /&gt;
   3 &amp;amp; \infty  &amp;amp; \infty  &amp;amp; 5 &amp;amp; 0  \\&lt;br /&gt;
\end{matrix} \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Skúsme do cesty pridať vrchol k=4: &lt;br /&gt;
**w(1,3)&amp;gt;w(1,4)+w(4,3)&lt;br /&gt;
*Vrchol k vylepší cestu, teda ho do cesty zaradíme&lt;br /&gt;
**w(1,3)=1+7=8&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;{{W}_{G}}=\left( \begin{matrix}&lt;br /&gt;
   0 &amp;amp; 4 &amp;amp; 8 &amp;amp; 1 &amp;amp; 3  \\&lt;br /&gt;
   4 &amp;amp; 0 &amp;amp; 9 &amp;amp; 8 &amp;amp; \infty   \\&lt;br /&gt;
   \infty  &amp;amp; 9 &amp;amp; 0 &amp;amp; 7 &amp;amp; 0  \\&lt;br /&gt;
   1 &amp;amp; 8 &amp;amp; 7 &amp;amp; 0 &amp;amp; 5  \\&lt;br /&gt;
   3 &amp;amp; \infty  &amp;amp; \infty  &amp;amp; 5 &amp;amp; 0  \\&lt;br /&gt;
\end{matrix} \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
===Implementácia v jazyku C===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot; line&amp;gt;&lt;br /&gt;
void floyd(int **W,int pocetV)&lt;br /&gt;
{&lt;br /&gt;
 int i,j,k;&lt;br /&gt;
 for(k=0 ; k&amp;lt;pocetV ; k++) &lt;br /&gt;
    for(i=0 ; i&amp;lt;pocetV ; i++) &lt;br /&gt;
        for(j=0 ; j&amp;lt;pocetV ; j++)&lt;br /&gt;
            W[i][j]=min(W[i][j] , W[i][k]+W[k][j]);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
'''Opis kódu:'''&lt;br /&gt;
&lt;br /&gt;
*W: matica najkratších ciest&lt;br /&gt;
*pocetV: rozmer matice W (počet vrcholov grafu)&lt;br /&gt;
==Modifikácia algoritmu==&lt;br /&gt;
*Navrhnutý algoritmus síce zistí najkratšiu cestu, ale nepamätá si cestu.&lt;br /&gt;
&lt;br /&gt;
Pre uloženie si vrcholov, ktoré vylepšili pôvodnú cestu medzi hranami grafu si vytvorme maticu navrhnutých ciest R.&lt;br /&gt;
&lt;br /&gt;
Hodnoty matice R:&lt;br /&gt;
*&amp;lt;math&amp;gt;r(i,j)=0&amp;lt;/math&amp;gt;, ak sú vrholy i a j susedné&lt;br /&gt;
*&amp;lt;math&amp;gt;r\left( i,j \right)=k&amp;lt;/math&amp;gt;, ak &amp;lt;math&amp;gt;w\left( i,k \right)+w\left( k,j \right)&amp;lt;w\left( i,j \right)&amp;lt;/math&amp;gt; - teda ak vrchol ''k'' vylepšil cestu z ''i'' do ''j''.&lt;br /&gt;
&lt;br /&gt;
Matice navrhnutých ciest pre graf G je nasledovná:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;{{R}_{G}}=\left( \begin{matrix}&lt;br /&gt;
   0 &amp;amp; 0 &amp;amp; 4 &amp;amp; 0 &amp;amp; 4  \\&lt;br /&gt;
   5 &amp;amp; 0 &amp;amp; 4 &amp;amp; 0 &amp;amp; 4  \\&lt;br /&gt;
   5 &amp;amp; 0 &amp;amp; 0 &amp;amp; 2 &amp;amp; 4  \\&lt;br /&gt;
   5 &amp;amp; 5 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0  \\&lt;br /&gt;
   0 &amp;amp; 1 &amp;amp; 4 &amp;amp; 1 &amp;amp; 0  \\&lt;br /&gt;
\end{matrix} \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vysvetlime si riadok význam prvkov na pre najkratšiu cestu z vrcholu 3 do vrcholu 1. Jedná sa teda o prvok matice R(3,1)&lt;br /&gt;
*R(3,1)=5: cesta z 3 do 1 ide cez vrchol 5. Hľadáme teda cestu z 3 do 5.&lt;br /&gt;
*R(3,5)=4: cesta z 3 do 5 ide cez vrchol 4. Hľadáme teda cestu z 3 do 4.&lt;br /&gt;
*R(3,4)=2: cesta z 3 do 4 ide cez vrchol 2. Hľadáme teda cestu z 3 do 2.&lt;br /&gt;
*R(3,2)=0: vrcholy 3 a 2 sú susedné.&lt;br /&gt;
&lt;br /&gt;
===Implementácia v jazyku C===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot; line&amp;gt;&lt;br /&gt;
void floyd2(int **M,int **R,int r)&lt;br /&gt;
{&lt;br /&gt;
 int i,j,k;&lt;br /&gt;
 for(k=0;k&amp;lt;r;k++) &lt;br /&gt;
    for(i=0;i&amp;lt;r;i++) &lt;br /&gt;
       for(j=0;j&amp;lt;r;j++)&lt;br /&gt;
          if(M[i][j]&amp;gt;M[i][k]+M[k][j])&lt;br /&gt;
          {&lt;br /&gt;
             M[i][j]=M[i][k]+M[k][j];&lt;br /&gt;
             R[i][j]=k+1;&lt;br /&gt;
          }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
'''Opis kódu:'''&lt;br /&gt;
&lt;br /&gt;
*M: matica najkratších ciest&lt;br /&gt;
*R: matica navrhnutých ciest&lt;br /&gt;
*r: rozmer matice W (počet vrcholov grafu)&lt;br /&gt;
* Poznámka: v riadku 10 priraďujeme do matice R hodnoty k+1 z toho dôvodu, pretože vrcholy v grafe sú označené 1..n, ale vnútorná reprezentácia je 0..n-1.&lt;br /&gt;
&lt;br /&gt;
Pre výpis matice najkratších ciest si vytvoríme funkciu, ktorá z matice R zistí navrhovanú cestu. Funkcia bude mať 3 parametre: maticu R, vrchol i a vrchol j. Ak je v matici na indexe i,j hodnota rôzna od nuly, znamená to že medzi vrcholmi je cesta (i,k) a (k,j). Na zabezpečenie takéhoto výpisu využijeme mechanizmus rekurzie. Rekurzívne volanie sa skončí vtedy, keď R[i][j]=0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot; line&amp;gt;&lt;br /&gt;
void cesta(int **R,int i,int j)  // vypíše cestu z i do j&lt;br /&gt;
{&lt;br /&gt;
  int k=R[i][j]; &lt;br /&gt;
  if(k!=0)&lt;br /&gt;
  {     //pozn: k-1 je uvedene kvoli vnutornej reprezentacii vrcholov&lt;br /&gt;
        cesta(R,i,k-1);  // cesta z i do k&lt;br /&gt;
        cout&amp;lt;&amp;lt;k&amp;lt;&amp;lt;&amp;quot; &amp;quot;;    // vypis, kadial vedie cesta&lt;br /&gt;
        cesta(R,k-1,j);  // cesta z k do j&lt;br /&gt;
  } &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
'''Opis kódu:'''&lt;br /&gt;
&lt;br /&gt;
*R: matica navrhnutých ciest&lt;br /&gt;
*i: vrchol i&lt;br /&gt;
*j: vrchol j.&lt;br /&gt;
*Poznámka: V príklade máme vrcholy označené 1..n. Vo vnútornej reprezentácii (matica M) sú označené ako 0..n-1, do funkcie cesta musíme použiť číslovanie vrcholov podľa vnútornej reprezentácie. Aby sme sa tomuto vyhli, vytvoríme si funkciu, ktorá nám tento &amp;quot;prevod&amp;quot; zabezpečí.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot; line&amp;gt;&lt;br /&gt;
void Cesta(int **R,int i,int j)&lt;br /&gt;
{   &lt;br /&gt;
    cout&amp;lt;&amp;lt;i&amp;lt;&amp;lt;&amp;quot; &amp;quot;;&lt;br /&gt;
    cesta(R,i-1,j-1);&lt;br /&gt;
    cout&amp;lt;&amp;lt;j&amp;lt;&amp;lt;&amp;quot; &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===Vzorové výstupy programu===&lt;br /&gt;
Výpis všetkých matíc použitých v príklade:&lt;br /&gt;
:&amp;lt;math&amp;gt;{{W}_{G}}=\left( \begin{matrix}&lt;br /&gt;
   0 &amp;amp; 4 &amp;amp; 8 &amp;amp; 1 &amp;amp; 6  \\&lt;br /&gt;
   16 &amp;amp; 0 &amp;amp; 8 &amp;amp; 15 &amp;amp; 13   \\&lt;br /&gt;
   25  &amp;amp; 9 &amp;amp; 0 &amp;amp; 17 &amp;amp; 22  \\&lt;br /&gt;
   1 &amp;amp; 12 &amp;amp; 7 &amp;amp; 0 &amp;amp; 5  \\&lt;br /&gt;
   3 &amp;amp; 7  &amp;amp; 11  &amp;amp; 4 &amp;amp; 0  \\&lt;br /&gt;
\end{matrix} \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;{{R}_{G}}=\left( \begin{matrix}&lt;br /&gt;
   0 &amp;amp; 0 &amp;amp; 4 &amp;amp; 0 &amp;amp; 4  \\&lt;br /&gt;
   5 &amp;amp; 0 &amp;amp; 4 &amp;amp; 0 &amp;amp; 4   \\&lt;br /&gt;
   5  &amp;amp; 0 &amp;amp; 0 &amp;amp; 2 &amp;amp; 4  \\&lt;br /&gt;
   5 &amp;amp; 5 &amp;amp; 0 &amp;amp; 0 &amp;amp; 0  \\&lt;br /&gt;
   0 &amp;amp; 1  &amp;amp; 4  &amp;amp; 1 &amp;amp; 0  \\&lt;br /&gt;
\end{matrix} \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Výpisy najkratších navrhnutých ciest:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
cesta z 1 do 2: 1 2 &lt;br /&gt;
cesta z 1 do 3: 1 4 3 &lt;br /&gt;
cesta z 1 do 4: 1 4 &lt;br /&gt;
cesta z 1 do 5: 1 4 5 &lt;br /&gt;
cesta z 2 do 1: 2 4 5 1 &lt;br /&gt;
cesta z 2 do 3: 2 4 3 &lt;br /&gt;
cesta z 2 do 4: 2 4 &lt;br /&gt;
cesta z 2 do 5: 2 4 5 &lt;br /&gt;
cesta z 3 do 1: 3 2 4 5 1 &lt;br /&gt;
cesta z 3 do 2: 3 2 &lt;br /&gt;
cesta z 3 do 4: 3 2 4 &lt;br /&gt;
cesta z 3 do 5: 3 2 4 5 &lt;br /&gt;
cesta z 4 do 1: 4 5 1 &lt;br /&gt;
cesta z 4 do 2: 4 5 1 2 &lt;br /&gt;
cesta z 4 do 3: 4 3 &lt;br /&gt;
cesta z 4 do 5: 4 5 &lt;br /&gt;
cesta z 5 do 1: 5 1 &lt;br /&gt;
cesta z 5 do 2: 5 1 2 &lt;br /&gt;
cesta z 5 do 3: 5 1 4 3 &lt;br /&gt;
cesta z 5 do 4: 5 1 4 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=Dijkstrov algoritmus=&lt;br /&gt;
=Johnsonov algoritmus=&lt;br /&gt;
=Zdroje a odkazy=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Juraj</name></author>
		
	</entry>
</feed>