Download as pdf or txt
Download as pdf or txt
You are on page 1of 18

Fák és fákra vonatkozó tételek

Def.: Egy G körmentes gráfot erdőnek nevezünk. Ha G erdő még összefüggő is, akkor
fának hívjuk. Egy fa 1 fokszámú csúcsait leveleknek nevezzük.
Megj.: Az erdők összefüggő komponensei fák.
Tétel: Minden legalább két csúcsú fának van legalább két levele.
Bizonyítás: Legyen v1, v2, . . . , vk egy, a fában található leghosszabb út. Belátjuk,
hogy v1 és vk levelek. Tegyük fel, hogy ez nem így van, és mondjuk vk (hasonló az
okfejtés v1 esetére) nem levél. Ez azt jelenti, hogy vk nemcsak a vk−1 csúccsal
szomszédos. Ekkor vk-ból nem mehet él a v1, v2, . . . , vk−2, vk csúcsok egyikébe
sem, a fa körmentessége miatt. De a többi V \ {v1, . . . , vk} csúcsokba sem mehet él
hiszen ez ellentmondana annak, hogy v1, v2, . . . , vk egy leghosszabb út a fában.
Tétel: Egy n csúcsú fa éleinek száma n-1.
Bizonyítás. A bizonyítást az n csúcsszámra vonatkozó teljes indukcióval végezzük el.
n = 1 esetén nyilván igaz az állítás. Ha n > 1, tegyük fel, hogy a tétel állítása igaz n −
1 csúcsra. Legyen a v csúcs egy G n csúcsú fa egy levele. Jelölje w az egyetlen v-vel
szomszédos csúcsot. Ekkor a vw élt és a v csúcsot elhagyva egy n − 1 csúcsú fához
jutunk, amelyben az élek száma n − 2 az indukciós feltevésünk miatt. Tehát G éleinek
száma valóban n − 1.
Következmény: Egy n csúcsú, k összefüggő komponensű erdőnek n-k éle van.
Tétel: Egy n csúcsú gráf pontosan akkor fa, ha összefüggő és éleinek száma n-1.
Tétel: Egy n csúcsú gráf pontosan akkor fa, ha körmentes és éleinek száma n-1.

Euler-formula
Def.: Egy gráf síkbarajzolható, ha lerajzolható úgy, hogy élei ne metsszék egymást.
Egy síkbarajzolt gráf élei által behatárolt területeket tartományoknak nevezzük. Egy
korlátos tartományt belső, míg egy korlátlan tartományt külső tartománynak nevezünk.
Tétel: Ha egy G összefüggő síkbarajzolható gráfnak n csúcsa, m éle és t tartománya
van, akkor n-m+t=2.
Bizonyítás. A bizonyítást élszámra vonatkozó indukcióval végezzük. Ha m = 0, akkor
G-re szükségszerűen n = 1 és t = 1. Tegyük fel, hogy az Euler-formula igaz minden m
− 1 élű összefüggő, síkbarajzolható gráfra. Ha G egy fa, akkor m = n − 1 és t = 1, tehát
fák esetére igaz az Euler-formula. Ha pedig G nem fa, akkor található benne egy C
kör. Hagyjuk el a C kör egy élét. Az így adódó G′ gráf egy éllel és egy tartománnyal
tartalmaz kevesebbet, mivel a C kör egy élének elhagyása két tartomány
összeolvadását eredményezte. G′ -re alkalmazva indukciós feltevésünket, az adódik,
hogy n − (m − 1) + (t − 1) = 2. Tehát valóban, G gráfra n − m + t = 2.

K3,3 nem síkbarajzolható


Def.: Egy gráf síkbarajzolható, ha lerajzolható úgy, hogy élei ne metsszék egymást.
Egy síkbarajzolható gráf síkbarajzolása a gráf egy olyan síkbeli ábrázolása, melyben
az élek nem metszik egymást.
Def.: Kn az az n csúcsú egyszerű gráf, amelynek bármely két csúcsa szomszédos.
Kn-t n-csúcsú teljes gráfnak hívjuk.
Def.: A (V, E) gráf páros gráf, ha csúcsai két A és B halmazba sorolhatók úgy hogy
minden élének egyik csúcsa A-beli, míg a másik csúcsa B-beli. Teljes páros gráfról
beszélünk, ha a gráfban minden A-beli csúcs összekötött minden B-beli csúccsal.
Tétel: A K3,3 gráf nem síkbarajzolható.
Bizonyítás. Tegyük fel, hogy K3,3 síkbarajzolható. K3,3 esetén n = 6 és m = 9. Így az
Euler-formula alkalmazásával adódik, hogy t = 5. Jelölje b1, . . . , b5 rendre a T1, . . . ,
T5 tartományokat határoló élek számát. Tekintsük a B = ∑ i=15 bi összeget. Mivel
mindegyik él legfeljebb két tartomány határán lehet, B ≤ 2m = 18 egy felső korlát B-re.
Páros gráfban nem lehet háromszög alakú tartomány. Ezért K3,3-ban egy tartományt
legalább négy él határol, és ezért B ≥ 4t = 20. Tehát ellentmondásra jutottunk.

Egyszerű síkbarajzolható gráf élszáma és csúcsszáma közötti egyenlőtlenség


Def.: Egy gráf síkbarajzolható, ha lerajzolható úgy, hogy élei ne metsszék egymást.
Tétel: Ha G egy n≥3 csúcsszámú és m élű síkbarajzolható egyszerű gráf, akkor m≤3n-
6.
Bizonyítás: Tegyük fel, hogy G összefüggő. Jelölje b1, . . . , bt rendre a T1, . . . , Tt
tartományokat határoló élek számát és B a ∑i=1t bi összeget. Mivel mindegyik él
legfeljebb két tartomány határán lehet, B ≤ 2m. Továbbá, mivel minden tartományt
legalább három él határol, B ≥ 3t. Tehát 2m ≥ 3t, amiből az Euler-formula
alkalmazásával adódik a tétel állítása. Ha G egy k > 1 összefüggő komponensű gráf,
akkor k−1 élt megfelelően hozzávéve adódik egy G′ összefüggő gráf, amelyre 3n − 6
≥ m + k − 1 > m.

K5 nem síkbarajzolható
Def.: Egy gráf síkbarajzolható, ha lerajzolható úgy, hogy élei ne metsszék egymást.
Egy síkbarajzolható gráf síkbarajzolása a gráf egy olyan síkbeli ábrázolása, melyben
az élek nem metszik egymást.
Def.: Kn az az n csúcsú egyszerű gráf, amelynek bármely két csúcsa szomszédos.
Kn-t n-csúcsú teljes gráfnak hívjuk.
Tétel: K5 nem síkbarajzolható.
Bizonyítás. K5 esetén n=5 és m=10 (teljes gráf éleinek száma = 1/2(n − 1)n). Az
egyszerű síkbarajzolható gráf élszáma és csúcsszáma közötti egyenlőtlenség alapján
3n − 6≥m, így 9≥10, ami ellentmondás. Tehát K5 nem síkbarajzolható.

Egyszerű síkbarajzolható gráfok minimális fokszámára vonatkozó egyenlőtlenség


Tétel: Bármely G síkbarajzolható egyszerű gráf esetén G minimális fokszáma
legfeljebb 5: δ(G)≤5.
Bizonyítás: Jelölje G csúcsainak számát n és éleinek számát pedig m. A tétel állítása
nyilvánvalóan igaz n≤6 esetén, ezért csak az n>6 esettel kell foglalkoznunk. A
fokszámok összegét jelöljük D-vel, ami az élek számának kétszerese, így D=2m. Az
egyszerű síkbarajzolható gráf élszáma és csúcsszáma közötti egyenlőtlenség alapján:
2m ≤ 2(3n − 6) = 6n – 12, tehát D≤6n-12. Ha most mindegyik csúcs fokszáma legalább
6 volna, akkor D ≥ 6n következne, ami viszont lehetetlen. Tehát kell lennie legfeljebb
5 fokszámú csúcsnak.

Az 5-szín tétel
Def.: Egy G egyszerű gráf k-színnel kiszínezhető, ha létezik a csúcshalmazának egy
olyan k tagú osztályfelbontása, amelyben az azonos osztályba kerülő csúcsok mind
nem szomszédosak. Ha a G egyszerű gráf k-színnel kiszínezhető, de k-1 színnel már
nem, akkor k a G kromatikus száma: χ(G)=k.
Tétel: síkbarajzolható egyszerű gráfok kromatikus száma legfeljebb 5: χ(G)≤5.
Bizonyítás: A bizonyítást csúcsszámra vonatkozó indukcióval végezzük. Az állítás
nyilván igaz n≤5 esetére, tehát csak az n≥6 eseteket kell már vizsgálnunk. Bármely
síkbarajzolható egyszerű gráf esetén a minimális fokszám legfeljebb 5 (tétel), így
létezik egy legfeljebb 5 fokszámú u ∈ V csúcs. Ha deg(u) < 5, akkor tekintsük azt a
gráfot, amelyet G-ből úgy kapunk, hogy G-ből elhagyjuk u-t, és azon éleket, amelyekre
u illeszkedik. Az így kapott G′ gráfot az indukciós feltevés alapján 5-színnel
kiszínezhetjük. Ekkor u számára marad az öt szín közül legalább egy szabad szín,
hiszen u-nak legfeljebb csak négy szomszédja van G-ben. Marad a deg(u) = 5 eset.
Ekkor nem lehet u összes szomszédja között él, hiszen ez azt jelentené, hogy K6
részgráfja G-nek, ami viszont ellentmondana G síkbarajzolhatóságának. Tehát van u-
nak két egymással nem szomszédos v, w ∈ V (G) szomszédos csúcsa. Ekkor
képezzük a G gráfból a G′ gráfot a következőképpen: hagyjuk el a G-ből az u és v
csúcsokat, és ezenkívül az u-ra vagy v-re illeszkedő éleket, de az így elhagyott éleket
„átirányítjuk” w-be, azaz egy x ∈ V (G) \ {u, v, w} csúcsból akkor is megy él w-be, ha
korábban u-ba vagy v-be ment. Színezzük ki a G′ gráfot öt színnel, ami megtehető az
indukciós feltevésünk miatt. Ezek után színezzük v-t w-vel azonos színűre G-ben.
Mivel így u öt szomszédjának színezéséhez csak legfeljebb négy különböző színt
használtunk, marad legalább egy szín u-ra.

Berge-tétel
Def.: Adott G=(V,E) gráfban az M⊆E élhalmazt egy párosításnak nevezzük, ha nem
tartalmaz hurokélt, és két különböző M-beli élnek nincs közös csúcsa. Az M-beli éleket
független éleknek, és az M-beli élek csúcsait M-lefedett csúcsoknak nevezzük.
Def.: Egy M párosítás maximális, ha G-ben nem található olyan M’ párosítás, amelyre
M ⊂ M′. Egy M párosítás maximális élszámú, ha G-ben nem található több független
élt tartalmazó M’ párosítás. A maximális élszámú párosításban szereplő élek számát
ν(G)-vel jelöljük [nű].
Def.: Adott egy G=(V,E) gráf és ezen egy M párosítás. Ekkor egy olyan G-beli utat,
amelyben váltakozva követik egymást M-beli és M-en kívüli élek M-alternáló útnak
nevezzük.
Tétel: Legyen M egy G=(V,E)-beli párosítás. Ekkor M pontosan akkor egy maximális
élszámú párosítás, ha G nem tartalmaz mindkét különböző végpontjában M-lefedetlen
M-alternáló utat.
Bizonyítás: [⇒] Legyen M egy maximális élszámú párosítás és tegyük fel, hogy v1, v2,
. . . , vk olyan M-alternáló út, amelyben v1 és vk nincsenek lefedve. Ekkor M:= {v2v3,
v4v5, ... , vk−2vk−1}. Tekintsük ekkor az M′:=E\M élhalmazt (szerepcsere az alternáló
út élein). Az M′ eggyel több élt tartalmaz, mint M, továbbá M′ szintén egy G-beli
párosítás. Tehát ellentmondásra jutottunk. [⇐]A másik irány bizonyításához tegyük fel,
hogy G = (V, E) nem tartalmaz mindkét végpontjában lefedetlen M-alternáló utat, és
M-nél mégis létezik több élt tartalmazó M′ párosítás. Tartalmazza a V-beli csúcsokból
képzett E* élhalmaz pontosan azokat az M ∪ M′ éleket, amelyek kizárólag az M vagy
az M′ egyikében szerepelnek. Tekintsük a G*= (V, E*) gráfot, amely nyilván a G egy
részgráfja. Először is mindegyik V-beli csúcs legfeljebb csak egy M-beli, és legfeljebb
csak egy M′-beli élre illeszkedhet. Ezért bármely csúcs fokszáma legfeljebb kettő a G*
gráfban. Ebből kifolyólag G* összefüggő komponensei utak vagy körök lehetnek. Kör
esetén csak páros hosszúságú „M-alternáló” körről lehet szó, mivel M és M′ is egy
párosítás. Eszerint egy kör ugyanannyi M-beli élt tartalmaz, mint M′ -belit. Ezért
|M|<|M′| miatt kell lennie legalább egy olyan M-alternáló útnak is G* összefüggő
komponensei között, amelynek két végpontja M által lefedetlen. Ez viszont ellentmond
kiindulási feltevésünknek, és ezért M-nek maximális élszámú párosításnak kell lennie.

Hall-tétel
Def.: A (V,E) gráf egy páros gráf, ha csúcsai két, A és B halmazba sorolhatók úgy,
hogy minden élének egyik csúcsa A-beli, míg másik csúcsa B-beli. A páros gráfokat a
G=(A,B,E) rendezett hármassal is jelöljük.
Jelöljük N(W)-vel a G gráf W⊆V(G) csúcsaival szomszédos csúcsok halmazát.

Tétel: A G=(A,B,E) páros gráfban pontosan akkor létezik A-t lefedő párosítás, ha
|N(S)|≥|S| teljesül A tetszőleges részhalmazára.
Bizonyítás: [⇒] Induljunk ki abból, hogy létezik A-t lefedő M párosítás. Mivel G egy
páros gráf, bármelyik v ∈ A csúcsát lefedő M-beli él pontosan egy B-beli csúcsot is
lefed, amelyet további M-beli él nyilván nem fedhet már le. Ezért A tetszőleges S
részhalmazára |N(S)| ≥ |S|. [⇐]Tegyük fel,
hogy |N(S)| ≥ |S| teljesül A tetszőleges S
részhalmazára. Vegyünk egy M
maximális élszámú párosítást G-ben.
Tegyük fel továbbá, hogy v ∈ A nincs
lefedve M által. Jelölje W azon csúcsok
halmazát, amelyek v-ből induló M-alternáló utak csúcsai. Legyen S := A ∩ W és T :=
B ∩ W |N({v})| ≥ |{v}|, v nem lehet izolált csúcs. Továbbá v nem lehet szomszédos M-
lefedetlen B-beli csúccsal, hiszen ν(G) = |M|. Vegyük észre, hogy Berge tétele miatt T
mindegyik csúcsa le van fedve M által. Továbbá S csúcsai is, v kivételével, lefedettek
M által. Ezért Berge tétele miatt |T| = |S| − 1. T definícióját figyelembe véve a Berge-
tétel újbóli alkalmazásával kapjuk, hogy N(S) = T. De |N(S)| = |S| − 1 < |S| ellentmond
kiinduló feltevésünknek. Tehát nem létezhet M által lefedetlen v ∈ A csúcs, azaz M egy
lefedő párosítása A-nak.

König-tétel
Def.: Adott G=(V,E) gráfban az M ⊆ E élhalmazt egy párosításnak nevezzük, ha nem
tartalmaz hurokélt és két különböző M-beli élnek nincs közös csúcsa. Az M-beli éleket
független éleknek, az M-beli élek csúcsait M-lefedett csúcsoknak nevezzük.
Def.: Egy M párosítás maximális, ha G-ben nem található olyan M’ párosítás, amelyre
M⊂M′. Egy M párosítás maximális élszámú, ha G-ben nem található több független élt
tartalmazó M’ párosítás. A maximális élszámú párosításban szereplő élek számát
ν(G)-vel [nű] jelöljük.
Def.: Adott egy G=(V,E) gráf. Az X ⊆ V egy lefogó csúcshalmaz, ha G mindegyik
élének legalább egyik csúcsa X-beli. Jelölje a lefogó csúcsok minimális számát τ(G)
[tau].
Tétel: Ha G=(A, B, E) egy páros gráf, akkor a maximális élszámú párosításban
szereplő élek száma egyenlő a lefogó csúcsok minimális számával: ν(G) = τ(G).
Bizonyítás. Vegyük G-nek egy M maximális élszámú párosítását. Jelölje W az M
párosítás által le nem fedett A-beli csúcsok halmazát. Nyilván |M| = |A| − |W|. Jelölje X
azon G-beli csúcsok halmazát, amelyek egy W-beli csúcsból elérhetőek M-alternáló
utakon keresztül. Legyen S := A ∩ X és T := B ∩ X. Berge tétele miatt, egyrészt az M
párosítás egy kölcsönösen egyértelmű leképezést létesít az S \ W és a T halmazok
között, másrészt N(S) = T. A C := (A \ S) ∪ T nyilván egy lefogó csúcshalmaz. A lefogó
csúcshalmaz elem számára igaz a következő összefüggés |C| = |A| − |S| + |T| = |A| −
|W| = |M|. Viszont G bármelyik lefogó csúcshalmazának tartalmaznia kell M minden
egyes élének legalább egyik csúcsát. csúcsát. Tehát valóban τ (G)= ν(G).

Gale-Shapley algoritmus helyessége


A Gale-Shapley algoritmus stabil házasítások meghatározására alkalmas. A
házassági problémában adott az urak A={a1, …, an} és a hölgyek B={b1, .., bn}
halmaza, valamint mindkét fél teljes rendezések által rangsorolja a jelölteket. A Gale-
Shapley algoritmus a következő lépésekből áll:
1. Kezdetben mindegyik úr és hölgy szabad.
2. Amíg van szabad ai úr, addig a következők szerint járjunk el. Legyen bj hölgy az ai
úr által legkedveltebb, általa még meg nem keresett hölgy. Ha bj szabad, akkor
jegyezze el ai bj -t. Ha bj az ak úr jegyese és ai ≻∗ j ak, akkor ai eljegyzi bj -t és az ak
úr újra szabaddá válik. A fennmaradó esetben ai továbbra is szabad marad.
3. Házasítsuk össze az eljegyzett párokat.
Tétel: A Gale-Shapley algoritmus stabil házasítást eredményez.
Bizonyítás: Nyilván mindegyik úr legfeljebb n hölgyet keres meg, így az algoritmus
legfeljebb n^2 megkeresés után véget ér. Belátjuk, hogy az eljárás egy házasítást
határoz meg. Nyilván egy hölgy egyszerre pontosan csak egy úrral lehet eljegyezve
és ha már egyszer eljegyezte valaki, akkor végig eljegyzett is marad (legfeljebb
számára egyre előnyösebb partnerekre tér át). Mivel egy nem eljegyzett hölgy bárkinek
a megkeresését fogadja, továbbá a hölgyek és urak száma azonos, az algoritmus
szükségszerűen egy házasítást eredményez. Végezetül belátandó, hogy a kapott
házasítás valóban stabil. Válasszuk az a urat tetszőlegesen. Legyen az a úr
házastársa a b hölgy. Tekintsünk egy olyan b′ hölgyet, akit az a úr b-nél jobban kedvel.
Nyilván a b′ hölgy már elutasította az a urat egy másik a′ úrral szemben. Mivel a végső
házasításban a b′ hölgy nem járhat rosszabbul, mint a′ úrral, így az a úr nem tud kitörni
jelenlegi házasságából. Tehát egyik úr sem tud „megválni” a Gale-Shapley algoritmus
által kijelölt házastársától.

A maximális folyam értékére vonatkozó, javító utak segítségével megfogalmazott tétel


Def.: Adott egy G=(V,E) irányított gráf, egy s ∈ V forrás, egy t ∈ V nyelő és egy k : E
→ [0, ∞) kapacitásfüggvény. A (G, s, t, k) egy hálózat. Ebben a hálózatban az f: E →
[0, ∞) egy s-ből t-be vezető folyam. A folyam értéke egyetlen él mentén sem lépheti túl
az él kapacitási korlátját (f(e) ≤ k(e)), valamit s és t csúcsokat kivéve a többi csúcs
„tranzit” csúcs, tehát ∑ uv∈E f(uv) = ∑ vu∈E f(vu).

Az s forrásból elküldött mennyiség maradéktalanul megérkezik a t nyelőben.


Def.: Az s forrásból elküldött mennyiséget a folyam értékének nevezzük.
mf := ∑sv∈E f(sv) − ∑ vs∈E f(vs)

Egy (G, s, t, k) hálózatbeli f folyam értéke növelhető, ha találunk G-ben egy olyan s=v1,
v2, … vt=t csúcssorozatot, amelyben vivi+1 ∈ E és minden élen a folyam értéke kisebb,
mint a kapacitási korlát: f(vivi+1) < k(vivi+1), vagy vi+1vi ∈ E és a folyam értéke 0nál
nagyobb. Az utóbbi feltételnek eleget tevő csúcssorozatot egy s-ből t-be vezető javító
útnak hívjuk. Egy javító út mentén — az „előrefelé” mutató éleken átáramló
mennyiségek növelésével, míg a „visszafelé” mutató élek mentén visszaáramló
mennyiségek csökkentésével — növelhető a folyam értéke.
Tétel: Egy (G, s, t, k) hálózatbeli f folyam értéke pontosan akkor maximális, ha nem
található benne s-ből t-be vezető javító út.
Bizonyítás: [⇒] Ha volna benne ilyen javító út, akkor a fentiek alapján a folyam értéke
nyilván nem lehetne maximális. [⇐] Induljunk ki abból, hogy az f folyamban nincsen s-
ből t-be vezető javító út. Jelölje W azon csúcsok halmazát, amelyekbe viszont vezet s-
ből javító út. Mivel az egy elemű s csúcssorozat egy s-ből s-be vezető javító út és t∉W,
ezért W és V\W sem üres. Ekkor ha az uv ∈ E él u csúcspontja W-beli, és v csúcspontja
nem W-beli, akkor uv szükségszerűen telített, hiszen ellenkező esetben lenne s-ből v-
be vezető javító út is. Ha pedig a vu ∈ E él u csúcspontja W-beli és v csúcspontja nem
W-beli, akkor f(vu) = 0, mivel különben volna s-ből v-be vezető javító út. A W-beli és
nem W-beli csúcsokat összekötő élek kettéválasztják a G gráfot, így egy esetleges
folyam érték növekedésnek ezen élek mentén is észlelhetőnek kell lennie. Azonban,
mint azt megmutattuk, a folyam értékét nem tudjuk növelni a W-t a V (G) \ W-vel
összekötő élek mentén. Tehát f maximális értékű.

Ford-Fulkerson-tétel
Def.: Adott egy G=(V,E) irányított gráf, egy s ∈ V forrás, egy t ∈ V nyelő és egy k : E
→ [0, ∞) kapacitásfüggvény. A (G, s, t, k) egy hálózat. Ebben a hálózatban az f: E →
[0, ∞) egy s-ből t-be vezető folyam. A folyam értéke egyetlen él mentén sem lépheti túl
az él kapacitási korlátját (f(e) ≤ k(e)), valamit s és t csúcsokat kivéve a többi csúcs
„tranzit” csúcs, tehát ∑ uv∈E f(uv) = ∑ vu∈E f(vu).

Def.: Az s forrásból elküldött mennyiséget a folyam értékének nevezzük.


mf := ∑sv∈E f(sv) − ∑ vs∈E f(vs)

Def.: Adott a (G, s, t, k) hálózat csúcsainak egy olyan (S, T) partíciója, amelyre s ∈ S
és t ∈ T. Azoknak az éleknek a halmazát, amelyek egyik csúcsa az S, míg másik
csúcsa a T eleme egy [S, T]-vágásnak nevezzük ([S, T] := {uv ∈ E(G) | u ∈ S, v ∈ T,
vagy u ∈ T, v ∈ S} élhalmaz). Az [S, T]-vágás értékét a k(S, T) := ∑ uv∈[S,T]∩(S×T) k(uv)
értékkel értelmezzük.
Megjegyzendő, hogy a vágás értékében csak az előrefelé mutató éleket vesszük
figyelembe.
Tétel: Egy hálózatban a maximális folyam értéke megegyezik a minimális vágás
értékével.
Bizonyítás: Akármely [S, T]-vágást is vesszük, a hálózaton semmiképpen nem folyhat
át nagyobb mennyiség, mint az előrefele (azaz S-ből T-be) mutató élek
összkapacitása. Tehát a minimális vágás értéke nem lehet kisebb a maximális folyam
értékénél. A 3.3. tétel bizonyításában konstruált [W, V (G) \ W]-vágás értéke pedig
pontosan megegyezik a maximális folyam értékével.

Euklideszi algoritmus és helyessége


Az euklideszi algoritmus egy nagyon hatékony algoritmus a legnagyobb közös osztó
meghatározására.
Tétel: Ha a egész és b pozitív egész, akkor lnko(a,b)= lnko(b, a mod b)
(Bizonyítás: Legyen lnko(a,b)=c és lnko(b, a mod b)=d. Az a-qb = a mod b egyenlet
bal oldalának osztója c, így a jobb oldalnak is, tehát c|d. Az a=qb+(a mod b) egyenlet
jobb oldalának osztója d, így a-nak is. Ha d|a, akkor d|c. Mivel c|d és d|c, így c=d.)
A fenti tétel többszöri ismételt alkalmazásával határozható meg két szám legnagyobb
közös osztója.
Tétel: Az euklideszi algoritmus tetszőleges a és b egészek esetén meghatározza a
legnagyobb közös osztót.
Bizonyítás: Az előző tételből következik, hogy minden egyes iterációs lépés után a és
b legnagyobb közös osztója változatlan marad. Tehát csak azt kell belátnunk, hogy az
algoritmus véget ér. Definiáljunk ehhez egy (rk) sorozatot, amely k-adik eleme az a k-
adik iterációs lépés utáni értéket tartalmazza. Legyen először is r0=|a| és r1=|b|.
Továbbá rk≠0 esetén legyen rk+1=rk−1 mod rk, ha k ≥ 1. Az (rk) sorozat nyilván szigorúan
csökkenő és nem negatív értékű, ezért létezik olyan k, amelyre rk+1 = 0.
------
előadás diákból:
Tétel: Az euklideszi algoritmus véges sok lépésben véget ér és helyes eredményt ad,
azaz rk=lnko(a,b).
Bizonyítás: Az algoritmus véget ér, mert a maradékok r1, r2, r3, … sorozata szigorúan
monoton csökkenő pozitív tagú sorozat.
lnko (a, b) = lnko(b, a mod b =r1) = lnko (r1, b mod r1 =r2) =….= lnko (rk,0)=rk →
lnko(a,b)=rk.

∀a, b ∈ Z : lnko(a, b) ∈ aZ + bZ
Tétel: Bármely a, b egészekre, ha legnagyobb közös osztójuk pozitív, akkor lnko(a, b)
= min{c ∈ Z+ | c ∈ aZ + bZ}

(aZ + bZ = {ax + by | x, y ∈ Z} az a és b egészek egész együtthatós lineáris


kombinációinak halmaza)
Bizonyítás. Legyen d := min{c ∈ Z+ | c ∈ aZ + bZ}, ekkor léteznek olyan x és y egészek,
melyekre d = ax + by. Mivel d előáll a és b egész együtthatós lineáris kombinációjaként,
lnko(a, b) | d, amiből lnko(a, b) ≤ d adódik. A maradékos osztás tétele alapján létezik
olyan q egész, melyre a mod d = a − qd = a − q(ax + by) = a(1 − qx) + b (−qy). Mivel
0≤ a mod d < d és a mod d ∈ aZ+bZ, ezért a mod d = 0. Ezek alapján d | a, és hasonlóan
igazolható, hogy d | b. Tehát d az a és b közös osztója, így d ≤ lnko(a, b). Összegezve,
d = lnko(a, b).

A diofantoszi egyenletek megoldhatóságának szükséges és elégséges feltétele


Az olyan egész együtthatós algebrai egyenleteket, amelyeknek a megoldását az egész
számok körében keressük, diofantoszi egyenleteknek nevezzük. Itt az ax+by=c alakú,
kétváltozós lineáris diofantoszi egyenletek megoldásával foglalkozunk.
Tétel: Adott a, b, c egészekre az ax+by=c diofantoszi egyenletnek pontosan akkor
létezik megoldása, ha lnko(a,b) | c.
Bizonyítás [⇒] Legyen x, y ∈ Z egy megoldása az ax+by = c egyenletnek. Ekkor lnko(a,
b) | a és lnko(a, b) | b felhasználásával lnko(a, b) | ax + by, azaz lnko(a, b) | c. [⇐] Ha
lnko(a, b) | c, akkor van olyan d egész, melyre c = d·lnko(a, b). Mivel bármely a, b
egészekre, ha lnko(a,b)>0, akkor lnko(a, b) = min{c ∈ Z+ | c ∈ aZ + bZ} (tétel), így
léteznek olyan s, t ∈ Z számok, melyekre lnko(a, b) = as + bt. Ez utóbbi egyenlőséget
d-vel beszorozva adódik, hogy c = d · lnko(a, b) = a(ds) + b(dt), tehát az ax + by = c
diofantoszi egyenletnek az x = ds és y = dt egy megoldása.

Ha a, b ∈ N és lnko(a, b) = 1, akkor ϕ(ab) = ϕ(a)ϕ(b).


Def. (Euler-féle φ-függvény): Adott m ∈ Z+ esetén φ(m) az m-nél nem nagyobb egész
számok közül az m-mel relatív prímek száma.
Egy p prím esetén φ(p)=p-1, hiszen p és az összes nála kisebb pozitív egészek relatív
prímek. Továbbá φ(1)=1.
Állítás: Ha a és b pozitív egészek (a, b ∈ Z+ ) és relatív prímek (lnko(a, b) = 1), akkor
φ(ab) = φ(a)φ(b).
Bizonyítás: lnko(ab, c)=1, akkor ha lnko(a,c)=1 és lnko(b,c)=1, tehát elég számolni
csak az a-hoz és b-hez külön-külön relatív prímeket. A táblázat minden sora egy
modulo a szerinti teljes maradékrendszer, így minden egyes sor pontosan φ(a) darab
a-hoz relatív prímet tartalmaz. A {0, 1, . . . , b − 1} egy modulo b teljes
maradékrendszer. Ha {t1, . . . , tm} ⊂ Z egy teljes maradékrendszer modulo m, a, b ∈
Z és lnko(a, m) = 1, akkor {at1 + b, . . . , atm + b} is teljes maradékrendszer modulo m.
Ezen étel alapján {0a + r, 1a + r, . . . ,(b − 1)a + r} is egy teljes maradékrendszer mod
b tetszőleges r ∈ Z esetén, mivel lnko(a, b) = 1. Ezért minden egyes oszlop egy teljes
maradékrendszer modulo b, így minden egyes oszlopban pontosan φ(b) darab b-vel
relatív prím található.
φ(a) db oszlopok mindegyike pontosan φ(b) darab, b-hez is relatív prímet tartalmaz.
Tehát valóban, φ(ab) = φ(a)φ(b).

?? Euler-féle számelméleti függvény kiszámítása


Def. (Euler-féle φ-függvény): Adott m ∈ Z+ esetén φ(m) az m-nél nem nagyobb egész
számok közül az m-mel relatív prímek száma.
??
Tétel: Adott az a > 1 egész kanonikus alakja: a = ∏ni=1pimi, ahol p1, . . . , pn egymástól
különböző prímek és m1, . . . , mn pozitív egészek. Ekkor
φ(a) = ∏ni=1 φ(pimi) = ∏ni=1 (pimi - pimi-1) = a∏ni=1(1-1/pi).
Bizonyítás. Az első egyenlőség azonnal következik az állításból. Következő lépésként
határozzuk meg φ(pimi) értékét. Az 1, . . . , pimi egészek közül csak az 1pi , 2pi , . . . ,
pimi-1pi egészek nem relatív prímek a pimi-hez. Ezért φ (pimi) = pimi − pimi-1. Végül
∏ni=1pimi kiemelésével adódik a harmadik egyenlőség is.

Euler-Fermat- tétel
Def.: Egy a egész kongruens b-vel modulo m, ha m | a – b (m pozitív egész).
Tétel: Ha a egész szám és m pozitív egész relatív prímek, akkor a φ(m)-dik hatványa
m-mel osztva 1 maradékot ad / aφ(m) kongruens 1 modulo m:
a ∈ Z, m ∈ Z+ és lnko(a, m) = 1, akkor aφ(m) ≡ 1 (mod m)

Bizonyítás. Legyen r1, . . . , rφ(m) egy redukált maradékrendszer modulo m. Mivel


lnko(a, m) = 1, így ar1, . . . , arφ(m) is egy redukált maradékrendszer modulo m.
Mindkét redukált maradékrendszer ugyanazon maradékosztályokat reprezentálja,
elemeik páronként kongruensek rk ≡ arik (mod m). Ezen kongruenciák bal oldalainak
szorzata kongruens a jobb oldalak szorzatával, azaz r1r2…rφ(m) ≡ ar i1ari2…ariφ(m) =
aφ(m) r1r2…rφ(m) (mod m). A fenti kongruenciában egyszerűsíthetünk, így 1 ≡ aφ(m)
(mod m).

Lineáris kongruencia, továbbá megoldhatóságának szükséges és elégséges feltétele


Def.: Legyen m egy pozitív egész szám. Azt mondjuk, hogy az a egész kongruens b-
vel modulo m, ha m | a – b. Röviden a ≡ b (mod m).
Def.: Lineáris kongruenciának nevezzük az ax ≡ b (mod m) kongruenciát, amelyben
az x egész szám értéke meghatározandó az a, b, m pozitív egész számok
függvényében.
Az ax ≡ b (mod m) lineáris kongruencia az m | ax-b oszthatósági feltétellel definiált. Ez
az jelenti, hogy létezik egy y egész szám, melyre my = ax-b. Ez átrendezve egy lineáris
diofantoszi egyenletet ad: ax – my = b. A lineáris diofantoszi egyenletek
megoldhatóságából adódik a következő tétel:
Tétel: Legyenek a, b egészek és m pozitív egész szám. Ekkor az ax ≡ b (mod m)
lineáris kongruencia akkor és csak akkor oldható meg, ha lnko(a, m) | b.
Egy megoldható ax ≡ b (mod m) lineáris kongruenciának végtelen sok megoldása van.
Ha x ∈ Z megoldás, akkor x′ ≡ x (mod m) érték is megoldás lesz. Így egy lineáris
kongruencia megoldásszáma az őt kielégítő maradékosztályok száma.

RSA kulcsgenerálása, RSA kódolás és dekódolás


A legelterjedtebb nyilvános kulcsú rejtjelezési eljárás az RSA. A nyilvános és titkos
kulcsok előállítása a következőképpen történik:
1) Válasszunk véletlenszerűen a p és q nagy prímeket. Legyen n := pq.
2) Válasszunk egy e > 3 egészet, amely kisebb φ(n)-nél és relatív prím φ(n)-nel.
φ(n) az n-nél nem nagyobb egész számok közül az n-nel relatív prímek száma. φ(n) =
φ(pq) = φ(p)φ(q) = (p-1)(q-1) (egy adott p prím esetén én φ(p) = p − 1, hiszen p és az
összes nála kisebb pozitív egész relatív prímek).
3) Válasszuk a d > 1 egészet, amely kisebb φ(n)-nél, úgy hogy ed ≡ 1 (mod φ(n))
teljesüljön.
4) Így (e, n) a nyilvános kulcs, míg (d, n) a titkos kulcs.
Egy m üzenetet az (e, n) nyilvános kulcsot alkalmazva titkosíthatunk. Az r rejtjelezett
üzenetet az r ≡ m^e (mod n) kongruencia adja meg.
Az r rejtjelezett üzenetből a (d, n) titkos kulcs segítségével fejthetjük vissza az eredeti
üzenetet: m ≡ r^d (mod n).

Az RSA rendszer helyessége


A legelterjedtebb nyilvános kulcsú rejtjelezési eljárás az RSA. Az RSA titkosításhoz
szükséges egy (e, n) nyilvános és egy (d, n) titkos kulcs. Ha m a titkosítandó üzenet
és E(m) a rejtjelező függvény, akkor a rejtjelezett üzenet r = E(m), amit az r ≡ m^e
(mod n) kongruencia ad meg. A dekódoló függvénnyel fejthetjük vissza az eredeti
üzenetet: D(r) = m, ami az m ≡ r^d (mod n) kongruencia.
Tétel: Az r ≡ m^e (mod n) és m ≡ r^d (mod n) kongruenciákkal adott RSA eljárás
helyes, azaz D(E(m)) = m és E(D(m)) = m, bármely m egész üzenetre.
Bizonyítás: Vegyünk egy m ∈ Zn üzenetet. A kódoló kongruencia mindkét oldalát d-
edik hatványra emelve az
rd ≡ med (mod n)
kongruencia adóik. Az ed kitevőt vizsgálva, az e választása miatt, létezik olyan h ∈ Z,
hogy
ed = hφ(n) + 1 = h(p − 1)(q − 1) + 1.
Ezért
rd ≡ med = m · mh(p−1)(q−1) (mod n).
Mivel n a p és q prímek szorzata, ez ekvivalens az alábbi két kongruenciával:
med ≡ m(m(p−1))h(q−1) (mod p) és med ≡ m(m(q−1))h(p−1) (mod q).
Tekintsük az első kongruenciát. Ha m nem osztója p-nek, akkor az Euler–Fermat-tétel
felhasználásával adódik, hogy
rd ≡ med ≡ m (mod p).
Ha pedig m | p, akkor az
rd ≡ med ≡ m ≡ 0 (mod p)
alakban teljesül. A második kongruenciából teljesen hasonlóan kapjuk az
rd ≡ med ≡ m (mod q)
kongruenciát. A kapott két kongruencia ekvivalens az rd ≡ med ≡ m (mod n)-nel, azaz
beláttuk, hogy m ≡ rd (mod n). Tehát D(r) = D(E(m)) = m. Teljesen hasonlóan
igazolható, hogy E(D(m)) = m.
Logaritmikus keresés műveletigénye

Adott egy monoton növekedően rendezett n elemű x tömb. Ha ebben a tömbben y


értékét keressük, akkor a tömb „középső” elemét megvizsgálva eldönthető, hogy
megtaláltuk-e a keresett elemet, a
tömb első vagy második felében kell e
tovább keresnünk. A vizsgálandó
tömbtartományt addig „felezzük”, amíg
meg nem találjuk a keresett értéket
vagy egy egyelemű tartományt kellene
tovább feleznünk. Ezt az eljárást
hívják logaritmikus (vagy bináris)
keresésnek.
Jelölje [ik… jk] a k-adik lépés után kapott vizsgálandó indextartományt. Legrosszabb
esetben a tartományunk egy egyelemű tartománnyá szűkül, jelölje ezt a lépést k*.
Ekkor n = | [i0..j0] | ≥ 2 | [i1..j1] | ≥ . . . ≥ 2k* | [ik* ... jk*] | = 2k*. Ezért k* ≤ log2n felezés
szükséges. Tehát a logaritmikus keresés műveletigényének aszimptotikus felső
korlátja O(log2n). Tekintsük most az y = x1 esetet. Ekkor i0 = i1 = … = ik* = 1, jk ∗ = 1,
jk−1 = 2jk, ha jk−1 páros és jk−1 = 2jk + 1, ha jk−1 páratlan. Ezért
n ≤ 2j1 + 1 ≤ 2(2j2 + 1) + 1 ≤ 2(2(2j3 + 1) + 1) + 1 = 23 j3 + 22 + 2 + 1 ≤ . . . ≤ ≤ 2 k ∗ +
2k ∗−1 + . . . + 1 = 2k ∗+1 − 1 < 2 k ∗+1 .
Tehát (log2 n) − 1 < k*, ebből pedig már következik, hogy log2n aszimptotikusan éles
korlát: Θ(log2n).

Kváziteljes bináris fák magassága


A kupacrendezéshez kapcsolódnak a kváziteljes bináris fák. Vegyük például az x = (3,
1, 6, 5 ,7 ,4) tömböt. Ehhez az x-hez hozzárendeljük az ábrán
látható fát, a fa csúcsait „szintfolytonosan” címkézzük meg a
tömb elemeivel. A fa gyökere a nulladik szinten lévő csúcs (itt
3). A gyökértől azonosan távol lévő csúcsok egy szinten
helyezkednek el. Egy fa attól bináris, hogy bármely csúcsa alatt
legfeljebb két szomszédos csúcsa van és a gyökerén kívül bármely csúcs fölött egy
szomszédos csúcs található. Egy csúcs fölött elhelyezkedő csúcsot az adott csúcs
szülőjének, míg az alatta elhelyezkedő szomszédos csúcsokat az adott csúcs
gyermekeinek hívjuk. Teljes bináris fáról beszélünk, ha az összes csúcsnak két
gyermeke van, és a levelek mind azonos szinten helyezkednek el. Kváziteljes bináris
fáról beszélünk, ha a legalsó szintet elhagyva egy teljes bináris fát kapunk, és a legalsó
szinten a levelek balról jobbra „hézagmentesen” helyezkednek
el. Az F fa magassága,
amelyet h(F)-fel jelölünk, a
gyökérből kiinduló
leghosszabb út hossza. Az
ábrára tekintve könnyen
megkapjuk egy n csúcsú
kváziteljes bináris fa
magasságát. Formálisan:
2h = ∑i=0 h−1 2i+1 ≤ n ≤ ∑i=0 h 2i
= 2h+1−1 < 2h+1 , ezért h =
⌊log2 n⌋.

A kupacrendezés műveletigénye
A kupacrendezés során a rendezendő x ∈ An tömbhöz
hozzárendelünk egy kváziteljes bináris fát. Vegyük például az
x=(3, 1, 6, 5 ,7 ,4) tömböt. Ehhez az x-hez hozzárendeljük az
ábrán látható fát, a fa csúcsait „szintfolytonosan” címkézzük
meg a tömb elemeivel. A fa gyökere a nulladik szinten lévő
csúcs (itt 3). Egy fa attól bináris, hogy bármely csúcsa alatt
legfeljebb két szomszédos csúcsa van és a gyökerén kívül bármely csúcs fölött egy
szomszédos csúcs található. Egy csúcs fölött elhelyezkedő csúcsot az adott csúcs
szülőjének, míg az alatta elhelyezkedő szomszédos csúcsokat az adott csúcs
gyermekeinek hívjuk.
Egy kváziteljes bináris fát kupacnak nevezünk, ha minden szülő nagyobb egyenlő a
gyermekeinél, illetve a baloldali gyermeke nagyobb egyenlő a jobboldalinál. A kupaccá
alakítást alulról a levelektől kezdjük, és ahogy haladunk fölfelé a fán, minden szülő-
gyermek csere után szükség esetén helyre kell állítanunk a csere által érintett részfa
kupac tulajdonságát.

A kupac rendezés ciklusmagja n-2-szer hajtódik végre, ami maximum (n-2)2h = (n-
2)⌊log2 n⌋ ≤ 2nlog2n összehasonlítást eredményez, ahol h = ⌊log2 n⌋ a kváziteljes
bináris fa magassága. A kezdő kupacot előállító eljárásban ⌊n/2⌋ csere történhet,
külön-külön 2h összehasonlítással. Összegezve a két részbecslést azt kapjuk, hogy a
kupacrendezés műveletigényének aszimptotikus felső korlátja nlog2n.
2n log2 n + n log2 n = O(n log2 n).

??Összefésülő rendezés műveletigénye


Az összefésülő rendezés egy x ∈ An sorozatot egy xa ∈ A⌈n/2⌉ és egy xb ∈ An−⌈n/2⌉ = A⌊n/2⌋
sorozatra bontja úgy, hogy x = (xa, xb). Ezután az xa és xb sorozatokat rendezi
rekurzíven. Végül az xa és xb már rendezett sorozatokat „összefésüli” egy rendezett
sorozattá.
Példa: x=(4, 2, 7, 1, 3, 9, 5)

Ha feltesszük, hogy n=2k, akkor az összehasonlítások száma ≤ nlog2n. Tehát az


összefésülő rendezés műveletigényének aszimptotikus felső korlátja O(n log 2 n). Ez
aszimptotikusan éles korlát is: Θ(n log2 n).

Gyorsrendezés műveletigénye
A gyorsrendezés az összefésülő rendezéshez hasonlóan az x ∈ An tömböt két részre
bontja, a rendezést alacsonyabb méretű tömbökön hajtja végre. A felbontás
előállításához először egy y = xi elemet választ, majd az x tömb elejébe helyezi az y-
nál kisebb elemeket, a tömb végébe pedig az y-nál nem kisebb elemeket. Ezek után
az elejét és végét rekurzíven ugyanilyen módon rendezi.
A gyorsrendezés műveletigényét tekintve a legrosszabb eset akkor áll elő, ha a
felbontás során mindig csak egy elemet választunk le. Az (1, 2… n) tömb rendezésekor
maximum (n-1)+(n-2)+…+2+1=1/2(n-1)n lépés kell. Tehát a gyorsrendezés
műveletigényének aszimptotikusan éles korlátja Θ(n2). A legrosszabb esetet tekintve
gyengébben szerepel az összefésüléses és a kupac rendezéseknél, azonban
igazolható, hogy az átlagos műveletigényének aszimptotikusan éles korlátja Θ(nlog2n).

Összehasonlító rendezések minimális műveletigénye


Összehasonlító rendező eljárásoknak nevezzük azokat az eljárásokat, ahol az
elvégzett mozgatások összehasonlítások kimeneteleitől függnek. Ilyen típusúak a
buborék, a beszúró, az összefésülő, a kupac és a gyors rendezés.
A legrosszabb esetet véve az összefésülő és a kupacrendezésnek van a legkisebb
műveletigénye, legfeljebb log2n nagyságrendű összehasonlítás szükséges.
Ha feltesszük, hogy a rendezendő tömbök nem tartalmaznak azonos elemeket, akkor
A={1, 2, …, n}. Az eljárás által végzett összehasonlításokat egy (bináris) döntési fával
szemléltethetjük. A döntési fa bármely input tömb esetén megmutatja, hogy mely
összehasonlítások elvégzése után kapjuk meg a rendezett tömböt. Egy n elemű tömb
rendezését leíró fának n! levele van, mivel n!-féle lehetséges input tömbhöz különböző
levelek tartoznak, és a döntési fában a gyökérből pontosan egy út vezet a megfelelő
levélhez. Egy n elemű tömb rendezését leíró döntési fából leolvashatjuk az eljárás
maximális összehasonlításainak számát, ez a fa magassága. Egy h magasságú fának
legfeljebb 2h levele lehet, így n! levél akkor fér el a fán, ha az n! ≤ 2 h egyenlőtlenség
teljesül. Ebből h ≥ log2(n!) adódik. A Stirling-formula (???) alapján létezik olyan n0
természetes szám, hogy n! ≥ (n/e)n minden n≥ n0-ra. Tehát h ≥ log2(n!) ≥ nlog2(n/e) =
nlog2n − nlog2e, ha n ≥ n0.
Tétel: Bármely összehasonlító rendezés esetén a maximális összehasonlítások
száma nagyságrendileg nem lehet nlog2n-nél kisebb.

You might also like