adatstruktúrák – algoritmusok alapjai

hirdetések

algoritmus egy lépésenkénti eljárás, amely meghatározza egy sor utasításokat kell végrehajtani egy bizonyos sorrendben, hogy a kívánt kimenetet. Az algoritmusok általában a mögöttes nyelvektől függetlenek, azaz egy algoritmus több programozási nyelven is végrehajtható.,

az adatstruktúra szempontjából az alábbiakban felsorolunk néhány fontos algoritmuskategóriát −

  • keresési algoritmus egy elem kereséséhez egy adatstruktúrában.

  • rendezési algoritmus az elemek egy bizonyos sorrendben történő rendezéséhez.

  • Insert − algoritmus beszúrni elemet egy adatstruktúra.

  • frissítés-algoritmus egy meglévő elem frissítéséhez egy adatszerkezetben.

  • delete-algoritmus egy meglévő elem törléséhez egy adatstruktúrából.

egy algoritmus jellemzői

nem minden eljárás nevezhető algoritmusnak., Egy algoritmusnak a következő jellemzőkkel kell rendelkeznie −

  • egyértelmű − az algoritmusnak egyértelműnek és egyértelműnek kell lennie. Minden lépésének (vagy fázisának), valamint bemeneteinek/kimeneteinek világosnak kell lenniük, és csak egy jelentéshez kell vezetniük.

  • bemenet-egy algoritmusnak 0 vagy több jól definiált bemenettel kell rendelkeznie.

  • kimenet – egy algoritmusnak 1 vagy több jól definiált kimenettel kell rendelkeznie, és meg kell egyeznie a kívánt kimenettel.

  • finomság-az algoritmusoknak véges számú lépés után kell megszűnniük.,

  • megvalósíthatóság-a rendelkezésre álló erőforrásokkal megvalósíthatónak kell lennie.

  • Független-egy algoritmusnak lépésről-lépésre kell irányulnia, amelynek függetlennek kell lennie bármely programozási kódtól.

Hogyan írjunk algoritmust?

nincsenek jól definiált szabványok az algoritmusok írására. Inkább probléma és erőforrás-függő. Algoritmusok soha nem írt, hogy támogassa egy adott programozási kódot.

mivel tudjuk, hogy minden programozási nyelv megosztja az alapvető kódszerkezeteket, mint a hurkok (do, for, for, while), flow-control (if-else) stb., Ezek a közös konstrukciók lehet használni, hogy írjon egy algoritmus.

algoritmusokat írunk lépésről lépésre, de ez nem mindig így van. Az algoritmusírás egy folyamat, amelyet a problématartomány jól definiált definiálása után hajtanak végre. Vagyis ismernünk kell a problémás területet, amelyre megoldást tervezünk.

példa

próbáljuk meg megtanulni az algoritmusírást egy példa segítségével.

probléma-tervezzen egy algoritmust két szám hozzáadásához és az eredmény megjelenítéséhez.

Step 1 − STARTStep 2 − declare three integers a, b & cStep 3 − define values of a & bStep 4 − add values of a & bStep 5 − store output of step 4 to cStep 6 − print cStep 7 − STOP

algoritmusok mondják el a programozóknak, hogyan kell kódolni a programot., Alternatív megoldásként az algoritmus írható − –

Step 1 − START ADDStep 2 − get values of a & bStep 3 − c ← a + bStep 4 − display cStep 5 − STOP

algoritmusok tervezésekor és elemzésekor általában a második módszert használják egy algoritmus leírására. Ez megkönnyíti az elemző számára az algoritmus elemzését, figyelmen kívül hagyva az összes nem kívánt meghatározást. Megfigyelheti, hogy milyen műveleteket alkalmaznak, és hogyan folyik a folyamat.

lépésszámok írása, opcionális.

egy algoritmust tervezünk egy adott probléma megoldására. A probléma többféleképpen is megoldható.,

ezért számos megoldási algoritmus származtatható egy adott problémára. A következő lépés a javasolt megoldási algoritmusok elemzése, valamint a legmegfelelőbb megoldás megvalósítása.

Algoritmusanalízis

az algoritmus hatékonysága két különböző szakaszban, implementáció előtt és után is elemezhető. Ezek a következők –

  • A Priori elemzés – ez egy algoritmus elméleti elemzése., Egy algoritmus hatékonyságát úgy mérjük, hogy feltételezzük, hogy minden más tényező, például a processzor sebessége állandó, és nincs hatással a megvalósításra.

  • a Posterior Analysis-ez egy algoritmus empirikus elemzése. A kiválasztott algoritmus programozási nyelv használatával valósul meg. Ezt ezután a célgépen hajtják végre. Ebben az elemzésben összegyűjtjük a tényleges statisztikákat, mint például a futási idő és a szükséges hely.

megismerjük a priori algoritmus elemzését., Az algoritmuselemzés a különböző műveletek végrehajtásával vagy futási idejével foglalkozik. A művelet futási ideje a műveletenként végrehajtott számítógépes utasítások számának tekinthető.

algoritmus összetettsége

tegyük fel, hogy az X egy algoritmus, és n A bemeneti adatok mérete, az X algoritmus által használt idő és tér a két fő tényező, amelyek meghatározzák az X hatékonyságát.

  • időtényező − az időt úgy mérik, hogy megszámolják a kulcsfontosságú műveletek számát, például összehasonlításokat a rendezési algoritmusban.,

  • Space Factor-a tér mérése az algoritmus által megkövetelt maximális memóriaterület megszámlálásával történik.

az F(n) algoritmus összetettsége megadja az algoritmus által a bemeneti adatok méreteként szükséges futási időt és/vagy tárhelyet.

hely összetettsége

az algoritmus hely összetettsége az algoritmus által az életciklusában megkövetelt memóriaterület mennyiségét jelenti., Az algoritmus által megkövetelt hely megegyezik a következő két összetevő összegével −

  • egy rögzített rész, amely bizonyos adatok és változók tárolásához szükséges hely, amelyek függetlenek a probléma méretétől. Például egyszerű változók és konstansok, programméret stb.

  • a változó rész a változók által igényelt tér, amelynek mérete a probléma méretétől függ. Például dinamikus memória kiosztás, rekurziós verem tér stb.,

Tér komplexitás S(P) bármely algoritmus a P S(P) = C &plusz; SP(I), ahol C a rögzített rész, S(I) a változó része az algoritmus, ami attól függ, például jellegzetes I. alábbiakban egy egyszerű példa, hogy megpróbálja elmagyarázni a koncepció −

Algorithm: SUM(A, B)Step 1 - STARTStep 2 - C ← A + B + 10Step 3 - Stop

Itt van három változó A, B, C egy konstans. Ezért S (P) = 1 &plusz; 3. A tér az adott változók adattípusaitól és az állandó típusoktól függ, és ennek megfelelően meg kell szorozni.,

idő összetettsége

Az algoritmus idő összetettsége azt az időtartamot jelenti, amelyet az algoritmus a befejezésig futtat. Az időigényeket a T(n) numerikus függvényként lehet meghatározni, ahol a T(n) A lépések számaként mérhető, feltéve, hogy minden lépés állandó időt vesz igénybe.

például két N-bites egész szám hozzáadása n lépéseket tesz. Következésképpen a teljes számítási idő T (n) = c ∗ n, ahol c a két bit hozzáadásához szükséges idő. Itt megfigyeljük, hogy a T(n) lineárisan növekszik, ahogy a bemeneti méret nő.,

Reklámok

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük