Didaxis
lecție · Informatică

Fractali prin divide et impera

Construirea recursivă a figurilor autosimilare (de exemplu curba Koch, triunghiul Sierpinski) și numărarea elementelor generate pe fiecare nivel.

Se face în:
Clasa a X-a
Actualizat la: 30 octombrie 2026
1pe scurtstratul 1 din 2 · rezumatul lecției

Pe scurt

Un fractal se construiește repetând aceeași regulă la scări tot mai mici. La curba Koch, fiecare segment se înlocuiește cu patru segmente, fiecare de trei ori mai scurt. La triunghiul Sierpinski, fiecare triunghi rămas este înlocuit cu trei triunghiuri mai mici, după eliminarea celui central. Figurile arată autosimilaritate: o parte seamănă cu întregul.

Metoda divide et impera împarte problema „desenează nivelul ” în subprobleme „desenează nivelul ”. Este necesar un caz de bază, altfel recursia nu se oprește. La nivelul al curbei Koch există un segment; la nivelul sunt , iar la nivelul sunt .

Desen la lecția „Fractali prin divide et impera”
2în detaliustratul 2 din 2 · pentru clasă și Bacalaureat

În detaliu

Un fractal este o figură autosimilară: fiecare parte a lui seamănă cu întregul. Construcția recursivă (divide et impera) reduce problema „desenează nivelul ” la problema „desenează nivelul ” de mai multe ori, la o scară mai mică. Fără un caz de bază, recursia nu se oprește, de aceea nivelul 0 este tratat direct: la curba Koch este un segment, la triunghiul Sierpinski este un triunghi. Curba Koch înlocuiește fiecare segment cu patru segmente, fiecare de trei ori mai scurt decât cel înlocuit. După pași numărul de segmente este , un segment are lungimea , iar lungimea totală este . Triunghiul Sierpinski se obține înlocuind fiecare triunghi cu trei triunghiuri de latură jumătate, după eliminarea triunghiului central. După pași sunt triunghiuri păstrate, iar aria lor totală este .

Exemplul 1 — numărarea segmentelor Koch. Numărul de segmente de la nivelul este de patru ori numărul de la nivelul , cu un segment la nivelul 0.

#include <iostream>
using namespace std;
long long segmente(int nivel) {
    if (nivel == 0) return 1;
    return 4 * segmente(nivel - 1);
}
int main() {
    for (int i = 0; i <= 4; ++i)
        cout << segmente(i) << " ";
    return 0;
}

Programul afișează 1 4 16 64 256 . Pentru segmente(2) apelurile dau . Recursia simplă are timp proporțional cu pentru numărare, dar desenarea tuturor segmentelor de nivel cere operații, deoarece fiecare segment este produs separat. Tipul long long se depășește la niveluri suficient de mari, în jur de , unde ajunge la limita tipului.

Exemplul 2 — curba Koch la nivelul 3. Pentru un segment inițial de lungime și : sunt de segmente, fiecare cu lungimea , deci lungimea totală este . La nivelurile 0, 1, 2, 3 lungimea totală este , , și : crește cu un factor de la fiecare pas și nu are limită superioară, deși figura încape într-o zonă de mărime finită.

Exemplul 3 — triunghiul Sierpinski la nivelul 3. Sunt de triunghiuri păstrate, fiecare cu latura de opt ori mai mică decât a celui inițial. Aria totală este , deci aproape 58% din aria inițială a fost eliminată. Din același motiv, la fiecare pas rămân din aria precedentă, iar aria tinde spre 0 când crește, deși numărul de triunghiuri crește.

Cum se desenează. Pentru curba Koch, o procedură recursivă koch(lungime, nivel) desenează un segment dacă nivel este 0; altfel apelează de patru ori koch(lungime / 3, nivel - 1), cu rotiri de 60 de grade la stânga, 120 de grade la dreapta și 60 de grade la stânga între apeluri, astfel încât cele patru segmente să alcătuiască „vârful” curbei. Procedura are un singur parametru care scade, nivel, deci numărul apelurilor la nivelul este .

Exemplul 4 — fulgul lui Koch. Pornind de la un triunghi echilateral cu latura și aplicând regula pe fiecare latură, perimetrele sunt , și la nivelurile 0, 1 și 2: la nivelul 2 sunt de segmente de lungime 1.

Greșeli frecvente

  • Greșit: la fractali recursia nu are nevoie de caz de bază.
    Corect: fără nivelul 0 apelurile nu se mai opresc.
  • Greșit: la curba Koch numărul segmentelor se dublează la fiecare pas.
    Corect: se înmulțește cu 4, fiind .
  • Greșit: lungimea curbei Koch rămâne aceeași la toate nivelurile.
    Corect: se înmulțește cu la fiecare pas.
în contul tăuPremium

Testează-te pe această lecție

Lecția o citești aici, fără cont. Testele pe lecții și capitole sunt în cont, cu grile originale Didaxis și explicația fiecăreia: gratuit 10 grile pe zi, fără limită cu Premium, 49 de lei pe lună pentru fiecare copil.

Înainte și după

Surse și referințe

Redactare proprie, conform programei:

  • OMECI 5099/2009, anexa 5, Informatică, p. 4–5, clasa X intensiv; rocnee.eu

Documente consultate

  • Programa școlară de informatică intensiv, clasa a X-a (OMECI 5099/2009, anexa 5), CNCE, p. 4–5; rocnee.eu
  • Wolfram MathWorld, „Koch Snowflake” și „Sierpiński Sieve”, secțiunile construcție și numărare; mathworld.wolfram.com ; mathworld.wolfram.com

Desene: Redactare proprie (desen original)

lecțiile sunt gratuite

Ai citit lecția. Acum verifică-te.