Documents/Algoritmusok2/01.tex
2018-09-18 13:39:50 +02:00

161 lines
2.9 KiB
TeX

\begin{document}
Algo 2
Ajánlott irodalom:
Algoritmusok, (Rónyai, Szabó, ?)
Ismétlés
Algo1 -> ADT, ADS, etc
Verem
Axiómák
1. Üres-e(Üres) Igaz
2. ...
5. etc
1. ADT
2. ADS
szrekezeti gráf + { műveletek + axiómák } -> ADT
pl (10)->(20)->(30)->(40) lehet pl verem, sor (attól függ, milyen műveletek )
3. reprezentáci
(1) tömbös
(2) pointeres
----
Műveletigények
1. Buborékrendezés
Alulról felfele a szomzédos elemek cseréjével felbuborékoztatjuk az elemeket
1. elem összehas. Ö(sz) = n - 1
2. elem n - 2
3. elem n - 3
etc
Ö_{sz} = \frac{n(n - 1)}{2} = {\Theta}(n^2) vagy O(N^2)
f: {\mathbb{N}} \rightarrow {R}_0^+
Def:
O(g) = {f | {\exists}c>0, elég nagy n-re f(n) \leq cg(n) }
O(g) = {f | {\exists}c>0, elég nagy n-re f(n) < cg(n) }
{\Omega}(g) = {f | {\exists}c>0, elég nagy n-re f(n) \geq cg(n) }
{\omega}(g) = {f | {\exists}c>0, elég nagy n-re f(n) > cg(n) }
Összehasonlító rendezések Műveletigénye
(A) alsó becslés:
műv. igény:
ÖH(n) = {\Omega}(n \cdot log(n))
Döntési fa:
* \forall alg-hoz konstruálható
* igaz/hamis kérdések
pl.: "A[3] > A[1]^2"
füzet (1)
n! levél (n elemet hányféleképp lehet sorbarendezni: n!)
Beszúró rendezés
1 | 2 | 5 | 7 || 4 | 1
1 | 2 | 5 | 7 || [] | 1
1 | 2 | 5 | [] | 7 ||1
1 | 2 | [] | 5 | 7 ||1
1 | 2 | 4 | 5 | 7 ||1
n*log n es rendezések:
verseny, kupac, összefésülő, gyors
Verseny rendezés
n = 2^k
(binfa)
(általában a tárhely igény miatt nem használják)
füzet(2)
Kupac renndezés
Kupac:
Def (ADS)
-Teljes, balra tömörített, bnáris fa.
-Szülő < Gyerek (kupactulajdonság)
Műveletek (ADT)
Beszúr, Mintöröl
Füzet (3)
Felszivárog(v) (logn)
{
ha v > szülő(v1, v2)
{
csere a kisebbel.
}
}
Összefésölő Rendezés
(Oszdmeg és uralkodj) = rekurzió
Füzet
Műv igény:
k és l hosszú rendezett tömb esetén k + l - 1
műv igény: n \cdot log(n)
n = 2^k
T(n) = összehasonlítások
T(n) \leq n - 1 + 2T(\frac{n}{2}) \leq n - 1 + 2 (\frac{n}{2} - 1 + 2T(\frac{n}{4})) \leq
\leq n - 1 + 2(\frac{n}{2}) + 4T(\frac{n}{4}) + ... + 2^{k - 1}(\frac{n}{2^{k - 1}}) + 2^{k - 1} + 2^{k - 1} T(\frac{n}{2^{k-1}}) =
= k \ cdot n - k = nlogn - log_2n = O(nlog_2n)
Gyorsrendezés
Veszünk egy véletlen számon 1 től n ig,
Műv igény
...
C(n) = (n - 1) + \frac{2}{n}(C(1) + C(2) + ... + C(n))
-C(n - 1) = n - 2 + \frac{2}{n - 1}(c(1)+ ... + C(n - 1))
--------------------------------------------------------
Rendezés után:
\frac{C(n)}{n + 1} = \frac{2(n - 1)}{n(n + 1)} + \frac{c(n - 1)}{n} < \frac{2}{n} + \frac{C(n - 1)}{n} <
< \frac{2}{n} + \frac{2}{n-1} + \frac{B(n-2){n-1}} < ...
(2 kiemel)
... < 2(\frac{1}{n} + \frac{1}{n-1} + \frac{1}{n-2} + ... + \frac{1}{2} + \frac{1}{1}) ~= 2nlogn = O(n log n)
\end{document}