FalusiVakáció csoport
FalusiVakáció csoport

Programozásról


Algoritmusok elmélet

Először is célszerű definiálni az algoritmus fogalmát, mivel ez a számítógép-programozás lényegi részének tekinthető.[1] Kialakulását hosszú ideig a nyelvészek nem tudták visszavezetni. A Webster-féle értelmezőszótárban (angol) az algoritmus angol megfelelője (algorithm) archaikus változata található meg (algorism). Ennek a szónak a jelentése, hogy arab számjegyekkel számol. Az 1747-ben kiadott német matematikai szótár így foglalta össze az algoritmust: az aritmetikai műveletek négy fajtája tartozik ide, vagyis az összeadás, kivonás, szorzás és az osztás. Egészen 1950-ig az algoritmus alatt jobbára az euklideszi algoritmust értették, mely két egész szám legnagyobb közös osztójának meghatározását jelenti.

Egy algoritmusnak az alábbi tulajdonságokkal szükséges rendelkeznie:

  1. Végesség: az utasítássorozat véges sok lépés után befejeződik.
  2. Meghatározottság: az algoritmus minden lépésének egyértelműnek és világosnak kell lennie
  3. Input (bemenő adatok): opcionális, vagyis nem kötelező az algoritmus elindítása előtti adathalmaz megadása.
  4. Output (kimenő adatok): egy vagy több is lehet.
  5. Elvégezhetőség: a végrehajtás lehetségessége. A számítógép végre tudja hajtani az algoritmusban leírt lépéseket.

A programozás során valamilyen problémát oldunk meg a kész programmal. A programban szereplő algoritmus konkrét lépések sorozata, mely egy általános módszer, ezzel adunk választ a felmerülő kérdésre, vagyis a problémára. Ilyen lehet például egy prímtesztelő program, mely egy tetszőleges számról eldönti, hogy prím-e. Ha ezt a feladatot meg tudjuk oldani algoritmikus eszközökkel, akkor algoritmikus problémáról beszélhetünk. Az algoritmikus probléma megoldhatóságában egy matematikai modell, a Turing gép segít. A Turing gép az alábbiakból tevődik össze:

  • Egy szalag (ezen mindkét irányban végtelen memória áll rendelkezésre)
  • Író-olvasófej
  • Vezérlőegység

Egy Turing gép mindkét irányból végtelen szalagból áll, melyre az író/olvasófej segítségével írni lehet, illetve olvasni lehet róla. Ehhez tartozik egy vezérlőegység, melynek „utasításokat adhatunk”. Továbbá szükséges a bemenetet, a függvényt (amit kiszámít), illetve a kimenetet is megadni.[1]

A Turing gép alapvetően egy függvényt tud kiszámítani, viszont a számítógépes programok több függvény kiszámítására is alkalmasak. Viszont konstruálható egy „szuper” vagy „univerzális” Turing gép, amely (hasonlóan a számítógépes programokhoz), több függvényt is tud kezelni.

Amennyiben van olyan Turing gép, amely véges sok lépésben választ ad a kérdésre, akkor az algoritmikus probléma megoldható, különben nem nevezhető ennek.[2]

Az algoritmusok a számítógépes programok lényegi részének tekinthetők. A programozást minden esetben érdemes a probléma végiggondolásával kezdeni, és eldönteni, hogy az adott problémát melyik megoldással (esetleg programtervezési minta segítségével) javasolt megoldani, mivel egy probléma többféle módon is megoldható, ezért ajánlott azt a változatot használni, amivel el is érjük a kívánt célt (ez mindenképp szükséges, de nem elégséges feltétel) és emellett a programkód áttekinthető lesz általa.

A program memória igényének meghatározása mellett az algoritmus futási idejét is célszerű vizsgálni.


[1] Donald E. Knuth: A számítógép-programozás művészete 1. kötet, Alapvető algoritmusok p. 25. In: Algoritmusok


[1] Lovász László: Algoritmusok bonyolultsága ELTE egyetemi jegyzet (pdf) p.14. In: A Turing gép
Letöltés időpontja: 2021.03.22.

Hozzáférés (URL): https://web.cs.elte.hu/~kiraly/alg.pdf

[2] Demetrovics János, Jordan Denev, Radiszlav Pavlov: A számítástudomány matematikai alapjai p. 244. In: Algoritmikusan megoldhatatlan problémák

Hozzászólás / vendégkönyv



Szeretnél egy ilyen weblapot teljesen ingyen?
Ez a weboldal a Nanoweb honlapszerkesztővel készült.
© Minden jog fenntartva.