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

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

Hasonló előadás


Az előadások a következő témára: "Algoritmikus kalandok J. Hromkovič könyvéről"— Előadás másolata:

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 2009. 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/ 1 1

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

3 A számítástudomány mindennapi képének kritikája:
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. 3 3

4 1.1. Áttekintés: Mit fejezünk fel a fejezetben?
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. 4 4

5 1.2. Ingatag alapokon áll-e a tudomány épülete?
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é. 5 5

6 Közfelfogás félreértése a CS lényegéről.
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? 6 6

7 A „számítástudomány” mihez kötődik: az „algoritmus” fogalmához.
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. 7 7

8 Egyik ilyen axióma: korrektül gondolkozunk, érvelésünk megbízható.
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. 8 8

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. 9 9

10 1.3. A számítástudomány eredete, mint egy eufória vége
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”. 10 10

11 Hilbert illúziója pontosabban megfogalmazva:
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: Mindenféle matematika létrehozható véges sok axióma gyűjteményéből kiindulva. Az így létrehozott matematika teljes abban az értelemben, hogy a matematika nyelvén kifejezett minden állítás vagy igazolható, vagy cáfolható. É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.)” 11 11

12 Példa: másodfokú egyenlet megoldó eljárások.
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) 12 12

13 1931. Kurt Gödel: 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. 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. 13 13

14 1936. 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. 14 14

15 1.4. 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 15 15

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 16 16

17 1.4. 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? 17 17

18 1.4. 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. 1.5. Összegzés A bevezetett alapfogalmak listája, A számítástudomány feladata: nehéz feladatokhoz megoldás. 18 18

19 2.1. Áttekintés: Mit találunk majd a fejezetben?
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. 19 19

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.” . 20 20

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. . 21 21

22 2.3. Mi a helyzet a számítógépes algoritmusokkal?
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: . 22 22

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. . 23 23

24 2.4. Soha nem ér véget (szándék nélkül)?
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. 24 24

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: Általános-egyszerű aktivitások listája. Minden probléma-példányra adjon eredményt 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.) 25 25

26 3.1. Miért van szükségünk a végtelenre?
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 26 26

27 3.2. Cantor elve végtelenek összehasonlítására.
3.1. 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. 3.2. 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 a ϵ A és b ϵ B A minden eleme pontosan egy pár első eleme. 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|. 27 27

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| |Nk| = |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 28 28

29 29 29

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. 30 30

31 4.2. 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: P1 , P2 , P3 ,…, Pi ,… 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. 31 31

32 4.2. 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? 32 32

33 Kérdés: az (N , M) ,döntési problémák száma?
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? 33 33

34

35 Átlót komplementáljuk – amit kaptunk: DIAG halmaz, lehet-e programja?
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, PDIAG , úgy viselkedne, hogy i-hez az ellenkezőjét végezné, mint Pi . 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: Pn 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 U2 algoritmusos megoldhatósága garantálja U1 algoritmussal való megoldhatóságát. Jelölés: 35 35

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

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

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: 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? 38 38

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. 39 39

40 Az M(DIAG) probléma: Állítás:
Visszavezetés: konstruálunk ADIAG algortimust Készítsünk algoritmust, (Agen ), 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 Pi . Az AUNIV algoritmus véges lépésben eldönti, hogy Pi elfogadja-e i-t. Ha YES lesz AUNIV válasza, akkor ADIAG válasza legyen NO, Ha NO lesz AUNIV válasza, akkor ADIAG válasza legyen YES. Tehát, ha van AUNIV algoritmus, akkor van Adiag 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 AUNIV algoritmus, akkor a konstruált is ADIAG az. Akkor van hozzá program, a felsorolásban szerepelnie kell, legyen Pi . Mi lesz Pi válasza az i bemenetre? 40 40

41 41 41

42 Az M(DIAG) probléma: Példa: Legyen M0 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 M0 -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! 42 42

43 5.1. Bevezetés a bonyolultságelmélethez
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?)” 43 43

44 5.1. 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. 44 44

45 5.2. 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.” 45 45

46 5.2. 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: x16 , x32 , x45 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 TimeA időbonyolultsága az input méretének fügvénye, TimeA(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. 46 46

47 5.3. 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. 47 47

48 5.4. 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 TimeA(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) TimeB(n) ≤ f(n).” 48 48

49 5.4. 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 2n 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.. 49 49

50 5.4. A kezelhetőség határai
A P osztály (polinom időbonyolultság, PTIME). 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ű. 50 50

51 5.5. 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. 51 51

52 52 52

53 5.5. Hogyan ismerünk fel egy nehéz problémát?
Hatékony redukálás: „Az R algoritmus (P-beli) transzformálja U1 probléma I példányát az U2 probléma R(I) példányára, amit U1 hatékonyan megold. Az U1 feladat I példányának megoldása azonos az R(I) példány U2–beli megoldásával minden U1–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. U1: é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) U2: a LIN(0,1) feladat: egész együtthatós, 0-1 értékű változók feletti egyenletrendszer megoldása? 53 53

54 5.5. Hogyan ismerünk fel egy nehéz problémát?
Ismert mintegy 4000 nehéz feladat. U nehéz, ha egyikre, U1-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. 54 54

55 5.6. 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. 55 55

56 5.7. Ö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? 56 56

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. 57 57

58 6.2. Mi a véletlen és létezik-e valódi véletlen a természetben?
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. 58 58

59 6.2. 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. 59 59

60 Véletlenített algoritmus, program:
6.3. 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. 60 60

61 6.3. 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=1016 . 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 n2 –nél kisebb p prímszámot, (n2 /2ln 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. 61 61

62 6.3. 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|≤2n . 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/(n2 /2ln n )=(2ln n)/n=32*2-16 . Mindössze két n2 –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. 62 62

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. 63 63

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: 64 64

65 7.3. 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. 7.4. 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. 65 65

66 7.5. 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<p egész számban. 1. A : crypto1: ca mod p, küld 2. B : crypto2: cb mod p, küld 3. A: SA =(crypto2)a mod p,ez a titok 3. B: SB =(crypto1)b mod p,ez a titok SA=SB. Mai tudás szerint biztonságos. Aktív ellenség ellen nem véd. 66 66

67 7.6. Nyilvános kulcsú titkosítás
A szimmetrikus titkosítás hátrányai: Közös titok kell, a kommunikáció előtt meg kell osztani Több ügyfélnek ugyanazt küldeni – sokan tudják, vagy azonosítás kell Ö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 : Az f függvény hatékonyan kiszámítható, ez a kódoló 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. 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. 67 67

68 7.6. Nyilvános kulcsú titkosítás
Számelméleti példák: Szorzás: p,q prímek, f(p, q) = p*q, f-1 (p*q) = (p,q) Négyzet modulo n: fn (x) = x2 mod n egyszerű számolni nyilvános n-re, de fn (x)-ből x-et visszakapni nehéz, csak prímekre egyszerű. Moduláris hatványozás Pozitív e,n, egészek és c szövegre fe,n ( c ) = ce 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: Csak a fogadó tudja a kulcsot, és ő generálja. A titkosítás nyilvánossá tehető, nem kell titkot cserélni titkosan. Bárki küldhet üzenetet. Számos összetett protokoll épülhet rá. (Érdekes példát mutat rá.) Péda: digitális aláírás. 68 68

69 7.6. Nyilvános kulcsú titkosítás
Szituáció: Ügyfél – K; Bank – B. Protokoll elvárásai: 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. 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. 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ó EK , a dekódoló DK , Akkor EK ( DK (szöveg)) = szöveg = DK (EK (szöveg)). Mit tud a Bank, B? K nyilvános kódját, EK - t. Protokoll: Input: a doc dokumentum Eljárás: K küldi a (doc, DK (doc() üzenetet B-nek. B kiszámolja EK (DK (doc)) –ot, ellenőrzi, egyezik-e doc—kal. Kész. 69 69

70 7.6. Nyilvános kulcsú titkosítás
Korrektség: (figyeljük meg, hogy az aláírás az egész dokumentumot módosítja.) Teljesülése:Más nem tudja DK (doc)-ot megadni, csak K. (Nehéz lennne.) Egyedül DK (doc)) olyan, hogy belőle EK visszaadja doc-ot. Rez bizonyíték B-nek. Teljesülése: (doc, DK (doc)) nem elég B-n ek ahhoz, hogy tetszőleges w dokumentumra DK (w)- ot előállítsa. Teljesülése: Mivel EK publikus, B bárkinek igazolhatja, DK (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. 7.14. 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. 70 70

71 7.7. 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 1976. Leghíresebb: RSA 78 (Roon Rivest, Adi Shamir, Leonard Adleman, 1978.) 20 év alatt mindennapivá vált. 71 71

72 On-line optimalizálási feladatoksürgősségi betegellátás, taxi központ.
10. 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. OptU (I) az optimális megoldás költsége. A z A algoritmus ad egy SolA (I) megoldást, költsége cost (SolA (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 compA (I). Az A algoritmus δ versenyképes ha compA (I)≤δ. 72 72

73 Két játékos: tervezős és ellenség.
10. 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. 73 73


Letölteni ppt "Algoritmikus kalandok J. Hromkovič könyvéről"

Hasonló előadás


Google Hirdetések