<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hu">
	<id>https://vik.wiki/index.php?action=history&amp;feed=atom&amp;title=AlgElmeletiKerdesekKidolgozas</id>
	<title>AlgElmeletiKerdesekKidolgozas - Laptörténet</title>
	<link rel="self" type="application/atom+xml" href="https://vik.wiki/index.php?action=history&amp;feed=atom&amp;title=AlgElmeletiKerdesekKidolgozas"/>
	<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=AlgElmeletiKerdesekKidolgozas&amp;action=history"/>
	<updated>2026-05-17T21:08:32Z</updated>
	<subtitle>Az oldal laptörténete a wikiben</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://vik.wiki/index.php?title=AlgElmeletiKerdesekKidolgozas&amp;diff=136974&amp;oldid=prev</id>
		<title>Unknown user: Új oldal, tartalma: „{{GlobalTemplate|Infoalap|AlgElmeletiKerdesekKidolgozas}}  * Lehet, hogy rossz. * Lehet, hogy nem ezt akarják válasznak.  __TOC__  Cs. Cs. D., cc699 kukac hszk.bme.hu…”</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=AlgElmeletiKerdesekKidolgozas&amp;diff=136974&amp;oldid=prev"/>
		<updated>2012-10-21T19:52:13Z</updated>

		<summary type="html">&lt;p&gt;Új oldal, tartalma: „{{GlobalTemplate|Infoalap|AlgElmeletiKerdesekKidolgozas}}  * Lehet, hogy rossz. * Lehet, hogy nem ezt akarják válasznak.  __TOC__  Cs. Cs. D., cc699 kukac hszk.bme.hu…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Új lap&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{GlobalTemplate|Infoalap|AlgElmeletiKerdesekKidolgozas}}&lt;br /&gt;
&lt;br /&gt;
* Lehet, hogy rossz.&lt;br /&gt;
* Lehet, hogy nem ezt akarják válasznak.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
Cs. Cs. D., cc699 kukac hszk.bme.hu, 2009. január, v0.2&lt;br /&gt;
&lt;br /&gt;
==Írja le a piros-kék algoritmust a piros és kék szabályokkal együtt!==&lt;br /&gt;
&lt;br /&gt;
Az algoritmust minimális súlyú feszítőfák keresésére használják. A &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; gráf éleit kiszínezzük pirosra, vagy &amp;lt;i&amp;gt;kékre&amp;lt;/i&amp;gt;, úgy hogy közben a gráf végig &amp;lt;u&amp;gt;takaros&amp;lt;/u&amp;gt; legyen. Végül, ha már minden élet kiszíneztünk, a kék élek összessége adja a keresett eredményt.&lt;br /&gt;
	f&lt;br /&gt;
&amp;lt;i&amp;gt;Takaros színezés&amp;lt;/i&amp;gt;: &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; gráf éleinek színezésére az algoritmus minden szakaszában igaz, hogy van olyan minimális költségű feszítőfája, ami az összes &amp;lt;i&amp;gt;kék&amp;lt;/i&amp;gt; élet tartalmazza, és egyetlen &amp;lt;i&amp;gt;piros&amp;lt;/i&amp;gt; élet sem tartalmaz.&lt;br /&gt;
&lt;br /&gt;
Az alábbi két szabályt tetszőlegesen alkalmazzuk addig, míg van színezetlen él a gráfban:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;i&amp;gt;Kék szabály&amp;lt;/i&amp;gt;: Kiválasztunk egy olyan nem üres &amp;lt;math&amp;gt;X \subset V&amp;lt;/math&amp;gt; csúcshalmazt, amiből nem vezet ki kék él. Ezután egy legkisebb súlyú &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt;-ből kimenő (színtelen) élet fessünk kékre.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;i&amp;gt;Piros szabály&amp;lt;/i&amp;gt;: Válasszunk &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;-ben egy egyszerű kört, amiben nincs piros él. Ezután a legnagyobb súlyú színtelen élet fessük pirosra.&lt;br /&gt;
&lt;br /&gt;
A szabályok alkalmazása után mindig takaros színezést kapunk, és mindig tudjuk folytatni az algoritmust addig, míg minden élet ki nem színezünk.&lt;br /&gt;
&lt;br /&gt;
Tk. 153. oldal&lt;br /&gt;
&lt;br /&gt;
==Definiálja, hogy mikor nevezünk egy nyelvet NP-teljesnek, és adjon meg két ismerten NP-teljes nyelvet a definíciójukkal együtt!==&lt;br /&gt;
&lt;br /&gt;
Az &amp;lt;math&amp;gt;L \subseteq I^*&amp;lt;/math&amp;gt; nyelv NP-teljes, ha &amp;lt;math&amp;gt;L \in NP&amp;lt;/math&amp;gt;, és minden &amp;lt;math&amp;gt;L&amp;#039; \in NP&amp;lt;/math&amp;gt; nyelv esetén létezik &amp;lt;math&amp;gt;L&amp;#039; \prec L&amp;lt;/math&amp;gt; Karp-redukció.&lt;br /&gt;
&lt;br /&gt;
3-SZÍN nyelv: A három színnel kiszínezhető gráfokból álló nyelv. NP-teljes, mert 3-SAT &amp;lt;math&amp;gt;\prec&amp;lt;/math&amp;gt; 3-SZIN, és 3-SAT NP-teljes.&lt;br /&gt;
&lt;br /&gt;
H nyelv: A H Hamilton-kört tartalmazó gráfokból álló nyelv. NP-teljes, mert IH &amp;lt;math&amp;gt;\prec&amp;lt;/math&amp;gt; H és IH NP-terljes.&lt;br /&gt;
&lt;br /&gt;
Tk. 271. oldal&lt;br /&gt;
&lt;br /&gt;
==Definiálja a közelítő algoritmus fogalmát maximalizálási problémákra! Írja le az általános gráfban maximális méretű párosítás keresésének problémájára adott 2-közelítő algoritmust, és bizonyítsa is be, hogy az adott algoritmus 2-közelítő!==&lt;br /&gt;
&lt;br /&gt;
	TODO&lt;br /&gt;
&lt;br /&gt;
==Definiálja a 2-3 fákat. Írja le a BESZÚR művelet megvalósítását, és adja meg a lépésszámát is. Indoklás nem szükséges.==&lt;br /&gt;
&lt;br /&gt;
	A 2-3 fa egy olyan keresőfa, amelyben a tárolni kívánt rekordok a fa leveleiben vannak, balról jobbra növekvő sorrendben. Egy belső csúcs kétféle lehet: 2 kulcsból és 3 mutatóból áll, vagy 1 kucsból és két mutatóból áll:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&amp;lt;math&amp;gt;m_1&amp;lt;/math&amp;gt;||&amp;lt;math&amp;gt;s_1&amp;lt;/math&amp;gt;||&amp;lt;math&amp;gt;m_2&amp;lt;/math&amp;gt;||&amp;lt;math&amp;gt;s_2&amp;lt;/math&amp;gt;||&amp;lt;math&amp;gt;m_3&amp;lt;/math&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&amp;lt;math&amp;gt;m_1&amp;lt;/math&amp;gt;||&amp;lt;math&amp;gt;s_1&amp;lt;/math&amp;gt;||&amp;lt;math&amp;gt;m_2&amp;lt;/math&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A kulcsokra fennáll, hogy &amp;lt;math&amp;gt;s_1 &amp;lt; s_2&amp;lt;/math&amp;gt;, valamint &amp;lt;math&amp;gt;m_1&amp;lt;/math&amp;gt; minden kulcsa kisebb, mint &amp;lt;math&amp;gt;s_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;m_2&amp;lt;/math&amp;gt;-ben &amp;lt;math&amp;gt;s_1&amp;lt;/math&amp;gt; a legkisebb kulcs, &amp;lt;math&amp;gt;m_3&amp;lt;/math&amp;gt;-ban &amp;lt;math&amp;gt;s_2&amp;lt;/math&amp;gt; a legkisebb kulcs.&lt;br /&gt;
&lt;br /&gt;
A fa levelei a györkértől egyforma távolságra vannak.&lt;br /&gt;
&lt;br /&gt;
BESZÚR: Először KERES(s,S)-t csinálunk, ha megtaláljuk &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-t, akkor végeztünk, ha nem akkor, ha a legalsó belső csúcs a kereső út mentén:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;i&amp;gt;1 kulcsú&amp;lt;/i&amp;gt;: A megfelelő helyre beszúrjuk az &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-t attól függően, hogy a másik két levélnél kisebb, nagyobb, vagy köztük van. A kulcsokat is eszerint módosítjuk.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;i&amp;gt;2 kulcsú&amp;lt;/i&amp;gt;: A &amp;lt;i&amp;gt;csúcsvágás&amp;lt;/i&amp;gt; módszerét alkalmazzuk. A kétkulcsú rekordot szétbontjuk két darab egykulcsúra, kiegészítve &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;-el. A keletkező új csúcsot be kell jegyeznünk a régi (szétvágott) csúcs apjába ugyanezzel a módszerrel. Ha esetleg ez a folyamat felgyűrűzik a gyökérig, akkor egy új gyökeret veszünk fel és a mutatókat a két szétvágott részfára állítjuk.&lt;br /&gt;
&lt;br /&gt;
Tk. 67. oldal&lt;br /&gt;
&lt;br /&gt;
==Definiálja a Karp-redukciót, és bizonyítsa be, hogy ha &amp;lt;math&amp;gt;L_1 \in P&amp;lt;/math&amp;gt; és &amp;lt;math&amp;gt;L_2 \prec L_1&amp;lt;/math&amp;gt;, akkor &amp;lt;math&amp;gt;L_2 \in P&amp;lt;/math&amp;gt;.==&lt;br /&gt;
&lt;br /&gt;
		Az &amp;lt;math&amp;gt;f : I^* \rightarrow I^*&amp;lt;/math&amp;gt; leképezés az &amp;lt;math&amp;gt;L_1 \subseteq I^*&amp;lt;/math&amp;gt; nyelv Karp-redukciója az &amp;lt;math&amp;gt;L_2 \subseteq I^*&amp;lt;/math&amp;gt; nyelvre, ha&lt;br /&gt;
&lt;br /&gt;
* Tetszőleges &amp;lt;math&amp;gt;x \in I^*&amp;lt;/math&amp;gt; szóra &amp;lt;math&amp;gt;x \in L_1&amp;lt;/math&amp;gt; akkor és csak akkor, ha &amp;lt;math&amp;gt;f(x) \in L_2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;f \in FP&amp;lt;/math&amp;gt;, azaz &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; (leképezés) polinom időben számolható.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L_1 \prec L_2 \circeq &amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;L_1&amp;lt;/math&amp;gt;&amp;lt;i&amp;gt;-nek van Karp-redukciója &amp;lt;math&amp;gt;L_2&amp;lt;/math&amp;gt;-re&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A kérdésben gonoszul meg vannak cserélve az indexek :-)&lt;br /&gt;
&lt;br /&gt;
A definíciót használva célunk az, hogy polinom időben felismerjük &amp;lt;math&amp;gt;L_2&amp;lt;/math&amp;gt;-t. Először kiszámoljuk &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;-et. Definíció &amp;lt;i&amp;gt;b&amp;lt;/i&amp;gt; pontja szerint, ennek időigénye max. &amp;lt;math&amp;gt;c_1n^k&amp;lt;/math&amp;gt;. Ezután el kell döntenünk, hogy &amp;lt;math&amp;gt;f(x) \in L_1&amp;lt;/math&amp;gt; igaz-e? Mivel &amp;lt;math&amp;gt;L_1 \in P&amp;lt;/math&amp;gt;, ezért ez polinom idejű, vagyis összességében &amp;lt;math&amp;gt;c_2(c_1n^k)^l&amp;lt;/math&amp;gt; ideig tart. A definíció &amp;lt;i&amp;gt;a&amp;lt;/i&amp;gt; pontja szerint annak az eldöntése, hogy &amp;lt;math&amp;gt;x \in L_2&amp;lt;/math&amp;gt; azonos annak az eldöntésével, hogy &amp;lt;math&amp;gt;f(x) \in L_1&amp;lt;/math&amp;gt;, ezt pedig &amp;lt;math&amp;gt;O(n^{kl})&amp;lt;/math&amp;gt; idő alatt eldöntöttük, vagyis &amp;lt;math&amp;gt;L_2 \in P&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Tk. 270. oldal&lt;br /&gt;
&lt;br /&gt;
==Definiálja az euklideszi utazóügynok problémát, és vázlatosan írja le a megoldására szolgáló közelítő algoritmust. Adja meg az algoritmus approximációs tényezőjét is. Indoklás nem szükséges.==&lt;br /&gt;
&lt;br /&gt;
	Probléma: Adott egy &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; pontú &amp;lt;math&amp;gt;K_n&amp;lt;/math&amp;gt; teljes gráf, és egy éleihez rendelt nem negatív &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; súlyfüggvény. A súlyfüggvényre teljesül a háromszög-egyenlőtlenség, vagyis &amp;lt;math&amp;gt;\forall u,v,w&amp;lt;/math&amp;gt;-re &amp;lt;math&amp;gt;d(u,w) &amp;lt; d(u,v) + d(v,w)&amp;lt;/math&amp;gt;. Keressünk minimális összsúlyú Hamilton-kört! (Az ebből származó eldöntési probléma egyébként NP-teljes.)&lt;br /&gt;
&lt;br /&gt;
	Közelítő algoritmus:&lt;br /&gt;
* Vegyük &amp;lt;math&amp;gt;K_n&amp;lt;/math&amp;gt; gráf minimális összsúlyú feszítőfáját\footnote{Kruskal vagy Prim módszerrel könnyen megy.}(&amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt;), legyen az összsúlya &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;.&lt;br /&gt;
* Tegyük irányítottá a &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt;-t: &amp;lt;math&amp;gt;u-v&amp;lt;/math&amp;gt; élből &amp;lt;math&amp;gt;u\rightarrow v,v\rightarrow u&amp;lt;/math&amp;gt; élek lesznek. (&amp;lt;math&amp;gt;T&amp;#039;&amp;lt;/math&amp;gt;)&lt;br /&gt;
* Mivel &amp;lt;math&amp;gt;T&amp;#039;&amp;lt;/math&amp;gt;-ben minden pontnak a ki-foka megegyezik a be-fokával, így van benne Euler-séta(kör).&lt;br /&gt;
* Az Euler-séta pontjai legyenek: &amp;lt;math&amp;gt;u = v_1,v_2,\dots,v_{2n-2},v_{2n-1} = u&amp;lt;/math&amp;gt;. Ennek összsúlya &amp;lt;math&amp;gt;2s&amp;lt;/math&amp;gt;.&lt;br /&gt;
* Ezután a Hamilton-kör-t az &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;-tól kezdjük és felveszünk hozzá pontokat úgy, hogy olyan pontokat vegyünk fel, amik az Euler-sétában legelőrébb vannak (&amp;lt;math&amp;gt;v_k&amp;lt;/math&amp;gt;, ahol &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; min.), de nem szerepelnek még a Hamilton-körben. Ha már nincs ilyen pont, akkor az &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;-t mégegyszer hozzávéve zárjuk a kört.&lt;br /&gt;
* A Hamilton-kör súlya legfeljebb annyi, mint az Euler-séta súlya (felhasználva a háromszög-egyenlőtlenséget), tehát &amp;lt;math&amp;gt;2s&amp;lt;/math&amp;gt;. Bármely Hamilton-körből egy élet elhagyva Euler-sétát kapnánk, aminek a súlya min. &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;, tehát 2-szeres szorzó erejéig közelíti az algoritmus az optimálist.&lt;br /&gt;
&lt;br /&gt;
Tk. 308. oldal&lt;br /&gt;
&lt;br /&gt;
==Definiálja a piros-fekete fákat. Mi a kapcsolat egy csúcs magassága és fekete magassága között? Állításait bizonyítsa is be!==&lt;br /&gt;
&lt;br /&gt;
A piros-fekete fa egy bináris fa, amelyre igazak az alábbi szabályok:&lt;br /&gt;
* &amp;lt;math&amp;gt;\forall&amp;lt;/math&amp;gt; levél csúcsnak két fia van&lt;br /&gt;
* elemeket a belső csúcsokban tárolunk, nem a levelekben&lt;br /&gt;
* keresőfa tulajdonság érvényesül&lt;br /&gt;
* &amp;lt;math&amp;gt;\forall&amp;lt;/math&amp;gt; csúcs piros vagy fekete&lt;br /&gt;
* a gyökér és a levelek feketék&lt;br /&gt;
* egy piros csúcs mindkét gyereke fekete&lt;br /&gt;
* &amp;lt;math&amp;gt;\forall v&amp;lt;/math&amp;gt; csúcsra, az összes &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;-ből levélbe vezető úton ugyanannyi fekete csúcs van.&lt;br /&gt;
&lt;br /&gt;
Legyen &amp;lt;math&amp;gt;m(v)&amp;lt;/math&amp;gt; a &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; csúcs magassága, vagyis, hogy hány élből áll a &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;-ből levélbe vezető leghosszabb út (lefelé), ha &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; levél, akkor &amp;lt;math&amp;gt;m(v) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Legyen &amp;lt;math&amp;gt;m_f(v)&amp;lt;/math&amp;gt; a &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; csúcs fekete magassága, vagyis, hogy &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;-ből levélbe vezető utakon hány fekete csúcsot látunk (&amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;-t kivéve).&lt;br /&gt;
&lt;br /&gt;
Ekkor &amp;lt;math&amp;gt;\forall v&amp;lt;/math&amp;gt; csúcsra teljesül, hogy&lt;br /&gt;
			&amp;lt;math&amp;gt;\frac{m(v)}{2}\leq m_f(v)\leq m(v).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bizonyítás: &amp;lt;math&amp;gt;m_f(v)\leq m(v)&amp;lt;/math&amp;gt; triv. igaz, valamint mivel piros csúcsok gyerekei feketék, és a levelek is feketék, a csúcsok legalább fele fekete.&lt;br /&gt;
&lt;br /&gt;
==Írja le a mélységi bejárás algoritmusát. (A pontok kétféle számozása és az élek osztályozása nem kell.) Mennyi az algoritmus lépésszáma mátrixos, illetve éllistás megadás esetén és miért?==&lt;br /&gt;
&lt;br /&gt;
	Először addig megyünk előre az élek mentén, amíg olyan pontba nem érkezünk, ahonnan már nem tudunk még meg nem látogatott pontba menni. Ekkor visszalépünk az utolsó előtti pontra, és az ő szomszédait járjuk be, ha ott is végeztünk, akkor még egyet visszalépünk, s.í.t. Egy pontot akkor nevezünk befejezettnek, ha már minden szomszédját meglátogattuk. Ha a kezdőpontot is bejefeztük, akkor bejártuk a gráfot, vagy legalábbis egy komponensét.&lt;br /&gt;
&lt;br /&gt;
	Pszeudo kóddal:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
procedure bejar&lt;br /&gt;
	begin&lt;br /&gt;
	for v:= 1 to n do&lt;br /&gt;
		bejarva[v] := false;&lt;br /&gt;
	for v:= 1 to n do&lt;br /&gt;
		if bejarva[v] = false then&lt;br /&gt;
			mb(v)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
procedure mb(v : node)&lt;br /&gt;
	var&lt;br /&gt;
		w: node;&lt;br /&gt;
	begin&lt;br /&gt;
	bejarva[v] = true;&lt;br /&gt;
	(*a szomszedok bejarasa*)&lt;br /&gt;
	for minden L[v]-beli w csucsra do &lt;br /&gt;
		if bejarva[w] = hamis then&lt;br /&gt;
			mb(w)&lt;br /&gt;
	end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Éllistás bejárásnál a lépésszám &amp;lt;math&amp;gt;O(n + e)&amp;lt;/math&amp;gt;, mert minden csúcsra egyszer hívjuk meg az mb()-t, és ott minden csúcs szomszédját egyszer vizsgáljuk meg. Szerintem a mátrixos reprezentációnál is lineáris idejű az algoritmus, de egyébként TODO.&lt;br /&gt;
&lt;br /&gt;
Tk. 129. oldal&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
==TODO==&lt;br /&gt;
* Definiálja az univerzális és a megállási nyelvet.&lt;br /&gt;
* Mi a vizsonyuk az RE osztályhoz? (Indoklás nem kell.)&lt;br /&gt;
* Az univerzális nyelv benne van-e az R osztályban? Válaszát indokolja is!&lt;br /&gt;
&lt;br /&gt;
==Írja le a legrövidebb utak keresésére szolgáló Dijkstra-algoritmust. Mi az algoritmus alkalmazásának feltétele? (Az algoritmus helyességét nem kell bizonyítani.) Mennyi az algoritmus lépésszáma?==&lt;br /&gt;
&lt;br /&gt;
	Az élsúlyok nem negatív számok. A KÉSZ halmazba tesszük azokat a csúcsokat, amelyek legrövidebb távolságát már ismerjük. D tömbben a csúcsok eddigi legrövidebb távolsága van, &amp;lt;math&amp;gt;C[x,y]&amp;lt;/math&amp;gt; az &amp;lt;math&amp;gt;x \rightarrow y&amp;lt;/math&amp;gt; él súlyát jelenti.&lt;br /&gt;
&lt;br /&gt;
	Pszeudo kód:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
KESZ := {s}&lt;br /&gt;
for minden v in V csucsra do&lt;br /&gt;
	D[v] := C[s,v];&lt;br /&gt;
for i:= 1 to n-1 do begin&lt;br /&gt;
	x := az a csucs, V \ KESZ-bol, hogy D[x] min.;&lt;br /&gt;
	for minden w in V \ KESZ csucsra do&lt;br /&gt;
		D[w] := min(D[w], D[x] + C[x,w]);&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az első ciklus &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt; időt emészt fel, a második ciklusban a minimum keresés és a belső ciklus is &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;, és ezek &amp;lt;math&amp;gt;n-1&amp;lt;/math&amp;gt;-szer futnak le, tehát összességében &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt; a lépésszám. Ezt éllistával, a D-tömb szerint kupacba rendezve a még nem kész csúcsúkat &amp;lt;math&amp;gt;O((n+e)\log n)&amp;lt;/math&amp;gt;-re vihető le, megfelelő &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;-kupaccal pedig akár &amp;lt;math&amp;gt;O(e)&amp;lt;/math&amp;gt;-re is.&lt;br /&gt;
&lt;br /&gt;
==Definiálja az UNIÓ-HOLVAN adatszerkezetet. Mennyi az egyes műveletek lépésszáma tömbös illetve fás megvalósítás esetén? (Indoklás nem szükséges.)==&lt;br /&gt;
&lt;br /&gt;
Az UNIÓ-HOLVAN adatszerkezet egy véges &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; halmaz partícióit (egymással diszjunkt, de összegezve &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;-t kiadó halmazok) tárolja. Két műveletet értelmezünk ezzel kapcsolatban: az UNIÓ&amp;lt;math&amp;gt;(U_i,U_j)&amp;lt;/math&amp;gt; egyesít két partíciót, a HOLVAN(&amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;) visszadja, hogy &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; melyik partícióban van.&lt;br /&gt;
	&lt;br /&gt;
Az elemeket egy fában és egy tömbben tároljuk. A fa csúcsaiban tároljuk az adott halmaz elemeit, a halmaz neve az őt ábrázoló fa gyökerében van. Két halmaz UNIÓ-jakor a nagyobbik fa gyökeréhez hozzácsapjuk gyerekként a kisebbik fa gyökerét. A tömböt az &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; elemeivel indexeljük, ami tartalmaz egy pointert, ami a fában az adott indexű elemre mutat. A HOLVAN hívás során ez alapján a mutató alapján elindulva a szülő pointereket követve eljuthatunk a fa gyökeréig, és megtudhatjuk, hogy melyik halmazban van az adott elem. A HOLVAN költsége &amp;lt;math&amp;gt;O(\log n)&amp;lt;/math&amp;gt;, az UNIÓ költsége &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Tk. 163. oldal&lt;br /&gt;
&lt;br /&gt;
==Definiálja a P és az NP nyelvosztályt; mi az egymáshoz való viszonyuk? Válaszát indokolja is meg.==&lt;br /&gt;
&lt;br /&gt;
	P azon nyelvek halmazát jelöli, amelyekhez van olyan algoritmus, ami &amp;lt;math&amp;gt;\forall x&amp;lt;/math&amp;gt; bemenetre eldönti, hogy &amp;lt;math&amp;gt;x \stackrel{\text{\tiny ?}}{\in} P&amp;lt;/math&amp;gt;, és az algoritmus lépésszáma &amp;lt;math&amp;gt;O(|x|^k)&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; konstans pozitív számra.&lt;br /&gt;
&lt;br /&gt;
	NP azon L nyelvek halmaza, amelyre teljesül, hogy &amp;lt;math&amp;gt;\exists k &amp;gt; 0&amp;lt;/math&amp;gt; konstans és &amp;lt;math&amp;gt;L_p \in P&amp;lt;/math&amp;gt; nyelv, valamint&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x \in L \Leftrightarrow \exists y, |y| = O(|x|^k), (x,y) \in L_p.&amp;lt;/math&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	Viszonyuk: &amp;lt;math&amp;gt;P \subseteq NP&amp;lt;/math&amp;gt;. Nyilvánvaló, hiszen tanú nélkül is eldönthető polinom időben, hogy &amp;lt;math&amp;gt;x \stackrel{\text{\tiny ?}}{\in} L&amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;(L = L_p)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Átalakítás [[LaTeX]] forrásból: [[MajorPeter|aldaris]] - 2009.01.27.&lt;br /&gt;
&lt;br /&gt;
Összeállította:  [[CsuzdyCsabaDavid|Csaba]] - 2009.01.26.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Infoalap]]&lt;/div&gt;</summary>
		<author><name>Unknown user</name></author>
	</entry>
</feed>