Készítette: Pető László

Slides:



Advertisements
Hasonló előadás
Nevezetes algoritmusok
Advertisements

Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Megszámlálás Elemi algoritmusok.
Logaritmikus keresés Feladat: Adott egy 11 elemű, növekvően rendezett tömb számokkal feltöltve. Keressük meg a 17-es értéket! Ha van benne, hányadik eleme.
Kiválasztás (N,A,sorszam) i := 1 Ciklus amíg (A(i) nem T) i := i+1 Ciklus vége sorszam := i Eljárás vége Kiválasztás.
Sorozatszámítás Sorozatszámítás (N,A,s) s := kezdőérték
Programozási tételek, és „négyzetes” rendezések
Gyakorló feladatsor eljárásokra Készítette: Rummel Szabolcs Elérhető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
Programozási alapismeretek 5. előadás. ELTE Szlávi - Zsakó: Programozási alapismeretek 5.2/  Programozási tételek.
Benczúr Zsolt VBA gyorstalpaló Benczúr Zsolt
INFOÉRA Kombinatorikai algoritmusok (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai.
Algoritmizálás, adatmodellezés tanítása 4. előadás
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
Programozási alapismeretek 10. előadás
Programozási alapismeretek 5. előadás. ELTE 2/  Programozási tételek – a lényeglényeg  Sorozatszámítás Sorozatszámítás.
Programozási alapismeretek 8. előadás. ELTE 2/  További programozási tételek További programozási tételek 
Programozási alapismeretek 12. előadás. ELTE  Tapasztalatok a rendezésről Tapasztalatok a rendezésről  Keresés rendezett sorozatban Keresés rendezett.
Algoritmusok Az algoritmus fogalma:
Halmazok, relációk, függvények
Egydimenziós tömbök. Deklarálás: var valtozónév:array[kezdőérték..végsőérték]of típus; type típusnév = array [kezdőérték..végsőérték] of típus; var valtozónév:
Gombkötő Attila Lineáris egyenlet.
ELTE Szlávi-Zsakó: Programozási alapismeretek 8.1/ Kiválogatás Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]
ELTE Szlávi-Zsakó: Programozási alapismeretek 10.1/ Összegzés mátrixra Feladat: Egy mátrix elemeinek összege.
Nem determinisztikusság és párhuzamosság. A nem determinisztikusság a párhuzamosságban gyökeredzik. Példa: S par  parbegin x:=0   x:=1   x:=2 parend;
További vektor, mátrix algoritmusok
Nevezetes algoritmusok Beszúrás Van egy n-1 elemű rendezett tömbünk. Be akarunk szúrni egy n-edik elemet. Egyik lehetőség, hogy végigszaladunk a tömbön,
Halmazok Tanítás.
A négyzetes mátrixok (nxn-es kétdimenziós tömbök)
Egydimenziós tömbökön végezhető műveletek
Ciklusok: 2. Előltesztelő ciklus
Félévi típus feladatok
Feladatok: Algoritmusok Pszeudokódban
A rekurzió Páll Éve Boglárka.
Tömbök és programozási tételek
Rendezések és szövegkezelő függvények
Ciklusok (iterációk).
Összetett adattípusok
1 AAO folytatás ++ Csink László. 2 Rekurzív bináris keresés (rendezett tömbben) public static int binker(int[] tomb, int value, int low, int high) public.
Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési.
Nevezetes algoritmusok
Programozási tételek.
Programozási tételek.
Programozás I. Típus algoritmusok
Algoritmizálás, adatmodellezés tanítása 8. előadás.
Algoritmizálás, adatmodellezés tanítása 2. előadás.
Feladatok (értékadás)
Algoritmus és adatszerkezet Tavaszi félév Tóth Norbert1 Floyd-Warshall-algoritmus Legrövidebb utak keresése.
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
előadások, konzultációk
Programozási alapismeretek 10. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 10.2/  Kiválogatás + összegzés.
Objektum orientált programozás
TÁMOP /1-2F Felkészítés szakmai vizsgára, informatika területre modulhoz II/14. évfolyam Az interaktív vizsga jellegzetes feladattípusainak.
KÉSZÍTETTE: KOVÁCSICS KRISZTIÁN
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Alapvető programozási tételek megvalósítása Czigléczky Gábor 2009.
Nevezetes algoritmusok
Tömbök és programozási tételek
Mediánok és rendezett minták
Programozási tételek Mik is ezek?
Halmazműveletek.
Eljaras linearis_kereses(adatok[],n)
A maximum kiválasztás algoritmusa
Lineáris keresés Keresés (N,A,sorszam) i := 1
Informatikai gyakorlatok 11. évfolyam
Depth First Search Backtracking
Programozási tételek.
Algoritmusok és Adatszerkezetek I.
Programozási tételek.
Előadás másolata:

Készítette: Pető László Programozási tételek Készítette: Pető László

Programozási tételek A programozási feladatok megoldásuk szempontjából nagy csoportokba, osztályokba sorolhatók. A programozási tételek ilyen csoportok tipikus megoldásaival foglalkoznak. Olyan feladatokkal foglalkozunk, amelyekben

Programozási tételek egy sorozathoz egy értéket, egy sorozathoz egy sorozatot, sorozatokhoz sorozatot vagy sorozathoz sorozatokat kell rendelni. A vizsgálni kívánt sorozatot megadhatjuk elemei felsorolásával vagy elemei kiszámítási módjával.

Feladattípusok összegzés (a sorozat elemeinek összege, szorzata, uniója stb.), maximum-kiválasztás (a sorozat maximális, vagy minimális értékű elemének kiválasztása), megszámolás (adott tulajdonságú elemek száma a sorozatban), kiválogatás (sorozat adott tulajdonságú elemeinek megadása),

Feladattípusok kiválasztás (a vizsgált sorozat egy adott tulajdonságú elemének megadása, ilyen elem biztosan szerepel a sorozatban), eldöntés (van-e a vizsgált sorozatban adott tulajdonságú elem), keresés (a vizsgált sorozat egy adott tulajdonságú elemének megadása, ilyen elem lehet, hogy nincs a sorozatban),

Feladattípusok unió (két sorozatként ábrázolt halmaz egyesítése), metszet (két sorozatként ábrázolt halmaz közös elemei), összefuttatás (két rendezett sorozat egyesítése), szétválogatás (egy sorozat kétféle tulajdonságú elemeinek különválasztása),

Feladattípusok rendezés (rendezetlen sorozat elemeinek átrendezése növekvő vagy csökkenő sorrendbe), visszalépéses keresés (sorozatokból egy-egy elem meghatározása).

Összegzés Ez a feladattípus egy sorozathoz egy értéket rendel. A sorozat elemeinek összegét, szorzatát, unióját stb. kell előállítani. A feladatok egy részénél az így kiszámított értékkel esetleg még egyszerű műveletet kell végezni (pl. osztani az átlagszámításnál).

Az összegzés általános algoritmusa Eljárás: S:=kezdőérték Ciklus I=1-től N-ig S:=S művelet A(I) Ciklus vége Eljárás vége.

Példa (egy 100 elemű tömb elemeinek összege) Procedure osszegzes; begin osszeg:=0; for i:=1 to 100 do osszeg:=osszeg+a[i]; end;

Maximum-kiválasztás Ebben a feladatkörben adott egy N elemű sorozat. A feladat ezen sorozat legnagyobb elemének meghatározása (néha csupán az értékére van szükség). Hasonló feladat - csupán a < relációt kell >-ra cserélni - a minimum-kiválasztás.

A maximum-kiválasztás általános algoritmusa (1.) Eljárás: MAXIMUM := A(1) SORSZAM := 1 Ciklus I=2-től N-ig Ha MAXIMUM < A(I) akkor MAXIMUM := A(I) SORSZAM := I Ciklus vége Eljárás vége.

Példa (Egy 100 elemű tömb legnagyobb elemének kiválasztása) Procedure maximum; begin max:=a[1]; sorsz:=1; for i:=2 to 100 do if max < a[i] then max := a[i]; sorsz:=i; end;

A maximum-kiválasztás általános algoritmusa (2) Eljárás: SORSZAM := 1 Ciklus I=2-től N-ig Ha A(SORSZAM) < A(I) akkor SORSZAM := I Ciklus vége MAXIMUM := A(SORSZAM) Eljárás vége.

Példa (egy 100 elemű tömb legnagyobb elemének kiválasztása Procedure maximum2; begin sorsz:=1; for i:=2 to 100 do if a[sorsz] < a[i] then sorsz:=i; max:=a[sorsz]; end;

Megszámolás A következő feladatok megoldása során egy sorozathoz egy számot rendelünk hozzá. Rendelkezésünkre áll egy N elemű sorozat és egy, a sorozat elemein értelmezett T tulajdonság. Az a feladatunk, hogy a T tulajdonsággal rendelkező elemeket számoljuk meg. Ügyeljünk arra, hogy az összegzés céljára szolgáló változó értékét kezdetben 0-ra kell állítani!

A megszámolás általános algoritmusa Eljárás: DB:=0 Ciklus I=1-től N-ig Ha A(I) T tulajdonságú akkor DB:=DB+1 Ciklus vége Eljárás vége.

Példa (Egy 100 elemű tömb elemei közül hány pozitív van) Procedure pozitiv; begin darab:=0; for i:=1 to 100 do if a[i] > 0 then darab:=darab+1; end;

Kiválogatás Ennél a feladattípusnál egy N elemű A sorozat összes T tulajdonsággal rendelkező elemét kell meghatározni. Az eredmény egy B(M) sorozat lesz, ahol 0<=M<=N. M=0, ha az A(N) sorozat egy eleme sem, M=N, ha az A(N) sorozat minden eleme T tulajdonságú.

A kiválogatás általános algoritmusa Eljárás: M:=0 Ciklus I=1-től N-ig Ha A(I) T tulajdonságú akkor M:=M+1 : B(M):=A(I) Ciklus vége Eljárás vége.

Példa (egy száz elemű tömb pozitív elemeit gyűjtsük egy másik tömbbe) Procedure pozitivtomb; begin darab:=0; for i:=1 to 100 do if a[i] > 0 then darab:=darab+1; b[darab]:=a[i]; end;

Kiegészítés A megoldásban gyakran - ha további feldolgozásukra nincs szükség - nem gyűjtjük ki az elemeket, hanem azonnal kiírjuk: Eljárás: Ciklus I=1-től N-ig Ha A(I) T tulajdonságú akkor Ki: I,A(I) Ciklus vége Eljárás vége.

Példa (egy 100 elemű tömb pozitív elemeinek kiíratása) Procedure pozitivki; begin for i:=1 to 100 do if a[i] > 0 then writeln(i,’ ., ‘,a[i]); end;

Kiválasztás Adott egy N elemű sorozat és egy, a sorozat elemein értelmezett T tulajdonság. Azt is tudjuk, hogy a sorozatban van legalább egy T tulajdonságú elem. A feladat az első ilyen elem sorszámának meghatározása.

A kiválasztás algoritmusa Eljárás: I:=1 Ciklus amíg A(I) nem T tulajdonságú I:=I+1 Ciklus vége SORSZAM:= I Eljárás vége.

Példa (egy tömbben biztosan található első pozitív elem meghatározása) Procedure elsopoz; begin i:=1; while a[i] <= 0 do i:=i+1; end; sorsz:=i;

Eldöntés Ez a feladattípus egy sorozathoz logikai értéket rendel. A logikai érték "igaz"-at vesz fel, ha a sorozatban létezik adott (T) tulajdonságú elem, és "hamis"-at vesz fel, ha ilyen tulajdonságú elem nincs a sorozatban.

Az eldöntés általános algoritmusa Eljárás: I:=1 Ciklus amíg I<=N és A(I) nem T tulajdonságú I:=I+1 Ciklus vége VAN:=(I<=N) Eljárás vége.

Példa (egy 100 elemű tömbben van-e pozitív) Procedure vanepoz; begin i:=1; while (i <= 100) and (a[i] <= 0) do i:=i+1; end; van:=(i <= 100);

Keresés A keresés feladattípus egy sorozathoz egy elemet rendel. A feladat lényege, hogy a sorozatban egy adott tulajdonságú (T) elemet kell meghatároznunk (magát az elemet vagy a sorozatbeli sorszámát szokás kérni). Nem biztos, hogy a sorozatban van ilyen elem.

Keresés A keresés hatékonyságát lényegesen befolyásolhatja, hogy rendezett vagy rendezetlen sorozatban keresünk: logaritmikus, illletve lineáris keresést használunk. Amelyik feladatban lehet, használjuk ki a sorozat rendezettségét!

A lineáris keresés általános algoritmusa Eljárás: lineáris keresés I:=1 Ciklus amíg I<=N és A(I) nem T tulajdonságú I:=I+1 Ciklus vége VAN:=(I<=N) Ha VAN akkor SORSZÁM:=I Eljárás vége.

Példa (egy 100 elemű tömbben hányadik az első pozitív, ha van) Procedure linearisker; begin i:=1; while (i <= 100) and (a[i] <= 0) do i:=i+1; end; van:=(i<=100); if van then sorsz:=i;

A logaritmikus keresés általános algoritmusa Eljárás: logaritmikus keresés Be: X AlsoH = 1 FelsoH = n Ciklus vége K = (AH+FH)/2 egész része Ha X<A(K) akkor FH=K-1 Ha X>A(K) akkor AH=K+1 Ciklus amíg A(K)=X vagy AH>FH VAN:=(A(K)=X) Ha VAN akkor SORSZÁM:=K Eljárás vége.

Példa (egy 100 elemű rendezett tömbben keressük meg egy tetszőleges elem sorszámát) Procedure logaritmker; begin readln(x); AlsoHatar:=1; FelsoHatar:=100; repeat Kozep:= (AlsoHatar+FelsoHatar) div 2; if x<a[Kozep] then FelsoHatar:=Kozep-1; if x>a[Kozep] then AlsoHatar:=Kozep+1; until (a[Kozep]=x) or AlsoHatar>FelsoHatar; van:=(a[Kozep]=x); if van then sorszam:=Kozep; end;

Alkalmazás Gyakrabban találkozhatunk azonban olyan feladatokkal a gyakorlatban, ahol több programozási tétel együttes használatára van szükség. Szerepel több olyan feladatsor, amelyben az adatok azonosak, s velük kapcsolatban különböző kérdésekre kell választ adni. Ezek jól használhatók önálló feladatmegoldásra.

Alkalmazás A következő feladat megoldásánál a már megismert feladattípusok (összegzés, eldöntés, kiválasztás, keresés, megszámolás, maximumkiválasztás és kiválogatás) közül kell kiválasztani azokat, amelyekkel a kívánt eredmény elérhető.

Példa Adott egy N elemű sorozat, valamint egy a sorozat elemein értelmezett T tulajdonság. Adjuk meg a sorozat minimális értékű T tulajdonságú elemeit! Adott N személyi számból álló sorozat [A(N)]. Adjuk meg az 1968-ban született legfiatalabb ember sorszámát és személyi számát! Adjuk meg az összes ezen a napon született ember adatait is!

Alkalmazott tételek Kiválogatás tétele: 1968-ban született emberek. B(I)= A(I) 2. és 3. számjegye. Minimum-kiválasztás tétele: legkésőbbi hónapban és napon született ember. C(I)= B(I) 4-7. számjegye. Kiválogatás tétele: ugyanezen a napon született emberek.

Megoldás Procedure szemelyiszam; begin min:=1231; minsor:=0; for i=1-től n do if b[i]=68 then if c[i]<=min then min:=c[i]; minsor:=i; end; if minsor>0 then for i=1 to n do if b[i]=68 and c[i]=min then writeln(a[i],’, ‘,i);

Unió Eddig olyan feladattípusokkal foglalkoztunk, ahol egy sorozathoz egy értéket, vagy egy sorozatot rendeltünk hozzá. Ebben a részben viszont több sorozat adott, amelyből egy sorozatot kell valamilyen szempont szerint előállítani. A matematikából ismerjük két halmaz egyesítésének (uniójának) fogalmát.

Unió A két halmaz egyesítéséből származó halmazba azok az elemek tartoznak, amelyek legalább az egyikben szerepelnek. Ebben, és a következő alfejezetben a halmazt speciálisan ábrázoljuk: az elemeit felsoroljuk egy sorozatban. Ezt a sorrendet felhasználjuk a halmaz elemeinek bejárására.

Unió Például, ha az "A" sorozat elemei: e, b, a, f, d, c és a "B" sorozat elemei: j, f, b, h, d, akkor a két sorozat uniójába ("C") az e, b, a, f, d, c, j, h elemek tartoznak.

Az unió általános algoritmusa Eljárás: Ciklus I=1-től N-ig C(I):=A(I) Ciklus vége K:=N Ciklus J=1-től M-ig I:=1 Ciklus, amíg I<=N és B(J)<>A(I) I:=I+1 Ha I>N akkor K:=K+1 : C(K):=B(J) Eljárás vége.

Példa (egy 100 és egy 30 elemű sorozat uniója) procedure unio; begin for i:=1 to 100 do c[i]:=a[i]; k:=100; for j:=1 to 30 do i:=1; while (i<=100) and (b[j]<>a[i]) do i:=i+1; if i>n then k:=k+1; c[k]:=b[j]; end;

Metszet A metszetképzés fogalmával találkoztunk már a matematika órán a halmazműveletek tanulása során. Két halmaz metszetébe azok az elemek tartoznak, amelyek mindkettőben szerepelnek. Például, ha az "A" halmaz elemei: e, b, a, f, d, c és a "B" halmaz elemei: a, j, f, b, h, d, akkor a két halmaz metszetébe ("C") a b, f, d elemek tartoznak.

A metszet általános algoritmusa Eljárás: K:=0 Ciklus I=1-től N-ig J:=1 Ciklus amíg J<=M és A(I)<>B(J) J:=J+1 Ciklus vége Ha J<=M akkor K:=K+1 : C(K):=A(I) Eljárás vége.

Példa (egy 100 és egy 30 elemű halmaz közös elemei) Procedure metszet; begin k:=0; for i:=1 to 100 do j:=1; while (j<=30) and (a[i]<>b[j]) do j:=j+1; if j<=30 then k:=k+1; c[k]:=a[i]; end;

Összefuttatás Az alapelve megegyezik az unióképzéssel, de feltételezzük, hogy a két sorozat rendezett, és azt szeretnénk, hogy az egyesítés során keletkezett sorozat is rendezett legyen. Például, ha az A sorozat elemei: A, B, C, D, E, F és a B sorozat elemei: B, D, F, H, J, akkor a két sorozat összefuttatásával keletkezett sorozatba az A, B, C, D, E, F, H, J elemek tartoznak.

Az összefuttatás általános algoritmusa Eljárás: I:=1 : J:=1 : K:=0 Ciklus amíg I<=N és J<=M K:=K+1 Elágazás A(I)<B(J) esetén C(K):=A(I) : I:=I+1 A(I)=B(J) esetén C(K):=A(I) : I:=I+1 : J:=J+1 A(I)>B(J) esetén C(K):=B(J) : J:=J+1 Elágazás vége Ciklus vége Eljárás vége.

Példa (egy 100 és egy 30 elemű rendezett sorozat összefuttatása) Procedure osszefuttatas; begin i:=1;j:=1;k:=0; while (i<=100) and (j<=m) do k:=k+1; if a[i]<b[j] then begin c[k]:=a[i]; i:=i+1; end else if a[i]=b[j] then begin c[k]:=a[i]; i:=i+1;j:=j+1; end else begin c[k]:=b[j];j:=j+1 end; end;

Szétválogatás Ebben a részben egy sorozat elemeit választjuk külön vagy egy sorozaton belül két részre, vagy két különböző sorozatba aszerint, hogy egy adott T tulajdonsággal rendelkeznek-e az elemek, vagy nem. Például, ha az A sorozat elemei 1, 2, 3, 4, 5, 6, 7, 8, 9, és a T tulajdonság: a számok párossága, akkor a sorozat elemeinek szétválogatásával a 2, 4, 6, 8, és az 1, 3, 5, 7, 9 sorozatok keletkeznek.

A szétválogatás általános algoritmusa Eljárás: J:=0 : K:=0 Ciklus I=1-től N-ig Ha A(I) T tulajdonságú akkor J:=J+1 : B(J):=A(I) különben K:=K+1 : C(K):=A(I) Ciklus vége Eljárás vége.

Példa (100 szám szétválogatása paritás alapján) Procedure szetvalogatas; begin j:=0;k:=0; for i:=1 to 100 do if a[i] mod 2=0 then begin j:=j+1;b[j]:=a[i]; end else begin k:=k+1; c[k]:=a[i]; end; end;

Rendezések Közvetlen beszúrással Közvetlen kiválasztással Buborék-rendezés (közvetlen csere) Keverő rendezés megjegyzés: Ennél sokkal több rendezési algoritmus létezik!

Közvetlen beszúrás Minden lépésben a második elemtől egyesével kiemeljük a csökkenő sorozat szerinti első elemet, és beszúrjuk a megfelelő helyre

Ábra

Algoritmus Procedure kozvetlenbeszuras; begin for i:=2 to n do elem:=a[i]; j:=i-1; while (j>0) and (elem<a[j]) do a[j+1]:=a[j]; j:=j-1; end; a[j+1]:=elem;

Közvetlen kiválasztás A sorozat soron következő legkisebb elemének kiválasztása, majd beszúrása a megfelelő helyre.

Ábra

Algoritmus Procedure kozvetlenkivalasztas; begin for i:=1 to n-1 do k:=i; elem:=a[i]; for j:=i+1 to n do if a[j]<elem then k:=j; elem:=a[j]; end; a[k]:=a[i]; a[i]:=elem;

Közvetlen csere (buborék) Az alkalmas elempárok összehasonlítása és felcserélése során jutunk az összes elem rendezéséhez.

Ábra

Algoritmus Procedure buborek; begin for i:=2 to n do for j:=n downto i do if a[j-1]>a[j] then elem:=a[j-1]; a[j-1]:=a[j]; a[j]:=elem; end;

Keverő rendezés Az előző módszer elég rossz hatásfokú, ha kevés rossz helyen tartózkodó elem van, mert akkor is elvégzi az összes összehasonlítást. A keverő rendezés ezen úgy javít, hogy váltogatja az összehasonlító menetek irányát.

Ábra

Algoritmus / 1 Procedure kevero; begin l:=2; r:=n; k:=n; repeat for j:=r downto l do if a[j-1]>a[j] then elem:=a[j-1]; a[j-1]:=a[j]; a[j]:=elem; k:=j; end; l:=k+1;

Algoritmus / 2 for j:=1 to r do if a[j-1]>a[j] then begin elem:=a[j-1]; a[j-1]:=a[j]; a[j]:=elem; k:=j; end; r:=k-1; until l>r ;

Visszalépéses keresés (backtrack) A visszalépéses keresés ( backtrack ) a problémamegoldás igen széles területén alkalmazható algoritmus, amelynek lényege a feladat megoldásának megközelítése rendszeres próbálgatással. Néha ez a legjobb megoldás!

Visszalépéses keresés (backtrack) Adott N sorozat, amelyek rendre M(1), M(2),...M(N) elemszámúak. Ki kell választani mindegyikből egy-egy elemet úgy, hogy az egyes sorozatokból való választások másokat befolyásolnak. Ez egy bonyolult keresési feladat, amelyben egy adott tulajdonsággal rendelkező szám N-est kell megadni úgy, hogy ne kelljen az összes lehetőséget végignézni.

Visszalépéses keresés (backtrack) Először megpróbálunk az első sorozatból kiválasztani egy elemet, ezután a következőből, s ezt addig csináljuk, amíg választás lehetséges. X(I) jelölje az I. sorozatból kiválasztott elem sorszámát! Ha még nem választottuk, akkor értéke 0 lesz. Ha nincs jó választás, akkor visszalépünk az előző sorozathoz, s megpróbálunk abból egy másik elemet választani.

Visszalépéses keresés (backtrack) Visszalépésnél természetesen törölni kell a választást abból a sorozatból, amelyikből visszalépünk. Az eljárás akkor ér véget, ha minden sorozatból sikerült választani, vagy pedig a visszalépések sokasága után már az első sorozatból sem lehet újabb elemet választani (ekkor a feladatnak nincs megoldása).

A backtrack általános algoritmusa Eljárás: I:=1 : X(I):=0 Ciklus amíg I>=1 és I<=N Ha VAN JO ESET(I) akkor I:=I+1 különben X(I):=0 : I:=I-1 Ciklus vége VAN:=(I>N) Eljárás vége.

A backtrack általános algoritmusa VAN JO ESET(I): Ciklus X(I):=X(I)+1 amíg X(I)<=M(I) és ROSSZ ESET( I,X(I) ) Ciklus vége VAN JÓ ESET:=(X(I)<=M(I)) Eljárás vége.

A backtrack általános algoritmusa ROSSZ ESET( I,X(I) ): J:=1 Ciklus amíg J<I és (J,X(J)) nem zárja ki (I,X(I))-t J:=J+1 Ciklus vége ROSSZ ESET:=(J<I) Eljárás vége.

Megjegyzés Az algoritmusra alapozva lehet készíteni eldöntési, kiválasztási, megszámolási, kiválogatási és optimalizálási feladatokat is.

VÉGE