Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

1 Algoritmikus kalandok J. Hromkovič könyvéről Benczúr András ELTE IK Juraj Hromkovič: ” Algorithmic Adventures (From Knowledge to Magic)” Springer-Verlag.

Hasonló előadás


Az előadások a következő témára: "1 Algoritmikus kalandok J. Hromkovič könyvéről Benczúr András ELTE IK Juraj Hromkovič: ” Algorithmic Adventures (From Knowledge to Magic)” Springer-Verlag."— Előadás másolata:

1 1 Algoritmikus kalandok J. Hromkovič könyvéről Benczúr András ELTE IK Juraj Hromkovič: ” Algorithmic Adventures (From Knowledge to Magic)” Springer-Verlag Berlin Heidelberg Készült az „Önálló lépések a tudomány területén” projekt támogatásával: ELTE TÁMOP-4.2.2/B-10/

2 2 Algoritmikus kalandok J. Hromkovič könyvéről

3 3 Előszó – motiváció A számítástudomány mindennapi képének kritikája: Azonosítják az ECDL-lel. Középiskolások nem veszik komolyan – nem tekintik tudományos diszciplínának, csupán számítógép-használati készségek. Csak azért kell, mert mindenki használ számítógépet, A szoftver ipar szűklátókörű: saját termékeik használatát akarják tanítani.

4 4 1. A számítástudomány fejlődésének rövid története, avagy a számítástudomány miért nem számítógép-vezetői jogosítvány? 1.1. Áttekintés: Mit fejezünk fel a fejezetben? A számítástudomány (CS) megalapozásának, mint önálló kutatási diszciplínának története, érthető, szórakoztató módon. Benyomás arról, hogyan fejlődik a tudomány, milyenek a számítástudomány építőkövei. A számítástudomány néhány alapkutatási kérdése, átfedései más tudományterületekkel. Áttekintés a többi fejezetről.

5 5 1. A számítástudomány fejlődésének rövid története, avagy a számítástudomány miért nem számítógép-vezetői jogosítvány? 1.2. Ingatag alapokon áll-e a tudomány épülete? Hogyan mutatható be egy tudományos diszciplína? Rossz mód: eredmények gyűjteménye, mindennapi alkalmazások bemutatása (Példa: fizika) A számítógépet kivéve, a berendezések, eszközök használatát soha nem tekintettük tudománynak. Miért gyakoriak az alábbi felfogások? CS = speciális szoftverek használatának képessége CS oktatás (közismereti)=ICT készségek oktatása, jó ez? A félreértelmezést a számítógépek relatíve (más eszközhöz) magas bonyolultsága okozza? Nagy a tömeges használat – mint autóvezetőké.

6 6 1. A számítástudomány fejlődésének rövid története, avagy a számítástudomány miért nem számítógép-vezetői jogosítvány? Közfelfogás félreértése a CS lényegéről. Egyre több tapasztalat igazolja, hogy a számítógépek használatának oktatása nem igényel új, speciális tantárgyat. Alapkérdés: Mi a CS? Nem arról szól, hogyan használjuk a számítógépeket. Nem meta tudomány, nem természettudomány, nem műszaki tudomány. -Szoftver – mérnöki jelleg - elméleti alapok – matematikai jelleg Zavaros a közismereti kép. Viták, tisztázás; l. Dennig: mit mondtunk a kiszámításról? Mi a matematika?

7 7 1. A számítástudomány fejlődésének rövid története, avagy a számítástudomány miért nem számítógép-vezetői jogosítvány? Hogyan alapozható meg tudományos diszciplína? Melyek alapvető építőkövei? Tudományok belső nyelvezetei, fogalmai – hosszú fejlődés eredménye. Példák: „valószínűség”, végtelen”, „energia”, „anyag”, „Élet” Konkrétan: definiáljuk a „szék” fogalmát. Fogalmak alkotása- tudomány alapvető tárgya. A „számítástudomány” mihez kötődik: az „algoritmus” fogalmához.

8 8 1. A számítástudomány fejlődésének rövid története, avagy a számítástudomány miért nem számítógép-vezetői jogosítvány? A tudomány axiómáiról „Az axiómák a tudomány alap-komponensei. Olyan fogalmak, meghatározások és tények, amelyek érvényességéről és igazságáról határozottan meg vagyunk győződve, jóllehet nincs semmilyen lehetőségünk, hogy bebizonyítsuk korrektségüket.” Egyik ilyen axióma: korrektül gondolkozunk, érvelésünk megbízható. A „gondolkodás axiómája: Ha A implikálja B-t igaz, és A is igaz (teljesül) akkor B is igaz (teljesül).” Esik az eső – nedves a mező – boldog a szalamandra. Direkt és indirekt bizonyítás. Pl.: a nem racionális.

9 9 1. A számítástudomány fejlődésének rövid története, avagy a számítástudomány miért nem számítógép-vezetői jogosítvány? Ez az axióma a korrekt érvelés axiómája, az implikáció formális fogalma a formális gondolkodásban. Axiómák revíziója: jobbal helyettesíti a régit. Axiómák felett épül a tudomány épülete, korrekt építéssel. Matematika – legerősebb ebben az értelemben. A helyes axiómákból való levezetés helyessége implikálja a levezetett eredmény helyességét.

10 10 1. A számítástudomány fejlődésének rövid története, avagy a számítástudomány miért nem számítógép-vezetői jogosítvány? 1.3. A számítástudomány eredete, mint egy eufória vége XIX. Század vége – tudomány, technika nagy vívmányai – ok és okozat láncokkal minden megmutatható. „Az ember a természet minden törvényét fel tudja fedezni.” Ember ugyan nem lenne képes a sok részecske együttes viselkedését kezelni; fizikusok „démon” kísérlete, aki meghatározná a jövőt. Elvetették; káosz és kvantumjelenségek – a véletlen. A számítástudomány keletkezése Hilbert hitének cáfolatához kötődik: „létezik egy módszer minden matematikai probléma megoldásához”.

11 11 1. A számítástudomány fejlődésének rövid története, avagy a számítástudomány miért nem számítógép-vezetői jogosítvány? Hilbert illúziója pontosabban megfogalmazva: (i)Mindenféle matematika létrehozható véges sok axióma gyűjteményéből kiindulva. (ii)Az így létrehozott matematika teljes abban az értelemben, hogy a matematika nyelvén kifejezett minden állítás vagy igazolható, vagy cáfolható. (iii) És létezik egy módszer, amely eldönti egy állítás korrektségét. Kulcskérdésünk: mi a „módszer” (metódus, eljárás, METHOD) ? Mit értettek abban az időben alatta? „Egy probléma (feladat) megoldására szolgáló módszer (method) egy hatékony lépéssorozat leírása, amely elvezet a probléma megoldásához. A leírásnak olyan utasításokból kell állnia, amit bárki elvégezhet. ( Még ha nem is matematikus.)”

12 12 1. A számítástudomány fejlődésének rövid története, avagy a számítástudomány miért nem számítógép-vezetői jogosítvány? Példa: másodfokú egyenlet megoldó eljárások. (Legelső ilyen példáink: összeadás, kivonás, szorzás, osztás írásban) Ezeket al-Khwarizmi után „algoritmusnak” nevezzük. Hilbert törekvése: „algoritmizálni” a teljes matematikát. (Automatikus bizonyítások)

13 Kurt Gödel: (a)Nem létezik semmilyen (értelmes) teljes matematikai elmélet. Minden korrekt és elég „nagy” matematikai elméletben (pl. Peano aritmetika) megfogalmazható olyan állítás, melynek igazsága nem bizonyítható az elméleten belül. Teljesülésének bizonyításához újabb axiómák kellenek, építeni kell nagyobb elméletet. (b)Nem létezik metódus (algoritmus) matematikai tételek bizonyítására. Negatív: eldönthetetlenségi tulajdonság, nem teljesség Pozitív: végtelen sokáig bővíthető A tétel hatása a tudományra: ez váltotta ki a számítástudomány kialakulását. Miért? A metódust (algoritmust ) formálisan definiálni kell. A nemlétezés igazolásához ez elengedhetetlen.

14 Alan Turing: Az első, formális definíció az algoritmus fogalmára: A Turing- gép (a-gépnek nevezte): véges állapotú automata írható-olvasható szalaggal. Turing-kiszámítás, Turing-algoritmussal megoldható feladatok definíciója. (Egy Turing-kiszámítást bárki elvégezhetne, csak idő, ceruza és papír kell elegendő.) Church-tézis: minden egyéb definíció ugyanazt adja az algoritmikusan megoldható feladatokra. (Nem bizonyított.) Turing definíciója- az algoritmus axiómája; a számítástudomány első axiómája. Még a kvantum-számítások sem lépnek ki belőle. A könyv itt tudatosan nem adja meg a pontos definíciót. Inkább egy egész fejezetet szentel annak, hogy felépítse az algoritmus és program fogalmának helyes megértését.

15 A számítástudomány története és a könyv felfogása A számítástudomány alapkérdése: „Vannak-e problémák (feladatok), amelyeket nem lehet automatikusan (algoritmussal) megoldani? Ha igen, milyen feladatok oldhatók meg, és milyenek nem?” Nem válaszolja meg közvetlenül, történetileg viszi végig, bárki számára érthetően. Nehéz fogalom, (egyetemi első két évben egyik legnehezebb), három fejezetet szentel rá. A könyv itt tudatosan nem adja meg a pontos definíciót. Inkább egy egész fejezetet szentel annak, hogy felépítse az algoritmus és program fogalmának helyes megértését. Fejezetek rövid bemutatása: 2. Fejezet: „Algoritmika, avagy mi a közös tevékenysége a programozásnak és a sütésnek?” Sütés lépései – számítógép lépései – végtelen sok feladatpéldány Algoritmus és program fogalma, eltérései

16 16 3. Fejezet: „A végtelen nem egyenlő a végtelennel, avagy miért végtelenül fontos a végtelen a számítógéptudósok számára” Miért van véges világunkban szükség a végtelenre, a tetszőlegesen nagyra? Hogyan függ össze az automatikus megoldhatóság határaival? Matematikai fogalmak, hogyan használható a végtelen. 4. Fejezet: „Kiszámíthatóság, avagy miért léteznek olyan feladatok amelyeket nem lehet megoldani semmilyen számítógéppel vezérelt programmal? Hogyan bizonyítható ilyenek léte? A visszavezetés módszere negatív állítás bizonyítására. Algoritmikusan megoldhatatlan probléma létezésének bizonyítása. 5. Fejezet: „Bonyolultságelmélet, avagy Mit tegyünk, ha az egész Univerzum összes energiája sem elég egy kiszámítás elvégzésére? Komplexitás – munkamennyiség /lépésszám, erőforrások használata/ Feladatok osztályozása – „majdnem megoldások” – lehetőségek a következő fejezetekben

17 A számítástudomány története és a könyv felfogása 6. Fejezet: „A véletlen szerepe a természetben, avagy a véletlen, mint algoritmusok hatékonyságának forrása” „Pénzfeldobás” használata algoritmusban Csak nagy valószínűséggel jó eredmény szemben a biztos jó eredménnyel, amit gép hiba miatt nem kapunk meg (időben).. 7. Fejezet: „Kriptográfia, avagy hogyan változtassunk gyenge pontokat előnyössé? Megbízható - nehezen feltörhető titkos kódok. Nyilvános – titkos kódpár. Protokollok. 8. Fejezet: „DNA számítás, avagy biokomputer a láthatáron?” Probléma vetítése DNA szekvenciákra, kémiai számítás A,T,C,G „jelek”. Bázispárok. Kérdés: lesz-e biokomputer?

18 A számítástudomány története és a könyv felfogása 9. Fejezet: „Kvantumszámítás, avagy kiszámítás a részecskék varázsvilágában.” Számolás q-bitekkel – igen gyors lehet. Nem tud többet, mint a Turing-gép. 10. Fejezet: „Hogyan jussunk jó döntésre ismeretlen jövőre nézve, avagy hogyan járjunk túl egy ravasz ellenfél eszén?” On-line stratégiák, véletlenítés Összegzés A bevezetett alapfogalmak listája, A számítástudomány feladata: nehéz feladatokhoz megoldás.

19 19 2. Algoritmika (algoritmusok), avagy mi a közös a sütésben és a programozásban? 2.1. Áttekintés: Mit találunk majd a fejezetben? Fontos kezdet: az alapnyelv megadása; a technika nyelve. Az algoritmusok intuitív fogalma formális matematika nélkül, mi az és mi nem az? Recept –mennyire algoritmus? Számítógép és programozás – algoritmus érthető reprezentálása számítógép számára. Gépi kódú programozásról alapelképzelés. Algoritmikus probléma – végtelen sok problémapéldányra működjön, véges lépésben.

20 20 2. Algoritmika (algoritmusok), avagy mi a közös a sütésben és a programozásban? 2.1. Algoritmikus sütés Algoritmus meghatározása felé: „Egy algoritmus nem más, mint egy tevékenység könnyen érthető leírása, ami egy cél eléréséhez vezet.” „Az algoritmus (metódus) egyszerű, egyértelmű tanács, hogyan haladjunk lépésről lépésre célunk eléréséhez.” Milyen értelemben tekinthető egy recept algoritmusnak? Példa: 26 cm-es barackos lepény receptje, 11. lépés. Követelmény algoritmusra nézve: „Legyen egzakt leírása a soron következő tevékenységnek, úgy, hogy aki semmit nem tud arról, hogyan vezet a lépés a kívánt célhoz, az is sikeresen végre tudja hajtani. Legyen független a végrehajtás interpretációitól, minden alkalmazása ugyanahhoz az eredményhez vezessen.”.

21 21 2. Algoritmika (algoritmusok), avagy mi a közös a sütésben és a programozásban? 2.2. Algoritmikus sütés Mi kell még a sütési „algoritmushoz”: „egyetértés az (elemi műveletek) utasítások listájában, amire minden utasítás bárki által elvégezhető, aki főzni vagy sütni akar.” (főzd, amíg fehár tojáshabbá válik, vagy elég kemény lesz főzés során – ciklus is lehet rá) Finomítja a receptet, folyamatábra. Már majdnem egyértelmű lett..

22 22 2. Algoritmika (algoritmusok), avagy mi a közös a sütésben és a programozásban? 2.3. Mi a helyzet a számítógépes algoritmusokkal? Mi a különbség az algoritmusos főzés és az algoritmusos számítás között? Mi is pontosan egy számítógép-algoritmus,egy számítógép- program és mi nem az? Rögzíteni kell: mit tud (milyen utasításokat, műveleteket ) egy számítógép kétségen kívül végrehajtani. (tipikus műveletek) Mint lépések sorrendje – főzés és számítógépes algoritmus hasonló. Eltérés: főzés - alapanyagból étel lesz – számítógépes: végtelen sok feladatpéldány, Az algoritmus definíciójának második követelménye:.

23 23 2. Algoritmika (algoritmusok), avagy mi a közös a sütésben és a programozásban? 2.3. Mi a helyzet a számítógépes algoritmusokkal? Az algoritmus definíciójának második követelménye: „Egy problémát megoldó algoritmusnak biztosítania kell, hogy a probléma minden előfordulására korrektül működjön. A korrekt működés azt jelenti, hogy minden inputra véges időben befejezi működését, és a korrekt eredményt biztosítja.” Példa : másodfokú egyenlet megoldása, négyzetgyökvonás megengedett lépésként. Programot kell rá írni: számítógépes utasítások szekvenciája; program. Számítógép érti. Kiszámításos szemantikája lesz. Programozás: algoritmus átírása programmá., számítógépes nyelvre. Ez egyben bizonyítja, hogy a természetes nyelven leírt algoritmus automatikusan végrehajtható. Részletes példák a „TRANSPARENT” egyszerű gépre..

24 24 2. Algoritmika (algoritmusok), avagy mi a közös a sütésben és a programozásban? 2.4. Soha nem ér véget (szándék nélkül)? Kiszámítási algoritmus – véges lépésben fejeződjön be. Megállás halting probléma: „Algoritmus A megáll x-en; A mindig megáll.” Végtelen ciklusba futó program készülhet..Példa: 100 C˚ -ig melegítés 10s-onként, 3000m magasan. Egyszerű programok végtelen ciklusra: ciklus, feltétel soha nem lesz nulla. Ismeretlen hosszú szekvencia (számok sorozata) beolvasása. Direkt címzéssel: „végtelen” hosszú program. Indirekt címzéssel: kifut a memóriából.

25 25 2. Algoritmika (algoritmusok), avagy mi a közös a sütésben és a programozásban? 2.5. Összegzés Elvárások algoritmusra: (1)Általános-egyszerű aktivitások listája. (2)Minden probléma-példányra adjon eredményt (3)Minden példányra véges lépésben adjon eredményt. Záró: Egy algoritmus implementálható egy programozási nyelven írt programként. Egy program olyan algoritmus-reprezentáció, amely megérthető egy számítógép számára. A program nem az algoritmus szinonimája, csupán utasítások szekvenciája számítógép számára. Utasítások szekvenciája nem vezet feltétlenül értelmes megoldáshoz. (Értelmes válasz, véges időben.)

26 26 3. A végtelen nem egyenlő a végtelennel, avagy miért végtelenül fontos a végtelen a számítástudományban? 3.1. Miért van szükségünk a végtelenre? Nem csak matematikai játék? Szükséges véges világunk vizsgálatához. Tipikus végtelenek: természetes számok, egyenes pontjai. Nem láthatunk aktuális végtelent. Végtelen kis mennyiségek felé. Fizika. Számítástudományban: végtelen sok lehetőség -végtelen sok program, lehet végtelen futás -Algoritmusok, garantált véges futással -Végtelen sok feladat, végtelen sok feladatpéldánnyal

27 Miért van szükségünk a végtelenre? Kérdés: csak egy végtelen van? Több algoritmikus feladat van, mint program. Nem lehet mindent automatizálni. Léteznek feladatok, amelyekhez nem létezik algoritmus, nem lehet semmilyen számítógéppel megoldani Cantor elve végtelenek összehasonlítására. Halmaz fogalma – páronként elkülönülő elemekből áll. Juhász módszer fekete és fehér bárányokra. (nem kell megszámlálás) Párosítás (matching) definíciója: A, B halmazok, az (a,b) párok halmaza párosítás, ha (i)a A és b B (ii)A minden eleme pontosan egy pár első eleme. (iii)B minden eleme pontosan egy pár második eleme. Ha van párosítás, akkor A és B ugyanakkora: |A| = |B|. Végtelen halmaz A, ha létezik valódi része B, hogy |A| = |B|.

28 28 Példák: Hotel Hilbert, Z(0), Z(1), …, Z(i), … szobákkal N, Q, R : az természetes számok, racionális számok, valós számok halmaza Műveletek a végtelennel (A Föld és az univerzum pontjainak száma azonos) |N| = |Q| |N k | = |N| Ha |A| = |N|,akkor egy párosítás az A halmaz elemei beszámozza. 3.3.Vannak különböző végtelen méretek, avagy miért van több valós szám, mint természetes szám? Ki tudjuk-e mutatni, hogy nincs párosítás N és R + között? A nemlétezés bizonyítása általában nehéz. Cantor-féle átlós módszer

29 29

30 30 4. A kiszámíthatóság határai, avagy miért léteznek feladatok, amelyeket nem lehet automatikusan megoldani számítógéppel? 4.1. Cél Vannak különböző végtelenek, ha egy halmaz „elég nagy” nem lehet beszámozni. Kiszámítási feladatok száma > algoritmusok száma. Lehet érdektelen. Van-e gyakorlatban is fontos megoldhatatlan feladat? Ez a legnehezebb fejezet! Alapvető, érteni kell, pontosan kell interpretálni, szemléltetni.

31 Hány program létezik? Első válasz: végtelen sok. (programhossz érv) Célkitűzés: bizonyítani, hogy számosságuk |N|. Véges jelhalmaz (alfabéta, ÁBC) felett megadható véges szövegekre tipikus felsorolás: hossz, azon belül lexikografikus sorrend. Minden program – szöveg egy ábécé felett. (Értelmetlen, szintaktikusan hibás szövegeket kizárjuk.) Kompájler „szintaktikailag” ellenőrzi, azt nem tudja ellenőrizni, hogy „szemantikusan” hogy algoritmus-e? Tehát: programok száma: |N|. Miért fontos? A lehetséges kiszámítási feladatok száma ennél nagyobb. (A legkisebb számosság |N|.) A programok felsorolása: P 1, P 2, P 3,…, P i,… Problem(c): Input: természetes szám, n; Output: a c valós szám első n decimális jegye. A feladathalmaz számossága: |R|. Tehát nincs mindhez program.

32 Hány program létezik? „Azok a valós számok, amelyeknek van véges reprezentációja, pontosan az algoritmusok által generálható számok. Vannak olyan valós számok, amelyek nem rendelkeznek véges leírhatósággal, tehát nem kiszámíthatók. (Majdnem mind ilyen.) Ez érdekes, de az algoritmusok szempontjából nem fontos kérdés. Ezek a faladatok nem írhatók le végesen. Van-e végesen leírható, és algoritmussal megoldhatatlan feladat,? 4.3. YES vagy NO, az itt a kérdés, avagy a diagonalizálás újabb alkalmazása Döntési feladat: amire az egyértelmű és helyes válasz „YES” vagy”NO”. A legegyszerűbb ilyen döntési feladat: Az ( N, M),döntési probléma, ahol M az N részhalmaza. Input: egy természetes szám, n N Output: „YES”, ha n M, „NO”, ha nem. Kérdés: az ( N, M),döntési problémák száma?

33 YES vagy NO, az itt a kérdés, avagy a diagonalizálás újabb alkalmazása Kérdés: az ( N, M),döntési problémák száma? Az A algoritmus felismeri M-et, másként megoldja az ( N, M) döntési problémát, ha minden n N -re véges időben a megfelelő választ adja. Ekkor a probléma eldönthető. Cél: konkrét, végesen definiálható eldönthetetlen feladat találása. Nézzük a bővebb lehetőséget: a programok világát. Minden algoritmushoz van program, de nem minden program algoritmus. Legyen M az N egy részhalmaza, és P egy program. a P program elfogadja M-et, ha (i) kiírja „YES”-t, ha n M, (ii) outputja „NO”, vagy végtelen sokáig fut, ha nem teljesül n M. A P programhoz M(P) jelöli az általa elfogadott halmazt. Bináris reprezentálás- végtelen 0-1 sorozattal: az i-edik bit 1, ha elfogadja, 0, ha nem (lehet végtelen futás!) Hipotetikus táblázat! Programok felsorolása- két dimenziós végtelen táblázat., 0-1 értékekkel kitöltve. Átlót komplementáljuk – amit kaptunk: DIAG halmaz, lehet-e programja?

34

35 YES vagy NO, az itt a kérdés, avagy a diagonalizálás újabb alkalmazása Átlót komplementáljuk – amit kaptunk: DIAG halmaz, lehet-e programja? Programja, P DIAG, úgy viselkedne, hogy i-hez az ellenkezőjét végezné, mint P i. M(DIAG)-hoz nem létezhet program, nem eldönthető. Megjegyzés: HA lenne hozzá program, sorszáma legyen n, de akkor n-re az ellenkezőjét végezné, mint saját maga. (Másik értelmezés: P n az n helyen nincs értelmezve. Ez a parciális rekurzív függvények univerzális függvényére így működik.) Miért hipotetikus ez? Mert ha P nem áll meg az i bemenetre, akkor nem tudjuk megvárni, mi lenne a bit értéke. Vagyis, ilyenkor bizonytalan, mi lenne DIAG értéke. Nem lehet DIAG-ot algoritmussal előállítani. Majd erre visszatérünk a HALT problémánál A redukciós (visszavezetéses) módszer, avagy hogyan lehet negatív eredmények elérésére használni egy problémák megoldásában sikeres módszert? „Nem nehezebb mint”, „könnyebb vagy ugyanolyan nehéz” viszonyok problémák között: Ha U 2 algoritmusos megoldhatósága garantálja U 1 algoritmussal való megoldhatóságát. Jelölés:

36 A redukciós (visszavezetéses) módszer, A visszavezetés sémája: A 1 algoritmus az U 1 probléma megoldására Input y Algoritmus B A2A2 A megoldja U -t Az x példányra Algoritmus C x A 1 algoritmus az U 1 probléma megoldására

37 37 Két fontos prbléma:Végtele halmaz: ?

38 38 Két fontos probléma: UNIV, az univerzális probléma: Input: egy P program és egy i N inputja. Output: YES, ha i M(P), azaz P elfogadja i-t, NO, ha P nem fogadja el i-t, azaz megáll és NO-t ír ki, vagy végtelen futása van. Megjegyzés: kitölthető lenne a „hipotetikus” táblázatunk, ha ez algoritmussal megoldható. Szerepe: a program tesztelése, korrekt választ ad-e? HALT, a megállási probléma: Input: egy P program és egy i N inputja. Output: YES, ha P megáll i-n, azaz YES vagy NO kiírást készít, NO, ha P nem áll meg i-n. Szerepe: a program tesztelése, algoritmus-e?

39 39 Egyforma nehezek: : Bizonyítása: visszavezetéssel: HALT algoritmusa megnézi, megáll-e P az i inputon. -Ha megáll, véges lépésben P megadja a helyes YES vagy NO választ, ez lesz UNIV válasza is. -Ha HALT szerint P nem áll meg, vagyis HALT válasza NO, akkor UNIV is a NO válasz adja. Visszavezetés: Ötlet: a P program az „output” lépéseket a befejezéskor hajtja végre. Írjuk át a programkódban az „output NO” lépést „output YES” lépéssé, kapjuk a P’ programot. A P’ programra és i bemenetre az UNIV algoritmusa akkor és csak akkor ad YES választ, ha P véges lépésben ad választ. Tehát HALT is ennek megfelelően válaszol.

40 40 Az M(DIAG) probléma: Állítás: Visszavezetés: konstruálunk A DIAG algortimust -Készítsünk algoritmust, (A gen ), amely generálja sorban az első, második, és így tovább programot. (Kódhossz, lexikografikus sorrend, szintaktikus elfogadás szerint ez lehetséges.) Az i-edik P i. -Az A UNIV algoritmus véges lépésben eldönti, hogy P i elfogadja-e i-t. -Ha YES lesz A UNIV válasza, akkor A DIAG válasza legyen NO, -Ha NO lesz A UNIV válasza, akkor A DIAG válasza legyen YES. Tehát, ha van A UNIV algoritmus, akkor van A diag algoritmus is, vagyis (N,M(DIAG)) eldönthető. DE úgy láttuk, (N,M(DIAG))-hoz program sem létezhet, tehát algoritmus sem. Megjegyzés: A könyv bizonyítottnak tekintette korábban a hipotetikus táblázat alapján (N,M(DIAG)) eldönthetetlenségét. Nincs erre szükség, másként is ellentmondásra jutunk: Ha A UNIV algoritmus, akkor a konstruált is A DIAG az. Akkor van hozzá program, a felsorolásban szerepelnie kell, legyen P i. Mi lesz P i válasza az i bemenetre?

41 41

42 42 Az M(DIAG) probléma: Példa: Legyen M 0 azoknak a P programoknak halmaza, amelyekre M(P) az üres halmaz, vagyis P vagy NO-t válaszol, vagy nem áll meg. Algoritmussal nem dönthető el, hogy egy program benne van-e M 0 -ban. Általános állítás: „Minden szintaktikus kérdés, hogy egy szöveg programkód- e, algoritmussal eldönthető. Algoritmussal meg tudjuk konstruálni az i-edik programot. A program jelentésére vonatkozó bármely szemantikus kérdés vagy probléma algoritmikusan eldönthetetlen.” -Megjegyzés: Függ-e az egész tárgyalás a program (nyelv) megválasztási lehetőségektől? -Válasz: Church tézis; a Turing-gépre vonatkozó axióma!

43 43 5. Bonyolultságelmélet, avagy mit tegyünk, ha az Univerzum összes energiája sem elegendő egy kiszámítás elvégzéséhez? 5.1. Bevezetés a bonyolultságelmélethez A „megoldható-e” kérdést az 1960-as évektől felváltotta a „hogyan oldható meg” kérdés. (teljesítmények növekedése, egyre nagyobb feladatok optimalizálás, szimuláció) Kérdés: meddig fog dolgozni egy algoritmus, van-e hatékonyabb algoritmus? „Azért nem vagyunk képesek egy probléma megoldására hatékony megoldást találni, mert az algoritmusokban túl szegények ismereteink? Vagy léteznek olyan algoritmussal megoldhatatlan feladatok, amelyek nem tesznek lehetővé semmilyen hatékony algoritmusos megoldást (azaz léteznek – e praktikusan megoldhatatlan problémák annak ellenére, hogy algoritmussal megoldhatók?)”

44 Bevezetés a bonyolultságelmélethez Ez vezetett a bonyolultságelmélet kibontakozásához. Bebizonyosodott, hogy rendkívül nagy számítási igényű feladatok is vannak. „Algoritmikus megoldhatóság nem jelent a kezelhetőséget ( praktikus megoldhatóságot.)” Technikailag nehéz terület. Az alapfogalmakat, az építkezés elemeit mutatja be.

45 Hogyan mérjük a kiszámítási bonyolultságot? Bonyolultság – központi fogalom a számítástudományban, ugyanúgy, mint az algoritmus fogalma. Matematikai precizitással: -Algoritmus matematikai modellje (pl. Turing-gép) -Bonyolultság mérése: a számítógép (automata) modell végrehajtott utasításainak száma, felhasznált „adattár”mérete. Egyszerűsített tárgyalás: Az A algoritmus megoldja az U feladatot, „Az A bonyolultsága az I feladatpéldányon a kiszámításához számítógép-utasítások száma. Ez A időbonyolultsága I -n. Az A tár/tér-bonyolultsága az I feladatpéldányon a programban használt változók száma, és ezáltal a gép regisztereinek (memóriaegységeinek ) száma, amit A-nak I -n való kiszámításához fel kell használni.”

46 Hogyan mérjük a kiszámítási bonyolultságot? Konkrét példák, számolások mérésekhez. Másodfokú polinom kiértékelése, polinom kiértékelése, Hatványozás: x 16, x 32, x 45 Növekvő számok: x értéke 16 bit, 32 bit, … Egyszerűsítő feltevés: számok mérete rögzített. Ettől még a feladat nőhet. Példa: n-ed fokú polinom, méretparaméter: fokszám, n. Időbonyolultsága: 2n+1 szorzás és n összeadás. (Horner) „Egy A algoritmus Time A időbonyolultsága az input méretének fügvénye, Time A (n), amely méri azoknak a műveleteknek a számát, amelyek szükségesek és elégségesek bármely n méretű feladat A felhasználásával történő megoldásához.” A legnehezebb példány bonyolultságát mérjük.

47 Miért hasznos a bonyolultsági mérték? Időbonyolultság – megbecsülhetővé teszi a szükséges végrehajtási időt. Összehasonlítható két algoritmus hatékonysága. Példák függvények növekedésére. A domináló növekedés – nagy méretnél csak ez számít. Lineáris, négyzetes, exponenciális,- Összehasonlítások.

48 A kezelhetőség határai Cél: a nehézség mérhetősége, általánosan Melyek a kezelhető, gyakorlatilag megoldható algoritmikus problémák? Első javaslat definícióra: „Egy U probléma bonyolultsága a legjobb (idő-optimális) algoritmus bonyolultsága, amely U-t megoldja.” Nem jó, nincs is mindig „legjobb” algoritmus. Ezért alsó és felső bonyolultsági határt kell definiálni: Definíció: „Legyen U egy feladat, és A egy tetszőleges megoldó algoritmusa. Ekkor Time A (n) az U feladat felső korlátja. Az f(n) függvény U időbonyolultságának alsó korlátja, ha nem létezik U-ra olyan B megoldó algoritmus, amire (véges sok n kivételével) Time B (n) ≤ f(n).”

49 A kezelhetőség határai Ezzel sok minden kimutatható. Léteznek tetszőleges nagy bonyolultságú (nehéz) feladatok: Pl. : (Megjegyzés: a kiszámítható növekedésnek van felső határa, de az már nem kiszámítható.) A felső korlát általában könnyebben meghatározható. Alsó korlát, igen nehéz lehet: nem létezést kell bizonyítani. A szakadék c*n és 2 n között sok problémára még nem ismert. Kérdés: „Melyek az algoritmussal megoldható problémák közül a gyakorlatban megoldhatók?” Általános megegyezés: a polinom időbonyolultságúak. A „nagy” n-re megoldhatóság határa függ a teljesítménytől. Moore-törvény; amíg exponenciális a teljesítmény növekedése, a mai „túl nagy” n pár év múlva kezelhető lesz..

50 A kezelhetőség határai A P osztály (polinom időbonyolultság, PTIME). 1.Gyakorlati érv: Kísérleti tapasztalatok. Nagy kitevő esetén csak kis n reális. Plinom-algoritmus találása egy-egy problémához a probléma jobb megértéséhez vezetett. A P osztályt nem tekintjük túl nagynak. 2. Elméleti érv: A P osztályba tartozás nem függ a kiszámítási modelltől (Church tézisre utalás!); nem lehet programozási nyelv, kiszámítási modell segítségével behozni egy feladatot a P osztályba. A P-beliség vagy nem P-beliség általános érvényű.

51 Hogyan ismerünk fel egy nehéz problémát? Bonyolultságelmélet alapkérdése: hogyan osztályozhatjuk a konkrét kiszámítási problémákat nehézségi fok szerint? Algoritmus terve – ad egy felső korlátot. Alsó korlát: általában nem tudjuk megadni, ezért osztályozás sem megy. Csak egy „plauzibilis” becslés adható, nem tudunk abszolút megbízható becslést bizonyítani. Van vagy 4000 érdekes, és nehéznek tűnő probléma. (P-beliségi áttörések: prim-teszt, lineáris programozás) Cook-Levin meghatározása: „Egy probléma nehéz (nincs P-ben, vagy gyakorlatilag nem oldható meg), ha U-hoz polinomiális algoritmus létezése bizonyítaná sok ezer nehéz feladathoz polinomiális algoritmus létezését. (olyanokhoz, amelyekhez nem tudtunk hatékony algoritmust megadni.)” Ezek az NP-nehéz problémák. Hogyan bizonyítható NP-nehézség: hatékony redukcióval.

52 52

53 Hogyan ismerünk fel egy nehéz problémát? Hatékony redukálás: „Az R algoritmus (P-beli) transzformálja U 1 probléma I példányát az U 2 probléma R(I) példányára, amit U 1 hatékonyan megold. Az U 1 feladat I példányának megoldása azonos az R(I) példány U 2 –beli megoldásával minden U 1 –beli példányra.” Jelölésben: Ha ez fordítva is igaz, azonos nehézségűek. Ekvivalencia osztályokat generálhatunk. (Megjegyzés: Ilyen az NP-teljes osztály. ) Mintapélda: két NP-nehéz feladat egymásra visszavezetése. U 1 : él lefedés feladata; adott gráf, megfigyelő a pontjából kiinduló éleket (útszakaszokat) látja; minimális megfigyelők száma? (Vertex Cover – VC) U 2 : a LIN(0,1) feladat: egész együtthatós, 0-1 értékű változók feletti egyenletrendszer megoldása?

54 Hogyan ismerünk fel egy nehéz problémát? Ismert mintegy 4000 nehéz feladat. U nehéz, ha egyikre, U 1 -re bizonyítható. NP nehéz feladatra nem ismerünk hatékony megoldást. Az a meggyőződés, hogy ezek valóban nehezek. (Megjegyzés: a könyv kerüli az NP osztály és az NP teljes osztály fogalmait. Az NP nehéz bővebb, mint NP. Ha egy probléma NP-beli, és minden NP-beli probléma hatékonyan visszavezethető rá, akkor akkor NP- teljes. Az NP teljes problémák az NP osztályon belül a legnehezebbek. Az NP-beliség teljesül, ha van polinom méretű tanú. A P és NP probléma nyitott. Az NP definíciójában az N jelentése: Nem determinisztikus. Szigorúan az NP nehéz azt jelenti, hogy minden NP-beli feladat hatékonyan visszavezethető rá ). Ha mégis lenne NP nehéz problémához P-beli algortimus, akkor sok bizonyítás (matematikában) ugyan olyan nehéz lenne, mint a bizonyítás helyességének ellenőrzése. Alsó bonyolultsági határ NP nehéz feladatokra nem ismert, fontos kérdés. NP-teljesség alá nem sikerült menni.

55 Segítség, egy nehéz problémám van! Hogyan lehet nehéz problémák „gyenge” (támadási) pontjait megtalálni – ez művészet, ez a „mágikus” lehetőség. Lehet különbség a „minden példányra” működő algoritmus és egy konkrét példányra működő megoldás között. Hogyan lehet kis módosítással nagy komplexitást átugrani, elfogadható és kezelhető kiszámításig eljutni? Ez a mágia, vagy csoda. Példa: az él lefedés közelítő megoldása: a minimum kétszeresénél nem kell több megfigyelő; lépésszám: lineáris. Algoritmus: választunk véletlenszerűen egy szakaszt. (élt) Két végpontjára egy-egy megfigyelő. A megfigyelt éleket törüljük, a megmaradó gráfra ugyanezt alkalmazzuk.

56 Összegzés Alapfogalmak: algoritmus, program, bonyolultság. Időbonyolultság – a feladat méretének függvénye. Problémák osztályozása; praktikusan megoldható – megoldhatatlan. Hatékony algoritmus nem létezésének bizonyítása a legnehezebb feladatok egyike. Bonyolultsági osztályok hatékony visszavezetés alapján. A P osztály és NP nehéz feladatok. Algoritmus- tervezés feladata: Nehéz feladathoz kompromisszum. Bonyolultság csökkentése kis módosítás révén. Milyen nehéz problémákhoz található egyszerűsítés kicsit más problémára?

57 57 6. Véletlen a természetben és mint a hatékonyság forrása algoritmusokban 6.1. Célok Véletlen fogalmának megértése. Véletlen algoritmusok lehetősége. Igen kis valószínűséggel hibás eredmény –olcsó véletlen algoritmus. Magyarázat, miért működik.

58 58 6. Véletlen a természetben és mint a hatékonyság forrása algoritmusokban 6.2. Mi a véletlen és létezik-e valódi véletlen a természetben? Részletes történeti áttekintés. A 20. század felfedezései: -evolúciós biológia – véletlen mutációk -Kvantummechanika- csak véletlen modellje létezik -Részecskék világa – véletlenek Véletlen elfogadása – nem azonos a káosszal és bizonytalansággal. Rényi Alfréd idézet: „Véletlen és rend nem mond ellent egymásnak, többé-kevésbé mindkettő egyszerre lehet igaz. Véletlen irányítja a világot, és ezért a világban rend van és törvény, ami kifejezhető véletlen események mértékeiben, amelyek a valószínűség-elmélet törvényeit követik.” Goethe a szükségszerűségről és véletlenről: az intelligencia közöttük egyensúlyoz, tudja, hogyan lehet a véletlent kezelni, ellenőrizni és kihasználni.

59 Mi a véletlen és létezik-e valódi véletlen a természetben? Véletlen elfogadása – nem azonos a káosszal és bizonytalansággal. Van-e végső válasz? Természet – alkalmazkodás. Megjegyzések: Algoritmuselmélet és véletlen: véletlenszerű és kiszámítható – egymás komplementere. Véletlenszerűség – végesre csak „mennyire véletlenszerű” vizsgálható. Véletlenített algoritmusokhoz nem szükséges valódi véletlen; tudunk szimmetrikus jelenségekből tetszőleges (diszkrét) véletlen eloszlást kialakítani.

60 A tanúk bősége segítség szükség esetén, avagy a véletlen miért lehet hasznos? Véletlenített algoritmus, program: Többféle számítást végezhet ugyanarra a bemenetre, egy véletlen dönti el, melyiket. Két alapeset: 1. Determinisztikus program bizonyos lépéseknél „pénzt dob fel”, ennek alapján válasz két folytatás közül. Új utasítás TRANSPARENT géphez: „Flip a COIN. If „head” goto i, else goto j” 2. A véletlenített algoritmus az elején számos determinisztikus stratégiából véletlenszerűen választ egyet, és azt hajtja végre az adott bemenetre. A 2. módszerre példa: két távoli szerver tárolja ugyanazt az adatbázist. Ellenőrizni kell, azonosak-e.

61 A tanúk bősége segítség A 2. módszerre példa: két távoli szerver tárolja ugyanazt az adatbázist. Ellenőrizni kell, azonosak-e. x=y ? n= Egzakt megoldás: minden bitet át kell küldeni. Véletlenített protokollal: elég bit cseréje, 256 bit. Hibavalószínűsége: 0,36841* Módszer: x-et és y-t bináris egész számnak tekintjük, Választunk véletlenszerűen egy n 2 –nél kisebb p prímszámot, (n 2 /2 ln n lehetőségből). Elosztjuk x-et p-vel, a maradékot és p-t átküldjük, osztjuk y-t is p-vel. Ha a maradék azonos, megegyezőnek tekintjük őket, ha nem, biztos eltérnek. p jó(x,y)-hoz: ha nem osztója x-y-nak; p rossz(x,y)-hoz: ha osztója x-y-nak.

62 A tanúk bősége segítség p jó(x,y)-hoz: ha nem osztója x-y-nak; p rossz(x,y)-hoz: ha osztója x-y-nak. x-y prímosztóinak száma: legfeljebb n, mert |x-y|≤2 n. Tehát rossz tanú választásának valószínűsége: Prob(rossz választás) = =(rossz tanúk száma)/(összes tanú száma)= =n/(n 2 /2 ln n )=(2 ln n)/n=32* Mindössze két n 2 –nél kisebb számot kell átküldeni, ami bit. Általános magyarázat: Sok (de nem túl sok és ezért nem „nehéz”) tesztelő tanú, véletlenszerűen oszlanak el minden feladathoz. Tanú esetén legyen hatékony kiszámítási lehetőség. Rossz tanú választás valószínűségét csökkenthetjük több, független választással.

63 63 7. Kriptográfia, avagy hogyan fordítsunk egy hátrányt előnnyé? 7.1. A jelenkor egy mágikus tudománya: kriptológia Kriptográfiai állítások; a következők megoldhatók: -Meggyőzni valakit, hogy van egy titkunk, anélkül, hogy a titok legkisebb részét felfednénk? -Küldhető több személynek rejtjelezett üzenet úgy, hogy csak akkor tudják elolvasni, ha együttműködnek egymással? -Aláírható elektronikusan dokumentum, hogy bárki meggyőződhessen hitelességéről, de senki ne tudja hamisítani (utánozni)? -Megoszthat két személy közös titkot úgy, hogy semmilyen lehallgató ne nyerjen semmilyen információt a titokról? Kriptológia (Cryptology) – a titkosítás tudománya Kriptográfia (Cryptography) – titkosítási rendszer tervezése Kriptanalízis ( Criptanalízis) – titkosítási rendszer feltörése Kibontakozása: bonyolultságelmélet szerepe.

64 64 7. Kriptográfia, avagy hogyan fordítsunk egy hátrányt előnnyé? 7.2. A titkosítási rendszerek fogalmai, néhány kép az előtörténetéből Működés sémája:

65 Mikor biztonságos egy titkosítási rendszer? Teljes biztonság nincs. -Kirckhoff-elv szigorítása: -„Egy titkosítási rendszer biztonságos, ha nem létezik hatékony (véletlenített, polinomiális) algortimus, amely feltörné a titkos szöveget a kulcs ismerete nélkül, de ismerve a titkosítási rendszer működési módját. -(i) Kódolás és dekódolás legyen hatékonyan elvégezhető a kulcs ismeretében. -(ii) Visszafejtés a kulcs ismerete nélkül legyen gyakorlatilag megoldhatatlan probléma Szimmetrikus titkosítás Küldő és fogadó ugyanazt a kulcsot használja. Bináris XOR művelettel egy véletlen bináris kulcs. DES szabvány.

66 Hogyan lehet egy titokban megegyezni nyilvános üzenetváltásban? Két lakat egy ládán, oda-visszaküldve. Digitális változat. Diffie-Hellman protokoll : Kezdés: A és B megegyeznek nyilvánosan egy p primben és egy c


67 Nyilvános kulcsú titkosítás A szimmetrikus titkosítás hátrányai: (i)Közös titok kell, a kommunikáció előtt meg kell osztani (ii)Több ügyfélnek ugyanazt küldeni – sokan tudják, vagy azonosítás kell (iii) Összetett feladatok: szavazás, azonosítás titok felfdése nélkül nehéz. Bonyolultságelmélet segít: nehéz feladatok kihasználása; egyirányú függvények : (i)Az f függvény hatékonyan kiszámítható, ez a kódoló (ii)Az inverz függvény, f -1, ami kiszámítja a kódoltból az üzenetet hatékonyan nem kiszámítható, biztonságos. (iii)A jogosult címzett hatékonyan tudja visszafejteni az üzenetet valamilyen titok (tanú) birtokában. Miért jó? A fogadó senkivel nem osztja meg a titkot, még a küldővel sem. Az f nyilvánossá tehető, mindenki lehet küldő. Nem kell előre a titokban megegyezni. Léteznek (iii) típusú feladatok. Példa: telefonkönyvből telefonszám, a név kezdőbetűjét kódolja. Visszafejtés: telefonszámra rendezni.

68 Nyilvános kulcsú titkosítás Számelméleti példák: 1.Szorzás: p,q prímek, f(p, q) = p*q, f -1 (p*q) = (p,q) 2.Négyzet modulo n: f n (x) = x 2 mod n egyszerű számolni nyilvános n-re, de f n (x)-ből x-et visszakapni nehéz, csak prímekre egyszerű. 3.Moduláris hatványozás Pozitív e,n, egészek és c szövegre f e,n ( c ) = c e mod n, ha n nem prím, n ehéz c-t visszafejteni. (Számelméleti háttérre épül, a „nehéz a probléma” bizonyítása általában nem ismert.) Bemutatja M.C. Rabin.: RABIN rendszerét. Moduláris négyzetre. Előnyei: (i)Csak a fogadó tudja a kulcsot, és ő generálja. (ii)A titkosítás nyilvánossá tehető, nem kell titkot cserélni titkosan. Bárki küldhet üzenetet. (iii)Számos összetett protokoll épülhet rá. (Érdekes példát mutat rá.) (iv)Péda: digitális aláírás.

69 Nyilvános kulcsú titkosítás Szituáció: Ügyfél – K; Bank – B. Protokoll elvárásai: (i)B tudja ellenőrizni K aláírásának korrektségét, egyértelműen. Harmadik fél, hamisító, ne tudjon K-ként megjelenni. (ii)K védett legyen B által kitalált üzenetektől, amiről B azt állítaná, hogy K- tól kapta. B ne tudja hamisítani K aláírását. (iii)Ha K aláírta a dokumentumot, akkor B legyen képes bárkinek bebizonyítani, hogy K írta alá. Az (i) és (ii) mintha ellentmondana egymásnak. Létezik protokoll; Ötlete, hogy ha a kódoló E K, a dekódoló D K, Akkor E K ( D K (szöveg)) = szöveg = D K (E K (szöveg)). Mit tud a Bank, B? K nyilvános kódját, E K - t. Protokoll: Input: a doc dokumentum Eljárás: 1.K küldi a (doc, D K (doc() üzenetet B-nek. 2.B kiszámolja E K (D K (doc)) –ot, ellenőrzi, egyezik-e doc—kal. Kész.

70 Nyilvános kulcsú titkosítás Korrektség: (figyeljük meg, hogy az aláírás az egész dokumentumot módosítja.) (i)Teljesülése:Más nem tudja D K (doc)-ot megadni, csak K. (Nehéz lennne.) Egyedül D K (doc)) olyan, hogy belőle E K visszaadja doc-ot. Rez bizonyíték B-nek. (ii)Teljesülése: (doc, D K (doc)) nem elég B-n ek ahhoz, hogy tetszőleges w dokumentumra D K (w)- ot előállítsa. (iii) Teljesülése: Mivel E K publikus, B bárkinek igazolhatja, D K (doc)-ot csak K készíthette. Elegáns megoldás – algoritmusok csodája Feladat: (iii’) elvárás – csak B és K ismerheti doc tartalmát Feladat: autentikációs protokoll: nem kell aláírni semmit, de meg kell győzni valakit azonosságunkról. (i’) B-t meg kell győzni K azonosságáról, (ii’) B-től legyen védett K : B nem tudjon K-ként fellépni. Az aláírás nem jó, B tovább küldheti K-ként. Nyilvános kulcs előnyei: sok küldő, sok fogadó lehet, összetett protokollok lehetségesek. Szimmetrikus: kiszámításai gyorsabbak. Kombinálás: nyilvános kulcs segítségével a közös szimmetrikus kulcs.

71 A kriptográfia csoda országában tett felfedező utunk mérföldkövei Kezdet: a kriptográfia a titkosírás művészete; 3 résztvevős intellektuális játék. Nem sikerült a titkosság fogalmát definiálni. A. Kirchkhoffs: a biztonságos kriptorendszer követelményei: a kulcs titkosságára épül, nem a módszerre. Önmagában sok kulcs nem elég garancia. Algoritmusok – Számítástudomány – gyakorlati kiszámíthatóság – kulcs ismerete nélkül gyakorlatilag nem lehet dekódolni. Tudományosan kezelhető lett. Kulcs megosztása tikosan (két lakat) – aktív támadó probléma. Nyilvános kulcsú (kódoláshoz) titkosítás - privát kulcs a dekódoláshoz. Egy-irányú függvények matematikai bonyolultságelméleti kérdés. Számos jelenlegi alkalamzsá erre épül- On-line bankolás. Elektromos szavazás, vásárlás. Első nyilvánosk ulcsú javslat: Diffie –Hellmen Leghíresebb: RSA 78 (Roon Rivest, Adi Shamir, Leonard Adleman, 1978.) 20 év alatt mindennapivá vált.

72 Hogyan hozzunk jó döntést ismeretlen jövőre nézve, avagy hogyan tegyünk bolonddá egy gonosz ellenséget Részleges információ mellett kell döntést hozni, mielőtt ismernénk az input következő részét. On-line optimalizálási feladatoksürgősségi betegellátás, taxi központ. Minden determinisztikus stratégia rossz lehet. Közel optimális algoritmus: véletlenítéssel. „Milyen jó lehet egy on-line algoritmus egy olyan algoritmushoz képest, amely a teljes jövőt ismeri?” Mérés: I az U feladat egy példánya. Opt U (I) az optimális megoldás költsége. A z A algoritmus ad egy Sol A (I) megoldást, költsége cost (Sol A (I) ) költséggel. A versenyképességi hányados: Az A algoritmus költsége osztva az optimális megoldás költségével. Ez comp A (I). Az A algoritmus δ versenyképes ha comp A (I)≤δ.

73 Hogyan hozzunk jó döntést ismeretlen jövőre nézve, avagy hogyan tegyünk bolonddá egy gonosz ellenséget Egy játék, ami segít: Két játékos: tervezős és ellenség. A gonosz ellenség ismeri a tervező algoritmusát, és az input kezdő részét igyekszik rossz példával folytatni. Példa: két szintű tároló, lapozási feladata. Véletlenítés: több stratégiából véletlen választás. Az ellenfél nem tudja, melyikhez kell ellenpélda. Ha a véletlen stratégiák mindegyike csak egy kis feladathalmazon hibázik, akkor működik a módszer.


Letölteni ppt "1 Algoritmikus kalandok J. Hromkovič könyvéről Benczúr András ELTE IK Juraj Hromkovič: ” Algorithmic Adventures (From Knowledge to Magic)” Springer-Verlag."

Hasonló előadás


Google Hirdetések