<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hu">
	<id>https://vik.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=K%C3%A1lm%C3%A1n+Tibor</id>
	<title>VIK Wiki - Felhasználó közreműködései [hu]</title>
	<link rel="self" type="application/atom+xml" href="https://vik.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=K%C3%A1lm%C3%A1n+Tibor"/>
	<link rel="alternate" type="text/html" href="https://vik.wiki/Speci%C3%A1lis:Szerkeszt%C5%91_k%C3%B6zrem%C5%B1k%C3%B6d%C3%A9sei/K%C3%A1lm%C3%A1n_Tibor"/>
	<updated>2026-05-14T00:40:29Z</updated>
	<subtitle>Felhasználó közreműködései</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://vik.wiki/index.php?title=Algoritmuselm%C3%A9let_-_ZH,_2013.04.03.&amp;diff=185170</id>
		<title>Algoritmuselmélet - ZH, 2013.04.03.</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Algoritmuselm%C3%A9let_-_ZH,_2013.04.03.&amp;diff=185170"/>
		<updated>2015-04-07T21:06:21Z</updated>

		<summary type="html">&lt;p&gt;Kálmán Tibor: /* 5. Feladat */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vissza|Algoritmuselmélet}}&lt;br /&gt;
&lt;br /&gt;
==2013.04.03. ZH megoldásai==&lt;br /&gt;
===1. Feladat (Van megoldás)===&lt;br /&gt;
Mi az a legkisebb &#039;&#039;r&#039;&#039; racionális szám, melyre teljesül, hogy &amp;lt;math&amp;gt;\sqrt{1} + \sqrt{2} + \sqrt{3} + ...+\sqrt{n} = O(n^{r}) ?&amp;lt;/math&amp;gt;&lt;br /&gt;
{{Rejtett&lt;br /&gt;
|mutatott=&amp;lt;big&amp;gt;&#039;&#039;&#039;Megoldás&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
|szöveg=&lt;br /&gt;
*Először megpróbáljuk felülről becsülni:&lt;br /&gt;
**Felülről becsüljük a sorozatot, ha az elemeket rendre &amp;lt;math&amp;gt;\sqrt{n}&amp;lt;/math&amp;gt;-nek tekintjük, vagyis:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
**&amp;lt;math&amp;gt;\sqrt{n} + \sqrt{n} + \sqrt{n} + ...+\sqrt{n}=n\cdot\sqrt{n}=n^{1.5}=O(n^{1.5}) \Rightarrow r=1.5&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
*Most pedig megpróbáljuk alulról becsülni: &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
**Alulról becsüljük a sorozatot: &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
**&amp;lt;math&amp;gt; \frac{n}{2 } \cdot \sqrt{1}+\frac{n}{2} \cdot \sqrt{n} \leq \sqrt{1} + \sqrt{2} + \sqrt{3} \dots \sqrt{n} &amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
**&amp;lt;math&amp;gt; \frac{n}{2 } \cdot \sqrt{1}+\frac{n}{2} \cdot \sqrt{n} = O(n^{1.5}) \Rightarrow r=1.5. &amp;lt;/math&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
*A kettőt együttvéve látszik, hogy &amp;lt;math&amp;gt; r = 1.5 .&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===2. Feladat (Van megoldás)===&lt;br /&gt;
Egy &amp;lt;math&amp;gt; A[i,j] &amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; x &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;-es táblázat minden mezőjében egy egész szám van írva (nem feltétlenül csak pozitívak). Adjon &amp;lt;math&amp;gt; O(n^2) &amp;lt;/math&amp;gt; lépésszámú algoritmust, ami eldönti, hogy melyik az a téglalap alakú része a táblázatnak, melynek bal felső sarka egybe esik a nagy táblázat bal felső sarkával és benne az elemek összege az egyik legnagyobb. &lt;br /&gt;
&lt;br /&gt;
(Vagyis olyan &amp;lt;math&amp;gt;k, l&amp;lt;/math&amp;gt;-t keresünk, amire &amp;lt;math&amp;gt; \sum_{i \leq k, j \leq l}A[i,j] &amp;lt;/math&amp;gt; maximális.)&lt;br /&gt;
{{Rejtett&lt;br /&gt;
|mutatott=&amp;lt;big&amp;gt;&#039;&#039;&#039;Megoldás&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
|szöveg=&lt;br /&gt;
&lt;br /&gt;
{{Rejtett&lt;br /&gt;
|mutatott=&amp;lt;big&amp;gt;&#039;&#039;Megjegyzések a feladathoz&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
|szöveg=&lt;br /&gt;
&lt;br /&gt;
*Ahogy az többször is segít, úgy most is, hogy felrajzolunk magunknak egy 3x3, vagy 4x4-es táblázatot, és nézegetjük, hogyan kéne dolgozni...&lt;br /&gt;
*A feladatban 1-1 lépésnek vettem:&lt;br /&gt;
**1 művelet (&amp;lt;math&amp;gt; +,- &amp;lt;/math&amp;gt;) elvégzését &#039;&#039;(vagyis a &amp;lt;math&amp;gt; B[i,j]=B[i-1,j]+B[i,j-1]+A[i,j]-B[i-1,j-1] &amp;lt;/math&amp;gt; 3 lépés).&#039;&#039;&lt;br /&gt;
**1 értéke beírása a cellába.&lt;br /&gt;
**1 összehasonlítás (és esetleges cserék).&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
*Adott az &amp;lt;math&amp;gt; A &amp;lt;/math&amp;gt; mátrix.&lt;br /&gt;
*Létrehozunk egy &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt; mátrixot (szintén &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; x &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;-es).&#039;&#039;(ez &amp;lt;math&amp;gt;\Rightarrow O(n^2)&amp;lt;/math&amp;gt; lépés)&#039;&#039;&lt;br /&gt;
*&amp;lt;math&amp;gt; B[1,1]:= A[1,1]&amp;lt;/math&amp;gt;. &#039;&#039;(ez &amp;lt;math&amp;gt;\Rightarrow 1 &amp;lt;/math&amp;gt; lépés)&#039;&#039;&lt;br /&gt;
*&amp;lt;math&amp;gt; k=l=1 &amp;lt;/math&amp;gt; és &amp;lt;math&amp;gt; aktmax=B[1,1] &amp;lt;/math&amp;gt;. &lt;br /&gt;
*Először kitöltjük az 1. sort &amp;lt;math&amp;gt; \rightarrow  B[i,1]:=B[i-1,1]+A[i,1], i=2 \dots n  &amp;lt;/math&amp;gt;. &#039;&#039;(ez &amp;lt;math&amp;gt;\Rightarrow 2(n-1)=O(n)&amp;lt;/math&amp;gt; lépés)&#039;&#039;&lt;br /&gt;
*Majd kitöltjük az 1. oszlopot &amp;lt;math&amp;gt; \rightarrow  B[1,i]:=B[1,i-1]+A[1,i], i=2 \dots n  &amp;lt;/math&amp;gt;. &#039;&#039;(ez &amp;lt;math&amp;gt;\Rightarrow 2(n-1)=O(n)&amp;lt;/math&amp;gt; lépés)&#039;&#039;&lt;br /&gt;
*Minden további cellában pedig &amp;lt;math&amp;gt; B[i,j]=B[i-1,j]+B[i,j-1]+A[i,j]-B[i-1,j-1] &amp;lt;/math&amp;gt;. &#039;&#039;(ez &amp;lt;math&amp;gt;\Rightarrow 4(n-1)(n-1)=O(n^2)&amp;lt;/math&amp;gt; lépés)&#039;&#039;&lt;br /&gt;
*A keresett &amp;lt;math&amp;gt; k,l &amp;lt;/math&amp;gt; párost pedig folyamat nyilván tartjuk: ha &amp;lt;math&amp;gt;  B[i,j] \geq aktmax \Rightarrow k=i, l=j, aktmax = B[i,j] &amp;lt;/math&amp;gt;. &#039;&#039;(ez &amp;lt;math&amp;gt;\Rightarrow n^2-1=O(n^2)&amp;lt;/math&amp;gt; lépés)&#039;&#039;&lt;br /&gt;
*&amp;lt;math&amp;gt; 1+2O(n)+ 3O(n^2)=O(n^2)&amp;lt;/math&amp;gt; lépésszámú algoritmusunk van, tehát jók vagyunk.&lt;br /&gt;
:::::::::::::::::[[File:Algel zh 2013tavasz A B matrix.PNG|400px]]&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===3. Feladat (Van megoldás)===&lt;br /&gt;
Kaphatjuk-e az &#039;&#039;1,7,3,6,11,15,22,17,14,12,9&#039;&#039; számsorozatot úgy, hogy egy (a szokásos rendezést használó) bináris keresőfában tárolt elemeket posztorder sorrendben kiolvasunk? &lt;br /&gt;
{{Rejtett&lt;br /&gt;
|mutatott=&amp;lt;big&amp;gt;&#039;&#039;&#039;Megoldás&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
|szöveg=&lt;br /&gt;
&lt;br /&gt;
{{Rejtett&lt;br /&gt;
|mutatott=&amp;lt;big&amp;gt;&#039;&#039;Megjegyzések a feladathoz&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
|szöveg=&lt;br /&gt;
&lt;br /&gt;
*Szokásos rendezést használó bináris keresőfa: &amp;lt;math&amp;gt;bal(x) &amp;lt; x &amp;lt; jobb(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
*Postorder: &lt;br /&gt;
**Rekurzívan &amp;lt;math&amp;gt; bal(x) \rightarrow jobb(x) \rightarrow x &amp;lt;/math&amp;gt;.&#039;&#039;(Magyarul: előbb meglátogatja a gyökérnél kisebbeket, utána a nagyobbakat, és ezután jön csak a gyökér.)&#039;&#039;&lt;br /&gt;
**Egyik fontos tulajdonsága, hogy a &#039;&#039;&#039;gyökér&#039;&#039;&#039; az mindig a &#039;&#039;(figyelt)&#039;&#039; &#039;&#039;&#039;lista végén van&#039;&#039;&#039;.&lt;br /&gt;
}}&lt;br /&gt;
*Első lépésnek írjuk fel egy táblázatba a számokat (az oszlopszámot tudjuk, ez esetben 11, sorok száma meg majd alakul...).&lt;br /&gt;
*A továbbiakban az i. sorban jelöljük, hogy melyik elem a gyökér (=), és hogy melyek a nála kisebbek (&amp;lt;), avagy nagyobbak (&amp;gt;) &#039;&#039;(a képen keretezéssel jelzem, hogy melyik az éppen figyelt lista).&#039;&#039; Ez azért hasznos, mert a posztorder bejárás során, ezzel a technikával mindig olyan sorrendet kell kapjunk, hogy &amp;lt;math&amp;gt; &amp;lt; &amp;lt; &amp;lt; ... &amp;lt; &amp;lt; &amp;gt; &amp;gt; ... &amp;gt; &amp;gt; = &amp;lt;/math&amp;gt;, vagyis nem állhat fel olyan helyzet, hogy &amp;lt;math&amp;gt; ... &amp;lt; &amp;gt; &amp;lt; ...=&amp;lt;/math&amp;gt; vagy &amp;lt;math&amp;gt; ... &amp;gt; &amp;lt; &amp;gt; ...=&amp;lt;/math&amp;gt;.&lt;br /&gt;
**Az 1. sorban a 9 lesz a gyökér. Felrajzoljuk a 9-t gyökérnek. &#039;&#039;(Bal oldalt lesz a hiba, de gyakorlásképp nézzük inkább a jobb oldalt.)&#039;&#039;&lt;br /&gt;
**A 2. sorban a 12 lesz a gyökér, így a 12-est felrajzoljuk a 9-es jobb fiának. Nála csak a 11 a kisebb (a vizsgált listában), így a 11-t berajzoljuk a 12 bal fiának.&lt;br /&gt;
**A 3. sorban 14 lesz a gyökér, így a 14-est felrajzoljuk a 12-es jobb fiának.&lt;br /&gt;
**A 4. sorban a 17 lesz a gyökér, így ez a 14-es jobb fia lesz. A 15 és 22 pedig értelemszerűen a bal, és jobb fia lesz 17-nek.&lt;br /&gt;
**Az 5. sorban a gyökér a 6 lesz, így azt berajzoljuk a 9-es bal fiának. És itt látszik is, hogy hiba van, hiszen &amp;lt;math&amp;gt; &amp;lt; &amp;gt; &amp;lt; &amp;lt;/math&amp;gt; sorrend van, ebből következik, hogy ilyen fa nem létezhet.&lt;br /&gt;
&lt;br /&gt;
::::::::::[[File:Algel zh 2013tavasz Post tabla.png|400px]] [[File:Algel zh 2013tavasz Graf.png|300px]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===4. Feladat (Van megoldás)===&lt;br /&gt;
Adjacencia-mátrixával adott &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; csúcsú, irányított gráfként ismerjük egy város úthálózatát. El szeretnék jutni &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; pontból &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; pontba, de sajnos minden csomóponthoz várnunk kell a nagy hóesés miatt, a várakozás hossza minden csomópontra ismert és független attól, hogy merre akarunk továbbmenni. Adjon algoritmust, ami &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt; lépésben eldönti, hogy merre menjünk, hogy a lehető legkevesebbet kelljen várni összességében. &#039;&#039;(A csomópontok közötti utak hosszának megtétele a várakozáshoz képest elhanyagolható időbe telik, tekintsük 0-nak. &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;-ban és &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;-ben nem kell várakozni.)&#039;&#039;&lt;br /&gt;
{{Rejtett&lt;br /&gt;
|mutatott=&amp;lt;big&amp;gt;&#039;&#039;&#039;Megoldás&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
|szöveg=&lt;br /&gt;
&lt;br /&gt;
*A &amp;quot;probléma&amp;quot;, hogy a csúcsoknak van súlya (ill. az éleknek is van, de az 0), amivel nem igen tudunk mit kezdeni. De nem hiába volt BSZ1 (vagy BSZ2?), ahol megtanultuk, hogy könnyedén csinálhatunk a csúcssúlyból élsúlyt.&lt;br /&gt;
*Az adott pontot (X) lecseréljük 2 pontra (X1, X2). Ami eddig X-be ment, az menjen X1-be, és ami X-ből ment, az menjen X2-ből. &#039;&#039;(Vagyis X1-ből csak X2-be megy él, és X2-be csak az X1 megy.)&#039;&#039;&lt;br /&gt;
*A 2 pontot összekötjük, a köztük menő élsúly pedig az X pont súlya lesz.&lt;br /&gt;
*Csináljuk hát ezt ezzel a gráffal:&lt;br /&gt;
**Az eredeti &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; csúcsú G gráfból csinálunk így egy F gráfot, melyben &amp;lt;math&amp;gt; 2n &amp;lt;/math&amp;gt; csúcs lesz &#039;&#039;(és az élszám is n-nel nő, de ez most minket annyira nem izgat)&#039;&#039;.&lt;br /&gt;
**Ebben az F gráfban kell megtalálni a legrövidebb utat egy &amp;quot;X2&amp;quot;-ből egy &amp;quot;Y1&amp;quot;-be.&lt;br /&gt;
**A Dijkstra-algoritmus &amp;lt;math&amp;gt; O(n^2) &amp;lt;/math&amp;gt; lépésben keres legrövidebb utat, ebben az esetben &amp;lt;math&amp;gt; O((2n)^2)=4O(n^2)=O(n^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
*Így a feladat ezzel meg is oldva.&lt;br /&gt;
::::::::::[[File:Algel zh 2013tavasz Csucs suly.png|300px|G gráf]][[File:Algel zh 2013tavasz El suly.png|400px|F gráf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===5. Feladat===&lt;br /&gt;
Adjacencia-mátrixával adott n csúcsú, élsúlyozott, irányítatlan gráfként ismerjük egy ország úthálózatát (a csomópontok a városok, az élek a közvetlen összeköttetések a városok között). Az élek súlya a városok közti távolságot adja meg. (Feltehetjük, hogy a távolságok egészek.)&lt;br /&gt;
Adjon egy O(n&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;) lépésszámú algoritmust, ami eldönti, hogy lehetséges-e úgy kiválasztani öt várost, hogy ezektől bármely más város legfeljebb 50 kilométerre van. &#039;&#039;(Ezekbe a városokba lenne érdemes hókoztrókat telepíteni.)&#039;&#039;&lt;br /&gt;
{{Rejtett&lt;br /&gt;
|mutatott=&amp;lt;big&amp;gt;&#039;&#039;&#039;Megoldás&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
|szöveg=&lt;br /&gt;
*A megoldáshoz először Floyd algoritmussal páronként meghatározzuk az összes város távolságát, ez O(n&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;).&amp;lt;br&amp;gt;&lt;br /&gt;
*A város irányítatlan gráfként van megadva, de ezen könnyen segíthetünk úgy, hogy a jelenlegi élek helyett felveszünk két irányítottat, azonos súllyal. Ez O(n&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;).&amp;lt;br&amp;gt;&lt;br /&gt;
*Ezek után brute force módszerrel az összes csúcsötösre ellenőrizzük, hogy azok öten lefedik-e (legfeljebb 50 km-re vannak) az összes várost.&amp;lt;br&amp;gt;&lt;br /&gt;
**n&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; városötös van, mindegyikre le kell ellenőrizni, hogy jók-e. Az ellenőrzés során végignézzük, az összes csúcsra (n db.), hogy el lehet-e érni. Ez tehát O(n&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;*n)=O(n&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;).&amp;lt;br&amp;gt;&lt;br /&gt;
*Összességében ezért O(n&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;) lépésszámú az algoritmus.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===6. Feladat (Van megoldás)===&lt;br /&gt;
Egy tömbben adott &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; darab 0-tól különböző egész szám (lehetnek negatívak is köztük) és adott egy &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; egész szám is. Adjon &amp;lt;math&amp;gt;O(n \cdot logn)&amp;lt;/math&amp;gt; lépésszámú algoritmust, ami eldönti, hogy melyik az a &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; elem a tömbben, melyek szorzata maximális.&lt;br /&gt;
{{Rejtett&lt;br /&gt;
|mutatott=&amp;lt;big&amp;gt;&#039;&#039;&#039;Megoldás&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
|szöveg=&lt;br /&gt;
&lt;br /&gt;
*Első lépésben csökkenő sorrendbe rendezzük az elemeket azok &#039;&#039;&#039;abszolút értéke&#039;&#039;&#039; szerint. &amp;lt;math&amp;gt; (O(n \cdot logn) &amp;lt;/math&amp;gt; pl. összefésüléses rendezéssel. &amp;lt;math&amp;gt;)&amp;lt;/math&amp;gt;&lt;br /&gt;
*Vesszük az első &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; szám szorzatát.&lt;br /&gt;
**Ha ez pozitív, akkor jók vagyunk, nincs más dolgunk. [[File:algel_zh_2013tavasz_6_1.PNG|250px]]&lt;br /&gt;
**Ha ez negatív, akkor kiválasztjuk a listából a legkisebb pozitív &amp;lt;math&amp;gt;(A^+)&amp;lt;/math&amp;gt; és negatív &amp;lt;math&amp;gt;(A^-)&amp;lt;/math&amp;gt; elemet, a maradék listából pedig a legnagyobb pozitív &amp;lt;math&amp;gt;(B^+)&amp;lt;/math&amp;gt; és negatív &amp;lt;math&amp;gt;(B^-)&amp;lt;/math&amp;gt; elemet. Most meg kell nézni, hogy mit éri meg lecserélni? A pozitívat negatívra, vagy a negatívat pozitívra?&lt;br /&gt;
***Ha &amp;lt;math&amp;gt; (A^- \cdot B^-) &amp;lt; (A^+ \cdot B^+) &amp;lt;/math&amp;gt;, akkor a listából kivesszük &amp;lt;math&amp;gt; A^- &amp;lt;/math&amp;gt;-t, és berakjuk &amp;lt;math&amp;gt; B^+ &amp;lt;/math&amp;gt;-t&lt;br /&gt;
***Ha &amp;lt;math&amp;gt; (A^+ \cdot B^+) &amp;lt; (A^- \cdot B^-) &amp;lt;/math&amp;gt;, akkor a listából kivesszük &amp;lt;math&amp;gt; A^+ &amp;lt;/math&amp;gt;-t, és berakjuk &amp;lt;math&amp;gt; B^- &amp;lt;/math&amp;gt;-t&amp;lt;br&amp;gt;[[File:algel_zh_2013tavasz_6_2.PNG|500px]]&lt;br /&gt;
***Ha nincs a listában pozitív szám, akkor kivesszük a &amp;lt;math&amp;gt;A^-&amp;lt;/math&amp;gt;-t, és berakjuk &amp;lt;math&amp;gt;B^+&amp;lt;/math&amp;gt;-t&amp;lt;br&amp;gt;[[File:algel_zh_2013tavasz_6_3.PNG|500px]]&lt;br /&gt;
***Ha nincs az egész listában pozitív szám, akkor a legnagyobb számot akkor kapjuk, ha a &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; darab utolsó elemet vesszük be.&amp;lt;br&amp;gt;[[File:algel_zh_2013tavasz_6_4.PNG|500px]]&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===7. Feladat (Van megoldás)===&lt;br /&gt;
Az &amp;lt;math&amp;gt;A[1 \dots 2013]&amp;lt;/math&amp;gt; tömbben egy kupac adatstruktúrát tárolunk, minden tárolt elem különböző. Tudjuk, hogy ebben a kupacban a legnagyobb elem &amp;lt;math&amp;gt;    A[i]&amp;lt;/math&amp;gt;. Határozza meg &amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt; összes lehetséges értékét!&lt;br /&gt;
{{Rejtett&lt;br /&gt;
|mutatott=&amp;lt;big&amp;gt;&#039;&#039;&#039;Megoldás&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
|szöveg=&lt;br /&gt;
&lt;br /&gt;
*Kupac egyik jó tulajdonsága, hogy teljes bináris fa, így az elem számból kiszámolható, hogy milyen magas a fa.&lt;br /&gt;
**Tudjuk, hogy :&amp;lt;math&amp;gt; 2^{m-1} \leq n \leq 2^{m}-1&amp;lt;/math&amp;gt;.&lt;br /&gt;
**Ebben az esetben &amp;lt;math&amp;gt; 2^{m-1} \leq 2013 \leq 2^{m}-1 \Rightarrow m = 11&amp;lt;/math&amp;gt;.&lt;br /&gt;
*A legnagyobb elem vagy a legalsó szinten van, vagy ha az nem &amp;quot;telített&amp;quot;, akkor az előtte lévő szinten olyan csúcsok is szóba jöhetnek, akiknek nincsen gyereke.&lt;br /&gt;
**Mivel tudjuk, hogy a fa magassága 11, ezért:&lt;br /&gt;
***A kupacban összesen 2047 elemnek van hely, tehát még 34 elem férne el. Ebből pedig az következik, hogy a 10. szinten 17 olyan csúcs van, aminek nincsen fia, így ők még játszhatnak a legnehezebb elem díjáért.&lt;br /&gt;
***A 11. szinten 1024 elem férne el, de tudjuk, hogy hiányzik 34, tehát a 11. szinten csak 990 elem van, amik a legnehezebbek lehetnek a fában.&lt;br /&gt;
*Ha a kupacot tömbbe írjuk, akkor azt fentről-lefele, balról-jobbra töltjük fel.&lt;br /&gt;
**Az előzőek alapján tudjuk, hogy a 11. szinten 990, a 10. szinten pedig 17 csúcs jöhet szóba, így összesen 1007 helyen lehet a legnehezebb elem. A tömbös elrendezés alapján ez azt jelenti, hogy az &amp;lt;math&amp;gt; i \geq (2013-1007+1) \Rightarrow i \geq 1007&amp;lt;/math&amp;gt;.&lt;br /&gt;
{{Rejtett&lt;br /&gt;
|mutatott=&amp;lt;big&amp;gt;&#039;&#039;Avagy...&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
|szöveg=&lt;br /&gt;
*Avagy bebizonyítható, hogy a legnagyobb elem az az utolsó &amp;lt;math&amp;gt; \left \lceil \frac{n}{2} \right \rceil &amp;lt;/math&amp;gt; helyen állhat.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===8. Feladat (Van megoldás)===&lt;br /&gt;
&#039;&#039;&#039;(a)&#039;&#039;&#039; Igaz-e, hogy egy piros-fekete fa tetszőleges belső fekete csúcshoz tartozó részfa (az a részfa, aminek ez a fekete csúcs a gyökere) is egy piros-fekete fa?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(b)&#039;&#039;&#039; Igaz-e ugyanez egy tetszőleges belső piros csúcshoz tartozó részfára?&lt;br /&gt;
&lt;br /&gt;
{{Rejtett&lt;br /&gt;
|mutatott=&amp;lt;big&amp;gt;&#039;&#039;&#039;Megoldás&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
|szöveg=&lt;br /&gt;
&lt;br /&gt;
{{Rejtett&lt;br /&gt;
|mutatott=&amp;lt;big&amp;gt;&#039;&#039;Megjegyzések a feladathoz&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
|szöveg=&lt;br /&gt;
&lt;br /&gt;
*Avagy mitől is piros-fekete egy piros-fekete fa?&lt;br /&gt;
#Minden nem levél csúcsnak 2 fia van.&lt;br /&gt;
#Elemeket belső csúcsban tárolunk.&lt;br /&gt;
#teljesül a keresőfa tulajdonság.&lt;br /&gt;
#A fa minden csúcsa piros, vagy fekete.&lt;br /&gt;
#A gyökér fekete.&lt;br /&gt;
#A levelek feketék.&lt;br /&gt;
#Minden piros csúcs mindkét gyereke fekete.&lt;br /&gt;
#Minden &#039;&#039;v&#039;&#039; csúcsra igaz, hogy az összes &#039;&#039;v&#039;&#039;-ből levélbe vezető úton ugyanannyi fekete csúcs van (~fekete magasság).&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;a)&#039;&#039;&#039; Igaz-e, hogy egy piros-fekete fa tetszőleges belső fekete csúcshoz tartozó részfa (az a részfa, aminek ez a fekete csúcs a gyökere) is egy piros-fekete fa?&lt;br /&gt;
&lt;br /&gt;
*Igaz. &#039;&#039;(Nem tudom, mennyi magyarázatot, vagy milyen indoklást várnak ide, de a piros-fekete tulajdonságai közül talán csak a fekete magasság szorul magyarázatra (...), a többi elég triviális.)&#039;&#039;&lt;br /&gt;
**Ha a részgráfra nem állna fenn a fekete magasság kritériuma, akkor pláne nem fog a teljes gráfra teljesülni, hiszen hiába jó a fekete magasság a pontig, ha a pont tönkre teszi azt :/.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;b)&#039;&#039;&#039; Igaz-e ugyanez egy tetszőleges belső piros csúcshoz tartozó részfára?&lt;br /&gt;
*Nem. A gyökérnek feketének kell lennie.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Kategória:Infoalap]]&lt;/div&gt;</summary>
		<author><name>Kálmán Tibor</name></author>
	</entry>
</feed>