Számításelmélet 2 - El adás jegyzet



Hasonló dokumentumok
Gráfokkal megoldható hétköznapi problémák

Analízisfeladat-gyűjtemény IV.

Miskolci Egyetem GÉPÉSZMÉRNÖKI ÉS INFORMATIKAI KAR. Analízis I. példatár. (kidolgozott megoldásokkal) elektronikus feladatgyűjtemény

KOVÁCS BÉLA, MATEMATIKA I.

Számelméleti feladatok az általános iskolai versenyek tükrében dr. Pintér Ferenc, Nagykanizsa

Átrendezések és leszámlálások ÚTMUTATÓ Hegedüs Pál június 30.

MATEMATIKA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

Matematikai és matematikai statisztikai alapismeretek

Matematikai logika 1 A MATEMATIKAI LOGIKA ALAPJAI. Pécsi Tudományegyetem, Bevezetés

Lineáris programozás. Modellalkotás Grafikus megoldás Feladattípusok Szimplex módszer

Online jegyzet az Egészérték Programozás I. és II. tárgyhoz

Bináris keres fák kiegyensúlyozásai. Egyed Boglárka

Általános statisztika II. Kriszt, Éva Varga, Edit Kenyeres, Erika Korpás, Attiláné Csernyák, László

BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM ÁRAMLÁSTAN TANSZÉK TOMPA TESTEK ELLENÁLLÁSTÉNYEZŐJÉNEK VIZSGÁLATA MÉRÉSI SEGÉDLET. 2013/14. 1.

Félévi időbeosztás (nagyjából) házi feladat beadási határidőkkel (pontosan) Valószínűségszámítás 2. matematikusoknak és fizikusoknak, 2009 tavasz

A Számítástudomány Alapjai

Gráfelmélet/Diszkrét Matematika MSc hallgatók számára. Párosítások

GAZDASÁGMATEMATIKA KÖZÉPHALADÓ SZINTEN

Tesztkérdések az ALGORITMUSELMÉLET tárgyból, 2001/ félév

Mesterséges Intelligencia I. (I602, IB602)

Valószín ségelmélet házi feladatok

közti kapcsolatok, Ellenőrzés, Játék 21. modul

2. Halmazelmélet (megoldások)

Mátrixaritmetika. Tartalom:

Bevezetés a valószínűségszámításba és alkalmazásaiba: példákkal, szimulációkkal

Algoritmuselmélet ZH április 8.

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 12.

Mesterséges intelligencia 1 előadások

A készletezés Készlet: készletezés Indok Készlettípusok az igény teljesítés viszony szerint

1. Bevezetés. A számítógéptudomány ezt a problémát a feladat elvégzéséhez szükséges erőforrások (idő, tár, program,... ) mennyiségével méri.

Gyakorlatok. P (n) = P (n 1) + 2P (n 2) + P (n 3) ha n 4, (utolsó lépésként l, hl, u, hu-t léphetünk).

Tankönyv-választás. igazgató és tankönyvfelelős kérdőív. A válaszadás önkéntes! Ki válaszol a kérdőívre? nap... óra...

Matematikai logika Arisztotelész Organon logika feladata Leibniz Boole De Morgan Frege dedukció indukció kijelentésnek

P (A) = i. P (A B i )P (B i ) P (B k A) = P (A B k)p (B k ) P (A) i P (A B i)p (B i )

Biztosítási ügynökök teljesítményének modellezése

0653. MODUL TÖRTEK. Szorzás törttel, osztás törttel KÉSZÍTETTE: BENCZÉDY LACZKA KRISZTINA, MALMOS KATALIN

Játékelmélet és pénzügyek

Bevezetés a játékelméletbe Kétszemélyes zérusösszegű mátrixjáték, optimális stratégia

Lehet vagy nem? Konstrukciók és lehetetlenségi bizonyítások Dr. Katz Sándor, Bonyhád

Soukup Dániel, Matematikus Bsc III. év cím: Témavezető: Szentmiklóssy Zoltán, egyetemi adjunktus

Mercs Erika. Matematikai módszerek a navigációban

EGÉSZTESTSZÁMLÁLÁS. Mérésleírás Nukleáris környezetvédelem gyakorlat környezetmérnök hallgatók számára

Klasszikus alkalmazások

Sztojka Miroszláv LINEÁRIS ALGEBRA Egyetemi jegyzet Ungvár 2013

Ferenczi Dóra. Sorbanállási problémák

ASPEKTUS ÉS ESEMÉNYSZERKEZET A MAGYARBAN

43. ORSZÁGOS TIT KALMÁR LÁSZLÓ MATEMATIKAVERSENY MEGYEI FORDULÓ HETEDIK OSZTÁLY JAVÍTÁSI ÚTMUTATÓ

Ütemezések speciális rugalmas gyártórendszereken

I. A légfékrendszer időszakos vizsgálatához alkalmazható mérő-adatgyűjtő berendezés műszaki

Nyíltvízi Úszás Nemzetközi Szabályai

Kétszemélyes négyes sor játék

2) = 0 ahol x 1 és x 2 az ax 2 + bx + c = 0 ( a,b, c R és a 0 )

Matematikai programozás gyakorlatok

4. előadás. Vektorok

DIÁKIGAZOLVÁNY. Felhasználói dokumentáció verzió 3.7. Budapest, 2015.

1. Számoljuk meg egy számokat tartalmazó mátrixban a nulla elemeket!

Ingatlanvagyon értékelés

MATEMATIKA évfolyam

A matematika alapjai. Nagy Károly 2014

7. évfolyam I. félév, 2. feladatsor 1/6

Ultimátumjáték, altruizmus és evolúció. Méder Zsombor-Zoltán

A gyakorlatok HF-inak megoldása Az 1. gyakorlat HF-inak megoldása. 1. Tagadások:

A két csapatra osztás leggyakoribb megvalósításai: Lyukas teli (vagy sima vagy nem lyukas)

Széchenyi István Egyetem, 2005

Tartalomjegyzék. 5. A közbeszerzési eljárás főbb eljárási cselekményei. 6. Eljárási időkedvezmények a közbeszerzési törvényben

2. előadás: További gömbi fogalmak

Analízis 1. (BSc) vizsgakérdések Programtervez informatikus szak tanév 2. félév

Csomagolások környezetvédelmi megfelelısége értékelésének szempontjai

Legrövidebb utat kereső algoritmusok. BFS (szélességi keresés)

B/6 EGYÜTTMŰKÖDÉSI KÖTELEZETTSÉG A SZERZŐDÉSI JOGBAN (ADÁSVÉTEL, VÁLLALKOZÁS, MEGBÍZÁS, BIZTOSÍTÁS)

MATEMATIKA I. RÉSZLETES ÉRETTSÉGI VIZSGAKÖVETELMÉNY A) KOMPETENCIÁK

matematikai statisztika október 24.

3. gyakorlat Dinamikus programozás

Kártyajátékok és bűvésztrükkök

Hálók kongruenciahálója

A 2015/2016 tanévi Országos Középiskolai Tanulmányi Verseny második forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Gráfelmélet II. Gráfok végigjárása

EÖTVÖS LORÁND TUDOMÁNYEGYETEM KLASSZIFIKÁCIÓ AZ ADATBÁNYÁSZATBAN

Bevezetés. Párhuzamos vetítés és tulajdonságai

Fizikaverseny, Döntő, Elméleti forduló február 8.

Az 5-2. ábra két folyamatos jel (A és B) azonos gyakoriságú mintavételezését mutatja ábra

Poszeidon (EKEIDR) Irat és Dokumentumkezelő rendszer webes felület

ESETTANULMÁNY II. A nagyváros és környéke területpolitikai sajátosságai a kistérségi rendszer működése szempontjából. című kutatás

HITELESÍTÉSI ELŐÍRÁS HIDEGVÍZMÉRŐK ÁLTALÁNOS ELŐÍRÁSOK

11. Matematikai statisztika

AZ ÉPÍTÉSI MUNKÁK IDŐTERVEZÉSE

BÉRSZÁMFEJTÉS 1 S Z O F T V E R E N G E D É L Y E Z É S I S Z E R ZŐDÉS

Kőszegi Irén MATEMATIKA. 9. évfolyam

A megváltozott munkaképességű személyek foglalkoztatási helyzete

Számlakészítés a SPRINT programmal

OBJEKTUMORIENTÁLT TERVEZÉS ESETTANULMÁNYOK. 2.1 A feladat

MATEMATIKA TANTERV Bevezetés Összesen: 432 óra Célok és feladatok

VÉGELSZÁMOLÁS, ADÓVÁLTOZÁSOK, KOCKÁZATI KÉRDŐÍV, PDF-BEN VALÓ SZÁMLÁZÁS ÉS TÉTELES ÁFA június

Jegyzıkönyv. Napirend: Készült Tatárszentgyörgy Község Képviselı-testülete május 27-én tartott ülésérıl.

E L Ő T E R J E S Z T É S

Aronic Főkönyv kettős könyvviteli programrendszer

Rejtett részcsoportok és kvantum-számítógépek

EMLÉKEZTETŐ. Az OKA tizenkettedik üléséről (2007. szeptember :00, SZMM, Tükörterem)

Helyi Esélyegyenlőségi Program Felülvizsgálata. Táborfalva Nagyközség Önkormányzata

Felkészülést segítő kérdések Gépszerkesztés alapjai tárgyból

Átírás:

Számításelmélet 2 - El adás jegyzet Rózsa Gábor 2007. els félév 1 Bevezetés Ajánlott irodalom: Katona-Recski: Bevezetés a véges matematikába Rónyai-Ivanyos-Szabó: Algoritmusok Lovász: Aloritmusok bonyolultsága Ez a jegyzet arra a kérdésre próbál válaszolni, hogy egy algoritmikus problémánál milyen jelek alapján dönthet el, hogy van esély gyors programot írni a feladatra, vagy kár is próbálkozni, nem várható gyors eljárás. (Legtöbbször ez azt jelenti, hogy az egyetlen, amit tehetünk az, hogy szisztematikusan végignézünk minden esetet.) S t, amint látni fogjuk, olyan is van, hogy egyáltalán nem lehet egy feladatra algoritmust találni (programot írni). Nagyjából a következ lehet ségek szoktak adódni egy algoritmikus probléma vizsgálatakor. 1. Gyors algoritmust találunk és bebizonyítjuk, hogy nincs gyorsabb. 2. Gyors algoritmust találunk és bizonyítunk egy alsó becslést arra, hogy maximum mennyivel lehetne gyorsabb egy ügyesebb algoritmus. 3. Csak lassú algoritmusunk van a problémára, azt sejtjük, hogy nincs is sokkal gyorsabb, de precíz alsó becslést nem tudunk bizonyítani. 4. Bebizonyítjuk, hogy a vizsgált problémára nem lehet algoritmust készíteni. Az els típusra jó példa lehet a maximum vagy minimum keresés egy adathalmazban páronkénti összehasonlításokkal, illetve a kett keresése egyszerre. Mindhárom esetben be lehet bizonyítani (amint az el z félévben láttuk), hogy a talált algoritmusnál nincs jobb. A második típusra (erre szinte minden eddig tanult eljárás jó példa) példa lehet a sorbarendezés, ahol elég gyors algoritmusunk van és jó alsó becslésünk, de a kett azért nem egyezik meg. A harmadik fajta jelenségr l a hátizsák problémánál, illetve a pakolási problémánál tanultunk. Itt az általános esetben csak exponencális algoritmusunk van. Nincs precíz bizonyításunk rá, hogy nem lehetne sokkal gyorsabb eljárást találni, de azt sejtjük, hogy nem. A félév során felépítünk egy elméletet, mely, ha nem is ad precíz bizonyítást, de valószín síti, hogy a sejtés igaz. A negyedik esetre korábban nem tanultunk példát, most mutatunk egyet. Dominó probléma. Adott egy véges dominókészlet (azaz véges sok féle dominó van, de mindegyikb l végtelen darab) és egy kijelölt kezd domió. Egy dominónak négy oldala van, minden oldalt egy-egy jellel jelöljünk. Kiválasztunk egy kezd dominót. Egy újabb dominót csak úgy lehet lerakni, ha az összes szomszédos dominóhoz megfelel en illeszkedik (az illeszked oldalpároknál ugyanaz a jel szerepel). Kérdés: kirakható-e a kezd dominóból indulva a teljes sík? Erre a problémára nem lehet algoritmust csinálni (és ezt be is lehet bizonyítani). Például 1212 oldalú dominókkal ki lehet rakni a teljes síkot, de az {1234, 2322} dominókészlettel nem. Deníció (P-beli) Egy probléma polinomiális (P-beli), ha van rá olyan algoritmus, mely n hosszúságú input esetén legfeljebb cn d lépést tesz (c és d konstansok). A továbbiakban akkor fogunk egy algoritmust gyorsnak gondolni, ha P-beli.

Egész számok összeadása polinomiális probléma. Bemenet: a, b N Kimenet: a + b A bemenet hossza: log 2 a + log 2 b Az exponenciális algoritmusokat nem szeretjük, mert nagyon gyorsan n a lépésszám, ezért nagy lesz a futási id. 2 MINIMAX tételek Ebben a fejezetben egy lehetséges magyarázatot adunk arra, hogy egy problémára gyors algoritmus készíthet. Sok olyan tétel van a matematikában, mely azt mondja ki, hogy egy mennyiség maximuma megegyezik egy másik mennyiség minimumával. Az a tapasztalat, hogy ha a két mennyiségre igaz egy ilyen tétel (ezeket általában MINIMAX tételeknek hívják), akkor található gyors algoritmus, mely megkeresi a maximumot illetve minimumot. Egy ilyet tanultunk korábban: Intervallumpakolás problémája: adottak I 1,...,I n R zárt intervallumok, amelyekb l maximális számú diszjunkt intervallumot szeretnénk kiválasztani. (Dilworth tétele) A diszjunkt intervallumok maximális száma megegyezik a lefogó pontok minimális számával. Deníció (Lefogó pontok) Néhány pont egy intervallumrendszer lefogó pontrendszerét alkotja, ha minden intervallumban legalább egy pont van közülük. Vegyük észre, hogy az nyilvánvaló, hogy a diszjunkt intervallumok maximális száma legfeljebb akkora, mint a minimális lefogó ponthalmaz elemszáma (azaz "max min"). Ha ugyanis találunk néhány (mondjuk k) diszjunkt intervallumot, akkor egy lefogó ponthalmaz legalább k elem, hiszen már ezt a k intervallumot is csak legalább k ponttal lehet lefogni (pláne az összeset). Ezek után már elég találni egy konkrét példát egy lefogó ponthalmazra és ugyanannyi diszjunkt intervallumra, mint ahány pontú a lefogó halmaz. A bizonyítás egy algoritmust ad meg, mely talál ilyeneket. Ez az algoritmus ráaadásul gyors is. Megjegyzés. Az ilyenfajta problémánál két mennyiséget hasonlítok össze. Az egyik mennyiség minimumáról akarom belátni, hogy nagyobb, mint a másik mennyiség maximuma. Általában az könnyen ellen rizhet, hogy "max min", így a bizonyításhoz elég találni egy közös értéket. Tehát, ha az a feladatunk, hogy gyors algoritmust keressünk egy mennyiség minimumának meghatározására, akkor sokszor segít, ha találunk egy másik mennyiséget, melynek maximuma is kisebb egyenl az eredetileg vizsgált mennyiség minimumánál. Ilyenkor abban bízva, hogy igazából a minimum és a maximum megegyezik, sokszor ötletet is kapunk arra, mit csináljon az algoritmus, hogy megtalálja a közös értéket. A továbbiakban ilyen példákat mutatunk. 2.1 Gráfparaméterek és összefüggéseik G = (V, E) gráfban vizsgáljuk a következ ket. Deníció (lefogó ponthalmaz) V V lefogó ponthalmaz, ha minden él egyik végpontját tartalmazza. (Például: hogyan helyezzünk el rend röket egy város térképén, hogy minden utcát tudjanak gyelni?) A legkisebb lefogó ponthalmaz jele: τ(g). Deníció (független élhalmaz (párosítás)) E E független élhalmaz, ha bármely két E -beli élnek nincs közös végpontja. A legnagyobb független élhalmaz jele: ν(g). Deníció (független ponthalmaz) V V független ponthalmaz, ha a V -beli csúcsok között nincs él. A legnagyobb független ponthalmaz jele: α(g).

Deníció (lefed élhalmaz) E E lefed élhalmaz, ha minden V -beli csúcs egy E -beli él végpontja. A legkisebb lefed élhalmaz jele: ρ(g). (Gallai tételei) 1. α(g) + τ(g) = v(g) hurokél nélküli G-ben. (v(g) a csúcsok száma.) 2. ν(g) + ρ(g) = v(g) izolált pont nélküli G-ben. Ha a gáf a 3 csúcsú teljes gráf, azaz a háromszög, akkor α = 1, ρ = 2, τ = 2, ν = 1. A továbbiakban algoritmust keresünk a fenti négy mennyiség meghatározására egy gráfban. Vegyük észre, hogy a négy mennyiség (két min és két max) esélyt ad rá, hogy minimax tételt és így (valószínüleg) gyors algoritmust találjunk. Könny ugyanis ellen rizni, hogy bármely hurokél és izolált pont nélküli gráfban teljesül ν τ és α ρ. Az els egyenl tlenséghez azt kell észrevenni, hogy ha van a gráfban k független él, akkor már ezeket sem lehet lefogni k-nál kevesebb ponttal (hiszen nincs közös végpontjuk, mindent külön-külön ponttal foghatjuk csak le), hát még, ha az összeset akarjuk lefogni. Hasonlóan látható, hogy k független pont lefedéséhez legalább k élre van szükség. Tehát van két minimax tétel jelöltünk: ha α = ρ és ν = τ igaz lenne, akkor valószínüleg lenne gyors algoritmusunk mind a négy paraméter meghatározására. Ez azonban általában nem igaz, amint a fenti példa is jelzi. Páros gráfokra viszont mindkett teljesül és van is gyors algoritmus. (König tétele) Páros gráfban α = ρ és ν = τ. Bizonyítás. Az alábbiakban ismertetend algoritmus, melyet Magyar módszer nek hívnak, megtalálja mind a négy speciális, fent deniált halmazt. Pontosabban megad egy lefogó ponthalmazt és egy független élhalmazt, melyek mérete megegyezik, illetve egy lefed élhalmazt és egy független ponthalmazt, melyek mérete szintén egyenl. A tétel el tti bekezdés alapján ez automatikusan biztosítja, hogy a talált halmazok maximálisak illetve minimálisak és, hogy a két minimax tétel igaz. Legyen G = (A B, E) páros gráf. Minden pillanatban van egy F E független élrendszerünk, kezdetben F =. Két lépést ismételgetünk. 1. keresünk olyan e E\F élet, melyre F {e} is független élrendszer. 2. javító úton 1 javítunk. (Ha v 1,..., v k javító út, akkor kidobva F-b l az út F-beli éleit és berakva F-be a nem F-belieket, eggyel n F elemszáma és továbbra is független élhalmaz marad.) Az algoritmus megáll, ha egyik lépés sem megy. Tegyük fel, hogy leállt az algoritmus és tekintsük a következ felosztását a gráf csúcsainak. X 1 := {a A a nincs fedve F-belivel}, Y 1 := {b B b nincs fedve F-belivel}, X 2 := {a A \ X 1 a elérhet alternáló úton X 1 -beli csúcsból}, Y 2 az X 2 elemeinek párjai, X 3 := a maradék A-beli, Y 3 az X 3 elemeinek párjai. Hol lehet éle G-nek? X 1 Y 1 nem lehet, mert nem ment az 1. lépés. X 1 Y 2 lehet. X 1 Y 3 nem lehet, mert akkor találnánk alternáló utat egy X 3 -belibe. X 2 Y 1 nem lehet, mert nem ment a 2. lépés (javítás). X 2 Y 2 lehet. X 2 Y 3 nem lehet, mert akkor X 3 -belibe lenne alternáló út. X 3 Y 1 lehet. X 3 Y 2 lehet. X 3 Y 3 lehet. Ezek alapján könnyen ellen rni a következ ket. 1 alternáló út: ha egy gráfban meg van adva egy F független élhalmaz, akkor az olyan utat, melyben felváltva szerepelnek F -beli és nem F -beli élek, alternáló útnak hívjuk javító út: olyan alternáló út, aminek kezd és végpontja F által fedetlen pont

X 1 X 2 Y 1 Y 3 független ponthalmaz. Lefed élhalmazt kapunk, ha vesszük az F-beli éleket és 1-1 élt az Y 1 és X 1 -beli cúcsokon. (Ez ugyanakkora, mint a fenti független ponthalmaz!) Lefogó ponthalmazt alkot Y 2 X 3. F független élhalmaz (párosítás), melynek mérete ugyanaz, mint a fenti lefogó ponthalmaz. Most az általános esetet vizsgáljuk, azaz nem feltétlenül páros gráfot. Ilyenkor, mint a példában láttuk, nem teljesül a König tétel. Vegyük észre, hogy a Gallai tételek miatt, ha találnánk gyors algoritmust τ-ra, akkor egyben α-ra is találnánk, illetve egy gyors algoritmus ν-re egyben ρ-t is meghatározná. A helyzet a következ : τ α: nincs gyors algoritmus, valószín leg nem is lesz. ρ ν: van polinomiális algoritmus (Edmonds algoritmus), és van minimax tétel is, csak bonyolultabb a König tételnél: (Berge formula) ν = min X V (G) V (G) ( C p (X) X ), 2 ahol C p (X) a G \ X páratlan elemszámú komponenseinek száma. ( G \ X jelöli azt a gráfot, melyet úgy kapunk, hogy X csúcsait és a bel lük induló éleket elhagyjuk G-b l.) 2.2 Folyamok Vízhálózat tervezése Egy város vízhálózatát szeretnénk megtervezni. Úgy képzeljük, hogy adott egy forrás, ahol termel dik a víz; adottak városbeli pontok, amiket csövek kötnek össze; adott egy nyel, ahova csak befelé mehet víz. Minden cs nek van egy kapacitása, ami azt mutatja meg, hogy adott id egység alatt maximum mennyi vizet folyathatunk át rajta anélkül, hogy tönkremenne. A csöveket irányítottnak képzeljük, tehát a víz csak az egyik irányba folyhat rajtuk. Olyan algoritmust keresünk, mely meghatározza, melyik csövön mennyi vizet engedjünk át ahhoz, hogy a lehet legtöbb víz jusson el a forrásból a nyel be. Hogyan lehet ebb l matematikailag precíz feladatot csinálni? A cs hálózatnak egy irányított gráf felel meg, melynek minden élén meg van adva egy nemnegatív valós szám, az illet él kapacitása. s illetve t fogja jelölni a forrást illetve a nyel t, azaz ezek olyan csúcsok melyekb l csak kifelé illetve befelé indul él. Formálisan: G = (V, E) irányított gráf, s V forrás, t V nyel. c : E R + 0 kapacitás-függvény. Most megadjuk azt a függvényt, amit keresünk, azaz amely megmutatja, hol mennyi víz folyjon: Deníció (folyam) f : E R + 0 folyam, ha (i) f(e) c(e), e E (ii) e v-be mutat f(e) = e v-b l mutat f(e), v V \{s, t} Az els kritérium annak felel meg, hogy egy csövön nem folyhat több víz, mint a kapacitása (különben eltörik); a második annak, hogy a forrást és a nyel t leszámítva minden csomópontba annyi víznek kell befolynia, mint amennyi kifolyik (mert máshol nem termel dik és nem t nik el víz). Deníció (folyam nagysága) f nagysága: e s-b l ki f(e) = e t-be be f(e) Az ábrán egy 3 érték folyamot láthatunk. c a kapacitás, f a folyam. Most megadunk egy másik paramétert, melynek minimuma egyenl lehet a maximális folyam értékével (azaz minimax tételt keresünk).

Deníció (irányított vágás) S V, s S, t / S esetén az S által megatározott irányított vágás : az S-b l V \S-be mutató élek halmaza. Az irányított vágás kapacitása: c(e) A minimax tétel a következ. e irányított vágás (Ford-Fulkerson) A maximális folyam nagysága akkora, mint a legkisebb vágás kapacitása. Ha az eredeti terminológiára gondolunk, akkor könnyen látszik hogy bármely folyam nagysága legfeljebb annyi lehet, mint bármely vágás kapacitása. Egy vágásbeli csöveken ugyanis legfeljebb a vágás kapacitása mennyiség víz tud átfolyni a forrást tartalmazó részb l a nyel t tartalmazóba, másrészt minden vízcsepp a forrást tartalmazó részb l indul és végül a másik oldalra kerül, tehát át kell folyjon a vágásbeli csövek valamelyikén. Ez persze nem teljesen precíz, de precízzé lehet tenni. A korábbi minimax tételekhez hasonlóan a bizonyításhoz most már elég egy példát mutatni amikor egy konkrét folyam nagysága egyenl egy konkrét vágás kapacitásával. A magyar módszerhez teljesen analóg módon egy algoritmust adunk meg, mely a kezdetben f 0 folyamot addig növeli, míg nem talál ilyen halmazokat. Miel tt az algoritmusra térnénk, néhány példát mutatunk. Az alábbi ábrán egy újabb csatornarendszer van. Kezdetben nem folyik semerre víz. A forrás megnyitása után viszont lehet állítani a víz irányát. Érdemes végiggondolni, a különböz irányok megnyitásával hogyan változik a rendszerben a folyam nagysága. Ezen az ábrán a mohó algoritmus nem m ködik. Ha el ször csak az egyik ágon folyik víz, mégpedig 2 egység, és középen is két egység folyik, akkor nem lehet a forrásból a másik ágat megnyitni. Más stratégiával viszont akár 3 egységnyi víz is átvihet. Tegyük fel, hogy találtunk egy utat, amiben az élek irányítása nem számít (lehetnek visszafelé mutató élek is), de minden el re mutató él nem telített, és a visszafelé mutató éleken van folyam. Lehet javítani az átvitt mennyiségen. Ezen az ábrán a kapacitásokat jelölik a c értékek. Algoritmus: kezdetben f 0 1. lépés: Találunk olyan s t irányított utat, melyre minden élen f(e) < c(e). Ezeken az éleken növeljük f-et min e út c(e) f(e) -vel. 2. lépés: Találunk olyan s t utat (ahol lehet szembe is menni), ahol az el re mutató élekre f(e) < c(e), a visszafelé mutatókra f(e) > 0 (hogy lehessen csökkenteni). A csökkentés során az el re mutató éleken f nem mehet c fölé, a visszafelé mutatókon pedig nem mehet f 0 alá. Vegyük észre, hogy az els lehet ség speciális esete a másodiknak! Hogyan találunk megfelel s-t utat : Segédgráfot készítünk, ahol szerepel az eredeti gráf összes csúcsa, és ha az eredeti gráf e irányított élére igaz, hogy 1. ha f(e) < c(e), akkor az e-t berajzoljuk és ráírjuk a c(e) f(e) értéket; 2. ha f(e) > 0, akkor e-t berajzoljuk fordított irányban és ráírjuk az f(e) értéket. Vegyük észre, hogy a kett nem zárja ki egymást, tehát az olyan élek, melyekre 0 < f(e) < c(e), mindkét irányban bekerülnek a segédgráfba. A segédgráfban keresünk irányított s t utat. H ilyet találunk, akkor az útbeli élekre írt értékek minimumával lehet javítani. Ez jó, mert tegyük fel, hogy leállt az algoritmus (nincs a segédgráfban s t út), akkor S := {s-b l a segédgráfban elérhet csúcsok halmaza }. Ekkor s S, t / S. Az eredeti gráfban az S szerinti vágásban a kifelé mutató éleken f(e) = c(e), a befelé mutató éleken pedig f(e) = 0 a kapacitás. Ezek szerint a vágás kapacitása megegyezik a talált folyam értékével. Baj van akkor, ha bután m ködik az algoritmus, ekkor a futási id nem polinomiális, hanem sokkal rosszabb.

Az alábbi ábrán, ha a középs élen javítok, akkor mindig csak 1-et lehet javítani, ezért az algoritmus sokáig tart, 10 10 lépés lesz. (Edmonds-Karp tétel) Ha mindig a legrövidebb (segédgráfbeli) úton javítunk, akkor polinomiális az algoritmus, tehát gyors. Ha a kapacitások egész számok, akkor van egész érték maximális folyam. 2.3 Menger-tételek Legyen G = (V, E), s, t V Szeretnénk a lehet legtöbb diszjunkt s t utat találni. Ez több mindent jelenthet aszerint, hogy a gráf irányított-e, és hogy éldiszjunkt vagy pontdiszjunkt utakat keresünk. (Persze pontdiszjunkt alatt azt értjük, hogy a kezd - és a végpont közös, de ezenkívül diszjunktak.) (1. Menger tétel) G irányított. Az éldiszjunkt irányított s t utak maximális száma megegyezik az összes s t utat lefogó élek minimális számával. (2. Menger tétel) G irányított, nincs közvetlen s t él. A bels leg pontdiszjunkt irányított utak maximális száma megegyezik az összes s t utat lefogó pontok (s és t nem használható) minimális számával. (3. Menger tétel) G irányítatlan. Az éldiszjunkt s t utak maximális száma megegyezik az összes s t utat lefogó élek minimális számával. (4. Menger tétel) G irányítatlan, nincs közvetlen s t él. A bels leg pontdiszjunkt utak maximális száma megegyezik az összes s t utat lefogó pontok (s és t nem használható) minimális számával. (5. Menger tétel) S V, T V, S T =, G irányítatlan. Az S T teljesen pontdiszjunkt utak maximális száma megegyezik az S és T közti utakat lefogó pontok minimális számával. (Például 8 rabló indul S-b l T-be. Mennyi rend r kell az keresztez désekbe, hogy egy rabló se érjen célba?) Itt a lefogó pontok választhatók S-b l és T-b l, viszont a diszjunktság itt azt jelenti, hogy a végpontok is különböz k. A korábbi minimax tételekhez hasonlóan könny meggondolni mind az öt esetben, hogy a maximum kisebb egyenl a minimumnál. 1. Menger tétel bizonyítása. Mivel max min, szokás szerint elég mutatni k éldiszjunkt utat, ahol k jelöli a lefogó élek minimális számát. Legyen minden él kapacitása 1. Keressünk maximális folyamot s-b l t-be. A Ford-Fulkerson-tétel miatt ennek értéke megegyezik a minimális vágás kapacitásával. Ha az s t utakat lefogó élek minimális száma k, akkor a minimális kapacitású vágás legalább k kell legyen, hiszen egy vágás élei lefogó élhalmazt alkotnak (ez fordítva nem biztos, hogy igaz). Tehát van k érték folyam (volt: van egész érték folyam). Minden élen 0 vagy 1 folyik, ezért van s t út, ami olyan élekb l áll, melyeken folyik víz. Ez lesz az els út. Csökkentsük a folyamot 1-gyel ezen az úton. Kapunk egy k 1 érték folyamot. Itt újra keresünk az 1-et átenged élekb l s t utat (ez diszjunkt lesz az el z t l, mert az el z élek már nem szerepelhetnek). Ez a 2. út... Ez polinomiális algoritmus. 2. Menger tétel bizonyítása. Visszavezetjük az el z re. G = (V, E), max min. Új G gráfot készítünk: minden G-beli pontból (kivéve s és t pontokat) két pontot készítünk úgy, hogy ezek egy éllel legyenek összekötve. Ezáltal minden G -beli pontra igaz lesz, hogy pontosan egy él megy ki bel le vagy pontosan egy él megy bele. A G-beli pontdiszjunkt utak G -ben éldiszjunktak lesznek. Ha G-ben s t utat lefog k pont G -ben s t utat lefog k él. G -re alkalmazzuk az 1. Menger tételt, így a G-re alkalmazódik a 2. Menger tétel.

3. Menger tétel bizonyítása. G = (V, E) irányítatlan gráfból készül egy G irányított gráf úgy, hogy minden él két éllel lesz helyettesítve, ide-oda irányítva. G-ben lefogó élekb l G -ben lefogó éleket kell készíteni. (Nem világos, hogy mindig van.) G -ben lefogó élekb l mindig készíthet G-ben lefogó élhalmaz. (Ez triviális.) G-ben éldiszjuknt s t utakból készíthet k G -ben éldiszjunk s t utak. (Ez is triviális.) G -ben éldiszjunkt s t utakból készíthet k G-ben éldiszjunkt s t utak. (Ez nem triviális, de mindig igaz. Bizonyítandó!) Akkor lehet baj, ha egy él mindkét irányú verzióját használjuk. Erre megoldást jelent, ha kicserélem a problémás él utáni szakaszokat a két út között, és elhagyhatom az élet. Ezt újra és újra ismételve az élszám csökken, el bb-utóbb olyan éldiszjunkt s t utakat kapunk G -ben, melyek G-ben is éldiszjunktak. Ezzel készen vagyunk, mert legyen G-ben k éldiszjunkt út. Ebb l legyártok G -ben k éldiszjunkt utat. Ebb l az 1. Menger-tétel legyárt k lefogó élt G -ben és ebb l kapok k lefogó élt G-ben. Így a maximum tényleg egyenl a minimummal, ezért polinomiális az algoritmus. Az éldiszjunkt utak maximális száma G-ben és G -ben is megegyezik, egyenl k-val. 4. Menger tétel bizonyítása. A 2. Menger-tételb l következik 5. Menger tétel bizonyítása. Vegyünk két új pontot. Az egyikb l csak S-be, a másikba csak T-b l mennek élek. Nevezzük ezeket s-nek és t-nek. Az új gráfban s t útra nézve a 4. Menger-tételt, kijön az állítás. Mind az ötre polinomiális algoritmust kaptunk. Következmény Létezik két (pont)diszjunkt út S = {s, s } és T = {t, t } között (s t és s t, vagy s t és s t) nincs olyan pont, amely minden S T utat lefog. Erre van polinomiális algoritmus Nincs polinomiális algoritmus arra a problémára, hogy van-e s t és s t pontdiszjunkt út és valószínüleg nem is lesz, ugyanis ez NP-teljes, ld. a következ fejezetet. 3 NP-teljesség Ebben a fejezetben olyan problémákat tárgyalunk, melyekre (ellentétben a minimax tételekben szerepl mennyiségekkel) nincs és valószínüleg nem is lesz gyors algoritmus. Ezt precízen nem tudjuk bizonyítani, de egy elég jó érvet mutatunk rá: megmutatjuk, hogy ha ezen problémák bármelyikére találnánk gyors algoritmust, akkor egy hatalmas problémaosztály összes problémájára is találnánk. Tehát, ha elfogadjuk, hogy ennek a hatalmas problémaosztálynak minden elemére "csak nincs" gyors algoritmus, akkor ezekre az univerzális (tehát az egész osztályt megoldó) problémákra nem lehet. Emlékeztetünk, hogy a könny problémák az alábbiak: Deníció (P-beli) Egy probléma P-beli, ha van rá polinomiális algoritmus. Még egy problémaosztályt deniálunk. Deníció (NP-beli) Egy probléma NP-beli, ha (i) igen/nem választ vár (ii) ha valaki tudja a megoldást, ami igen, akkor polinomiális id ben meg tud róla gy zni. Van G-ben Hamilton-kör (minden csúcson átmen kör)? NP-beli, mert ha igen a válasz, akkor, ha valaki megsúgja a Hamilton kört (tehát azt, hogy milyen sorrendben kell venni a csúcsokat ahhoz, hogy így egy kört kapjunk az összes csúcson), akkor polinomiális id ben ellen rzöm. Deníció (tanú) A tanú az a polinomiális hosszúságú súgás, amelynek segítségével polinomiális id ben ellen rizhet, hogy tényleg igen a válasz.

G-ben nincs Hamilton-kör. Nem feltétlenül NP-beli, hiszen arról, hogy nincs, nem lehet gyorsan meggy zni valakit. Miel tt továbbmennénk a példákkal jegyezzük meg, hogy ha egy igen/nem választ váró probléma P-beli, akkor automatikusan NP-beli is, hiszen nem is kell tanú, polinom id ben ki tudjuk deríteni a választ (ráadásul itt akkor is, ha nem a válasz). n összetett-e? NP-beli, mert a tanú olyan a és b egészek, hogy ab = n. n prím-e? Err l nem látszik azonnal, hogy NP-beli, hiszen nem nyilvánvaló, mit lehetne súgni, ha igen a válasz, de van ilyen súgás. S t: néhány éve sikerült bizonyítani, hogy a probléma P-beli. G színezhet -e 23 színnel? NP-beli, hiszen a tanú maga a színezés. Legkevesebb hány színnel színezhet k ki a csúcsok? (Kromatikus szám, χ(g) = 23) Nem feltétlenül NP-beli már csak azért sem, mert nem igen/nem választ kér, hanem egy számot, de akkor sem t nne NP-belinek, ha azt kérdeznénk, igaz-e, hogy a kromatikus szám 23. Arra ugyanis nincs jó tanú, hogy nem 22 vagy annál kevesebb a kromatikus szám. G-ben van-e 123 független pont? P-beli, mert az összes lehet ség végignézéséhez ( ) n lehet séget kell megvizsgálni, ez pedig polinomiális. 123 Látható tehát, hogy az NP-beli problémák egy hatalmas osztályt alkotnak, rengeteg klasszikus feladat tartozik ide. Némelyikük könny : van rá polnomiális algoritmus, de valószín tlennek t nik, hogy mindegyik könny legyen. Ezért van értelme egy problémát nehéznek gondolni a következ esetben: Deníció (NP-teljes) Egy probléma NP-teljes, ha minden NP-beli probléma rá visszavezethet polinomiális id ben, és maga NP-beli. A biztonság kedvéért tisztázzuk, ez mit jelent: az A problémát vissza tudjuk vezetni (polinom id ben) a B problémára, ha az A problémából kiindulva addig tudjuk alakítani (polinom id ben) a feladatot, hogy egyszercsak a B probléma speciális esetét kapjuk, azaz, ha lenne gyors algoritmusunk a B problémára, akkor az átalakítás és ez a gyors algoritmus együtt az A problémára is gyors algoritmust adna. Gondoljuk meg, hogy ez azt jelenti, hogy ha valaki (a jöv ben) talál polinomiális algoritmust egy NPteljes problémára, akkor automatikusan az összes NP-belire is lesz gyors algoritmusunk (és ez az, ami valószín tlennek t nik). Persze az egésznek csak akkor van értelme, ha tudunk mutatni NP-teljes feladatokat. Ilyeneket fogunk látni a következ szakaszban. Ezt a fejezetet egy denícióval és egy megjegyzéssel zárjuk. Deníció (co-np-beli) Egy probléma co-np-beli (igen/nem választ vár), ha nem esetén van polinomiális id ben ellen rizhet polinomiális hosszúságú tanú. Például az a probléma, hogy egy szám prím-e könnyen ellen rizhet en co-np-ben van (ugyanazért, amiért a tagadása NP-beli): ha nem a válasz, akkor meg lehet adni azt az a-t és b-t, melynek szorzata a kérdéses szám. A tapasztalat az, hogy ha egy probléma NP-beli és co-np-beli is, akkor P-beli is, de nem világos, hogy miért és nem is biztos, hogy ez általában igaz. Mindenesetre jó példa erre a már említett prímség ellen rzése. Sokáig csak az volt ismert, hogy NP-beli és co-np-beli és, mint már említettük, csak nemrégen derült ki, hogy P-ben van.

3.1 NP teljes feladatok Az els NP teljes feladat deniálásához némi el készítésre van szükség. Boole-függvények f : {0, 1} n {0, 1}, általában a 0 jelenti a hamisat, az 1 az igazat. N csúcsú gráfban van-e Hamilton-kör? x 1,..., x ( N 2 ) : élek, x i = 1 az i. él be van húzva. Gráf megadása x i -knek 0/1 értékeket adunk. f(x 1,..., x ( N 2 ) ) = { 1, ha van Hamilton-kör 0, ha nincs Hamilton-kör 1-változós Boole-függvények: identitás és negáció 2-változós Boole-függvények: pl. konjunkció, diszjunkció Azonosságok: disztributivitás, De-Morgan azonosságok, asszociativitás Deníció (Atom) Atom minden elemi logikai kifejezés. Deníció (Literál) Atom vagy annak tagadása. Deníció (Klóz) Klóz literálok diszjunkciója. Deníció (Konjunktív normálforma, KNF) A konjunktív normálforma klózok konjunkciója. Deníció (Diszjunktív normálforma, DNF) Konjunkciók diszjunkciója. Lemma Minden Boole-függvény felírható KNF-ben és DNF-ben is. Bizonyítás. Nyilván elég az egyiket bizonyítani, hiszen egy KNF átalakítható DNF-é az azonosságokkal és viszont. Egy n-változós Boole függvénybe 2 n féleképpen lehet 0/1 értékeket helyettesíteni. Ha minden olyan helyettesítéshez, melyre a függvény értéke 1 veszünk egy n hosszú konjunkciót (minden változó benne van és akkor van tagadva, ha hamis értéket kap az adott helyettesítésben), majd ezeket vaggyal elválasztva egymás után írjuk, akkor DNF-t kapunk. Deníció (SAT-probléma) Bemenet: KNF Kimenet: van-e legalább egy értékadás, amikor igazzá válik az állítás, azaz akkor igen a válasz, ha a formula nem az azonosan nulla Boole függvényt adja. Könny látni, hogy ez egy NP-beli probléma, hiszen, ha igen a válasz, akkor, ha valaki megsúgja, melyik változó legyen igaz, melyik hamis, akkor már könnyen ellen rizni tudjuk, tényleg igazzá válik-e így a formula. x 1 x 1 0, de (x 1 x 2 ) ( x 1 x 2 ) kielégíthet pl. úgy, hogy ha x 1 = x 2 = igaz. (Cook tétele) A SAT-probléma NP-teljes. Ahhoz, hogy ezt bizonyítsuk, precízzé kell tennünk, mit értünk algoritmus alatt. Ezt az utolsó fejezetben fogjuk megtenni. Ebben a fejezetben megmutatjuk, hogy a Cook tételt egyel re elfogadva, milyen más problémákról látható be (teljesen precíz bizonyítással), hogy szintén NP teljesek. A bizonyítás stratégiája mindig a következ lemmán fog múlni.

Lemma Ha az A probléma NP-teljes, a B probléma NP-beli, és A visszavezethet polinom id ben B-re, akkor B is NP teljes. Bizonyítás. Bármely NP-beli probléma polinom id ben visszevezethet A-ra, A pedig B-re, így (polinom+polinom=polinom miatt) a két visszavezetés együtt bármely problémát visszevezet B-re. Deníció (3-SAT probléma) A 3-SAT olyan SAT, ahol minden zárójelben legfeljebb három literál szerepel. A 3-SAT probléma NP-teljes. Lemma (a b) ( a b) = 1 a = b. S t (a 1 a 2 ) (a 2 a 3 ) (a n a 1 ) = 1 a i = a j, i, j. A tétel bizonyítása. Tetsz leges f(x) = E 1 E 2... -t visszavezetünk egy g(x) = F 1 F 2... -ra úgy, hogy F i -kben már csak legfeljebb három literál szerepel és f kielégíthet g kielégíthet. f(x) = x 1 x 2 x 3 x 5 x 6. Új változók: y 1, y 2, y 3, y 4, y 5, y 6. Az új formula a következ kb l fog állni (és jelekkel elválasztva) (y 1 x 1 ) ( y 1 x 1 ) (eléri, hogy (y 1 = x 1 ) teljesüljön olyankor, amikor igaz y 2 y 1 ) (y 2 x 2 ) ( y 2 y 1 x 2 ) (eléri, hogy y 2 = y 1 x 2 teljesüljön, erre a kovetkez módon lehet rájönni: (y 2 (y 1 x 2 )) ( y 2 (y 1 x 2 )) = (y 2 ( y 1 x 2 )) ( y 2 y 1 x 2 ) = (y 2 y 1 ) (y 2 x 2 ) ( y 2 y 1 x 2 ) Újabb ilyenekkel: y 3 = y 2 x 3,..., y 6 = y 5 x 6 = x 1 x 2 x 3 x 5 x 6 És hozzá kell ésezni y 6 -ot a végén. Deníció (SAT-3 probléma) A SAT-3 olyan SAT, ahol minden literál legfeljebb három példányban szerepel. A SAT-3 NP-teljes. Ezt nem bizonyítjuk, de kés bb ki fogjuk használni. Lefogási feladat Bemenet: A 1,..., A n X, k N Kimenet: van-e k pont X-b l, melyek lefogják az A i -ket, azaz: X X, X = k : X A i, i A 1 = {1, 2, 3}, A 2 = {2, 5, 7}, A 3 = {4, 7, 8}, k = 2 esetén igen a válasz, pl. {2, 7} lefogja a halmazokat. k = 1 esetén nem a válasz. A lefogási feladat NP-teljes Bizonyítás. A SAT-ot polinomiális id ben visszavezetjük rá, azaz megadunk egy átalakítást, mely KNFból kiindulva legyárt egy lefogási feladatot, melyre pontosan akkor igaz a válasz, ha a formula kielégíthet. Legyen f(x) = (x 1 x 2 x 3 x 4 ) (x 2 x 4 ). Vegyük a következ lefpgási feladatot: X = {x 1, x 2, x 3, x 4, x 1, x 2, x 3, x 4 }. A i = {x i, x i }, i = 1, 2, 3, 4; A 5 = {x 1, x 2, x 3, x 4 }, A 6 = {x 2, x 4 }, végül legyen k = 4. Ekkor a lefogási feladatra pontosan akkor igen a válasz, ha f kielégíthet : Ha találok egy olyan értékadást, ami kielégíti f-et, akkor úgy kapok 4-elem lefogó ponthalmazt, hogy minden i-re veszem x i -t vagy x i -t aszerint, hogy az értékadásnál x i igaz vagy hamis. Másrészt, ha A 1, A 2, A 3, A 4, A 5, A 6 lefogható 4 ponttal, akkor f kielégíthet. Könny észrevenni ugyanis, hogy A 1, A 2, A 3, A 4 lefogása kikényszeríti, hogy a 4 lefogó pont automatikusan értéket ad az x i -knek (x i = 1 A i x i -vel van lefogva és nem x i -vel... ). Ez az értékadás jó lesz, kielégíti f-et, mert A 5 és A 6 is le van fogva. Megjegyzés. már akkor is NP-teljes, ha A i 3, i, mert 3-SAT visszavezetésével ilyen jön létre.

Megjegyzés. Akkor is az, ha x X legfeljebb 4 halmazban szerepel, mert SAT-3 visszavezetésével ilyen keletkezik. Az a probléma, hogy egy G gráf 3-színezhet -e, NP-teljes. Bizonyítás. A 3-SAT-ot vezetjük vissza. f(x 1,..., x n ) = E 1 E n, (E i : z i z j z k vagy z i z j vagy z i ). Feltehet, hogy E i -ben pontosan 3 változó van, ha mégsem így volna, bevezethet új változó. Pl. x 2 x 3 (x 2 x 3 y) (x 2 x 3 y), ahol y az új változó. Ekkor fel kell venni egy új E-t is. Olyan háromszögeket rajzolunk, amiknek egy közös csúcsuk van, ez legyen u. Atöbbi csúcsot x i -kkel és x i -kkel indexeljük. Az i. háromszögben vannak x i -k. Az u-t összekötjük v-vel, ami eddig semleges csúcs volt. Minden E i -hez további csúcsokat és éleket veszünk hozzá. Lemma Rakéta alakú kép. A, B, C, D bet k vannak rárajzolva. A, B, C, D ki van színezve valahogy legfeljebb három színnel. Ez kiterjed az egész (+5 csúcs) 3-színezésévé A, B, C, D színe nem mindnek ugyanaz. fenti folytatása. f kielégíthet G 3-színnel színezhet (ehhez kellett a rakéta ábrája). Képzeljük el, hogy valaki kiszínezte az egész gráfot valamilyen színezéssel. Ekkor a szélmalom x-ei két színnel lesznek kiszínezve, ezért az u színén kívüli színeket elnevezhetjük igaznak és hamisnak. Legyen piros az u, kék az igaz, zöld a hamis. Ez egy értékadást fog megadni, x i igaz, ha kék, és x i hamis, ha zöld. A v is zöld legyen. A rakétában fontos, hogy a v színe is hamis legyen. Ekkor a rakéta három x-e nem mind egyforma szín. (Ha a végpontok ( x-ek és v) egyformák, a közbüls csúcsok nem kiszínezhet k három színnel. Az értékadás megad egy színezést az x-ekre, a v színe legyen a hamis szín, u színe legyen egy 3. szín. A lemma miatt a rakéta színezése ezekre kiterjed, tehát G három színnel színezhet. Fedési probléma Bemenet: A 1,..., A n X, k N Kimenet: Van-e k darab A i, hogy ezek egyesítése az egész X-et kiadja? A fedési probléma NP-teljes. Bizonyítás. A lefogási feladat duálisa. Következmény Legfeljebb négyelem halmazokkal is az. (Mert így a duálisban minden elem legfeljebb négy halmazban szerepel, err l pedig láttuk, hogy szintén NP-teljes.) Megjegyzés. Legfeljebb kételem halmazokkal már polinomiális. k-partíciós feladat: A 1,..., A n X, k. Van-e A i1,..., A ik : j A i j = X, és A ij -k diszjunktak? partíciós feladat: A 1,..., A n X (és nincs k). Van-e néhány diszjunkt, melyekre j A i j = X. A k-partíciós feladat NP-teljes. Bizonyítás. Visszavezetjük rá a k-fedési problémát legfeljebb négyelem halmazokkal. A 1,..., A n X A i,..., A n X, minden A i minden részhalmazát is belevesszük. Ebben az új rendszerben létezik partíció az eredetiben van fedés. Ha az A i-kb l diszjunkt módon fedjük X-et, akkor az eredetiben véve az A i -ket tartalmazókat, fedést kapunk. Ha A i -kb l van fedés, akkor lesz kítve néhány A i -t, diszjunkt fedést kapok. Fontos volt, hogy legfeljebb négyelem halmazok legyenek, különben ugyanis a visszavezetés nem lenne polinom idej. (A partíciós feladat NP-teljes)

Bizonyítás. A k-partíciós feladatot vezetjük vissza. Adott A 1,..., A n X és k (N). Van-e k db, melyek partícionálják X-et? X helyett X {y 1,..., y k }-t vizsgáljuk, ahol az y-ok olyanok, hogy eddig nem voltak benne X-ben. A i helyett tekintsük az A i {y j } halmazokat (minden halmazból k db lett). Ha az új rendszerben van partíció, akkor az automatikusan k halmazból áll. Ha az új rendszerben van partícionálás az eredetiben van k-partícionálás. Volt: a G gráf 3-színezhet -e, NP-teljes probléma. S t, a 4, 5, 6-színezhet ség pláne! (Ez nem biztos, hogy egyb l látszik.) Viszont a 2-színezhet ség polinomiális, mert páratlan köröket kell keresni. k-elem független ponthalmaz létezésé nek a problémája is NP-teljes. bemenet: G gráf, k egész kimenet: van-e k független pont Ez NP-teljes. Bizonyítás. A 3-színezhet séget vezetjük rá vissza. Adott G gráf, melyr l el szeretnénk dönteni, 3-színezhet -e. Készítünk bel le egy G -t gráfot. Ha G n csúcsú, akkor G legyen 3n csúcsú, Egyszer en lerajzoljuk G-t egymás mellé háromszor ( G1, G2, G3), és a lemásolt gráfok megegyez pontjait összekötjük, így lesz a G-beli éleken kívül még további 3n él. Ekkor G -ben van n független pont G 3-színezhet. Ha ebben a G gráfban találok n db független pontot, akkor az csak úgy lehet, ha minden eredeti csúcs három példányából pontosan egy van benne. A színezés legyen: piros - a csúcs G1-beli verziója; kék - a csúcs G2-beli verziója; zöld - a csúcs G3-beli verziója van benne az n független pont között. Fordítva: adott egy 3-színezés G-ben. Akkor n csúcs G -ben: a piros a G1-b l, a kék a G2-b l, a zöld a G3-ból adódik, és ez jó. Lefogó ponthalmaz egy gráfban Bemenet: G gráf, k szám Kimenet: van-e k pont, mely minden élet lefog? Ez ugyanaz, mint a lefogási feladat a legfeljebb kételem halmazokra (ha a kételem halmaz a gráf éleit tartalmazza, és azért legfeljebb, mert lehet hurokél is). Ez is NP-teljes. Bizonyítás. Gallai (1. el adás): a lefogó pontok minimális száma és a független pontok maximális száma együtt a gráf csúcsainak számát adja. Ha adnak egy lefogási feladatot, akkor az a kérdés, hogy a lefogó pontok minimális száma k alatt van, vagy sem. Létezik k lefogó pont létezik n k független pont. Részletösszeg probléma Bemenet: a 1,..., a n, b (N) Kimenet: van-e a i1,..., a ik : a i1 + + a ik = b? Ez is NP-teljes. Bizonyítás. A partíciós feladatot vezetjük vissza rá. Adnak A 1,..., A n X-et. Van-e A ij = X (diszjunkt lefedés)? Ebb l csinálunk a 1,..., a n, b-ket. X = {0, 1, 2,..., n 1}, és q egy nagyon nagy szám. a i = j A i q j b = 1 + q + q 2 + + q n 1 b = a i1 + + a ik X = A ij triviális (a diszjunkt részhalmazoknak megfeleltetem a q hatványainak összegét) b = a i1 + + a ik, b = n 1 i=0 qi = (q i1 + q i2 +... ) + (q j1 + q j2 +... ) +... Kell, hogy a jobb oldalon minden q i pontosan egyszer szerepeljen. Ha q > m, akkor ez OK, mert a jobb oldalon kevesebb, mint m zárójel van, és egy q i legfeljebb m-szer szerepel nem adhat ki q i+1 -et.

Linerális egyenl tlenség-rendszer egészekre Bemenet: A n n-es mátrix egészekkel, b = (b 1,..., b n ) egészelem vektor. Kimenet: x = (x 1,..., x n ), hogy Ax b koordinátánként (azaz n j=0 a i,jx j b i, i). Ez is NP-teljes. Bizonyítás. A 3-SAT-ot vezetjük vissza. f(x) = (x 1 x 2 x 3 ) (x 4 x 2 x 5 ) 0 x i 1 x i 0 és x i 1 x 1 + (1 x 2 ) + x 3 1 x 4 + x 2 + x 5 1 (x 1 + (1 x 2 ) + x 3 ) 0 (x 4 + x 2 + x 5 ) 1 Egy gráfban létezik-e Hamilton-kör, NP-teljes probléma. (Nem bizonyítjuk.) 4 Közelít algoritmsok NP-nehéz feladatokra Deníció (NP-nehéz) Egy feladat NP-nehéz, ha minden NP-beli probléma rá polinomiális id ben visszavezethet, de maga nem feltétlenül NP-beli (azaz nem is igen/nem választ vár, vagy igen/nem választ vár de az igen válasz esetén sincs jó tanú). Sok NP-teljes feladathoz tartozik természetes módon egy keres feladat (tehét olyan, ami egy számot, csúcshalmazt, stb. ad, nemcsak igent vagy nemet). Ezek általában NP-nehezek. Mekkora egy gráfban a legkisebb lefogó ponthalmaz? Ez nem NP-beli, mert hiába súgják meg, hogy mennyi, nem ellen rizhet, hogy kevesebb jó-e, de könny látni, hogy az adott méret lefogó ponthalmaz létezése (ami NP-teljes) visszavezethet rá. Egy gráfban a kromatikus szám négy? Az, hogy a kromatikus szám három-e, NP-teljes probléma, mert ha megmondjuk a 3-színezést, ellen rizhet, és a 2-re könnyen ellen rizhet (páros-e a gráf). Nem tudjuk viszont megmondani, hogy a gráf kromatikus száma négy-e, mert nem tudjuk ellen rizni, hogy 3-mal nem színezhet ki. Egy gráfban mekkora a legnagyobb független ponthalmaz? Ez sem NP-beli. NP-teljes feladatokkal való kapcsolat 1. Van-e k-pontú lefogó ponthalmaz? 2. χ(g) 4? 3. Van-e k méret független ponthalmaz? Ha az egyikre lenne polinomiális algoritmus, akkor a párjára is volna. Ha lenne polinomiális algoritmus arra, hogy van-e k-pontú független ponthalmaz, akkor arra is volna, hogy mennyi a maximális méret független ponthalmaz. (Ugyanis úgy futtatom, hogy k = n, k = n/2, k = 3n/4,..., felezéses eljárással.) NP-nehéz problémák közelítése Az derült ki, hogy hiába ekvivalensek az NP-teljesek, mégsem lesznek egyforma hatékony közelít algoritmusok a kapcsolódó NP-nehéz feladatok megoldására: némelyik jól közelíthet, mások nem.

(Legkisebb lefogó halmaz közelítése ( τ (G))) Algoritmus, mely Lolyan lefogó ponthalmazt talál, melynek mérete legfeljebb 2τ. Miel tt ismertetnénk az algoritmust, egy lemmát bizonyítunk. Lemma F maximális párosítás G-ben F végpontjai lefogó ponthalmazt alkotnak. (Most a maximális azt jelenti, hogy tovább nem b víthet.) Bizonyítás. Ha lenne olyan él, melynek egyik végpontját sem tartalmazzák F végpontjai, akkor az hozzávehet lenne F-hez. A lemma szerint tehát egy 2 F méret lefogó ponthalmazt kaphatunk egy F maximális párosításból. Másrészt bármely lefogó ponthalmaz legalább akkora, mint bármely párosítás. Ezért τ(g) F, azaz 2τ(G) 2 F. Ezekután már könny megfelel algoritmust csinálni. Akár vehetünk egy legnagyobb párosítást találó algoritmust, de akár mohó módon is csinálhatjuk (hiszen elég egy tartalmazásra nézve maximális párosítás végpontjait megtalálni): Vegyünk egy élet, ennek végpontjai x 1, x 2. Hagyjuk el ezt a két pontot, és a maradék gráfban vegyünk egy tetsz leges élet: (x 3, x 4 )... Amikor ez elakad: F maximális párosítás, az {x 1,..., x 2k } halmaz legfeljebb 2τ(G) méret lefogó. Vagy másképp: tetsz leges legnagyobb párosítási algoritmus (Magyar-módszer). Megjegyzés. Ennél jobb nem ismert, s t van tétel, mely szerint 1, 0? τ(g)-re nem lehet polinomiális algoritmust adni (ha P NP). (Az utazóügynök problémája) Mese: A lexikonügynöknek azt mondják, hogy menjen el városokba, és adjon el lexikonokat. Hogyan szervezze meg az útját? Minden út id be és pénzbe kerül. Bárhonnan bárhova el lehet jutni, és az lenne a cél, hogy a lehet legolcsóbb körutazást valósítsa meg. Olyan Hamilton-kört kell keresni, aminek minimális a költsége. Az is lehet, hogy nem Hamilton-kör lesz a legocslóbb, de normális esetekben igen. Vegyünk egy G = K n teljes gráfot, és c : E R + 0 költségeket az éleken. Meg kell adni egy minimális költség Hamilton-kört. Állítás Ez egy NP-nehéz feladat. Bizonyítás. A Hamilton-kört visszavezetjük rá. G = (V, E) n-csúcsú gráf. { Van-e Hamilton-kör? c : E R + 0 olyan lesz, hogy behúzom a teljes gráfhoz 0, ha e G-nek éle hiányzó éleit, és c(e) =. 1, ha e G-nek nem éle G-ben van Hamilton-kör Az új problémában a legolcsóbb Hamilton-kör 0 Ft. A legolcsóbb Hamilton-kör kétszeresét meg tudjuk mondani, de még sokkal jobban is közelíthet. Algoritmus a kétszeres közelítésre, ha c-re teljesül a háromszög-egyenl tlenség. utazóügynök problémája) (Euklideszi Lemma (Lindström-bejárás) Vegyünk egy tetsz leges F fát, amelyre van olyan körséta, mely minden élen pontosan kétszer megy át. A körsétában az is megengedett, hogy rögtön visszaforduljak egy pontból. A lemma bizonyítása. (Euler-tétel: ha minden csúcs páros fokú, akkor van benne körséta.) Minden élet helyettesítünk egy ide-oda éllel (két él, ami két irányba mutat). Automatikusan irányított gráfot kapunk, melyben minden pontra a bemen k fokszáma megegyezik a kimen k fokszámával. Így van irányított Euler-körséta. Az eredeti gráfban így minden élen kétszer megyünk végig.

Lemma Ha c-re teljesül a háromszög-egyenl tlenség, akkor egy hosszabb út költsége is nagyobb, mint egy közvetlené. (Olcsóbb közvetlenül menni valahova, mint több városon keresztül.) Algoritmus. Vegyünk egy minimális költség F feszít fát. (Erre van polinomiális algoritmus.) Legyen ennek x 1 x 2 x 2n 1 = x 1 egy Lindström-bejárása. (A csúcsok halmaza V = {x 1,..., x n }, és minden élen kétszer mentünk végig. Azért 2n 1, mert egy fának n 1 éle van, a vége ugyanaz, mint az eleje, és mindegyiken kétszer megy végig.) Vegyük észre, hogy 1. F költsége legfeljebb annyi, mint az optimális Hamilton-kör költsége, mert Hamilton-kör 1 él is feszít fa. Ennél F olcsóbb, mert meg minimális költség. 2. A Lindström-bejárás költsége pedig pontosan kétszerese az F költségének, mert minden élet kétszer járt be. 3. A Lindström-bejárásból legyártunk egy Hamilton-kört, ami legfeljebb annyiba kerül, mint a Lindströmbejárás. A Hamilton-kört úgy kapjuk, hogy a bejárásban kihagyjuk az ismétl d csúcsokat. Ez nem lehet drágább, mert x i x i+1 x j helyett x i x j -t véve a 2. lemma szerint olcsóbban ússzuk meg. Hátizsák-feladat Van a hátizsáknak teherbírása, és a cél az, hogy a hazavitt dolgok értéke a lehet legnagyobb legyen. Ibara-Kim algoritmus : ez minden ε-ra csinál olyat, mely legalább (1 ε) optimálisat bepakol. Minden rögzített ε esetén polinomiális. 5 Turing-gép A számítógép - Turing-gép. Kell egy ábécé: Σ véges halmaz, tegyük fel, hogy, 0, 1 Σ. Van k db szalag, mindegyik szalag mindkét irányban végtelen. Minden szalagon van író-olvasó fej. Kezdetben minden fej a kezd mez n áll. Kezdetben mindenhová van írva, kivéve a szalagon a kezd mez t l jobbra, ahol lehet egy véges hosszúságú bitsorozat (vagy szó az ábécé bet ivel). Van vezérl egység, aminek vannak állapotai. Γ véges állapothalmaz. ST ART, ST OP Γ Mindig valamilyen állapotban van a gép. Minden pillanatban megnézi, hogy melyik fej mit lát. k db Σ-beli bet t olvas. Megnézi, hogy milyen állapotban van a vezérl egység. Ekkor: minden fej átírhatja, amit lát és léphet egyet balra vagy jobbra, vagy maradhat helyben. Új állapotba mehet át. Deníció (Turing-gép) A Turing-gép < k, Σ, Γ, α, β, γ >, ahol k 1 egész szám; Σ véges halmaz,, 0, 1 Σ ábécé; Γ véges halmaz, ST ART, ST OP Γ állapothalmaz; α : Σ k Γ Γ azt mondja meg, melyik állapotba megy át; β : Σ k Γ Σ k azt mondja meg, mit írnak a fejek; γ : Σ k Γ { 1, 0, 1} k azt mondja meg, ki merre lép. nem része a bemenetnek. Bemenet: az a k szó, ami az induláskor a szalagokra van írva. Kimenet: azok a szavak, amik a m ködés végén a szalagokon olvashatók. Jelölés: h(i): mi van az i. szalagra írva. Feladatok 1. Adott egy szó, fordítsuk meg. Megoldás: Legyen kétszalagos Turing-gép, az els szalagon a bemenet végére állok, majd átmásolom

a másik szalagra visszafelé léptetve. Azért megyünk az els végére, hogy a kimenet a második szalag kezd pozíciójánál kezd djön. Három állapot { lesz: Γ = {ST ART, ST OP, IRAS} ha h(1), akkor 1. fej jobbra lép ST ART : ha h(1) =, akkor 1. fej balra lép, IRAS állapotba lép { ha h(1) =, akkor ST OP állapotba lép IRAS : ha h(1), akkor 2. fej h(1)-et ír, 2. fej lép, 1. fej lép ST OP : nem csinál semmit 2. Mit csinál a Turing-gép? Γ = {ST ART, ST OP } k = 3 ha h(1) = h(2), akkor 1., 2. fej jobbra lép ST ART : ha h(1) = h(2) =, akkor 3. fej 1-et ír és ST OP minden más esetben 3. fej 0-t ír és ST OP 3. Készíts Turing-gépet, amelyik a bemenetet megduplázza! 4. A bemenetr l eldönti, hogy tükörszó-e. 0-t ír, ha nem palindroma, 1-et ír, ha az. (Visszafelé ugyanaz, vagy nem ugyanaz?) 5. Ha a bemenet n db 1-es, akkor a kimenet legyen 2 n db 1-es. Deníció T 1 =< k, Σ 1, Γ 1, α 1, β 1, γ 1 >, T 2 =< k + 1, Σ 2, Γ 2, α 2, β 2, γ 2 > és Σ 1 Σ 2. T 2 a p programmal szimulálja T 1 -et, ha pσ 2 -beli szó és bármely (x 1,..., x k ) (x l : Σ 1 -beli szó) bemenetre T 2 -nek (x 1,..., x k, p)-t adva T 2 ugyanazt csinálja, mint T 1. (Akkor és csak akkor áll meg véges id n belül, ha T 1 megáll ((x 1,..., x k ) bemenettel) és T 2 els k szalagjára megálláskor ugyanaz lesz írva, mint T 1 els k szalagjára.) Deníció T =< k + 1, Σ, Γ, α, β, γ > k + 1 szalagos Turing-gép univerzális a k-szalagos Turing-gépekre nézve, ha minden T k-szalagoshoz van olyan p program, hogy T szimulálja T -t a p programmal. A Turing-gép programozható. 6... Lemma Feltehet, hogy a bemenet az 1. szalag kivételével üres (csupa van rajta), és a kimenet a k. szalag kivételével üres. Bizonyítás. Sok szalag helyett lehet egy szalag, a sok szalag tartalma egy szalagon lesz sorban, és két adatsort új jel fog elválasztani. A m ködés el tt a T gép átmásolja a 2. adatsortól kezdve az adatsorokat a többi szalagra, így lesz k szalag. Minden k szalagos Turing-géphez létezik k+1 szalagos univerzális Turing-gép, ami szimulálja a m ködését. Bizonyítás. El ször k + 2 szalaggal: A k + 1. szalagon a szimulálandó gép m ködése lesz, a k + 2. szalagon az lesz, hogy milyen állapotban van a szimulálandó gép. Szimulálandó gép: T =< k, Σ, Γ, α, β, γ >. Γ r hosszú szavak Σ-ból, kivéve ST OP, mert neki nem lesz megfelel je. k + 1. szalag: egy g állapot, utána h 1,..., h k jelek, ami r hosszúságú, majd felírjuk β(h 1,..., h k, g)-t, ami r hosszú, α(h 1,..., h k, g)-t, ami k hosszú, γ(h 1,..., h k, g)-t, ami k hosszú. Ez az egész legyen összesen l hosszúságú. Az összes létez (h 1,..., h k, g)-re egy-egy ilyet kell írni egymás után. Az összes szituáció egy szalagon lesz, vagyis a szimulálandó Turing-gép egy szalagon lesz leírva.

A k + 2. szalag: r hosszú szóval lesz kódolva a ST ART állapot. A T Turing-gép m ködése : Szimuláljunk egy k szalagos Turing-gépet. Mit csináljon az én Turing-gépem? Ez itt nem volt teljesen pontos (pontosabban lásd a Lovász jegyzetet!). Más a sorend, mint a fenti leírásnál, azaz el bb az állapotot kellene megnézni, és utána azt, hogy vajon mi van az els k szalag feje alatt. Megnézi, hogy hol van az els k fej. Megnézi, hogy vajon a k + 1. szalag elején nem pont az a k bet van-e, mint amit a k fej lát. Ha abban lenne, akkor lehetne menni az új állapotba (meg kell nézni, hogy új állapotba kell-e menni). β szerint az új állapot kódjával felülírja a ST ART állapot kódját, majd α szerint beírja a fejekre az új adatokat. γ szerint mozgatja a k fejet megfelel en. Mi a helyzet akkor, ha nem az a kód van a szalag elején, mint amit a k fej lát? Ilyenkor elmozgatja a fejet a következ blokk elejére, és újra összehasonlítja ott. Amíg nem találja meg az állapotot, addig megy jobbra egy blokkot. ST OP állapotba kerül a szimulálandó gép, ha eljut az üres blokkig. Hogyan szabadulunk meg a k + 2. szalagtól? A k + 1. szalagon a kezd helyt l balra teszem a k + 2. szalag tartalmát, majd a jelek közé 0-t, vagy 1-et írok. Akkor van 0, ha nincs ott a fej, akkor van 1, ha ott van a fej. Összesen két egyes van tehát, ezt a két pozíciót a gép meg tudja jegyezni, és akkor tudja, hogy mi az a két hely, amit olvasni kell. Lépéskor az 1-est teszi át egy pozícióval jobbra vagy balra...., 0/1, h 2, 0/1, h 1, 0/1, h 1, 0/1, h 2, 0/1,... Bármely k + 1 szalagos Turing-gép helyettesíthet k szalagossal (mégpedig olyannal, aminek csak az els szalagjára van írva valami a m ködés elején és végén). Bizonyítás. A k. és a k + 1. szalag helyett veszek pontosan egy szalagot, mint az el bb, a kezd állapottól balra lesz a k + 1. szalag tartalma, és a fejeket megint 0 vagy 1 jelöli. Ismét összesen két 1-es van. Az el z höz képest az a különbség, hogy most nem tudom, mennyi a ráírt adat pontosan. (Az univerzálisnál tudtuk, hogy milyen hosszú az adat.) Tehát ez a bizonyítás így még nem jó. Ehelyett az kell, hogy, ha az egyik szalagon vannak az y-ok, a másikon az x-ek, akkor helyettük legyen a következ :..., x 1, 0/1, y 1, 0/1, x 2, 0/1, y 2, 0/1,... Az aktuális helyzetet modulo 4 vizsgálva kiderül, hogy mit is kell csinálni. Ha mod(4) = 1, akkor az egyik szalag adata, ha 2, akkor 0/1, ha 3, akkor a másik szalag adata, ha 0, akkor 0/1. Következmény Ha a k + 1 szalagos N-et lép, akkor a k szalagos legfeljebb O(N 2 ) lépést tesz. Minden lépésb l legfeljebb cn lépés lesz (c konstans). Megjegyzés. Elég a k = 1 esetet nézni. Megjegyzés. k szalag 1 szalag esetén a lépésszám N O(N 2k 1 ). polinomiálisat készít. Megjegyzés. Bizonyítható, hogy a k 1 esetén N O(N 2 ) a lépésszám. Ez polinomiális lépésszámból Megjegyzés. Univerzális k + 1 szalagosnál, ha a szimulálandó k szalagos N-et lép, akkor a szimulátor O(N)-et. Minden k-ra létezik egyszalagos univerzális Turing-gép a k szalagosokra nézve, mely N lépés helyett O(N 2 )-et lép. (A konstans függ k-tól.) 7... Church tézis: algoritmus az, ami Turing-géppel megoldható. Σ véges halmaz, ez lesz az ábécé. :az üres jel. Σ 0 = Σ\{ }. Σ 0 := Σ 0 -ból alkotható véges hosszúságú szavak. Deníció (rekurzív függvény) f : Σ 0 Σ 0 rekurzív (kiszámítható), ha létezik Turing-gép, melynek 1. szalagjára x-et írva véges id n belül megáll és utolsó szalagjára f(x) van írva.

Deníció (nyelv) L Σ 0 nyelv. Deníció (rekurzív nyelv) { 1, ha x L L rekurzív nyelv, ha a karakterisztikus függvénye ( χ L ) rekurzív, azaz χ L (x) = rekurzív. 0, ha x / L Azaz van olyan Turing-gép, hogy az els szalagra x-et írva véges id n belül megáll és az utolsó szalagra 0-t, vagy 1-et ír aszerint, hogy x L vagy x / L. Következmény L rekurzív L rekurzív (L komplementere). Következmény Van nem rekurzív nyelv. Ugyanis a nyelvek száma kontinuum, de a Turing-gépek száma megszámlálható. Deníció (rekurzíve felsoroható nyelv) L nyelv rekurzíve felsorolható, ha L = {} vagy f : Σ 0 Σ 0 rekurzív függvény, melynek értékkészlete L. Állítás A következ kijelentések ekvivalensek: (i) Egy L nyelv rekurzíve felsorolható (ii) Létezik T Turing-gép, hogy els szalagjára x-et írva T megáll véges sok lépés után x L. (iii) Létezik T Turing-gép, mely esetleg végtelen sokáig m ködik, de felsorolja (akár ismétléssel) L szavait. Bizonyítás. (i) (iii): Létezik T Turing-gép, hogy T kimenete = L szavai. Csinálunk egy T Turinggépet, mely két dolgot tud: 1. felsorolja Σ 0 elemeit, 2. x Σ 0-ra lefuttatja T-t az x bemenettel, majd kiírja, ami T kiírna. (iii) (i): T Turing-gép felsorolja L szavait. Ehhez készítek egy T Turing-gépet, melyre a bemenetek a pozitív egész számok. n (N) esetén T n lépésig m ködteti T-t, majd kiírja a T által utoljára kiírt szót. (Ezáltal végessé tehet a futtatás. Gond, hogy nem tudjuk, kijön-e egy adott szó. Pl. nem tudjuk eldönteni, hogy angolul van-e egy szó.) (ii) (iii): T Turing-gép akkor és csak akkor áll le véges id n belül, ha a beadott x L-beli. Ebb l T -t készítünk. x 1, x 2, x 3, Σ 0, és ezeket a szavakat párba állítom a pozitív egész számokkal. (A természetes számok és a racionális számok bijekciójánál látott átlós felsorolásban sorolja fel ezeket a párokat. Egy pár azt jelenti, hogy a gép az adott bemenetre hány percig m ködjön.) T ilyen sorrendben veszi az (n, x) (N) Σ 0 párokat. Ha az (n, x)-hez ér, akkor T-t m ködteti x bemenettel n lépésig. Ha ezalatt T leáll, akkor kiírja x-et. (iii) (ii): Könny. T felsorolja L-et, készítsünk T -t, ami olyan, hogy x bemenet esetén m ködteti T-t. Ha észreveszi, hogy T kiírta x-et, akkor leállítja T-t és megáll. Állítás 1. Ha L rekurzív, akkor rekurzíve felsorolható. 2. Ha L rekurzív L, L rekurzíve felsorolható. Bizonyítás. 1. Felsorolom Σ 0 elemeit, majd mindre lefuttatom T-t (L-et eldönt gép); ha T 1-est ír, kinyomtatom az elemet, ha 0-t, akkor nem. Ez felsorolja L szavait. 2. :igaz, volt. : T 1 felsorolja L-et, T 2 L-et. Készítek T -t, ami m ködteti T 1 -et és T 2 -t, amíg valahol meg nem látja a beírt x szót. Ekkor mindent leállít és aszerint ír 0-t vagy 1-et, hogy melyik gépen látta meg. Adjunk példát egy nem algoritmizálható problémára

T-re: L T = {x : T x bemenettel véges id n belül megáll } 1. L T rekurzíve felsorolható. 2. T univerzális L T nem rekurzív. Bizonyítás. 1. volt: rekurzíve felsorolható létezik T, ami akkor és csak akkor áll le véges id n belül, ha a szó L T -beli. 2. Nehéz, trükkös diagonális módszerrel bizonyít (az egész számok nincsenek annyian, mint a részhalmazai). Indirekt tegyük fel, hogy nem igaz az állítás. Ekkor L T is rekurzíve felsorolható. Ekkor létezik olyan T, amely akkor és csak akkor áll le véges id n belül, ha x L T. Legyen T kétzalagos Turing-gép, ami az egyszalagosakra nézve univerzális, és legyen T egyszalagos. Legyen p az a program, mellyel T szimulálja T -t. Megáll-e véges id n belül T a következ bemenettel: mindkét szalagjára p-t írom? Ha a p bemenet benne van L-ben, így nincs benne a komplementerében, akkor T végtelen sokáig fut, ezért T-nek is végtelen sokáig kellene m ködnie, pedig már leállt. Ha a p nincs benne L-ben, akkor T nem áll le, de p benne van a komplementer-nyelvben, ezért T leáll, de T T -t szimulálja, vagyis le kéne állnia. Sehogy sem szimulálja jól, ha p a bemenet. Ellentmondásra jutottunk. Állítás (Algoritmikusan eldönthetetlen problémák) Bemenet Kimenet 1. x megáll-e T x bemenetre? (T rögzített univerzális Turing-gép.) 2. T Turing-gép leírása megáll-e üres bemenettel? 3. T Turing-gép leírása van-e bármilyen bemenet, amire leáll véges id n belül? Bizonyítás. 1. Világos. (L T nem rekurzív.) 2. Tegyük fel, hogy van ilyen algoritmus. Ebben az esetben az 1. is menne, ami viszont nem megy. Legyen x bemenethez T Turing-gép olyan, ami az elején x-et ír az els szalagra, majd úgy m ködik, mint T. Az egyik pontosan akkor áll meg, amikor a másik, tehát ekvivalens a két probléma. 3. Tegyük fel, hogy van ilyen, ekkor a 2. is menne. Egy adott T-hez készítek T -t, mely az elején letörli a bemenetet, majd úgy m ködik, mint T. Ekkor T leáll legalább egy bemenetre T leáll az üres bemenetre. Nem létezik algoritmus a következ re: Bemenet: dominókészlet. Kimenet:kirakható-e a sík ezzel a dominókészlettel. Bizonyítás vázlat. Bebizonyítjuk, hogy ha lenne erre algoritmus, akkor az el z 2. pontjára is volna. Vegyünk egy végtelen sokáig m köd Turing-gépet, aminek az állapotai a dominók helyzetei. Rájövünk, hogy a dominókból végtelen sok van, és ellentmondás lesz. (Ez vizsgán nem kell.) 8... Deníció (Polinomiális Turing-gép) T Turing-gép polinomiális, ha c 1, c 2 (N) és egy n hosszú bemenet, amire T c 1 n c 2 lépést tesz. Deníció (Polinomiális nyelv) L nyelv polinomiális (jel: L P, L P-beli), ha van polinomiális T Turing-gép, mely eldönti L-et. (x bemenetre c 1 x c 2 id n belül kiírja, hogy x L vagy x / L.) Deníció (Nemdeterminisztikus Turing-gép) Minden pillanatban többféle dolgot is tehet: < k, Σ, Γ, Φ >, ahol k a szalagok száma, Σ az ábécé, Γ az állapothalmaz, Φ (Σ k Γ) (Σ k Γ { 1, 0, 1} k ) reláció. k db 1, 0, 1 Σ k : ((h 1,..., h k, g), h 1,..., h k, { }} { g, 1, 0, 0, 1,...).

Deníció T nemdeterminisztikus Turing-gép felismeri az L nyelvet, ha x L x bemenet esetén van olyan legális számolás (amit a Φ megenged), mely véges id n belül leáll, és a gép egy 1-est ír ki. ( x L-re lehetnek olyan m ködések is, melyek leállnak és 0-t írnak ki, és olyanok is, melyek sose állnak le, csak az a fontos, hogy legyen olyan m ködés is, melynek végén 1-est ír ki. Tilos x / L-re leállni és 1-est kiírni.) L felismerhet egy T nemdeterminisztikus Turing-géppel L rekurzíve felsorolható. Bizonyítás. : T m ködését kódoljuk. (h 1,..., h k, ST ART ) } {{ } kezd állapot (h 1,..., h k, g, ε 1,..., ε k )(h } {{ } ε i { 1,0,1} 1,...,h k,g,ε 1,...,ε k)... Egy ilyen véges szó = egy véges hosszú m ködés kódja. Van olyan T determinisztikus Turing-gép, mely egy ilyen szóról megállapítja, hogy T egy legális számolását kódolja-e. L legyen az a nyelv, amiben azok a szavak vannak, melyek T egy legális számolását kódolják. T L -t ismeri fel. Módosítható T úgy, hogy a szó elején még egy x bemenet is legyen, és azt nézze meg, hogy a szó azt kódolja-e, hogy T x bemenet esetén véges ideig legálisan m ködik és végül elfogadja x-et. T -t úgy módosítjuk, hogy sorravegye az összes véges szót, megnézze, hogy ez egy ( x bemenet, legális számolás, elfogadás) hármas kódja-e, ha igen, kiírja x-et. : L rekurzíve felsorolható létezik T determinisztikus Turing-gép, mely akkor és csak akkor áll le véges id n belül egy x bemenetre, ha x L-beli szó. Módosítjuk úgy, hogy ha leáll, akkor írjon ki egy 1-est. Deníció (NP-beli nyelv) L NP-beli (L NP), ha van olyan nemdeterminisztikus T Turing-gép, hogy x L x bemenettel van olyan legális számolása T-nek, mely c 1 x c2 id n belül leáll és elfogadja x-et. Ha x / L, akkor bármi történhet, csak az nem, hogy véges id n belül leáll és 1-est ír ki. Deníció Az L 1 nyelv polinomiális tanúja az L 2 nyelvnek, ha x L 2 y : x&y L 1, y c 1 x c2 L 1 P. y a tanú. L NP van hozzá polinomiális tanú. Bizonyítás. Van egy T nemdeterminisztikus Turing-gép, mely L-et polinomiális id ben felismeri. Az L 1 = x&y, ahol y T egy polinomiális idej legális m ködése, mely x-et fogadja el. Ez jó tanú. L-hez tanúnyelv L. Kéne T nemdeterminisztikus Turing-gép, mely L-et polinomiális id ben felismeri. L polinomiális, azaz van T determinisztikus Turing-gép, mely L -t polinomiális id ben felismeri. Legyen x-re y c 1 x c 2, és T lépéseinek a száma c1 x c 2. T m ködése: 1. Kiszámítja c 1 x c 2 -et. (Az esetleges tanú maximum ilyen hosszú lehet.) Ennyi 1-est ír egy külön szalagra. 2. A bementre x után egy & jelet ír. 3. 1-esek száma darab bet t ír az x& után, ez lesz az y. (Az 1-esek száma az 1. lépést l függ!) 4. Átmegy T -be és polinomiális id ben ellen rzi, hogy a kapott x&y L -e. Ha igen, 1-est ír ki. Deníció (Visszavezetés) L 1 nyelv polinomiális id ben visszavezethet L 2 nyelvre, ha van olyan f : Σ 1 Σ 2 függvény, mely polinomiális id ben számolható (determinisztikus Turing-géppel) és x L 1 f(x) L 2. Deníció (NP-teljes nyelv) NP-teljes, ha minden NP-beli nyelv rá polinomiális id ben visszavezethet. (Cook-tétel) A SAT nyelv NP-teljes.