<?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=Preh%C4%BEad%C3%A1vanie_do_%C5%A1%C3%ADrky</id>
	<title>Prehľadávanie do šírky - 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=Preh%C4%BEad%C3%A1vanie_do_%C5%A1%C3%ADrky"/>
	<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Preh%C4%BEad%C3%A1vanie_do_%C5%A1%C3%ADrky&amp;action=history"/>
	<updated>2026-05-03T16:50:11Z</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=Preh%C4%BEad%C3%A1vanie_do_%C5%A1%C3%ADrky&amp;diff=6662&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=Preh%C4%BEad%C3%A1vanie_do_%C5%A1%C3%ADrky&amp;diff=6662&amp;oldid=prev"/>
		<updated>2010-08-16T20:22:19Z</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=Preh%C4%BEad%C3%A1vanie_do_%C5%A1%C3%ADrky&amp;diff=4191&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}} Prehľadáva…“</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Preh%C4%BEad%C3%A1vanie_do_%C5%A1%C3%ADrky&amp;diff=4191&amp;oldid=prev"/>
		<updated>2010-05-16T17:27:00Z</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}} Prehľadáva…“&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;
Prehľadávanie do šírky (anglicky Breadth-first search - BFS) je grafový algoritmus, ktorý postupne prechádza všetky vrcholy v danej komponente súvislosti. Algoritmus najprv prejde všetkých susedov začiatočného vrcholu, potom susedov týchto susedov atď. až pokiaľ neprejde celú komponentu súvislosti.&lt;br /&gt;
==Princíp algoritmu==&lt;br /&gt;
Principiálny algoritmus sa skladá z nasledujúcich krokov &amp;lt;ref&amp;gt;Prehľadávanie grafov - http://edi.fmph.uniba.sk/~salanci/C/34/index.html&amp;lt;/ref&amp;gt;:&lt;br /&gt;
* v grafe začíname od určitého, stanoveného vrcholu,&lt;br /&gt;
* postupne spracujeme všetky susedné vrcholy, ktoré sú s počiatočným vrcholom spojené hranou (majú vzdialenosť 1 hrana),&lt;br /&gt;
* až potom z týchto vrcholov navštívime ďalšie susediace a nespracované vrcholy (tie sú už od počiatočného vrcholu vzdialené o dve hrany), potom vrcholy vzdialené o 3 hrany, atď.&lt;br /&gt;
* aby sme rozlíšili tie vrcholy, ktoré sme už navštívili a zbytočne ich opätovne nespracovávali, použijeme stavovú položku IsVisited v každom vrchole:&lt;br /&gt;
** na začiatku zabezpečíme, aby mali všetky vrcholy nastavenú položku IsVisited na hodnotu false,&lt;br /&gt;
**postupne, ako budeme vrcholy navštevovať, budeme týmto vrcholom nastavovať IsVisited na hodnotu true,&lt;br /&gt;
* prechádzanie do šírky vyzerá tak, akoby sa od počiatočného vrcholu grafom šírila vlna do vzdialenejších a vzdialenejších vrcholov .&lt;br /&gt;
&lt;br /&gt;
==Aplikácie algoritmu BFS==&lt;br /&gt;
* Hľadanie všetkých uzlov v jednom súvislom komponente grafu,&lt;br /&gt;
* Cheney-ho algoritmus,&lt;br /&gt;
* hľadanie najkratšej cesty medzi dvoma vrcholmi ,&lt;br /&gt;
* testovanie grafu na bipartitnosť.&lt;br /&gt;
&lt;br /&gt;
==Implementácia algoritmu BSF==&lt;br /&gt;
===Preudokód===&lt;br /&gt;
#Označkujeme iba vrchol r.&lt;br /&gt;
#*VZDIALENOST(r)=0. &lt;br /&gt;
#*Do zoznamu Q typu LIFO dáme r.&lt;br /&gt;
#Ak je Q prázdna, tak koniec&lt;br /&gt;
#Z fronty Q zoberieme vrchol a označíme ho v.&lt;br /&gt;
#Pre každého následníka w vrcholu v (ktorý nie je označkovaný) priradíme: &lt;br /&gt;
##VZDIALENOST(w)=VZDIALENOST(v)+1&lt;br /&gt;
##Označkujeme w&lt;br /&gt;
##Pripíšeme w na koniec zoznamu Q&lt;br /&gt;
#Choď na krok 2&lt;br /&gt;
&lt;br /&gt;
'''Ukážka k predchádzajúcemu pseudokódu:'''&lt;br /&gt;
&lt;br /&gt;
Máme graf s vrcholmi V={r,s,t,u,v,w,x,y} a hranami E={(v,r),(r,s),(s,w),(w,t),(w,x),(t,u),(t,x),(u,y),(x,y) }&lt;br /&gt;
&lt;br /&gt;
*Graf začneme prehšadávať vo vrchole ''s''. Krok 1: označkujeme si vrchol s: VZDIALENOST(s)=0, do zoznamu pridáme vrchol s: Q=[s]&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bfs1.gif|center]]&lt;br /&gt;
&lt;br /&gt;
* Krok 3 a 4: Z fronty Q odoberieme vrchol s a vložíme tam všetky vrcholy, ktoré sú susedmi vrcholu s a ešte nie sú označkované. Vzdialenosť od vrchola s je zapísaná vo vrchole.&lt;br /&gt;
** Q=[w,r]&lt;br /&gt;
** VZDIALENOST[w]=1,  VZDIALENOST[r]=1.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bfs2.gif|center]]&lt;br /&gt;
&lt;br /&gt;
* Z fronty Q odoberieme vrchol w a vložíme tam neoznačkovaných susedov vrcholu w (vrcholy t, x):&lt;br /&gt;
** Q=[r,t,x]&lt;br /&gt;
** VZDIALENOST[t]=2,  VZDIALENOST[x]=2.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bfs3.gif|center]]&lt;br /&gt;
&lt;br /&gt;
* Z fronty Q odoberieme vrchol r a vložíme tam neoznačkovaných susedov vrcholu r (vrchol v):&lt;br /&gt;
** Q=[t,x,v]&lt;br /&gt;
** VZDIALENOST[v]=2.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bfs4.gif|center]]&lt;br /&gt;
&lt;br /&gt;
* Z fronty Q odoberieme vrchol t a vložíme tam neoznačkovaných susedov vrcholu t (vrchol u):&lt;br /&gt;
** Q=[x,v,u]&lt;br /&gt;
** VZDIALENOST[u]=3.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bfs5.gif|center]]&lt;br /&gt;
&lt;br /&gt;
* Z fronty Q odoberieme vrchol x a vložíme tam neoznačkovaných susedov vrcholu x (vrchol y):&lt;br /&gt;
** Q=[v,u,y]&lt;br /&gt;
** VZDIALENOST[y]=3.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bfs6.gif|center]]&lt;br /&gt;
&lt;br /&gt;
* Z fronty Q odoberieme vrchol v. Pre vrchol v neexistujú také susedné vrcholy, ktoré ešte neboli označkované.&lt;br /&gt;
** Q=[u,y]&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bfs7.gif|center]]&lt;br /&gt;
&lt;br /&gt;
* Z fronty Q odoberieme vrchol u. Pre vrchol u neexistujú také susedné vrcholy, ktoré ešte neboli označkované.&lt;br /&gt;
** Q=[y]&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bfs8.gif|center]]&lt;br /&gt;
&lt;br /&gt;
* Z fronty Q odoberieme vrchol y. Pre vrchol y neexistujú také susedné vrcholy, ktoré ešte neboli označkované.&lt;br /&gt;
** Q=[]&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bfs9.gif|center]]&lt;br /&gt;
&lt;br /&gt;
*Koniec&lt;br /&gt;
&lt;br /&gt;
===Kód v jazyku C===&lt;br /&gt;
Algoritmus prehľadávania do šírky naprogramujeme pomocou radu. Graf budeme reprezentovať pomocou matice susednosti vrcholov (pozri [[Grafové algoritmy]]). &lt;br /&gt;
Nech sú vrcholy označené malými písmenami abecedy (a,b,c,d,...z). Prvý vrchol nech je označený 'a', druhý 'b' atď. Matica reprezentucúja graf bude celočíselná matica, kde riadok č. 0 reprezentuje prvý vrchol, čiže vrchol 'a'. &lt;br /&gt;
&lt;br /&gt;
Opis funkčného prototypu:&lt;br /&gt;
&lt;br /&gt;
'''int **graf''':maticová reprezentácia grafu.&lt;br /&gt;
&lt;br /&gt;
'''int pv''': počet vrcholov grafu ''graf''.&lt;br /&gt;
&lt;br /&gt;
'''int r''': požiatočný vrchol&lt;br /&gt;
&lt;br /&gt;
'''int vzdialenost[]''': pole vzdialeností od vrcholu r&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot; line&amp;gt;&lt;br /&gt;
void bfs(int **graf, int pv, int r, int vzdialenost[])&lt;br /&gt;
{   int v,i,j;&lt;br /&gt;
    int *oznackovane;&lt;br /&gt;
    oznackovane=new int[pv+1];&lt;br /&gt;
    for(int i=0;i&amp;lt;pv;i++)&lt;br /&gt;
    {&lt;br /&gt;
      vzdialenost[i]=10000;&lt;br /&gt;
      oznackovane[i]=0;&lt;br /&gt;
    }&lt;br /&gt;
    FIFO fronta;&lt;br /&gt;
    fronta.hlava=fronta.chvost=0;&lt;br /&gt;
    push(fronta,r-'a');&lt;br /&gt;
    oznackovane[r-'a']=1;&lt;br /&gt;
    while(!jePrazdne(fronta))&lt;br /&gt;
    {&lt;br /&gt;
       v=pop(fronta);      &lt;br /&gt;
       for(i=0;i&amp;lt;pv;i++)&lt;br /&gt;
       {&lt;br /&gt;
          if(graf[v][i]==1 &amp;amp;&amp;amp; oznackovane[i]==0)&lt;br /&gt;
          {  vzdialenost[i]=vzdialenost[v]+1;&lt;br /&gt;
             oznackovane[i]=1;&lt;br /&gt;
             push(fronta,i);&lt;br /&gt;
          }&lt;br /&gt;
       }            &lt;br /&gt;
    }      &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Komentáre ku zdrojovému kódu====&lt;br /&gt;
*Riadok 3-4: ''oznackovane'' - pole v ktorom bude zoznam označkovaných vrhcolov. Ak oznackovane[i]=1, tak je vrhcol i označkovaný.&lt;br /&gt;
*Riadok 7-8: Na začiatku sú všetky vrcholy neoznačkované a vzdialenosť z vrcholu ''r'' je nekonečno (resp. veľmi veľká vzdialenosť).&lt;br /&gt;
*Riadok 10: Fronta, do ktorej budú ukladané vrcholy, cez ktoré sme prešli. Dátová štruktúra fronta je opísaná v časti [[FIFO]].&lt;br /&gt;
*Riadok 12: Vrcholy sú označené písmenami ('a', 'b', ...), ale vnútorná reprezentácia vrcholov sú čísla (0,1,...). Preto pri vkladaní vrcholu ''r'' do fronty vložíme poradie vrcholu grafu ''graf''.&lt;br /&gt;
*Riadok 13: Vrchol ''r'' si označíme ako označkovaný.&lt;br /&gt;
*Riadok 15-25: Opakujeme cyklus, pokiaľ sú vo fronte nejaké vrcholy:&lt;br /&gt;
**Riadok 16: Z fronty vyberieme jeden vrchol (v), &lt;br /&gt;
**Riadok 17: V matici susednosti nájdeme všetkky vrcholy, ktoré susedia s vrcholom v.&lt;br /&gt;
**Riadok 19: Ak vrhol ''i'' susedí v vrcholom ''v'' a zároveň vrchol ''v'' ešte nie je označkovaný:&lt;br /&gt;
**Riadok 20: Vzdialenosť vrcholu ''i'' od vrcholu ''r'' bude vzdialenosť od ''r'' po ''v'' + 1&lt;br /&gt;
**Riadok 21: Vrchol i označkujeme&lt;br /&gt;
**Riadok 22: Vrchol i vložíme do fronty&lt;br /&gt;
==Použité zdroje==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
* http://en.wikipedia.org/wiki/Breadth-first_search&lt;/div&gt;</summary>
		<author><name>Juraj</name></author>
		
	</entry>
</feed>