10. elo ada s Rendezett to mbo k Sergya n Szabolcs sergyan.szabolcs@nik.uni-obuda.hu O budai Egyetem Neumann Ja nos Informatikai Kar Alkalmazott Informatikai Inte zet 1 / 5
Tartalom 1 Kerese sek rendezett to mbo kben Linea ris kerese s Logaritmikus kerese s Programoza si te telek Eldo nte s Kiva laszta s Kiva logata s Megsza mla la s Halmazok Halmaztulajdonsa g vizsga lata Halmaz le trehoza sa Tartalmaza s vizsga lat Re szhalmaz vizsga lat Halmazok unio ja Halmazok metszete Halmazok ku lo nbse ge Halmazok szimmetrikus differencia ja / 5
Tartalom 1 Kerese sek rendezett to mbo kben Linea ris kerese s Logaritmikus kerese s Programoza si te telek Eldo nte s Kiva laszta s Kiva logata s Megsza mla la s Halmazok Halmaztulajdonsa g vizsga lata Halmaz le trehoza sa Tartalmaza s vizsga lat Re szhalmaz vizsga lat Halmazok unio ja Halmazok metszete Halmazok ku lo nbse ge Halmazok szimmetrikus differencia ja / 5
Tartalom 1 Kerese sek rendezett to mbo kben Linea ris kerese s Logaritmikus kerese s Programoza si te telek Eldo nte s Kiva laszta s Kiva logata s Megsza mla la s Halmazok Halmaztulajdonsa g vizsga lata Halmaz le trehoza sa Tartalmaza s vizsga lat Re szhalmaz vizsga lat Halmazok unio ja Halmazok metszete Halmazok ku lo nbse ge Halmazok szimmetrikus differencia ja 4 / 5
Linea ris kerese s rendezett to mbben Va ltoztata si o tlet A linea ris kerese sne l a to mbo t az eleje to l a ve ge fele haladva ja rjuk be. A beja ra st addig ve gezzu k, amı g meg nem tala ljuk a keresett elemet, illetve a to mb ve ge re nem e ru nk. Rendezett to mbo k esete n a beja ra st befejezhetju k akkor is, ha ma r a keresett elemne l nagyobb elemhez jutunk. 5 / 5
Linera is kerese s rendezett to mbben Pszeudoko d Bemenet: x T rendezett to mb, n ege sz (to mb me rete), e rte k T; ahol T o sszehasonlı thato Kimenet: van logikai, idx ege sz fu ggve ny Linea riskerese srendezettben(x, n, e rte k) i 1 ciklus amı g (i n) (x[i] < e rte k) i i +1 ciklus ve ge van (i n) (x[i] = e rte k) ha van akkor idx i vissza (van, idx) ku lo nben vissza van fu ggve ny ve ge 6 / 5
Tartalom 1 Kerese sek rendezett to mbo kben Linea ris kerese s Logaritmikus kerese s Programoza si te telek Eldo nte s Kiva laszta s Kiva logata s Megsza mla la s Halmazok Halmaztulajdonsa g vizsga lata Halmaz le trehoza sa Tartalmaza s vizsga lat Re szhalmaz vizsga lat Halmazok unio ja Halmazok metszete Halmazok ku lo nbse ge Halmazok szimmetrikus differencia ja 7 / 5
Logaritmikus kerese s Algoritmus o tlete Kiva lasztjuk a to mb ko ze pso eleme t. Ha a ko ze pso elem nagyobb a keresett e rte kne l, akkor az biztos a to mb elso fele ben tala lhato. Ha a ko ze pso elem kisebb a keresett e rte kne l, akkor az biztos a to mb ma sodik fele ben tala lhato. Folytassuk a kerese st hasonlo mo don a megfelelo re szto mbben. A kerese st akkor hagyjuk abba, ha megtala ltuk a keresett e rte ket, elfogyott a to mb. 8 / 5
Logaritmikus kerese s iteratı v megvalo sı ta sa Pszeudoko d Bemenet: x T rendezett to mb, n ege sz, e rte k T; ahol T o sszehasonlı thato Kimenet: van logikai, idx ege sz fu ggve ny LogaritmikusKerese s(x, n, e rte k) bal 1 jobb n ciklus k j center bal+jobb ha x[center ] > e rte k akkor jobb center 1 ku lo nben ha x[center ] < e rte k akkor bal center + 1 amı g (bal jobb) (x[center ] 6= e rte k) van (bal jobb) ha van akkor idx center vissza (van, idx) ku lo nben vissza van fu ggve ny ve ge 9 / 5
Logaritmikus kerese s Futa si ido Ha nyszor fut le a ciklus? Ha a ko ze pso elem a keresett e rte k, akkor csak egyszer. Ez a legjobb eset. A ciklus minden lefuta sakor felezo dik a to mb. Ez ha nyszor lehetse ges? Egy n elemu to mbo t dlog ne-szer lehet felezni. Legrosszabb esetben pe lda ul, ha keresett e rte k nincs a to mbben d1 + log ne-szer fut le a ciklus. A tlagos esetben a ciklus dlog ne-szer fut le. A futa si ido : T (n) = O (log n). 10 / 5
Logaritmikus kerese s iteratı v megvalo sı ta sa Feladat Keressu k meg a 1 e rte ket az x to mbben. fu ggve ny LogaritmikusKerese s(x, n, e rte k) bal 1 jobb n ciklus j k center bal+jobb ha x[center ] > e rte k akkor jobb center 1 ku lo nben ha x[center ] < e rte k akkor bal center + 1 amı g (bal jobb) (x[center ] 6= e rte k) van (bal jobb) ha van akkor idx center vissza (van, idx) ku lo nben vissza van idx fu ggve ny ve ge x: 1 bal 6 7 9 1 Kimenet van = igaz; igaz idx = 6 14 17 18 19 5 6 8 0 center bal center jobb center jobb 11 / 5
Logaritmikus kerese s rekurzı v megvalo sı ta sa Pszeudoko d Bemenet: x T rendezett to mb, bal ege sz, jobb ege sz, e rte k T; ahol T o sszehasonlı thato Kimenet: Az e rte k-kel megegyezo elem indexe, illetve ha nincs ilyen, akkor 0. fu ggve ny LogaritmikusKerese srekurzı v(x, bal, jobb, e rte k) ha bal > jobb akkor vissza 0 ku lo nben center bal+jobb ha x[center ] = e rte k akkor vissza center ku lo nben ha x[center ] > e rte k akkor vissza LogaritmikusKerese srekurzı v(x, bal, center 1, e rte k) ku lo nben vissza LogaritmikusKerese srekurzı v(x, center + 1, jobb, e rte k) fu ggve ny ve ge 1 / 5
Tartalom 1 Kerese sek rendezett to mbo kben Linea ris kerese s Logaritmikus kerese s Programoza si te telek Eldo nte s Kiva laszta s Kiva logata s Megsza mla la s Halmazok Halmaztulajdonsa g vizsga lata Halmaz le trehoza sa Tartalmaza s vizsga lat Re szhalmaz vizsga lat Halmazok unio ja Halmazok metszete Halmazok ku lo nbse ge Halmazok szimmetrikus differencia ja 16 / 5
Tartalom 1 Kerese sek rendezett to mbo kben Linea ris kerese s Logaritmikus kerese s Programoza si te telek Eldo nte s Kiva laszta s Kiva logata s Megsza mla la s Halmazok Halmaztulajdonsa g vizsga lata Halmaz le trehoza sa Tartalmaza s vizsga lat Re szhalmaz vizsga lat Halmazok unio ja Halmazok metszete Halmazok ku lo nbse ge Halmazok szimmetrikus differencia ja 17 / 5
Eldo nte s Pszeudoko d Bemenet: x T rendezett to mb, n ege sz (to mb me rete), e rte k T; ahol T o sszehasonlı thato Kimenet: van logikai fu ggve ny Eldo nte srendezettben(x, n, e rte k) bal 1 jobb n ciklus k j center bal+jobb ha x[center ] > e rte k akkor jobb center 1 ku lo nben ha x[center ] < e rte k akkor bal center + 1 amı g (bal jobb) (x[center ] 6= e rte k) van (bal jobb) vissza van fu ggve ny ve ge 18 / 5
Mo dosı tott eldo nte s Pszeudoko d Bemenet: x T rendezett to mb, n ege sz (to mb me rete), also hata r T, felso hata r T; ahol T o sszehasonlı thato Kimenet: van logikai fu ggve ny Mo dosı totteldo nte srendezettben(x, n, also hata r, felso hata r) bal 1 jobb n ciklus k j center bal+jobb ha x[center ] > felso hata r akkor jobb center 1 ku lo nben ha x[center ] < also hata r akkor bal center + 1 amı g (bal jobb) ((also hata r x[center ]) (x[center ] felso hata r )) van (bal jobb) vissza van fu ggve ny ve ge 19 / 5
Tartalom 1 Kerese sek rendezett to mbo kben Linea ris kerese s Logaritmikus kerese s Programoza si te telek Eldo nte s Kiva laszta s Kiva logata s Megsza mla la s Halmazok Halmaztulajdonsa g vizsga lata Halmaz le trehoza sa Tartalmaza s vizsga lat Re szhalmaz vizsga lat Halmazok unio ja Halmazok metszete Halmazok ku lo nbse ge Halmazok szimmetrikus differencia ja 1 / 5
Kiva laszta s Pszeudoko d Bemenet: x T rendezett to mb, n ege sz, e rte k T; ahol T o sszehasonlı thato Kimenet: idx ege sz fu ggve ny Kiva laszta srendezettben(x, n, e rte k) bal 1 jobb n ciklus k j center bal+jobb ha x[center ] > e rte k akkor jobb center 1 ku lo nben ha x[center ] < e rte k akkor bal center + 1 amı g x[center ] 6= e rte k idx center vissza idx fu ggve ny ve ge / 5
Tartalom 1 Kerese sek rendezett to mbo kben Linea ris kerese s Logaritmikus kerese s Programoza si te telek Eldo nte s Kiva laszta s Kiva logata s Megsza mla la s Halmazok Halmaztulajdonsa g vizsga lata Halmaz le trehoza sa Tartalmaza s vizsga lat Re szhalmaz vizsga lat Halmazok unio ja Halmazok metszete Halmazok ku lo nbse ge Halmazok szimmetrikus differencia ja / 5
Kiva logata s Pszeudoko d Bemenet: x T rendezett to mb, n ege sz, e rte k T; ahol T o sszehasonlı thato Kimenet: van logikai, bal ege sz, jobb ege sz fu ggve ny Kiva logata srendezettben(x, n, e rte k) bal 1 jobb n ciklus j k bal+jobb center ha x[center ] > e rte k akkor jobb center 1 ku lo nben ha x[center ] < e rte k akkor bal center + 1 amı g (bal jobb) (x[center ] 6= e rte k) van (bal jobb) ha van akkor bal center ciklus amı g (bal > 1) (x[bal 1] = e rte k) bal bal 1 ciklus ve ge jobb center ciklus amı g (jobb < n) (x[jobb + 1] = e rte k) jobb jobb + 1 ciklus ve ge vissza (van, bal, jobb) ku lo nben vissza van fu ggve ny ve ge 4 / 5
Mo dosı tott kiva logata s Pszeudoko d Bemenet: x T rendezett to mb, n ege sz, also hata r T, felso hata r T; ahol T o sszehasonlı thato Kimenet: van logikai, bal ege sz, jobb ege sz fu ggve ny Mo dosı tottkiva logata srendezettben(x, n, also hata r, felso hata r) bal 1 jobb n ciklus k j bal+jobb center ha x[center ] > felso hata r akkor jobb center 1 ku lo nben ha x[center ] < also hata r akkor bal center + 1 amı g (bal jobb) ((also hata r x[center ]) (x[center ] felso hata r )) van (bal jobb) ha van akkor bal center ciklus amı g (bal > 1) (x[bal 1] also hata r ) bal bal 1 ciklus ve ge jobb center ciklus amı g (jobb < n) (x[jobb + 1] felso hata r ) jobb jobb + 1 ciklus ve ge vissza (van, bal, jobb) ku lo nben vissza van fu ggve ny ve ge 6 / 5
Tartalom 1 Kerese sek rendezett to mbo kben Linea ris kerese s Logaritmikus kerese s Programoza si te telek Eldo nte s Kiva laszta s Kiva logata s Megsza mla la s Halmazok Halmaztulajdonsa g vizsga lata Halmaz le trehoza sa Tartalmaza s vizsga lat Re szhalmaz vizsga lat Halmazok unio ja Halmazok metszete Halmazok ku lo nbse ge Halmazok szimmetrikus differencia ja 7 / 5
Megsza mla la s Pszeudoko d Bemenet: x T rendezett to mb, n ege sz, e rte k T; ahol T o sszehasonlı thato Kimenet: db ege sz fu ggve ny Megsza mla la srendezettben(x, n, e rte k) bal 1 jobb n ciklus j k bal+jobb center ha x[center ] > e rte k akkor jobb center 1 ku lo nben ha x[center ] < e rte k akkor bal center + 1 amı g (bal jobb) (x[center ] 6= e rte k) ha bal jobb akkor bal center ciklus amı g (bal > 1) (x[bal 1] = e rte k) bal bal 1 ciklus ve ge jobb center ciklus amı g (jobb < n) (x[jobb + 1] = e rte k) jobb jobb + 1 ciklus ve ge db jobb bal + 1 ku lo nben db 0 vissza db fu ggve ny ve ge 8 / 5
Tartalom 1 Kerese sek rendezett to mbo kben Linea ris kerese s Logaritmikus kerese s Programoza si te telek Eldo nte s Kiva laszta s Kiva logata s Megsza mla la s Halmazok Halmaztulajdonsa g vizsga lata Halmaz le trehoza sa Tartalmaza s vizsga lat Re szhalmaz vizsga lat Halmazok unio ja Halmazok metszete Halmazok ku lo nbse ge Halmazok szimmetrikus differencia ja 9 / 5
Halmazok Halmazok reprezenta la sa A halmazokat olyan no vekvo mo don rendezett to mbo kke nt a bra zoljuk, amelyekben nincs isme tlo de s. Jelo le su k a pszeudoko dban: halmaz 0 / 5
Tartalom 1 Kerese sek rendezett to mbo kben Linea ris kerese s Logaritmikus kerese s Programoza si te telek Eldo nte s Kiva laszta s Kiva logata s Megsza mla la s Halmazok Halmaztulajdonsa g vizsga lata Halmaz le trehoza sa Tartalmaza s vizsga lat Re szhalmaz vizsga lat Halmazok unio ja Halmazok metszete Halmazok ku lo nbse ge Halmazok szimmetrikus differencia ja 1 / 5
Halmaztulajdonsa g vizsga lata Pszeudoko d Bemenet: x T rendezett to mb, n ege sz (to mb me rete); ahol T o sszehasonlı thato Kimenet: l logikai fu ggve ny HalmazE(x, n) i ciklus amı g (i n) (x[i] 6= x[i 1]) i i +1 ciklus ve ge l (i > n) vissza l fu ggve ny ve ge / 5
Tartalom 1 Kerese sek rendezett to mbo kben Linea ris kerese s Logaritmikus kerese s Programoza si te telek Eldo nte s Kiva laszta s Kiva logata s Megsza mla la s Halmazok Halmaztulajdonsa g vizsga lata Halmaz le trehoza sa Tartalmaza s vizsga lat Re szhalmaz vizsga lat Halmazok unio ja Halmazok metszete Halmazok ku lo nbse ge Halmazok szimmetrikus differencia ja / 5
Halmaz le trehoza sa Pszeudoko d Bemenet: x T rendezett to mb, n ege sz (to mb me rete); ahol T o sszehasonlı thato Kimenet: a T halmaz, db ege sz fu ggve ny HalmazLe trehoza s(x, n) a Le trehoz(t)[n] db 1 a[db] x[1] ciklus i -to l n-ig ha x[i] 6= a[db] akkor db db + 1 a[db] x[i] ciklus ve ge vissza (a, db) fu ggve ny ve ge 4 / 5
Tartalom 1 Kerese sek rendezett to mbo kben Linea ris kerese s Logaritmikus kerese s Programoza si te telek Eldo nte s Kiva laszta s Kiva logata s Megsza mla la s Halmazok Halmaztulajdonsa g vizsga lata Halmaz le trehoza sa Tartalmaza s vizsga lat Re szhalmaz vizsga lat Halmazok unio ja Halmazok metszete Halmazok ku lo nbse ge Halmazok szimmetrikus differencia ja 6 / 5
Tartalmaza s vizsga lat Pszeudoko d Bemenet: a T halmaz, n ege sz (halmaz me rete), e rte k T; ahol T o sszehasonlı thato Kimenet: l logikai fu ggve ny TartalmazzaE(a, n, e rte k) bal 1 jobb n ciklus k j center bal+jobb ha a[center ] > e rte k akkor jobb center 1 ku lo nben ha a[center ] < e rte k akkor bal center + 1 amı g (bal jobb) (a[center ] 6= e rte k) l (bal jobb) vissza l fu ggve ny ve ge 7 / 5
Tartalom 1 Kerese sek rendezett to mbo kben Linea ris kerese s Logaritmikus kerese s Programoza si te telek Eldo nte s Kiva laszta s Kiva logata s Megsza mla la s Halmazok Halmaztulajdonsa g vizsga lata Halmaz le trehoza sa Tartalmaza s vizsga lat Re szhalmaz vizsga lat Halmazok unio ja Halmazok metszete Halmazok ku lo nbse ge Halmazok szimmetrikus differencia ja 8 / 5
Re szhalmaz vizsga lat Pszeudoko d Bemenet: a T halmaz, m ege sz (a me rete), b T halmaz, n T halmaz (b me rete) Kimenet: l logikai fu ggve ny Re szhalmaz e(a, m, b, n) i 1 j 1 ciklus amı g (i m) (j n) (a[i] b[j]) ha a[i] = b[j] akkor i i +1 j j +1 ciklus ve ge l (i > m) vissza l fu ggve ny ve ge 9 / 5
Tartalom 1 Kerese sek rendezett to mbo kben Linea ris kerese s Logaritmikus kerese s Programoza si te telek Eldo nte s Kiva laszta s Kiva logata s Megsza mla la s Halmazok Halmaztulajdonsa g vizsga lata Halmaz le trehoza sa Tartalmaza s vizsga lat Re szhalmaz vizsga lat Halmazok unio ja Halmazok metszete Halmazok ku lo nbse ge Halmazok szimmetrikus differencia ja 4 / 5
Halmazok unio ja Pszeudoko d Bemenet: a1 T halmaz, n1 ege sz (halmaz me rete), a T halmaz, n ege sz (halmaz me rete) Kimenet: b T halmaz, db ege sz fu ggve ny HalmazUnio (a1, n1, a, n ) b Le trehoz(t)[n1 + n ] i 1 j 1 db 0 n1 n1 + 1 a1 [n1 ] + n n + 1 a [n ] + ciklus amı g i < n1 j < n db db + 1 ha a1 [i] < a [j] akkor b[db] a1 [i] i i +1 ku lo nben ha a1 [i] > a [j] akkor b[db] a [j] j j +1 ku lo nben b[db] a1 [i] i i +1 j j +1 ciklus ve ge vissza (b, db) fu ggve ny ve ge 4 / 5
Halmazok unio ja Feladat Hata rozzuk meg az a1 e s a halmazok unio ja t! fu ggve ny HalmazUnio (a1, n1, a, n ) b Le trehoz(t)[n1 + n ] i 1 j 1 db 0 n1 n1 + 1 a1 [n1 ] + n n + 1 a [n ] + ciklus amı g i < n1 j < n db db + 1 ha a1 [i] < a [j] akkor b[db] a1 [i] i i +1 ku lo nben ha a1 [i] > a [j] akkor b[db] a [j] j j +1 ku lo nben b[db] a1 [i] i i +1 j j +1 ciklus ve ge vissza (b, db) fu ggve ny ve ge a1 : a : b: 4 5 8 i i i i i i 1 5 7 j j j j j 1 4 5 7 8 db db db db db db db db 44 / 5
Tartalom 1 Kerese sek rendezett to mbo kben Linea ris kerese s Logaritmikus kerese s Programoza si te telek Eldo nte s Kiva laszta s Kiva logata s Megsza mla la s Halmazok Halmaztulajdonsa g vizsga lata Halmaz le trehoza sa Tartalmaza s vizsga lat Re szhalmaz vizsga lat Halmazok unio ja Halmazok metszete Halmazok ku lo nbse ge Halmazok szimmetrikus differencia ja 45 / 5
Halmazok metszete Pszeudoko d Bemenet: a1 T halmaz, n1 ege sz (halmaz me rete), a T halmaz, n ege sz (halmaz me rete) Kimenet: b T halmaz, db ege sz fu ggve ny HalmazMetszet(a1, n1, a, n ) b Le trehoz(t)[min(n1, n )] i 1 j 1 db 0 ciklus amı g (i n1 ) (j n ) ha a1 [i] < a [j] akkor i i +1 ku lo nben ha a1 [i] > a [j] akkor j j +1 ku lo nben db db + 1 b[db] a1 [i] i i +1 j j +1 ciklus ve ge vissza (b, db) fu ggve ny ve ge 46 / 5
Tartalom 1 Kerese sek rendezett to mbo kben Linea ris kerese s Logaritmikus kerese s Programoza si te telek Eldo nte s Kiva laszta s Kiva logata s Megsza mla la s Halmazok Halmaztulajdonsa g vizsga lata Halmaz le trehoza sa Tartalmaza s vizsga lat Re szhalmaz vizsga lat Halmazok unio ja Halmazok metszete Halmazok ku lo nbse ge Halmazok szimmetrikus differencia ja 48 / 5
Halmazok ku lo nbse ge Pszeudoko d Bemenet: a1 T halmaz, n1 ege sz (halmaz me rete), a T halmaz, n ege sz (halmaz me rete) Kimenet: b T halmaz, db ege sz fu ggve ny HalmazMetszet(a1, n1, a, n ) b Le trehoz(t)[n1 ] i 1 j 1 db 0 ciklus amı g (i n1 ) (j n ) ha a1 [i] < a [j] akkor db db + 1 b[db] a1 [i] i i +1 ku lo nben ha a1 [i] > a [j] akkor j j +1 ku lo nben i i +1 j j +1 ciklus ve ge ciklus amı g i n1 db db + 1 b[db] a1 [i] i i +1 ciklus ve ge vissza (b, db) fu ggve ny ve ge 49 / 5
Tartalom 1 Kerese sek rendezett to mbo kben Linea ris kerese s Logaritmikus kerese s Programoza si te telek Eldo nte s Kiva laszta s Kiva logata s Megsza mla la s Halmazok Halmaztulajdonsa g vizsga lata Halmaz le trehoza sa Tartalmaza s vizsga lat Re szhalmaz vizsga lat Halmazok unio ja Halmazok metszete Halmazok ku lo nbse ge Halmazok szimmetrikus differencia ja 51 / 5
Halmazok szimmetrikus differencia ja Pszeudoko d Bemenet: a1 T halmaz, n1 ege sz (halmaz me rete), a T halmaz, n ege sz (halmaz me rete) Kimenet: b T halmaz, db ege sz fu ggve ny HalmazMetszet(a1, n1, a, n ) b Le trehoz(t)[n1 + n ] i 1 j 1 db 0 ciklus amı g i n1 j n ha a1 [i] < a [j] akkor db db + 1 b[db] a1 [i] i i +1 ku lo nben ha a1 [i] > a [j] akkor db db + 1 b[db] a [j] j j +1 ku lo nben i i +1 j j +1 ciklus ve ge ciklus amı g i n1 db db + 1 b[db] a1 [i] i i +1 ciklus ve ge ciklus amı g j n db db + 1 b[db] a [j] j j +1 ciklus ve ge vissza (b, db) fu ggve ny ve ge 5 / 5