73
1 Algoritmikus kalandok Algoritmikus kalandok J. Hromkovič könyvéről 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-2010-0030

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

  • Upload
    abby

  • View
    39

  • Download
    0

Embed Size (px)

DESCRIPTION

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-2010-0030. - PowerPoint PPT Presentation

Citation preview

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

1

Algoritmikus kalandok Algoritmikus kalandok J. Hromkovič könyvéről 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-2010-0030

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

2

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

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

3

Előszó – motiváció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.

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

4

1. A számítástudomány fejlődésének rövid 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 története, avagy a számítástudomány miért

nem számítógép-vezetői jogosítvány?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.

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

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 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?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égeCS 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é.

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

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 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?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 jellegZavaros a közismereti kép.Viták, tisztázás; l. Dennig: mit mondtunk a kiszámításról? Mi a matematika?

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

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

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

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

2

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

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

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

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

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

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 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?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.)”

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

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 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?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)

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

13

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

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

14

1936. Alan Turing: 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.

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

15

1.4. A számítástudomány története és a könyv felfogása 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ányAlgoritmus és program fogalma, eltérései

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

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

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

17

1.4. A számítástudomány története és a könyv felfogása 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 algoritmusbanCsak 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ásA,T,C,G „jelek”. Bázispárok.Kérdés: lesz-e biokomputer?

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

18

1.4. A számítástudomány története és a könyv felfogása 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 1.5. Összegzés A bevezetett alapfogalmak listája,A számítástudomány feladata: nehéz

feladatokhoz megoldás.

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

19

2. Algoritmika (algoritmusok), avagy mi a 2. Algoritmika (algoritmusok), avagy mi a közös a sütésben és a programozásban?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.

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

20

2. Algoritmika (algoritmusok), avagy mi a közös a sütésben és a programozásban?2. Algoritmika (algoritmusok), avagy mi a közös a sütésben és a programozásban?

2.1. Algoritmikus sütésAlgoritmus 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.”

.

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

21

2. Algoritmika (algoritmusok), avagy mi a közös a sütésben és a programozásban?2. Algoritmika (algoritmusok), avagy mi a közös a sütésben és a programozásban?

2.2. Algoritmikus sütésMi 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.

.

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

22

2. Algoritmika (algoritmusok), avagy mi a közös a sütésben és a programozásban?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:

.

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

23

2. Algoritmika (algoritmusok), avagy mi a közös a sütésben és a programozásban?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.

.

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

24

2. Algoritmika (algoritmusok), avagy mi a közös a sütésben és a programozásban?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.

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

25

2. Algoritmika (algoritmusok), avagy mi a közös a sütésben és a programozásban?2. Algoritmika (algoritmusok), avagy mi a közös a sütésben és a programozásban?

2.5. ÖsszegzésElvá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.)

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

26

3. A végtelen nem egyenlő a végtelennel, 3. A végtelen nem egyenlő a végtelennel, avagy miért végtelenül fontos a végtelen a avagy miért végtelenül fontos a végtelen a

számítástudományban? 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

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

27

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

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

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 halmazaMű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

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

29

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

30

4. A kiszámíthatóság határai, avagy miért 4. A kiszámíthatóság határai, avagy miért léteznek feladatok, amelyeket nem lehet léteznek feladatok, amelyeket nem lehet

automatikusan megoldani számítógéppel?automatikusan megoldani számítógéppel?

4.1. CélVannak 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.

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

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.

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

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ásaDö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?

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

33

. 4.3. 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?

Page 34: Algoritmikus kalandok  J.  Hromkovič  könyvéről
Page 35: Algoritmikus kalandok  J.  Hromkovič  könyvéről

35

. 4.3. 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. . 4.4. 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:

UU A 2lg1

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

36

. .4.4. A redukciós (visszavezetéses) módszer, A visszavezetés sémája:

UU A 2lg1

A1 algoritmusaz U1

probléma megoldására

Input y

Algoritmus B

A2A megoldja U -tAz x példányra

Algoritmus C

x

A1 algoritmusaz U1

probléma megoldására

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

37

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

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

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?

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

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.

HALTUNIV A lg

UNIVHALT A lg

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

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?

UNIVDIAGMN A lg))(,(

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

41

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

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!

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

43

5. Bonyolultságelmélet, avagy mit tegyünk, ha az 5. Bonyolultságelmélet, avagy mit tegyünk, ha az Univerzum összes energiája sem elegendő egy Univerzum összes energiája sem elegendő egy

kiszámítás elvégzéséhez? kiszámítás elvégzéséhez?

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

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

44

5.1. Bevezetés a bonyolultságelmélethezEz 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.

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

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

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

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.

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

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.

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

48

5.4. A kezelhetőség határai Cél: a nehézség mérhetősége, általánosanMelyek 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).”

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

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

22 2,!,n

nn

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

50

5.4. 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ű.

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

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.

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

52

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

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?

UU Pol 21

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

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.

UU Pol1

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

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.

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

56

5.7. ÖsszegzésAlapfogalmak: 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?

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

57

6. Véletlen a természetben és mint a hatékonyság 6. Véletlen a természetben és mint a hatékonyság forrása algoritmusokbanforrása algoritmusokban

6.1. CélokVé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.

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

58

6. Véletlen a természetben és mint a hatékonyság forrása algoritmusokban6. 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életlenekVé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.

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

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.

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

60

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.

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

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*10-14 .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.

xxxxR nI

21: yyyyR nII

21

:

n2

log4

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

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.

n2

log4

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

63

7. Kriptográfia, avagy hogyan fordítsunk egy 7. Kriptográfia, avagy hogyan fordítsunk egy hátrányt előnnyé? 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ányaKriptográfia (Cryptography) – titkosítási rendszer tervezéseKriptanalízis ( Criptanalízis) – titkosítási rendszer feltöréseKibontakozása: bonyolultságelmélet szerepe.

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

64

7. Kriptográfia, avagy hogyan fordítsunk egy hátrányt előnnyé? 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:

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

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ásKüldő és fogadó ugyanazt a kulcsot használja.Bináris XOR művelettel egy véletlen bináris kulcs.DES szabvány.

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

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.

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

67

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

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

68

7.6. 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: 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ű.3.Moduláris hatványozásPozití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:(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.

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

69

7.6. 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ó 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 dokumentumEljárás:1.K küldi a (doc, DK (doc() üzenetet B-nek.

2.B kiszámolja EK (DK (doc)) –ot, ellenőrzi, egyezik-e doc—kal. Kész.

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

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

(i)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.(ii)Teljesülése: (doc, DK (doc)) nem elég B-n ek ahhoz, hogy tetszőleges w dokumentumra DK (w)- ot előállítsa.

(iii) 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 7.13. 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.

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

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.

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

72

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)≤δ.

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

73

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.