Algoritmusok Muhammad Ibn Musa Al'Khwarizmi taskenti bölcs (a XII. században élt) tanítása szerint a célok elérésének legjobb útja az algoritmus. Erről.

Slides:



Advertisements
Hasonló előadás
Készítette: Kosztyán Zsolt Tibor
Advertisements

Az algoritmus.
KÉSZÍTETTE: Takács Sándor
Programozási feladatok
Definíciók: Algoritmus: bármely véges sok lépéssel leírható tevékenység. Olyan pontos előírás, amely megmondja, hogy egy adott típushoz tartozó feladat.
Összefoglalás Hardver,szoftver,perifériák Memóriák fajtái
Algoritmusok.
Adatelemzés számítógéppel
Algoritmusleíró eszközök
Hatékonyságvizsgálat, dokumentálás
Függvények Egyenlőre csak valós-valós függvényekkel foglalkozunk.
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
Algoritmus Az algoritmus problémamegoldásra szolgáló elemi lépések olyan sorozata, amely: véges – azaz véges számú lépés után befejeződik, és eredményt.
Kötelező alapkérdések
Matematika II. 2. előadás Geodézia szakmérnöki szak 2012/2013. tanév Műszaki térinformatika ágazat őszi félév.
Gyűrűk Definíció. Az (R, +, ·) algebrai struktúra gyűrű, ha + és · R-en binér műveletek, valamint I. (R, +) Abel-csoport, II. (R, ·) félcsoport, és III.
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
Algoritmusok Az algoritmus fogalma:
Algoritmizálás Göncziné Kapros Katalin humaninformatika.ektf.hu.
Ideális kontinuumok kinematikája
A digitális számítás elmélete
A digitális számítás elmélete
A digitális számítás elmélete
Determinisztikus véges automaták csukva nyitva m s kbsm csukva nyitva csukva nyitva csukvanyitva 1. Példa: Fotocellás ajtó s b m m= mindkét helyen k= kint.
Év eleji információk Előadó: Hosszú Ferenc II. em Konzultáció: Szerda 9:50 – 10:35 II. em
Differenciál számítás
Eseményalgebra, kombinatorika
Lineáris algebra Mátrixok, determinánsok, lineáris egyenletrendszerek
A digitális számítás elmélete
Halmazok Összefoglalás.
A problémamegoldás lépései
Ismétlő struktúrák.
Az algoritmusok áttekinthető formában történő leírására szolgáló eszközök Páll Boglárka.
Algoritmusok Páll Boglárka.
Ismétlés.
Az algoritmusok áttekinthető formában történő leírására szolgáló eszközök Páll Boglárka.
Algoritmusok.
ALGORITMUS.
Algoritmusok.
ALGORITMUSOK.
Természetes és formális nyelvek Jellemzők, szintaxis definiálása, Montague, extenzió - intenzió, kategóriákon alapuló gramatika, alkalmazások.
Szintaktikai, szemantikai szabályok
Programozási nyelvek.
VÉGES AUTOMATA ALAPÚ TERVEZÉSI MODELL
A Turing-gép.
Algoritmusok.
A Neumann-elvek 3. ÓRA.
Az algoritmuskészítés alapjai
Mesterséges Intelligencia 1. Eddig a környezet teljesen megfigyelhető és determinisztikus volt, az ágens tisztában volt minden cselekvésének következményével.
Programozás, programtervezés
Valószínűségszámítás II.
Algoritmusok. Az algoritmus meghatározott sorrendben elvégzendő műveletek előírása, mint azonos típusú (matematikai, logikai) feladatok megoldására alkalmas.
Algoritmizálás és programozás tanítása Balogh Zoltán PTE-TTK IÁTT Az algoritmuskészítés.
Összeállította: Sashalmi Tibor
előadások, konzultációk
Adatszerkezetek és algoritmusok 2008/ Algoritmus Az algoritmus szó eredete a középkori arab matematikáig nyúlik vissza, egy a i.sz. IX. században.
Adalékok egy véges összegzési feladathoz
Számításelmélet 2. Algoritmus-fogalom Turing-gép Alan M. Turing – 1937 II. világháború, Enigma MI, Turing-teszt Kleene – Rekurzív függvények (1936) Church.
A NEUMANN-ELVŰ SZÁMÍTÓGÉP. A számítógép:  Információk tárolására, feldolgozására szolgáló eszköz.
Programozás alapjai Készítette: Csiszár Nóra Anita
Adatstruktúrák Algoritmusok Objektumok
Programozási alapok.
Fordítás (formalizálás, interpretáció)
Példa: Dinteger = {..., -1,0,1,...}; Dboolean = {true, false};
Bevezetés a programozásba Algoritmikus gondolkodás
Algoritmusok Az algoritmus fogalma:
Számítógépes algoritmusok
Algoritmusok szerkezete
A Számítástudomány alapjai A Számítógépek felépítése, működési módjai
Algoritmus készítés.
Előadás másolata:

Algoritmusok Muhammad Ibn Musa Al'Khwarizmi taskenti bölcs (a XII. században élt) tanítása szerint a célok elérésének legjobb útja az algoritmus. Erről "Algorithm" címmel könyvet írt, amely az élet praktikáit tárgyalja. Alan Mathison Turing (1912-1954) 1937-ben megalkotta az algoritmus matematikailag pontos fogalmát. Elkészített egy absztrakt (elméleti) gépet, aminek segítségével algoritmuselméleti problémák szimbolikusan kezelhetők, ebben a témakörben tételek mondhatók ki és bizonyíthatók. A modern algoritmuselmélet atyjának tekintjük.

Az algoritmus legáltalánosabb értelemben nem más, mint tervszerűség Az algoritmus legáltalánosabb értelemben nem más, mint tervszerűség. Ha egy elvégzendő cselekvéssorozatot lépésről lépésre előre átgondolunk, megtervezünk, úgy is mondhatjuk, hogy algoritmust adunk egy adott cél elérésére. Azon instrukciók halmazát, melyek egy feladat megoldásához vezetnek, algoritmusnak nevezzük. Pontos szabályok szerint elvégzett elemi műveletekből álló műveletsor, ahol az intuíciónak nincs szerepe. Az algoritmus egy olyan előírás, amely alapján egy adott feladat véges számú lépésben megoldható. Az algoritmus egy út a felvetődött probléma megoldásához. A feladat megoldásában segítséget nyújtó ötletek, egyértelmű és precíz utasításokként megfogalmazva: ez az algoritmus.

Példák az életből vett algoritmusokra Telefonálás fülkéből (problémamentesen): bemegyek a fülkébe; bedugom a kártyát; felveszem a kagylót; tárcsázom a számot; cseng, várok; felveszik; beszélünk; leteszem a kagylót; kiveszem a kártyát; kijövök a fülkéből.

Paprikáskrumpli készítése: elkészítem a lábast, a fedőt és a fakanalat; összeszedem és előkészítem az "alkatrészeket" (hagyma, krumpli, kolbász, olaj, paprika, só, víz); a lábasba beteszem az olajat és a hagymát; felteszem a tűzhelyre és a fakanállal kavargatva megpirítom a hagymát; megszórom paprikával; beleteszem a krumplit és a kolbászt; kevés vízzel felöntöm és lefedem; főzöm, néha megkavarom; kész, leveszem a tűzhelyről.

Példák a tudományokból vett algoritmusokra Két tízes számrendszerbeli szám összeadása: az egyik elemi művelet az, hogy két egyjegyű számot adunk össze: ezeket az összegeket "kívülről" tudjuk; a másik elemi művelet egy szám eggyel való növelése; ezek után az összeadás az iskolai szabályok szerint végezhető: ha az egyesek helyén álló számok összege egyjegyű, akkor a következő helyi értéket vesszük, ha "marad" 1, akkor azt "átvisszük". Figyeljük meg, hogy a szabályok száma véges, mégis akármekkora számot képesek vagyunk összeadni.

Kémiai analízis: Tegyük fel, tudjuk, hogy egyetlen fajta só vizes oldata van birtokunkban. Elemi műveletek egész sorát ismerjük: valamilyen reagenst hozzáöntünk, és megfigyeljük, hogy milyen színűvé válik az oldat. Rendelkezésünkre áll egy pontos táblázat, melyből meghatározhatjuk, hogy adott eredmények után melyik reagenst kell használni.A táblázat úgy van megalkotva, hogy sok-sok lépés után végül egyértelműen meg tudjuk állapítani, melyik só oldata a kérdéses. Látszik, hogy intuíciónkra nem támaszkodhatunk.

Számítógépes könyvtári katalógus: Ki kell keresni az M. Lewinsky által írt könyveket. Tegyük fel az egyszerűség kedvéért, hogy a könyvek szerzők szerint betűrendben vannak felsorolva. Egy lehetséges algoritmus a következő: Az elejétől kezdve hasonlítsuk össze a Lewinsky nevet minden szerző nevével. Előbb-utóbb elérkezünk a megfelelő helyre, tehát az algoritmus eredményes lesz.

Nézzünk egy másik algoritmust: Megnézzük a keresett szó első betűjét, az L-et. A műveletek sorrendjében kijelöljük az L betűvel kezdődő szerzőjű művek halmazának az elejét és a végét. Ezek után ismételjük meg ugyanezt a második, majd a harmadik stb. betűvel. Látható, hogy a második algoritmus gyorsabb. Az első akkor lenne hatékonyabb, ha pl. Aachs nevet keresnénk.

Az algoritmusok fajtái Lehet egy algoritmus néhány elemi tevékenység egymás után végrehajtandó (szekvenciális) sorozata. Telefonálás otthonról (lineáris algoritmus): Felveszem a kagylót - tárcsázok - cseng, várok - felveszik - beszélgetünk - leteszem a kagylót.

Lehet, hogy a megoldás bizonyos pontokon nem látható előre és feltételektől függően más és más megoldást kell választanunk (szelektálunk). Telefonálás otthonról (feltételes algoritmus): Felveszem a kagylót - tárcsázok - cseng, várok - az üzenetrögzítő "veszi fel" - hagyjak üzenetet? -nem: leteszem a kagylót; -igen: elmondom az üzenetet - leteszem a kagylót.

Előfordulhat, hogy a megoldás érdekében valamely tevékenységet többször is végre kell hajtani, vagy ismételni (iterálni) kell. Lehet, hogy az iterációk számát előre tudjuk, lehet, hogy az ismételt végrehajtásnak feltétele van. Telefonálás otthonról (ciklikus algoritmus): ::Felveszem a kagylót - tárcsázok - foglalt - leteszem a kagylót:: - cseng, várok - felveszik - beszélünk - leteszem a kagylót.

Az algoritmus struktúráját tehát szekvenciák, szelekciók, illetve iterációk adják, amelyeket tetszőleges mélységben egymásba lehet ágyazni. Az algoritmus tulajdonságai: egyértelmű, determinisztikus, véges, redundáns lépéseket nem tartalmaz.

A fenti, általunk jól ismert számos példa alapján értjük, hogy mi az algoritmus, de az eddig megadott definíciók nem alkalmasak arra, hogy matematikailag pontos állításokat tegyünk, sőt bizonyítsunk. Turing angol matematikus még a számítógépek elterjedése előtt hozott létre egy modellt az emberi gondolkozás leírására. Ezt a modellt hívjuk Turing-gépnek.

A Turing-gép ismertetéséhez előbb a véges automata fogalmára van szükség: Gondoljunk egy véges sok alkatrészből álló berendezésre, ami véges sokféle jelet képes "befogadni", és véges sokféle jelet tud "kiadni". Ilyen pl. egy jegykiadó automata. A bemenő jelek a bedobott érmék, a kimenő jelek pedig a kiadott jegyek. Ami nagyon fontos: bármilyen sok alkatrésze is van ennek az automatának, a belső állapotainak a száma véges.

A Turing-gép áll egy mindkét irányban végtelen szalagból, ami kis négyzetekre van osztva, és egy véges automatából, aminek író-olvasó feje a szalagon fut. Az automata egy kiinduló állapotból indul, elolvassa a jelet, amit lát. A belső állapotának és az olvasott jelnek a függvényében kiír egy új jelet a régi helyére, az olvasófejet vagy balra, vagy jobbra elmozdítja, vagy helybenhagyja, és a belső állapotát is átviszi egy új állapotba. Ezek után megismétli ugyanezt, már az új belső állapot és az új olvasott jel alapján, és így tovább, egészen addig, míg egy olyan belső állapotba kerül, amit végállapotnak nevezünk. Ekkor a gép megáll. Ami a szalagra eredetileg volt írva, az a bemenő sorozat (input), ami megállás után áll a szalagon, az az eredmény (output).

1 1 1 VÉGES AUTOMATA

Végezzük el két szám összeadását Turing-géppel: Legyenek a szalagra írható jelek az egyjegyű számok, meg egy "üres jel". A szalagon számolás előtt a két összeadandó szám áll, közöttük egy üres jel, a számok előtt és után üres jelek állnak a végtelenségig. A véges automatában pedig benne vannak az elemi műveletek, az "átvivés", és annak leírása, hogy a fejet ide-oda kell mozgatni a két szám között. A megállás után a két összeadandót követő üres jel után fog állni az eredmény.

Az 1936-ban Alonzo Church amerikai logikus bizonyította be, hogy van olyan feladat, amely algoritmussal nem oldható meg. De le lehet-e írni minden algoritmust Turing-géppel? A tapasztalat azt mutatja, hogy igen. Eddig még senki nem tudott olyan algoritmust adni, amit nem lehet Turing-géppel utánozni. A Church-tézis szerint minden algoritmikus feladat elvégezhető Turing-géppel.

Az algoritmusok áttekinthető formában történő leírására szolgáló eszközök Folyamatábra: Alapelveit Neumann dolgozta ki. Az egyes szerkezeti elemek között nyilakkal jelöljük a végrehajtási sorrendet. Alakzatai: téglalap - értékadó utasítás vagy eljárás; rombusz - elágazás; paralelogramma - adatáramlás; kör - vezérlő utasítás.

START STOP 5 5

Struktogram: Gépfüggetlen, nyelvfüggetlen algoritmus leíró nyelv. Az egyes szerkezeti elemeket különböző téglalapba foglalható ábrákkal jelöljük. Az utasítások egyforma sorokként jelennek meg a téglalap belsejében, a be- és kivitelt rövidítés, a nem elemi lépést megvastagított keret jelzi. A szerkezetek egymásba ágyazhatók, de vonalaik nem keresztezhetik egymást. (Az így megtervezett programok nem használnak ugró utasítást, az egyes nagyobb szerkezeti elemek eljárásokban és függvényhívásokban valósulnak meg.)

Tevékenység1 Tevékenység2 Feltétel Feltétel1 Feltétel2 Egyébként Tevékenység Tevékenység Tevékenység

Mondatszerű leírás: Az anyanyelvi megfogalmazáshoz hasonló, de annál tömörebb leírási mód. Az algoritmust mondatok sorozatával adjuk meg. Annyiban tér el a folyamatos írástól, hogy bizonyos szabályokat be kell tartanunk, a struktúrák képzésére megállapodás szerinti formákat és szavakat használunk.

Be- és kivitel: Be: ... felsorolás ... [megszorítások] Ki: ... felsorolás ... [kiírási formák] Szekvencia: Tevékenység1 Tevékenység2 Tevékenység3 Szelekció: Ha Feltétel akkor Ha Feltétel akkor Tevékenység(ek) Tevékenység(ek)1 Elágazás vége egyébként Tevékenység(ek)2 Elágazás vége