13.07.2015 Views

Matematici discrete pentru CS - Departamentul Automatica ...

Matematici discrete pentru CS - Departamentul Automatica ...

Matematici discrete pentru CS - Departamentul Automatica ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Teorema 3.6: Pentru orice numǎr natural n (în reprezentarea lor în calculator),rezultatul evaluǎrii expresiei (factorial n) este reprezentarea în calculator alui n!.Demonstratia cǎ programul este corect este foarte asemǎnǎtoare demonstratieicǎ functia recursivǎ are valori corecte. Despre notatii: elementele sintacticereale ale limbajului de programare sunt în alte caractere, în timp ce variabilelecare dau domeniul lor sunt înclinate.Demonstratie: Demonstratia este prin inductie pe numerele naturale. Fie P(n)propozitia (factorial n) = n!.• Cazul de bazǎ: verificarea propozitiei P(0).P(0) este propozitia (factorial 0) = 0!. Prin definitia de mai sus,(factorial 0)= (if (= 0 0) 1 (* 0 (factorial (- 0 1))))= 1 prin evaluarea lui if• Pasul inductiv: demonstratia propozitiei P(n) ⇒ P(n + 1) <strong>pentru</strong> orice n∈N.1. Ipoteza inductivǎ este (factorial n) = n!.2. De demonstrat: (factorial (n + 1)) = (n + 1)!.3. Prin definitia de mai sus,(factorial (n + 1))= (if (= (n + 1) 0) 1 (* (n + 1) (factorial (- (n + 1) 1))))= (* (n + 1) (factorial (- (n + 1) 1))) deoarece n∈ N si (n + 1) ≠0= (* (n + 1) (factorial n))= (n + 1)!Prin urmare, principiul inductiei conduce la n∈ N (factorial n) = n!.□Note asupra demonstratiei:• Se face aici apel implicit la mai multe aspecte ale evaluǎrii de programecum sunt legǎtura între parametri, definitia expresiilor if si corespondentaîntre functia matematicǎ “–“ si functia intrinsecǎ “–“. Aceste leme sunt oparte esentialǎ a definirii limbajului de programare si poate fi declaratǎ sidemonstratǎ o datǎ <strong>pentru</strong> toti si <strong>pentru</strong> totdeauna.• Teorema asa cum este enuntatǎ este aproape sigur falsǎ! O probǎ realǎ decorectitudine, <strong>pentru</strong> o teoremǎ potrivit redusǎ, trebuie sǎ manevrezediferentele între entitǎtile matematice si entitǎtile corespunzǎtoare dincalculator. De pildǎ, n! este bine definitǎ <strong>pentru</strong> orice numǎr natural, dar(factorial n) esueazǎ dacǎ n este suficient de mare <strong>pentru</strong> a producedepǎsire la multiplicarea de întregi. Un alt mod de a spune aceasta este cǎoperatorul * nu este acelasi cu functia de multiplicare matematicǎ.• Asa cum e definitǎ, functia (factorial n) produce o eroare <strong>pentru</strong> intrǎrinenumerice, neîntregi sau negative. (Exercitiu: Ce eroare apare când37

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!