Kalandozás az algoritmusok világában – Áttekintés Juraj Hromkovic

Download Report

Transcript Kalandozás az algoritmusok világában – Áttekintés Juraj Hromkovic

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
1
Algoritmikus kalandok
J. Hromkovič könyvéről
2
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
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.
4
Áttekintés a többi fejezetrő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?
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?
5
Nagy a tömeges használat – mint autóvezetőké.
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
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
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 2 nem racionális.
8
1. A számítástudomány fejlődésének rövid története, avagy a számítástudomány miért nem
számítógép-vezetői jogosítvány?
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
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
10
matematikai probléma megoldásá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?
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.)”
11
1. A számítástudomány fejlődésének rövid története, avagy a számítástudomány miért nem
számítógép-vezetői jogosítvány?
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
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.
13
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
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
15
Algoritmus és program fogalma, eltérései
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
16
következő fejezetekben
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
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
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
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
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
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épprogram é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
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
.
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
2. Algoritmika (algoritmusok), avagy mi a közös a sütésben és a programozásban?
2.5. Összegzés
Elvárások algoritmusra:
(1) Általános-egyszerű aktivitások listája.
(2) Minden probléma-példányra adjon eredményt
(3) Minden példányra véges lépésben adjon eredményt.
Záró:
Egy algoritmus implementálható egy programozási nyelven írt
programként. Egy program olyan algoritmus-reprezentáció,
amely megérthető egy számítógép számára. A program nem
az algoritmus szinonimája, csupán utasítások szekvenciája
számítógép számára. Utasítások szekvenciája nem vezet
feltétlenül értelmes megoldáshoz. (Értelmes válasz, véges
időben.)
25
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
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|.
27
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
29
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
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
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
. 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?33
. 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:
U U
1
A lg
2
35
.
.4.4. A redukciós (visszavezetéses) módszer,
A visszavezetés sémája:
Input y
Algoritmus B
x
A megoldja U -t
Az x példányra
A2
U U
1
A lg
2
A1
algoritmus
A1
az
U1
algoritmus
probléma
az U1
megoldására
probléma
megoldására
Algoritmus C
36
Két fontos prbléma:Végtele halmaz: ?
37
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?
38
Egyforma nehezek: :
UNIV  HALT
A lg
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.
HALT  UNIV
A lg
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
Az M(DIAG) probléma:
Állítás: ( N , M (DIAG))
 UNIV
A lg
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
41
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óde, 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
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
43
algoritmussal megoldhatók?)”
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
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
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
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
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,
48
amire (véges sok n kivételével) TimeB(n) ≤ f(n).”
5.4. A kezelhetőség határai
Ezzel sok minden kimutatható.
Léteznek tetszőleges nagy bonyolultságú (nehéz) feladatok:
Pl. :
n
2
n
, n!,
2
2
(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
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ű.
50
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
52
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:
U1PolU 2
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
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
U 1 PolU .
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 NPteljes. 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
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
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
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
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
58
kihasználni.
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
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
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 .
R I : x  x1 x2  xn RII : y  y y  y
1
2
n
Egzakt megoldás: minden bitet át kell küldeni.
Véletlenített protokollal: elég 4log2 n 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.
61
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 4log2 n 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
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
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
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
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
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.
67
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á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:
(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á.)
68
(iv)Péda: digitális aláírás.
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 Któ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 dokumentum
Eljá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.
69
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.
70
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.)
71
20 év alatt mindennapivá vált.
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
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