Iterace - Iteration

Iterace je opakování procesu za účelem generování (možná neomezeného) sledu výsledků. Každé opakování procesu je jedinou iterací a výsledek každé iterace je pak výchozím bodem další iterace.

V matematice a informatice je iterace (spolu s příbuznou technikou rekurze ) standardním prvkem algoritmů .

V matematice

V matematice může iterace znamenat proces iterace funkce , tj. Opakované použití funkce pomocí výstupu z jedné iterace jako vstupu do další. Iterace zdánlivě jednoduchých funkcí může vést ke složitému chování a obtížným problémům - příklady viz Collatzovy dohady a kejklířské sekvence .

Další použití iterace v matematice je v iteračních metodách, které se používají k vytvoření přibližných numerických řešení určitých matematických úloh. Newtonova metoda je příkladem iterační metody. Běžné použití a známý příklad je ruční výpočet druhé odmocniny čísla.

Ve výpočetní technice

Ve výpočetní technice je iterace technika označování bloku příkazů v počítačovém programu pro definovaný počet opakování. Tento blok příkazů je prý iterovaný ; počítačový vědec by mohl také odkazovat na tomto bloku příkazů jako o „opakování“.

Níže uvedený pseudokód je příkladem iterace; řádek kódu mezi závorkami smyčky pro bude třikrát „iterovat“:

a = 0
for i from 1 to 3        // loop three times
{
    a = a + i            // add the current value of i to a
}
print a                  // the number 6 is printed (0 + 1; 1 + 2; 3 + 3)

K provedení požadované funkce je přípustné a často nutné použít hodnoty z jiných částí programu mimo blok příkazů v závorkách. Ve výše uvedeném příkladu používá řádek kódu hodnotu i, jak se zvyšuje.

Vztah s rekurzí

V algoritmických situacích lze pro stejný efekt použít rekurzi a iteraci. Primárním rozdílem je, že rekurzi lze použít jako řešení bez předchozí znalosti, kolikrát se akce bude muset opakovat, zatímco úspěšná iterace vyžaduje tuto znalost.

Některé typy programovacích jazyků, známé jako funkční programovací jazyky , jsou navrženy tak, že nenastavují blok příkazů pro explicitní opakování jako u smyčky for . Místo toho tyto programovací jazyky používají výhradně rekurzi . Spíše než vyvolávat blok kódu, který se má opakovat předem definovaný počet opakování, blok provádějícího kódu místo toho „rozděluje“ práci, která má být vykonána, na několik samostatných kusů, načež se blok kódu provede sám na každém jednotlivém dílu. Každá práce bude rozdělena opakovaně, dokud nebude „množství“ práce tak malé, jak to jen může být. V tomto okamžiku algoritmus tuto práci provede velmi rychle. Algoritmus pak „obrátí“ a znovu sestaví figurky do kompletního celku.

Klasický příklad rekurze je v algoritmech pro řazení seznamů, jako je sloučení . Rekurzivní algoritmus sloučení řazení nejprve opakovaně rozdělí seznam na po sobě jdoucí páry; každý pár je poté seřazen, pak každý po sobě jdoucí pár párů a tak dále, dokud nejsou prvky seznamu v požadovaném pořadí.

Níže uvedený kód je příkladem rekurzivního algoritmu v programovacím jazyce Scheme, který vydá stejný výsledek jako pseudokód pod předchozím nadpisem.

(let iterate ((i 1) (a 0))
  (if (<= i 3)
    (iterate (+ i 1) (+ a i))
    (display a)))

Jiná terminologie

V objektově orientovaném programování je iterátor objekt, který zajišťuje, že se iterace provádí stejným způsobem pro řadu různých datových struktur, což šetří čas a úsilí při pozdějších pokusech o kódování. Zejména iterátor umožňuje opakovat stejný druh operace v každém uzlu takové datové struktury, často v nějakém předem definovaném pořadí.

Iteratee je abstrakcí, která přijme nebo odmítne data během iterace.

Vzdělávání

V některých pedagogických školách se iterace používají k popisu procesu výuky nebo vedení studentů k opakování experimentů, hodnocení nebo projektů, dokud nejsou nalezeny přesnější výsledky nebo dokud student nezvládne technické dovednosti. Tato myšlenka se nachází ve starém přísloví „Cvičení dělá mistra“. Zejména „iterativní“ je definován jako „proces učení a rozvoje, který zahrnuje cyklické zkoumání, což lidem umožňuje více příležitostí k tomu, aby se znovu vrátili k myšlenkám a kriticky se zamysleli nad jejich implikací“.

Na rozdíl od výpočetní techniky a matematiky nejsou vzdělávací iterace předem určeny; místo toho se úkol opakuje, dokud není dosažen úspěch podle některých vnějších kritérií (často test).

Viz také

Reference