You are on page 1of 106

Matematyka Dyskretna

Wadysaw Skarbek
Pastwowa Wysza Szkoa Informatyki i Zarzdzania
Padziernik 2004 Stycze 2005

Spis treci
1 Zbiory
1.1 Zbiory a typy danych . . . . . . . . . . . . .
1.2 Elementy i podzbiory . . . . . . . . . . . . .
1.3 Deniowanie zbioru notacja . . . . . . . .
1.4 Paradoks Russela . . . . . . . . . . . . . . .
1.5 Operacje mnogociowe . . . . . . . . . . . .
1.6 Arytmetyczne typy danych . . . . . . . . .
1.7 Zbir potgowy a kombinacje i permutacje .
1.8 Produkt kartezjaski . . . . . . . . . . . . .
1.9 Relacje . . . . . . . . . . . . . . . . . . . . .
1.10 Funkcje . . . . . . . . . . . . . . . . . . . .
1.11 Zoony typ danych a produkt kartezjaski
1.12 Generalizacja typw danych . . . . . . . . .
1.13 Atrybuty i cechy . . . . . . . . . . . . . . .
1.14 Tabela relacyjna . . . . . . . . . . . . . . .
1.15 Cigi i macierze . . . . . . . . . . . . . . . .
1.16 Diagramy relacyjne w UML . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

3
3
4
5
6
7
7
9
10
11
13
15
16
17
18
19
20

2 Algebry
2.1 Intuicje informacyjne algebry . . .
2.2 Denicja algebry oglnej . . . . . .
2.2.1 Algebry a klasy obiektw .
2.2.2 Diagramy klas w UML . . .
2.3 Algebra Boolea . . . . . . . . . . .
2.4 Ukady zupene funkcji Boolea . .
2.5 Wasnoci algebry Boolea . . . . .
2.6 Mapa Karnaugh . . . . . . . . . .
2.7 Rachunek zda . . . . . . . . . . .
2.7.1 Spjniki logiczne . . . . . .
2.7.2 Wyraenia logiczne . . . . .
2.7.3 Wyraenia logiczne a zbiory

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

21
22
22
23
23
23
27
29
30
31
31
32
34

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

2.7.4 amigwka krla . . . . . . . . . . .


Rachunek predykatw i kwantykatorw . .
2.8.1 Predykaty . . . . . . . . . . . . . . .
2.8.2 Kwantykatory . . . . . . . . . . . .
2.9 Homomorzm algebr . . . . . . . . . . . . .
2.10 Rachunek reszt . . . . . . . . . . . . . . . .
2.11 Arytmetyka cyfrowa w staym przecinku . .
2.12 Arytmetyka cyfrowa w zmiennym przecinku
2.12.1 Wzorce bitowe w IEEE 754 . . . . .

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

35
36
36
38
41
43
45
46
50

3 Schematy rekurencyjne
3.1 Wiee Hanoi . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Konwersja wyraenia arytmetycznego na ONP . . . . . . .
3.3 Generowanie kodu maszynowego wyraenia arytmetycznego
3.4 Klasyczna indukcja matematyczna . . . . . . . . . . . . . .
3.4.1 Indukcja matematyczna wybrane przykady . . . .
3.4.2 Obliczanie sum metod rnic . . . . . . . . . . . . .
3.5 Rwnania rekurencyjne . . . . . . . . . . . . . . . . . . . .
3.6 Zliczanie obiektw kombinatorycznych . . . . . . . . . . . .
3.6.1 Wspczynniki dwumienne . . . . . . . . . . . . . .
3.6.2 Wasnoci liczbowe zbiorw i funkcji . . . . . . . . .
3.6.3 Zasada wczania i wyczania . . . . . . . . . . . .
3.6.4 Podziay . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.5 Zbiory z powtrzeniami . . . . . . . . . . . . . . . .
3.6.6 Zliczanie drzew binarnych . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

50
53
55
58
60
61
65
66
72
72
75
75
77
77
78

4 Kongruencje
4.1 Podzielno liczb cakowitych . . . . . . . . . . . . .
4.1.1 Kombinacje liniowe dwch liczb cakowitych .
4.1.2 Algorytm Euklidesa dla NWP . . . . . . . . .
4.1.3 Rozszerzony algorytm Euklidesa dla NWP . .
4.1.4 Przykad rozlewanie pynw . . . . . . . . .
4.1.5 Liczby pierwsze wprowadzenie . . . . . . .
4.1.6 Faktoryzacja na liczby pierwsze . . . . . . . .
4.1.7 Liczby pierwsze sito Eratostenesa . . . . . .
4.1.8 Liczby Mersena . . . . . . . . . . . . . . . . .
4.1.9 Liczby Fermata . . . . . . . . . . . . . . . . .
4.2 Algebra reszt . . . . . . . . . . . . . . . . . . . . . .
4.2.1 Rwnania w resztach . . . . . . . . . . . . . .
4.2.2 Chiskie twierdzenie o resztach . . . . . . . .
4.2.3 Twierdzenia Fermata o resztach . . . . . . .
4.2.4 Funkcja Eulera . . . . . . . . . . . . . . . . .
4.2.5 Twierdzenie Eulera o resztach . . . . . . . . .
4.2.6 Szyfrowanie algorytm RSA . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

80
81
84
85
86
88
90
91
93
93
94
95
98
99
101
102
103
104

2.8

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

Przedmowa
Matematyka dyskretna w ujciu tego wykadu ma na celu wprowadzenie koncepcji matematycznych lecych u podstaw takich obszarw wiedzy informatycznej
jak jzyki i techniki programowania, ukady logiczne i arytmetyczne maszyn
cyfrowych oraz algorytmy szyfrowania danych.
Zaczynamy od pojcia zbioru i szeregu pochodnych poj mnogociowych, ktre
cile wi si z koncepcj typu danych, atrybutu obiektu w systemie informacyjnym, tabeli w relacyjnej bazie danych oraz instancji obiektu danego typu.
Kolejnym prezentowanym obszarem s algebry i ich zwizek z projektowaniem
jednostek arytmetycznych i logicznych w maszynach cyfrowych, z koncepcj
klasy obiektw i algebraicznym modelem programu komputerowego.
Rozdzia powicony schematom rekurencyjnym omawia indukcyjne techniki
deniowania obiektw matematycznych. Obejmuje on szereg przykadw zastosowania koncepcji rekursji w przyrostowym deniowaniu zoonych struktur
danych i algorytmw dziaajcych na nich.
Wykad zamyka dyskusja zastosowa rachunku reszt w kryptograi. Przedstawiono wybrane algorytmy szyfrowania danych wraz z ich teoretycznymi podstawami.

Zbiory
Zbir jest pojciem pierwotnym
ten typ tak ma

Przykad zbioru: ksigozbir Polskiej Biblioteki Narodowej


Intuicje zbioru:
Zbir to kolekcja, zestaw elementw
Specyczna wasno wyrnia elementy
Elementy nale do pewnego uniwersum
Zbir jest podzbiorem pewnego uniwersum

1.1

Zbiory a typy danych

Intuicje informatyczne:
Ksika to zoony typ danych
Konkretny egzemplarz Pana Tadeusza w ksigozbiorze to instancja
typu Ksika
3

Ten konkretny egzemplarz naley do zbioru wszystkich instancji typu


Ksika
Ksigozbir to specyczna Kolekcja
Ksigozbir Biblioteki Narodowej to instancja typu Ksigozbir
Wnioski:
Typ danych nie jest zbiorem
Typ danych T okrela wasno instancja danych jest typu T
Wasno instancja danych jest typu T deniuje zbir wszystkich
instancji typu T
wiczenia
1. Podaj przykadowe atrybuty obiektu typu Ksika.
2. Typ Kolekcja jest generalizacj typu Ksigozbir. Jakich atrybutw typu
Ksigozbir nie posiada Kolekcja ?
3. Okrel typ danych, ktrego zbir wszystkich instancji jest zbiorem wszystkich danych osobowych studentw PWSIiP.

1.2

Elementy i podzbiory

przynaleno, np.:
x X x jest elementem zbioru X

y
/ X y nie jest elementem zbioru X

, podzbir, nadzbir, np.:


A B A jest podzbiorem zbioru B

B A B jest nadzbiorem zbioru A


(, ) podzbir, nadzbir waciwy, np.:

A ( B A jest podzbiorem waciwym zbioru B


B ) A B jest nadzbiorem waciwym zbioru A
= rwno, 6= rno np.:
A = B zbiory A i B s identyczne
A 6= B zbiory A i B s rne
Skrt: wtt wtedy i tylko wtedy
wiczenia
Uzasadnij nastpujce wasnoci inkluzji:
4

1. A B wtt A ( B lub A = B.
2. Jeli A ( B, to A 6= B.
3. A A.
4. Jeli A B i B C, to A C.

1.3

Deniowanie zbioru notacja

zbir pusty
{, . . . , } wyliczenie elementw zbioru, np.:
A = {1, 2, 3, 4, 5, 6} zbir skada si z liczb cakowitych od 1 do 6

B = {1, 2, . . . , 12} zbir liczb naturalnych od 1 do 12


N , {1, 2, 3, . . . } zbir liczb naturalnych

Z , {0, 1, 2, 3, . . . } zbir liczb cakowitych


{x : W (x)} zbir tych x, ktre speniaj warunek W (x), np.:
ZP , {x : x Z, 2 dzieli x} zbir liczb cakowitych parzystych

Q , {x : x =

p
q

gdzie q N, p Z} zbir liczb wymiernych

R = {x : x Q lub jest granic cigu liczb wymiernych } zbir


liczb rzeczywistych

wiczenia
1. Zapisz wasno denicyjn zbioru liczb pierwszych.
2. Czy kada liczba rzeczywista o skoczonym dziesitnym zapisie pozycyjnym jest liczb wymiern ?
3. Podaj przykad liczby wymiernej, ktrej nie mona zapisa skoczon liczb cyfr dziesitnych.
Zadania
1. Podaj przykad liczby wymiernej, ktra w zapisie dziesitnym ma skoczon liczb cyfr, a w zapisie dwjkowym nie ma skoczonego zapisu.
2. Dla liczby rzeczywistej x = 0, b1 , b2 , . . . podaj cig liczb wymiernych zbieny do x.

1.4

Paradoks Russela

Niech U bdzie zbiorem wszystkich zbiorw


Wasno: U jest wasnym elementem
Rozwamy zbir S, ktry jest zbiorem wszystkich zbiorw nie bdcych
wasnym elementem:
S , {Z : Z
/ Z}
Pytania:
1. Czy S S ?

2. Czy S
/S?

Paradoks:
1. Jeli S S, to S
/S

2. Jeli S
/ S, to S S

Wasno denicyjna zbioru S jest sprzeczna


Paradoks fryzjera:
W pewnej jednostce wojskowej jest fryzjer, ktry goli wszystkich tych
mczyzn w jednostce, ktrzy si sami nie gol. Czy on si sam goli ?
Paradoks kamcy:
Pewien osobnik zawsze kamie. Pewnego dnia wygosi on sentencj Ja
zawsze kami. Czy tym razem skama ?
wiczenie
Niech S bdzie zbiorem okrelonym w paradoksie Russela.
Dlaczego z tego, e S S wynika S
/S?
Dlaczego z tego, e S
/ S wynika S S ?
Zadania
Wyjanij na czym polega paradoks fryzjera
Wyjanij na czym polega paradoks kamcy

1.5

Operacje mnogociowe

, , operacje sumy, iloczynu i rnicy dwch zbiorw, np.:


A B suma zbiorw A i B

A B iloczyn zbiorw A i B

A B rnica zbiorw A i B

| | liczno zbioru, np.:


|A| = n zbir A ma n elementw

|A B| liczno sumy zbiorw A i B


suma n zbiorw:

n
[

Ai , A1 An

n
\

Ai , A1 An

i=1

iloczyn n zbiorw:

i=1

Zadania
Niech A , U A. Uzasadnij nastpujce wasnoci operacji mnogociowych:
1. przemienno: A B = B A, A B = B A
2. czno: (A B) C = A (B C), (A B) C = A (B C)
3. rozdzielczo: (AB)C = (AC)(BC), (AB)C = (AC)(BC)
4. prawa deMorgana: A B = A B, A B = A B

1.6

Arytmetyczne typy danych

Typ arytmetyczny w jzyku programowania okrela liczbowy zbir moliwych wartoci (instancji) zmiennych deniowanych w programie
Przykad z jzyka C: deklaracja
int k;
mwi,e zmienna k ma wartoci typu cakowitego
Uwagi:
Zmienna cakowita w realizacji komputerowej ma skoczony zbir
wartoci
7

Kodowanie wartoci cakowitej ustalone jest przez model jednostki


arytmetyczno-logicznej ALU (ang. Arithmetic-Logic Unit) zwykle
jest to kod uzupeniajcy do dwch (ang. 2s complement)
Zapis x Z w matematyce oznacza, e x moe przyj dowoln cakowit
warto liczbow
Deklaracja int k; w jzyku C oznacza, e w programie komputerowym k
moe przyjmowa wartoci z podzbioru liczb cakowitych I32 kodowanego
na 32 bitach, gdzie
In , {i Z : 2n1 i < 2n1 }
unsigned int k; ogranicza wartoci zmiennej k do podzbioru liczb na+
turalnych I32
kodowanego na 32 bitach, gdzie
In+ , {i Z : 0 i < 2n }
Deklaracje
float f; double d;
mwi, e zmienne f,d maj wartoci typu rzeczywistego
Uwagi:
Zmienna rzeczywista w realizacji komputerowej ma skoczony zbir
wartoci
Kodowanie wartoci rzeczywistej odbywa si w reprezentacji o zmiennym przecinku z pojedyncz precyzj (deklaracja float) lub podwjn precyzj (deklaracja double) zwykle zgodnie ze standardem IEEE 774 Floating Point Numbers
float f; ogranicza wartoci zmiennej f do podzbioru liczb rzeczywistych
R32,8 kodowanego na 32 bitach z cech na 8 bitach, gdzie zgodnie ze standardem IEEE 774 Floating Point Numbers




R32,8 1038,53 , 1044,85 {0} 1044,85 , 1038,53

double d; ogranicza wartoci zmiennej d do podzbioru liczb rzeczywistych


R64,11 kodowanego na 64 bitach z cech na 11 bitach, gdzie zgodnie ze
standardem IEEE 774 Floating Point Numbers




R64,11 10308.3, 10323.3 {0} 10323.3 , 10308.3

wiczenia
Uzasadnij dla n N nastpujce wasnoci:
1. In ( In+1
8

2. In+ ( In+1
+
3. In+ ( In+1

Zadania
Poka dla dowolnego k N :
S
1. Z = n=k In
S
2. N = {0} n=k In+

Problem
Uzasadnij, e kada liczba rzeczywista x 6= 0 da si zapisa jednoznacznie w
notacji naukowej:
x = (1)s(x) m(x)2c(x)


gdzie s(x) {0, 1} bit znaku, m(x) 12 , 1 mantysa, c(x) Z cecha
liczby x.

1.7

Zbir potgowy a kombinacje i permutacje

Niech U bdzie skoczonym uniwersum, n , |U |. Wtedy


Zbir 2U , {Z : Z U } nazywamy zbiorem potgowym
Liczno zbioru potgowego: |2U | = 2|U|
Jeli k {0} N i 0 k n, to k-elementowy podzbir Z U nazywamy k-elementow kombinacj elementw z U. Zbir takich kombinacji
oznaczamy przez Uk , a jego liczno prze ck,n
Wasnoci:
U0 = {}, c0,n , |U0 | = 1

Jeli k 6= k , to Uk Uk =
Pn
Sn
2U = k=0 Uk oraz k=0 ck,n = 2n

Dla 0 < k n : ck,n+1 = ck,n + ck1,n

Dowolne uporzdkowanie zbioru U nazywamy permutacj tego zbioru


Wasnoci:
Zbir n-elementowy ma n! rnych permutacji, gdzie n! jest iloczynem liczb od 1 do n :
n! , 1 n
Liczba ck,n kombinacji k-elementowych ze zbioru n-elementowego dla
k > 0 wynosi
n!
ck,n =
k!(n k)!
9

wiczenia
Oblicz liczno zbioru potgowego 2U dla:
1. U = {0, 1}
2. U = {1, 2, 3}
3. U = {1, 2, . . . , n}
Zadania
1. Narysuj trjkt Pascala dla n = 5.
2. Sprawd prawdziwo wzoru
ck,n =

n!
k!(n k)!

Problem
Niech U = {1, 2, . . . , n}, n > 2
1. Ile permutacji zbioru U ma jedynk na pozycji 2 ?
2. Ile permutacji zbioru U ma jedynk pooon na prawo od dwjki ?

1.8

Produkt kartezjaski

Niech A1 , A2 , . . . , An bd dowolnymi zbiorami. Wtedy


(a1 , a2 ) oznacza uporzdkowan par elementw gdzie a1 A1 jest pierwsz skadow pary, za a2 A2 jej drug skadow
A1 A2 , {(a1 , a2 ) : a1 A1 , a2 A2 } produkt kartezjaski zbioru A1
i zbioru A2
(a1 , . . . , an ) oznacza uporzdkowan krotk elementw gdzie ai Ai jest
i-t skadow tej krotki, i = 1, . . . , n
A1 An , {(a1 , . . . , an ) : a1 A1 , . . . an An } produkt kartezjaski zbiorw A1 , . . . , An
Jeli A1 = = An = A, to produkt kartezjaski A A oznaczamy
przez An
wiczenia
Niech A = {0, 1}, B = {2, 3}. Wyznacz:
1. C = A A
2. D = B B
10

3. A B
4. B A
5. C D
Zadania
Niech A = [0, 1], B = [1/4, 3/4]
1. Podaj interpretacj zbiorw A2 oraz A3
2. Wyznacz pole zbioru A2 B 2
3. Wyznacz objto zbioru A3 B 3
Problemy
1. Poka, e dla dowolnych a, a A, b, b B :
{a, {a, b}} = {a , {a , b }} wtt a = a oraz b = b
Wniosek: Zbir {a, {a, b}} moe by traktowany jako zbir denicyjny dla
pary elementw (a, b).
2. Niech A, B, C, D U. Podaj warunek dostateczny i konieczny na to by
(A B) (C D) = (A C) (B D)

1.9

Relacje

Intuicja: Relacja modeluje wspwystpowanie dwch lub wicej elementw w zwizkach o dowolnym charakterze
Przykady relacji:
R1 , {(x, y) : x jest ojcem y}

R2 , {(x, y, z) : punkty x, y, z s wspliniowe }

R3 , {(x, k, p, s) : ocena x z kolokwium k


na przedmiocie p otrzymana przez studenta s}

Denicja relacji midzy elementami zbiorw A1 , A2 , . . . , An :


Zbir R A1 An modeluje relacj n-argumentow
Jeli n = 2, to relacja jest nazywana relacj binarn. Wtedy zamiast
(a1 , a2 ) R piszemy a1 Ra2
Relacja binarna moe by reprezentowana gracznie:
jeli a1 Ra2 , to z wierzchoka o etykiecie a1 prowadzimy ga do wierzchoka o etykiecie a2 i z grotem wskazujcym na niego.
11

Relacja odwrotna R1 do relacji binarnej R A1 A2 :


R1 , {(a2 , a1 ) : (a1 , a2 ) R}
Dziedzina relacji binarnej R A1 A2 :
DR , {a1 A1 : a1 Ra2 dla pewnego a2 A2 }
Przeciw-dziedzina relacji binarnej R A1 A2 :
1
DR
, {a2 A2 : a1 Ra2 dla pewnego a1 A1 }
1
Wasno: DR
= DR1

Denicje:
Relacja binarna jest zwrotna wtt aRa dla wszystkich a DR

Relacja binarna jest symetryczna wtt (aRb wtt bRa)

Relacja binarna jest przechodnia wtt aRb i bRc implikuje aRc


Relacja binarna zwrotna, symetryczna i przechodnia nazywa si relacj rwnowanoci
Niech [x]R , {y A : xRy} bdzie tzw. klas rwnowanoci relacji
rwnowanoci R o dziedzinie A. Wtedy
xRy wtt [x]R = [y]R
dla dowolnych x, y A : [x]R = [y]R lub [x]R [y]R =
Zbir wszystkich klas rwnowanoci relacji R w zbiorze A oznaczamy
przez A/R.
wiczenia
1. Okrel zbiory A, B, C, D, w produktach kartezjaskich ktrych okrelono
nastpujce relacje:
(a) A B R1 , {(x, y) : x jest synem y}

(b) A B C R2 , {(x, y, z) : punkty x, y, z nie s wspliniowe }

(c) ABCD R3 , {(x, a, p, s) : ocena x wystawiona przez asystenta a


na przedmiocie p studentowi s}

2. Podaj po cztery przykady relacji


(a) midzyludzkich wystpujcych w grupie pracowniczej
(b) midzy dwoma dowolnymi koami na paszczynie
(c) midzy dugoci, mas i mark samochodu
12

3. Narysuj graf nastpujcych relacji binarnych:


(a) R4 , {(A, B), (B, C), (C, D), (D, A)}

(b) R5 , {(A, B), (A, C), (A, D), (A, A)}


(c) R6 , {(B, A), (C, A), (D, A), (A, A)}

(d) R7 , {(B, A), (C, A), (D, A), (D, C), (C, B), (B, D)}
4. Wyznacz relacje Ri1 , i = 1, . . . , 7, tj. relacje odwrotne do relacji R1 , . . . , R7 ,
zdeniowanych w powyszych wiczeniach.
Zadania
1. Kiedy dziedzina relacji jest pusta ?
2. Kiedy przeciw-dziedzina relacji jest pusta ?
3. Niech a, b Z, aRb wtedy i tylko wtedy gdy a i b s parzyste. Czy relacja
R jest relacj rwnowanoci ?
4. Ile rnych klas rwnowanoci ma nastpujca relacja liczb cakowitych
przy ustalonym m Z :
xRy wtt m dzieli x y
Problemy
1
1. Udowodnij: DR1 = DR

2. Okrelamy relacj R w zbiorze A instancji typu int w C nastpujco: xRy


wtt instancje x i y reprezentuj t sam liczb cakowit. Poka, e R jest
relacj rwnowanoci, dla ktrej A/R = I32 .

1.10

Funkcje

Niech R A1 A2 bdzie relacj.


Denicje:
Obraz elementu a1 A1 :
R(a1 ) , {a2 A2 : a1 Ra2 }
Przeciw-obraz elementu a2 A2 :
R1 (a2 ) , {a1 A1 : a1 Ra2 }
Binarna relacja R nazywa si funkcj czciow wtt |R(a1 )| = 1 dla wszystkich a1 DR .
13

Funkcj czciow f identykujemy symbolami: f : A1 A2

Funkcja czciowa f : A1 A2 nazywa si funkcj jeli Df = A1 .


Funkcj f identykujemy symbolami: f : A1 A2
f

Dla funkcji zapis relacyjny a1 f a2 zastpujemy przez a2 = f (a1 ) lub a1 7


a2
Szczeglne rodzaje funkcji:
f : A1 A2 jest jednoznaczn funkcj w A2 wtt |f 1 (a2 )| = 1 dla
wszystkich a2 Df 1
Wasno: Relacja odwrotna do funkcji jednoznacznej w jest funkcj czciow
f jest jednoznacznym odwzorowaniem A1 na A2 wtt |f 1 (a2 )| = 1
dla wszystkich a2 Df 1 oraz Df 1 = A2
Wasno: Relacja odwrotna do funkcji jednoznacznej na jest funkcj jednoznaczn na
wiczenia
1. Czy relacja x jest ojcem y jest funkcj w zbiorze wszystkich mczyzn?
2. Czy relacja x jest synem y jest funkcj w zbiorze wszystkich mczyzn?
3. Czy relacja x jest synem y jest funkcj czciow w zbiorze wszystkich
mczyzn?
4. Czy relacja osoba x ma yjcego ojca y jest funkcj czciow?
5. Niech f (x) = |x| dla x [1, 1]. Wyznacz dla f
(a) Przeciw-obraz zera
(b) Przeciw-obraz y (0, 1]
(c) Przeciw-obraz y R [0, 1]
Zadania
1. Dlaczego funkcja f (x) = 1/x jest funkcj czciow w R ?
2. Ile istnieje rnych funkcji postaci f : {0, 1} {0, 1}

Problemy

1. Poka, e graf relacji binarnej bdcej funkcj f : X X na skoczonym


zbiorze X zawiera co najmniej jeden cykl.
2. Poka, e funkcja jest jednoznaczna na wtedy i tylko wtedy gdy jej graf
jako relacji binarnej skada si z rozcznych cykli.
3. Sprawd, e liczba funkcji binarnych na zbiorze n-elementowym rwna si
liczbie podzbiorw tego zbioru.
14

1.11

Zoony typ danych a produkt kartezjaski

Niech A1 , A2 , . . . , An bd zbiorami instancji typw T1 , . . . , Tn . Wtedy


W jzykach programowania skadowe instancji zoonego typu zamiast
numeru pozycji maj swoje nazwy
W jzyku C typ zoony jest nazywany struktur i ma on ogln posta:
typedef struct{T1 nazwa1;...,Tn nazwan} T;
z deklaracj zmiennej x typu T w postaci T x;
lub
struct T {T1 nazwa1;...,Tn nazwan};
z deklaracj zmiennej x typu T w postaci:
struct T x;
Przykad struktury numerycznej:
typedef struct{double re; double im} Complex;
Przykad struktury biznesowej:
typedef struct{int seria, int numer, float cena, String opis} Produkt;
Typ T zoony z typw T1 , . . . , Tn ma instancje w postaci krotek o skadowych, ktre s instancjami kolejno typw T1 , . . . , Tn
Wniosek: Produkt kartezjaski zbiorw instancji typw T1 , . . . , Tn jest
zbiorem instancji typu zoonego T
Jeli A jest zbiorem instancji typu danych T i R jest relacj rwnowanoci
w A, to zbir A/R nazywamy modelem MR typu danych T wzgldem
relacji R.
Wasno: Jeli typ T jest zoony z typw T1 , . . . , Tn i MR1 , . . . , MRn s
modelami tych typw, to MR jest modelem typy T wzgldem relacji R
okrelonej nastpujco w zbiorze instancji typu T :
(x1 , . . . , xn )R(y1 , . . . , yn ) wtt xi Ri yi , i = 1, . . . , n
Co wicej, model typu zoonego jest produktem kartezjaskim modeli
skadowych:
MR = MR1 MRn
wiczenia
1. Opisz zbir instancji typu danych zoonego
(a) z dwch skadowych typu int:
typedef struct{int m; int n;} T;
(b) z trzech skadowych typu double:
typedef struct{double a; double b; double c;} T;
15

2. Podaj trzy dowolne instancje typu:


(a) Complex
(b) Product
Zadania
Model typu danych Ti ma ni elementw, i = 1, 2. Ile elementw ma model typu
1. typedef struct{T1 a; T2 b;} T3;
2. typedef struct{T1 a; T2 b; T1 c;} T4;
3. typedef struct{T1 a; T2 b; T1 c; T2 d;} T5;

1.12

Generalizacja typw danych

Przyrostowe tworzenie krotki:


(a1 , a2 , a3 ) jest rwnowane ((a1 , a2 ), a3 )
Przyrostowe tworzenie produktu kartezjaskiego:
A1 A2 A3 = (A1 A2 ) A3
Kontekst koncepcji generalizacji typw danych:
Najpierw programujemy wasnoci oglne obiektu (np. ruch gury),
a nastpnie jego specyczne atrybuty (np. wizualizacja koa)
Rozszerzenie projektu o nowe funkcjonalnoci wymaga dodania nowych atrybutw mechanizmy dziedziczenia w programowaniu obiektowym pozwalaj je realizowa bez aktualizacji istniejcych ju moduw oprogramowania
Przykady:
Do przemieszczenia gury symetrycznej wzgldem jej rodka wystarczy jego przemieszczenie. Natomiast narysowanie takiej gury, np.
piercienia i koa wymaga znajomoci innych parametrw. Doczenie tych parametrw do informacji o rodku jest przykadem rozszerzania typw danych lub dziedziczenia typw danych.
W jzyku Java dodanie do typu T1 atrybutu nowyAtrybut symbolizuje konstrukcja extends tworzc nowy typ danych
T2:class T2 extends T1 {int nowyAtrybut;...}
wiczenia
Niech T1 bdzie typem danych zoonym z dwch skadowych typu int:
typedef struct{int m; int n;} T1;
16

1. Opisz zbir instancji typu danych, ktry specjalizuje T1 (operacja odwrotna do generalizacji):
(a) class T2 extends T1 {double a; double b;}
(b) class T3 extends T1 {int k; int l;}
2. Podaj trzy dowolne instancje typu
(a) T2
(b) T3
Zadania
Model typu danych Ti ma ni elementw, i = 1, 2. Ile elementw ma model typu
1. class T3 extends T1 {T2 pole;}
2. class T4 extends T2 {T1 pole;}

1.13

Atrybuty i cechy

Przykady stosowania poj atrybut, cecha:


Jan ma 175 cm wzrostu obiekt: konkretny Jan; atrybut: wzrost;
cecha: 175 cm
Kolor dominujcy w tym obrazie jest czerwony obiekt: konkretny
obraz; atrybut: kolor dominujcy; cecha: kolor czerwony
Toyota Corolla z silnikiem 2, 5 litra kosztuje 20 tysicy Euro obiekt:
konkretny model samochodu; atrybut 1: pojemno silnika; cecha 1:
2,5 litra; atrybut 2: cena; cecha 2: 20 tysicy Euro
Cecha c C przysuguje obiektowi o O w kontekcie danego atrybutu
a:
a
o 7 c, c = a(o)
Atrybut a jest funkcj okrelon na zbiorze obiektw O o wartociach w
zbiorze cech C
a:OC
wiczenia
1. Okrel obiekt, atrybut i cech w zdaniu
(a) So ma dwie tony wagi.
(b) Temperatura barwowa tego obrazu wynosi 3000 Kelvina
(c) Ja ma 38 gorczki
(d) Subaru Impreza ma moc 200 KM
17

2. Okrel zbir obiektw, atrybut i zbir cech dla


(a) wagi soni w ZOO warszawskim
(b) temperatur barwowych obrazw w Muzeum Narodowym
(c) temperatur dzieci w przedszkolach omyskich
(d) mocy samochodw produkowanych w Europie w roku 2003
Zadania
1. Podaj przykad atrybutu, ktrego cechy s trjkami liczb cakowitych z
przedziau [0, 255].
2. Ile rnych atrybutw binarnych mona okreli na zbiorze trzech obiektw.

1.14

Tabela relacyjna

Kontekst tabeli relacyjnej: bazy danych takie jak baza Access, Oracle,
Postgress, MySQL to kolekcje tabel relacyjnych
Tabela relacyjna to dwuwymiarowy zestaw danych, w ktrym:
wiersz tabeli odpowiada obiektowi danych
kolumna tabeli reprezentuje atrybut
element cij lecy na przeciciu wiersza obiektu oi i kolumny atrybutu aj jest cech tego obiektu
cij = aj (oi ) Cj
Zwykle cecha w tabeli relacyjnej jest liczb, acuchem znakw (ang.
String), lub jest instancj specjalnego typu, np. typu data, czas (ang.
Date, Time)
Dlaczego termin tabela relacyjna ? Jest kilka powodw:
Tabela relacyjna z atrybutami a1 , . . . , an reprezentuje nastpujc
szczegln relacj:
Ra , {(a1 (o), . . . , an (o)) : o O} C1 Cn
Krotka (a1 (o), . . . , an (o)) to wiersz tabeli opisujcy obiekt o
Dowoln relacj Ro midzy kolekcjami obiektw O1 , O2 mona opisa
tzw. asocjacyjn tabel relacyjn z jednym atrybutem zoonym a
a : O1 O2 N N,
ktry przypisuje parze obiektw (o1 , o2 ) par ich identykatorw (id(o1 ), id(o2 ))
18

wiczenia
1. Okrel obiekty, atrybuty, cechy i ich typy w nastpujcej tabeli relacyjnej
Nazwisko
Abacki
Babacki

Imi
Karol
Jan

Waga [kg]
55,4
47,6

Wzrost [cm]
155
134

2. Zaprojektuj tabel relacyjn reprezentujc list ocen z Matematyki Dyskretnej dla dwch kolokwiw i egzaminu pisemnego. Zapenij jeden wiersz
tej tabeli oczekiwanymi przez siebie danymi
Zadania
1. Czy tabela relacyjna moe zawiera dwa rne wiersze o tej samej zawartoci ?
2. Tabele w bazach danych mog mie niektre pozycje typu brak danych.
Jak zmodykowa denicj atrybutu, by obejmowaa przypadki pozycji
nie zdeniowanych ?

1.15

Cigi i macierze

Niech I Z bdzie zbiorem indeksw cakowitych.


Cig c = (ci )iI elementw ze zbioru Z indeksowany przez I jest funkcj
postaci
c : I Z, c(i) , ci Z, i I
Przykady:
Jeli I = N oraz Z = R, to cig c jest cigiem liczb rzeczywistych
Jeli I = [1, n], to c jest wektorem dugoci n, c Z n

Jeli I = [0, 9] oraz Z jest zbiorem instancji typu int w jzyku C,


to c jest instancj macierzy jednowymiarowej deklarowanej jako int
c[10];

Niech Ij Z bdzie j-tym zbiorem indeksw cakowitych, j = 1, . . . , k.


Niech i = (i1 , . . . , ik ) I , I1 . . . Ik bdzie wielo-indeksem
Macierz elementw c = (ci )iI ze zbioru Z indeksowany przez I jest funkcj postaci
c : I Z, c(i) , ci , i I
Przykady:
Jeli I1 = I2 = N oraz Z = R, to cig c jest nieskoczon macierz
liczb rzeczywistych
19

Jeli I1 = [1, m], I2 = [1, n] to c jest macierz o m wierszach i n


kolumnach. Zbir takich macierzy oznaczamy przez Z mn
Jeli I1 = [0, 9], I2 = [0, 19] oraz Z jest zbiorem instancji typu float
w jzyku C, to c jest instancj macierzy deklarowanej jako double
c[10][20];
wiczenia
1. Okrel zbir indeksw dla
(a) wektora wierszowego [c2 , c1 , c0 , c1 , c2 , c3 ]
(b) wektora kolumnowego

c0
c1
t
[c0 , c1 , c2 , c3 ] ,
c2
c3
(c) macierzy kwadratowej

(d) macierzy prostoktnej




c0,0
c1,0

c1,1
c2,1

c0,1
c1,1

c1,2
c2,2

c1,3
c2,3

2. Ile elementw zawiera macierz o zbiorze indeksw I = [0, 5]3 ?


Zadania
1. Dlaczego wektor jest szczeglnym przypadkiem macierzy dowolnego wymiaru ?
2. Ile elementw zawiera macierz o zbiorze indeksw I = I1 I2 I3 , gdzie
|Ii | = ni , i = 1, 2, 3 ?

1.16

Diagramy relacyjne w UML

wiczenia
Narysuj diagram relacyjny dla:
1. roli Nauczyciel uczy matematyk jeli nauczyciel jest typu Pracownik, a
matematyka jest typu Przedmiot nauczania
2. generalizacji typu Koo, Prostokt i elipsa do typu Ksztat
3. kompozycji typw rodek koa i Promie koa do typu Koo
4. kolekcji obiektw typu Ksztat
20

datatype
Pracownik Umysowy

szef

datatype
Kampania Reklamowa

kieruje
0..*

Aggregation

datatype
Komponent

1..*
datatype
Reklama

Composition

Generalization
datatype
Reklama TV

datatype
Reklama prasowa

Rysunek 1: Relacje w UML: composition kompozycja obiektw, aggregation


kolekcje obiektw, generalization generalizacja (opozycja dziedziczenia)

Algebry
Pojcie algebry:
1. Dziedzina D algebry, np. zbir liczb rzeczywistych, t.j. D = R

2. Operacje O algebry, np. dodawanie, odejmowanie, mnoenie i dzielenie w zbiorze liczb rzeczywistych, t.j. O = {+, , , /}

3. Operacja ma ustalon liczb argumentw, np. dodawanie ma dwa


argumenty
4. Operacje mog by funkcjami czciowymi, np. dzielenie
Przykady algebr:
1. Zbir liczb cakowitych Z z dodawaniem + i odejmowaniem : (Z; +, )

2. Zbir liczb rzeczywistych R z dodawaniem +, odejmowaniem , mnoeniem i dzieleniem / : (R; +, , , /)

3. Zbir izometrii I przestrzeni z operacj skadania funkcji: (I; )


np. obrt na paszczynie o kt wok punktu O(x0 , y0 ) :
x = x0 + x cos() + y sin()
y = y0 x sin() + y cos()
np. symetria osiowa wzgldem osi x :
x = x
y = y
21

wiczenia
1. Dlaczego operacja dzielenia w R jest funkcj czciow?
2. Jaka operacja okrelona jest w algebrze obrotw paszczyzny w siebie?
3. Jaka operacja okrelona jest w algebrze izometrii paszczyzny w siebie?
4. Jakie przeksztacenie okrelone jest przez zoenie dwch symetrii osiowych wzgldem tej samej osi ?
Zadania
1. Uzasadnij, e zoenie dwch obrotw jest obrotem
2. Uzasadnij, e zoenie dwch izometrii jest izometri

2.1

Intuicje informacyjne algebry

Jednostka arytmetyczno-logiczna (ALU) w komputerze (cz jednostki


centralnej CPU) realizuje operacje arytmetyczne i bitowe na liczbach ze
zbioru I64
Kade zdanie programu C okrela funkcj na pamici komputera
Kade zdanie programu C okrela funkcj na globalnym stanie programu
Wynik programu jest zoeniem funkcji zoenie jest tu operacj w zbiorze funkcji realizowanych przez kolejne zdania programu C
Wynik programu jest zoeniem elementarnych operacji arytmetycznologicznych
Algebra Boolea stanowi podstaw projektowania ukadw logicznych

2.2

Denicja algebry oglnej

Formalna denicja algebry oglnej:


.

A , (X, K; fi : X ni X, i = 1, . . . , K)
gdzie
X jest dziedzin algebry
fi jest i-t operacj algebry (funkcja czciowa!)
ni jest liczb argumentw i-tej operacji
22

2.2.1

Algebry a klasy obiektw

Algebra A czy w logiczn cao zbir X i operacje fi na tym zbiorze


Klasa K w programowaniu obiektowym okrela zbir instancji (obiektw)
tej klasy i jednoczenie operacje na tych instancjach i opcjonalnie na instancjach innych klas.
Warto operacji klasy K moe by instancj klasy K 6= K, np.: class X
{int x; improve(); Y produce(double a);}
Biorc produkt kartezjaski zbiorw instancji rodziny klas, ktre s uywane w danej aplikacji moemy traktowa kad operacj w klasie jako
operacj w takim zbiorze. Otrzymujemy wic algebr.
2.2.2

Diagramy klas w UML

UML pozwala na reprezentacj graczn klasy (rys.2)


Z diagramu klasy mona generowa denicj klasy w rnych jzykach,
np. w Javie lub C++

2.3

Algebra Boolea

Operacja NOT : {0, 1} {0, 1}


x , NOT(x) , 1 x, x {0, 1}
Operacja AND : {0, 1} {0, 1} {0, 1}
AND(x, y) , x&y , x y, x, y {0, 1}
Operacja OR : {0, 1} {0, 1} {0, 1}
OR(x, y) , x|y , x + y xy, x, y {0, 1}
Prawa deMorgana w algebrze Boolea:
NOT OR:
x|y = x&y

23

Rysunek 2: Diagram klas w UML: klasa Shape jest generalizacj klas Circle,
Rectangle
NOT AND:
x&y = x|y
Funkcja Boolea, inaczej funkcja bitowa n argumentowa to kada funkcja
f taka, e:
f : {0, 1}n {0, 1}
wiczenia
1. Czemu su operacje logiczne w CPU?
2. Niech funkcja bitowa NAND bdzie okrelona wzorem:
NAND(x, y) , x&y , x&y
Sprawd, e x = x&x.
3. Niech funkcja bitowa N OR bdzie okrelona wzorem:
NOR(x, y) , | , x|y
Sprawd, e x = x|x.
4. Czym si rni operacja skadania funkcji mnocych liczby cakowite od
operacji mnoenia liczb cakowitych?
24

Zadania
Poka, e funkcja f da si wyrazi przez funkcj g, gdzie
1. f = NOT, g = NAND
2. f = AND, g = NAND
3. f = OR, g = NAND
4. f = NOT, g = NOR
5. f = OR, g = NOR
6. f = AND, g = NOR
Problemy
1. Poka,e nastpujce funkcje bitowe maj warto 1 tylko w jednym elemencie dziedziny, a w pozostaych warto 0.
x&y&z
x&y&z
x&y&z
x&y&z

=1
=1
=1
=1

wtt
wtt
wtt
wtt

x = 1, y
x = 0, y
x = 0, y
x = 0, y

= 1, z
= 1, z
= 0, z
= 0, z

=1
=1
=1
=0

2. Jaka jest posta wyraenia Boolea zoonego tylko z funkcji NOT oraz
AND, ktra przyjmuje 1 tylko w nastpujcym elemencie dziedziny:
(a) x = 0, y = 1, z = 0
(b) x = 1, y = 0, z = 0
(c) x = 1, y = 0, z = 1
(d) x = 1, y = 1, z = 0
3. Oznaczmy funkcj bitow przyjmujc warto 1 tylko w elemencie (a, b, c)
przez fa,b,c . Poka, e funkcja g przyjmuje warto 1 tylko w elementach
ze zbioru A, gdzie:
(a) g(x, y, z) = f0,0,0 (x, y, z)|f1,1,1 (x, y, z), A = {(0, 0, 0), (1, 1, 1)}

(b) g(x, y, z) = f1,0,0 (x, y, z)|f0,1,0 (x, y, z)|f0,0,1 (x, y, z),


A = {(1, 0, 0), (0, 1, 0), (0, 0, 1)}

4. Poka, e kada funkcja bitowa f o trzech argumentach da si przedstawi jako zoenie funkcji NOT, AND, OR w tzw. dyzjunkcyjnej postaci
normalnej:
f (x, y, z) = OR(a,b,c):f (a,b,c)=1fa,b,c (x, y, z)
gdzie ORI W (i) oznacza wyraenie czce operacj OR wartoci wyraenia W (i) otrzymane dla kadego i I.
25

5. Zapisz i uzasadnij uoglnienie dyzjunkcyjnej postaci normalnej dla dowolnej funkcji bitowej o n argumentach, n > 1
6. Zapisz posta dyzjunkcyjn normaln dla funkcji Boolea f zadanej tabel:
x
0
0
0
0
1
1
1
1

y
0
0
1
1
0
0
1
1

z
0
1
0
1
0
1
0
1

f(x,y,z)
1
0
1
0
1
0
1
0

7. Poka,e nastpujce funkcje bitowe maj warto 0 tylko w jednym elemencie dziedziny, a w pozostaych warto 1.
x|y|z
x|y|z
x|y|z
x|y|z

=0
=0
=0
=0

wtt
wtt
wtt
wtt

x = 0, y
x = 1, y
x = 1, y
x = 1, y

= 0, z
= 0, z
= 1, z
= 1, z

=0
=0
=0
=1

8. Jaka jest posta wyraenia Boolea zoonego tylko z funkcji NOT oraz
OR, ktra przyjmuje 0 tylko w nastpujcym elemencie dziedziny:
(a) x = 0, y = 0, z = 1
(b) x = 0, y = 1, z = 0
(c) x = 0, y = 1, z = 1
(d) x = 1, y = 0, z = 1
9. Oznaczmy funkcj bitow przyjmujc warto 0 tylko w elemencie (a, b, c)
przez f a,b,c . Poka, e funkcja g przyjmuje warto 0 tylko w elementach
ze zbioru A, gdzie:
(a) g(x, y, z) = f 0,0,0 (x, y, z)&f 1,1,1 (x, y, z), A = {(0, 0, 0), (1, 1, 1)}

(b) g(x, y, z) = f 1,0,0 (x, y, z)&f 0,1,0 (x, y, z)&f 0,0,1 (x, y, z),
A = {(1, 0, 0), (0, 1, 0), (0, 0, 1)}

10. Poka, e kada funkcja bitowa f o trzech argumentach da si przedstawi jako zoenie funkcji NOT, OR i AND w tzw. koniunkcyjnej postaci
normalnej:
f (x, y, z) = AND(a,b,c):f (a,b,c)=1f a,b,c (x, y, z)
gdzie ANDI W (i) oznacza wyraenie czce operacj AND wartoci wyraenia W (i) otrzymane dla kadego i I.
26

11. Zapisz i uzasadnij uoglnienie koniunkcyjnej postaci normalnej dla dowolnej funkcji bitowej o n argumentach, n > 1
12. Zapisz posta koniunkcyjn normaln dla funkcji Boolea f zadan powysz tabel.

2.4

Ukady zupene funkcji Boolea

S zbir funkcji selekcji, t.j. funkcji postaci:


f (x1 , x2 , . . . , xn ) = xi dla pewnego i [1, n]
C zbir funkcji staych, t.j. funkcji postaci:
f (x1 , x2 , . . . , xn ) = const
Zbir funkcji Boolea F nazywa si ukadem zupenym wtt dowolna funkcja
Boolea da si przedstawi jako zoenie funkcji z F S C
Zbir funkcji {|, &, } jest ukadem zupenym
Zbir funkcji {&, } jest ukadem zupenym
Zbir funkcji {|, } jest ukadem zupenym
Zbir funkcji {|} jest ukadem zupenym
Zbir funkcji {&} jest ukadem zupenym
Fakt: Jeli funkcje ukadu zupenego A moemy otrzyma przez zoenie
z funkcji ukadu B, to ukad B jest zupeny
Funkcja Boolea f : {0, 1}n {0, 1} jest monotoniczna wtt
xi xi , i = 1, . . . , n f (x1 , . . . , xn ) f (x1 , . . . , xn )
Fakt: Zoenie funkcji monotonicznych jest funkcj monotoniczn
Wniosek: Ukad zupeny zawiera co najmniej jedn funkcj, ktra nie jest
monotoniczna
Funkcja Boolea f : {0, 1}n {0, 1} jest samosprzona wtt
f (x1 , . . . , xn ) = f (x1 , . . . , xn )
Fakt: Zoenie funkcji samosprzonych jest funkcj samosprzon
Wniosek: Ukad zupeny zawiera co najmniej jedn funkcj, ktra nie jest
samosprzona
27

Dla funkcji n argumentowej f, ktra nie jest samosprzona istnieje krotka


(a1 , . . . , an ) {0, 1}n, na ktrej f nie jest sprzona, t.j.:
f (a1 , . . . , an ) = f (a1 , . . . , an )
W klasie funkcji Boolea, ktre nie s samosprzone wyrniamy funkcje
f ktre s sprzone w zerze, t.j.
f (0, . . . , 0) = f (1, . . . , 1)
f (a1 , . . . , an ) = f (a1 , . . . , an )
dla pewnego (a1 , . . . , an )
Twierdzenie 2.1 O warunkach na zupeno ukadu
Jeli ukad funkcji Boolea zawiera funkcj f1 niemonotoniczn i funkcj f2
sprzon w zerze, ktra nie jest samosprzona, to ukad ten jest zupeny.
Dowd:

Pokaemy najpierw, e z funkcji f1 (x1 , . . . , xn ) moemy skonstruowa funkcj N OT . Mianowicie brak monotonicznoci oznacza istnienie takich dwch elementw w dziedzinie f1 , e po
uporzdkowaniu zmiennych wedug rosncych wartoci mamy:
f1 (0, . . . , 0, 1, . . . , 1, 1, . . . , 1) = 0
f1 (0, . . . , 0, 0, . . . , 0, 1, . . . , 1) = 1
Podstawiajc x = 0, 1 sprawdzamy, e funkcja
g(x) , f1 (0, . . . , 0, x, . . . , x, 1, . . . , 1) = x
Nastpnie pokaemy, e z funkcji f2 moemy przez waciwe podstawienie zmiennych x, y jako
argumentw funkcji otrzymamy jedn z funkcji AND, NOR, OR lub NAND.
Mianowicie x podstawiamy w miejsce jedynek sekwencji (a1 , . . . , an ), dla ktrej nie jest speniony warunek sprzenia:
f2 (a1 , . . . , an ) = f2 (a1 , . . . , an )
Zmienn y podstawiamy w miejsce zer tej sekwencji. Obydwa podstawienia si moliwe gdy
sekwencja ta nie moe skada si z samych zer lub samych jedynek konsekwencja warunku
sprzenia w zerze. Porzdkujc argumenty wedug rosncych wartoci mamy:
f2 (0, . . . , 0, 1, . . . , 1) = f2 (1, . . . , 1, 0, . . . , 0)
h(x, y) , f2 (y, . . . , y, x, . . . , x)
h(0, 1) = h(1, 0)
Poniewa h(0, 0) = f2 (0, . . . , 0) = f2 (1, . . . , 1) = h(1, 1). Rozwaajc dwie moliwe wartoci
dla h(0, 0) i rwnie dwie moliwoci dla h(0, 1) otrzymujemy nastpujce cztery moliwoci na
funkcj h :
x
0
0
1
1

y
0
1
0
1

h(x,y)
0
0
0
1

h(x,y)
1
0
0
0

h(x,y)
0
1
1
1

h(x,y)
1
1
1
0

Widzimy wic, e moemy z funkcji f2 otrzyma:


AND dla h(0, 0) = 0, h(0, 1) = 0 wtedy otrzymane AND wraz z NOT (otrzymanym z
f1 ) jest ukadem zupenym
NOR dla h(0, 0) = 1, h(0, 1) = 0 wtedy otrzymane NOR tworzy ukad zupeny

28

OR dla h(0, 0) = 0, h(0, 1) = 1 wtedy otrzymane OR wraz z NOT (otrzymanym z


f1 )jest ukadem zupenym
NAND dla h(0, 0) = 1, h(0, 1) = 1 wtedy otrzymane NAND tworzy ukad zupeny

Std f1 oraz f2 tworz ukad zupeny, bo z nich moemy otrzyma ukad zupeny.

wiczenia:
Stosujc twierdzenie o ukadach zupenych sprawd zupeno ukadu:
1. AND i NOT
2. OR i NOT
3. AND, OR i NOT
4. NAND
5. NOR

2.5

Wasnoci algebry Boolea

Przemienno:
x|y = y|x, x&y = y&x
czno:
x|(y|z) = (x|y)|z, x&(y&z) = (x&y)&z
Rozdzielno koniunkcji wzgldem alternatywy:
x&(y|z) = (x&y)|(x&z)
Rozdzielno alternatywy wzgldem koniunkcji:
x|(y&z) = (x|y)&(x|z)
Wasnoci negacji:
x = x, x|y = x&y, x&y = x|y
Peno negacji:
x|x = 1, x&x = 0
Wasnoci zera:
x|0 = x, x&0 = 0
Wasnoci jedynki:
x&1 = x, x|1 = 1
29

wiczenia
Uzasadnij rwnoci funkcji Boolea:
1. x&y&z = z|x|y
2. x|y|z = z&x&y
3. x&(x|y)&y = 0
4. x|(x&y)|y = 1

2.6

Mapa Karnaugh

Eliminacja zmiennej i jej negacji w alternatywie koniunkcji:


x&w|x&w = w
bo
x&w|x&w = (x|x)&w = 1&w = w
gdzie w jest dowolnym wyraeniem boolowskim
Eliminacja zmiennej i jej negacji w koniunkcji alternatyw:
(x|w)&(x|w) = w
bo
(x|w)&(x|w) = (x&x)|w = 0|w = w
gdzie w jest dowolnym wyraeniem boolowskim
Eliminacja dwch zmiennych w koniunkcji alternatyw:
(x|y|w)&(x|y|w)&(x|y|w)&(x|y|w) = w
Eliminacja dwch zmiennych w alternatywie koniunkcji:
x&y&w|x&y&w|x&y&w|x&y&w = w
bo
x&y&w|x&y&w|x&y&w|x&y&w = (x&y&w|x&y&w)|(x&y&w|x&y&w) =
= y&w|y&w = w
wiczenia:
Upro wyraenia boolowskie do wyraenia o:
1. jednej zmiennej: x&y|y&x
2. dwch zmiennych: x&y&z|x&z&y
30

3. jednej zmiennej: x&y&z|y&x&z|x&y&z|x&z&y


4. jednej zmiennej: (x|y)&(y|x)
5. dwch zmiennych: (x|y|z)&(x|z|y)
6. jednej zmiennej: (x|y|z)&(y|x|z)&(x|y|z)&(x|z|y)

2.7

Rachunek zda

Przykady zda o wartoci logicznej prawda (1):


1000 = 1000
5 < 55
17 = 7 + 10
sze jest liczb parzyst
1024 jest cakowit potg dwjki
Przykady zda o wartoci logicznej fasz (0):
1000 = 2000
5 > 15
17 = 2 + 51
sze jest liczb nieparzyst
1024 jest cakowit potg trjki
Nastpujcym zdaniom nie mona przypisa wartoci logicznej:
x = 2000
x>y
x=y+z
2.7.1

Spjniki logiczne

Spjnik

Nazwa
negacja
alternatywa
koniunkcja
rwnowano
implikacja
alt. wyczna

Spjnik w C

Funkcja Boolea

Funkcja w C

!
k
&&
==

|
&
=

|
&

31

2.7.2

Wyraenia logiczne

Budowa wyrae logicznych:


Stae logiczne: T F
Zmienne logiczne:
a b c ...x y z
Wyraenia atomowe: stae logiczne lub zmienne logiczne
Negacja atomw:
a b c . . . x y z T F
Wyraenia zoone z wyrae prostszych w1 , w2 :
(w1 )
(w1 ) (w2 )
(w1 ) (w2 )
(w1 ) (w2 )
Jeli wyraenie w1 lub w2 jest atomem lub jego negacj, to pomijamy
nawiasy.
Przykady wyrae logicznych:
a, x y, (a b) (a b)
Wyraenie logiczne w reprezentuje funkcj Boolea fw
Niech wyraenia logiczne w1 i w2 bd zbudowane z tego samego zestawu
zmiennych logicznych. Mwimy, e
w1 i w2 s logicznie rwnowane, w1 w2 , wtt okrelaj t sam
funkcj Boolea:
w1 w2 wtt fw1 = fw2
w1 implikuje w2 , w1 = w2 , wtt jedynki fw1 s jedynkami fw2 :
w1 = w2 wtt fw1 fw2 wttfw1 (a, b, . . . ) = 1 fw2 (a, b, . . . ) = 1
Jeli fw nie przyjmuje wartoci zero, to wyraenie w nazywa si tautologi
Rwnowana denicja wyrae rwnowanych:
w1 w2 wtt (w1 ) (w2 ) jest tautologi
Rwnowana denicja implikacji logicznej:
w1 = w2 wtt (w1 ) (w2 ) jest tautologi
32

Wane tautologie:
a a
a a

(a b) (a b)
(a b) b a

(a b) (a b)
kontrapozycja: (a b) (b a)
modus ponens: (a (a b)) b

modus tollens: (a (b a)) b


zaprzeczenie: (p F ) p

przechodnio implikacji:[(a b) (b c)] (a c)


Zadania:
1. Wiemy, e zdanie a b jest prawdziwe. Co mona powiedzie o prawdziwoci zdania:
[a b (a b)] [((a b)) (a b)]
2. Co moesz powiedzie o prawdziwoci zda a , x A, b , y B, c , y
A jeli nastpujce implikacje s prawdziwe:
Jeli x A oraz y B, to y A
Jeli x 6 A oraz y A, to y 6 B
3. Sprawd czy nastpujce wyraenia logiczne s tautologiami:
(a) (a b) (a c) (a (b c))

(b) (a c) (b c) ((a b) c)
(c) (a b) (a b)

(d) (a (b c)) ((a b) c)


(e) (a b) (a b)
(f) (a b) (a b) (a b)

(g) (a b) ((a b) b)

(h) (a b) ((a b) (c c))


(i) ((a b) c) (b (a c))

Problemy:
1. W pewnej wiosce ludzie dziel si na dwie grupy K i P. W grupie K s
ci, ktrzy zawsze kami, a w grupie P ci, ktrzy zawsze mwi prawd.
Okrel przynaleno osb do tych grup, jeli:
33

(a) spotykaj si osoby A, B i A powiada do B przynajmniej jeden z


nas jest kamc
(b) spotykaj si osoby A, B i A powiada ja jestem kamc lub B nie
jest kamc
(c) spotykaj si osoby A, B, C i A powiada wszyscy jestemy kamcami, za B na to tylko jeden z nas nie kamie
(d) spotykaj si osoby A, B, C i A powiada panowie naleycie do tej
samej grupy co powie C jeli kto go zapyta czy A i B s w tej
samej grupie?
2. W pewnej wiosce w Transylwanii mieszkaj osobnicy, ktrych mona zaliczy do jednej z czterech kategorii: (1) ludzie zdrowi, ktrzy zawsze mwi
prawd; (2) ludzie chorzy, ktrzy zawsze kami; (3) wampiry zdrowe, ktre zawsze kami; (4) wampiry chore, ktre zawsze mwi prawd.
(a) Pewien mieszkaniec tej wioski powiada jestem albo czowiekiem albo
jestem zdrowy. Do jakiej kategorii naley ta osoba?
(b) Inny mieszkaniec powiada nie jestem zdrowym czowiekiem. Kim
on jest?
(c) Jeszcze inny powiada jestem chorym czowiekiem. Czy naley on
do tej samej kategorii co poprzednik?
(d) Tubylec na zadane przez turyst pytanie czy jeste chorym wampirem? odpowiedzia tak lub nie. Kim by ten tubylec?
Przykad dowodu przez zaprzeczenie
Twierdzenie
2.2 O pierwiastku z dwch

2 jest liczb niewymiern.


Dowd:

Niech zdanie p ma posta: 2 jest liczb niewymiern.


Wtedy p oznacza, e dla pewnych liczb m, n N wzgldnie pierwszych mamy:

2=

m
, m2 = 2n2
n

Std m jest podzielne przez dwa, a wic m2 jest podzielne przez cztery i std n jest te podzielne
przez dwa. Co przeczy temu, e m i n s wzgldnie pierwsze.

2.7.3

Wyraenia logiczne a zbiory

34

wyraenie logiczne
aa aa a
(a b) c a (b c)
(a b) c a (b c)
ab ba
ab ba
a (b c) (a b) (a c)
a (b c) (a b) (a c)
a a
(a b) a b
(a b) a b
aF a aF F
aT a aT T
a (a b) a
a (a b) a

2.7.4

wasno
idempotentno
czno
przemienno
rozdzielczo
inwolucja
prawa
deMorgana
identyczno
absorpcja

zbiory
AA =AA =A
(A B) C = A (B C)
(A B) C = A (B C)
AB =BA
AB =BA
A (B C) = (A B) (A C)
A (B C) = (A B) (A C)
A=A
AB =AB
AB =AB
A=A A =
AU =A AU =U
A (A B) = A
A (A B) = A

amigwka krla

Krlewicz polubi t z trzech panien, ktra pierwsza rozwie zadanie opracowane przez krla. Krl powiedzia pannom, e w ssiedniej ciemnej komnacie
naoy kolejno kadej z nich kapelusz koloru czerwonego lub zielonego. Gdy to
uczyni poinstruowa je, e maj podnie rk gdy zobacz przynajmniej jeden
kapelusz koloru czerwonego, a nastpnie pomyle i odgadn jaki kapelusz maj na gowie. Wygra ta z panien, ktra pierwsza da poprawn odpowied. Po
wprowadzeniu panien zgromadzeni zobaczyli, e krl zaoy wszystkim pannom
kapelusze koloru czerwonego. Po duszej chwili milczenia jedna z panien ogosia
z pewnoci siebie, e nosi kapelusz czerwony. Skd to wiedziaa?
Rozwizanie logiczne
Niech symbole A, B, C reprezentuj trzy panny
Zamy, e zagadk rozwizaa panna A
Okrelamy zdania logiczne:
1. a1 , Panna A ma kapelusz czerwony.
2. a2 , Panna A podniosa rk.
3. a3 , Panna A okrelia kolor swojego kapelusza
4. Analogicznie okrelamy zdania b1 , b2 , b3 dla panny B oraz c1 , c2 , c3
dla panny C
Gdy wszystkie panny podniosy rk, w ocenie sytuacji przez pann A
nastpujce zdania s prawdziwe i ich prawdziwo moe by sprawdzona
przez panny B i C:
35

1. a1 b2 c2 a1 b1 c1
2. a1 b1 c1 b3 c3

3. (b3 c3 ) (a1 b2 c2 )
4. (b3 c3 ) a1 b2 c2
5. b2 T

6. c2 T

7. (b3 c3 ) a1 F F a1
8. b3 c3 a1

2.8

Rachunek predykatw i kwantykatorw

1. Formy zdaniowe
2. Kwantykatory
2.8.1

Predykaty

Forma zdaniowa (predykat) jednej zmiennej to wyraenie P (x), ktre po


podstawieniu dowolnego a Dx staje si zdaniem logicznym
Zbir Dx nazywamy dziedzin zmiennej x
Jeli P (a) jest zdaniem prawdziwym, to mwimy, e a spenia P
Zbir tych wszystkich a Dx , ktre speniaj P oznaczamy przez T (P ) i
nazywamy zbiorem speniania predykatu P
Forma zdaniowa (predykat) wielu zmiennych P (x, y, . . . ) ma okrelone
dziedziny Dx , Dy , . . . dla kadego parametru, a zbir T (P ) speniania P
jest relacj zawart w Dx Dy :
T (P ) , {(a, b, . . . ) : a Dx , b Dy , . . . P (a, b, . . . ) jest speniony}
T (P ) D , Dx Dy . . .

Produkt kartezjaski D , Dx Dy . . . nazywamy dziedzin predykatu


P
Przykady:
P (x) , x jest liczb parzyst, Dx , N, T (P ) to zbir liczb parzystych
Q(x, y) , x2 + y 2 = 25, Dx = Dy , N, T (Q) = {(3, 4), (4, 3)}

Q (x, y) , P (x) Q(x, y), Dx = Dy , N, T (Q ) = {(4, 3)}


36

P1 (x1 , . . . , xn ) , |x1 | + . . . |xn | 1, Dx1 = = Dxn = R, T (P1 ) =


kula w normie pierwszej w Rn
P2 (x1 , . . . , xn ) , x21 + . . . x2n 1, Dx1 = = Dxn = R, T (P2 ) =
kula w Rn
P (x1 , . . . , xn ) , maxi |xi | 1, Dx1 = = Dxn = R, T (P ) =
kula w normie Czebyszewa w Rn
Jeli predykaty P i Q maj t sam dziedzin, to:
T ((P )) = T (P )
T (P Q) = T (P ) T (Q)

T (P Q) = T (P ) T (Q)

T (P Q) = T (P ) T (Q)

T (P Q) = (T (P ) T (Q)) (T (P ) T (Q))
Mwimy, e z predykatu P wynika predykat Q wtt TP TQ . Oznaczamy
ten fakt przez P Q
Mwimy, e predykat P jest rwnowany predykatowi Q wtt TP = TQ .
Oznaczamy ten fakt przez P Q
wiczenia:
1. Zapisz predykat P, dla ktrego zbir speniania T (P ) jest:
(a) kul o promieniu 5 i o rodku w punkcie (5, 5, 55)

(b) koem o promieniu 10 i o rodku w (1, 11)

(c) kwadratem o bokach rwnolegych do osi ukadu, o powierzchni 4 i


o rodku w (5, 5)
(d) kwadratem obrconym o 45 stopni wzgldem rodka poprzednio okrelonego kwadratu
(e) zbiorem wszystkich punktw na paszczynie o wsprzdnych cakowitych, ktre s wzgldnie pierwsze
2. Znajd zbir speniania T (P ) dla nastpujcego predykatu P (x) :
x2 + x + 1 < 30
1 3x 27

0 < x < 40 oraz x2 + 7 jest cakowit potg dwjki

Zadania:
1. Wyra P (x) , x jest wielokrotnoci 4 przy pomocy predykatu Q(x) ,
x jest liczb parzyst

37

2. Niech A Dx bdzie dowolnym zbiorem w dziedzinie Dx . Zdeniuj predykat P (x) taki, e T (P ) = A


3. Niech A , {x N : x 18}, B , {x N : x 25, 2|x}.
(a) Wypisz elementy zbiorw A B oraz B A
(b) Okrel predykaty deniujce zbiory A B oraz B A
4. Przypumy, e mamy logiczn implikacj P Q dla predykatw P i
Q okrelonych w dziedzinie D. Co mona powiedzie o zbiorze speniania
T ((P ) (Q))?

Problemy:
Jakie relacje musz zachodzi midzy zbiorami speniania T (P ) oraz T (Q) by
prawd byy nastpujce implikacje:
1. (P (x) Q(x)) P (x)
2. (P (x) Q(x)) Q(x)
3. (P (x) Q(x)) (P (x) Q(x))
4. (P (x) Q(x)) (P (x) Q(x))
2.8.2

Kwantykatory

Kwantykator oglny x (czytaj dla kadego x) dotyczy predykatu jednej zmiennej P (x) lub wielu zmiennych P (x, y, . . . )
Zmienna kwantykatora przyjmuje wartoci z dziedziny Dx lub z jej
podzbioru Z Dx
Predykat P (x) jednej zmiennej otrzymujemy zdanie logiczne q :
q , x Z, P (x)
Zdanie q jest prawdziwe wtt Z T (P )
Jeli Z = , to zdanie x Z, P (x) jest zawsze prawdziwe
Przykady:
x N, x2 > x 1

x Z {0}, x2 > x 1

x R, x2 2x 1
Predykat P (x, y) dwch zmiennych otrzymujemy predykat Q(y) :
Q(y) , x Z, P (x, y)
Zdanie Q(b) dla x = b jest prawdziwe wtt
Z {x Dx : P (x, b)}
38

Przykady:
x R, x2 + y 2x 1
x R, sin(x y) 1

Kwantykator egzystencjalny x (czytaj istnieje x) dotyczy predykatu


jednej zmiennej P (x) lub wielu zmiennych P (x, y, . . . )
Zmienna kwantykatora przyjmuje wartoci z dziedziny Dx lub z jej
podzbioru Z Dx
Predykat P (x) jednej zmiennej otrzymujemy zdanie logiczne q :
q , x Z, P (x)
Zdanie q jest prawdziwe wtt Z T (P ) 6=

Przykady:

x N, 2x > 1010000
x R, x2 2x 1

Predykat P (x, y) dwch zmiennych otrzymujemy predykat Q(y) :


Q(y) , x Z, P (x, y)
Zdanie Q(b) dla x = b jest prawdziwe wtt
Z {x Dx : P (x, b)} 6=
Przykady:
x R, x2 + y 2x 1

x R, sin(x y) > 2/2


Negacja :
[x Z, P (x)] x Z, P (x)
[x Z, P (x)] x Z, P (x)

[x Z, P (x, y)] x Z, P (x, y)


[x Z, P (x, y)] x Z, P (x, y)
Negacja :
[x Z, P (x)] x Z, P (x)
[x Z, P (x)] x Z, P (x)

[x Z, P (x, y)] x Z, P (x, y)


[x Z, P (x, y)] x Z, P (x, y)
39

Przykad denicja cigoci funkcji w punkcie x0 :


P (x, x0 ) , > 0 > 0, |x x0 | < |f (x) f (x0 )| <
P (x, x0 ) > 0 > 0, |x x0 | < |f (x) f (x0 )|
Przemienno :
x Zx , y Zy , P (x, y) y Zy , x Zx , P (x, y)

x Zx , y Zy , P (x, y, z) y Zy , x Zx , P (x, y, z)
Przemienno :
x Zx , y Zy , P (x, y) y Zy , x Zx , P (x, y)

x Zx , y Zy , P (x, y, z) y Zy , x Zx , P (x, y, z)
Specjalizacja dla Z 6= :
x Z, P (x) x Z, P (x)

x Z, P (x, y) x Z, P (x, y)
wiczenia:
1. Zapisz w postaci kwantykatorowej nastpujce zdania:
(a) Istniej wysocy mczyni
(b) Tylko poboni zasuguj na zbawienie
(c) Co si psuje w pastwie duskim
(d) S rzeczy na ziemi i w niebie, ktre nie ni si nawet lozofom
(e) adne prosi nie lata
2. Okrel prawdziwo zda:
(a) x N, x2 + x < 1010000

(b) x N, (x2 = 2x) (x2 = 100)


Zadania:
1. Uzasadnij prawdziwo implikacji:
[x, (P (x) Q(x))] [x, P (x)] [x, Q(x)]
2. Podaj przykad predykatw P (x), Q(x), dla ktrych nastpujce implikacje s faszywe:
[x, (P (x) Q(x))] [x, P (x)] [x, Q(x)]
xy, P (x, y) yx, P (x, y)
xy, P (x, y) xy, P (x, y)
40

Problemy:
1. Niech Dx = {a, b, c.} Wyeliminuj kwantykatory z nastpujcych zda:
x D, P (x)

[x D, R(x)] [x D, S(x)]
2. Zapisz w postaci kwantykatorowej nastpujce zdania:
Istniej co najmniej dwa elementy x D, speniajce predykat P (x)
Istniej co najwyej dwa elementy x D, speniajce predykat P (x)

Istniej dokadnie dwa elementy x D, speniajce predykat P (x)

Mona upiec szarlotk na wicej ni dwa sposoby

Wasno P (n) jest prawdziwa dla wszystkich n N za wyjtkiem


skoczonej liczby przypadkw

2.9

Homomorzm algebr

Homomorzm to odwzorowanie dziedziny jednej algebry w dziedzin drugiej algebry zachowujce dziaania tych algebr
Formalna denicja homomorzmu:
Algebra oryginalna:
.

A , (X, K; fi : X ni X, i = 1, . . . , K)
Algebra homomorczna:
.

B , (Y, K; fi : Y ni Y, i = 1, . . . , K)
Homomorzm to odwzorowanie h : X Y speniajce warunki:
h(fi (x1 , . . . , xni )) = fi (h(x1 ), . . . , h(xni ))
dla dowolnych (x1 , . . . , xni ) D(fi ), i = 1, . . . , K.

W algebrze homomorcznej B (przy homomormie h : X Y )


dziedziny operacji s nadzbiorami obrazw dziedzin odpowiednich
operacji w algebrze A :
h(D(fi )) D(fi ), i = 1, . . . , K

Jeli homomorzm h : X Y jest odwzorowaniem rnowartociowym i na, to h1 nie musi by homomorzmem. Jeli h1 jest
homomorzmem, to h nazywamy izomorzmem algebr A oraz B.
41

Jeli h jest homomorzmem rnowartociowym i na, to h1 : Y


X jest homomorzmem wtt gdy dziedziny operacji w algebrze B s
obrazem dziedzin odpowiednich operacji w algebrze A :
D(fi ) = h(D(fi )), i = 1, . . . , K
Jeli h jest homomorzmem rnowartociowym na oraz dla pewnej operacji fi w algebrze A istnieje element (y1 , . . . , yni ) D(fi ), bdcy obrazem elementu spoza dziedziny operacji fi , t.j. xi = h1 (yi ), i =
1, . . . , K oraz
(y1 , . . . , yni ) D(fi ), (x1 , . . . , xni )) 6 D(fi ),
to rozszerzenie operacji f 1 na element (x1 , . . . , xni )
fi (x1 , . . . , xni ) , h1 (fi (y1 , . . . , yni ))
okrela rozszerzenie algebry A izomorczne z algebr B.
Przykad:
A , (Z, 2; +, ) algebra liczb cakowitych z operacjami dodawania
i mnoenia
B , ({0, 1}, 1; , &) algebra binarna z operacjami XOR i AND

Odwzorowanie h : Z {0, 1} okrelone nastpujco: h(x) = 0 wtt x


jest liczb parzyst (x P)

Odwzorowanie h jest homomorzmem algebry A w algebr B, t.j.:


x, y Z, h(x + y) = h(x) h(y)
x, y Z, h(x y) = h(x)&h(y)
Dowd homomorzmu w powyszym przykadzie

Rozwamy cztery nastpujce przypadki dla operacji dodawania:


x P, y P (x + y) P

x P, y P h(x) = 0, h(y) = 0, h(x + y) = 0 = 0 0 = h(x) h(y)


x P, y 6 P (x + y) 6 P

x P, y 6 P h(x) = 0, h(y) = 1, h(x + y) = 1 = 0 1 = h(x) h(y)


x 6 P, y P (x + y) 6 P

x 6 P, y P h(x) = 1, h(y) = 0, h(x + y) = 1 = 1 0 = h(x) h(y)

x 6 P, y 6 P (x + y) P

x 6 P, y 6 P h(x) = 1, h(y) = 1, h(x + y) = 0 = 1 1 = h(x) h(y)

42

Rozwamy te same przypadki tym razem dla operacji mnoenia:


x P, y P (x y) P

x P, y P h(x) = 0, h(y) = 0, h(x y) = 0 = 0&0 = h(x)&h(y)


x P, y 6 P (x y) P

x P, y 6 P h(x) = 0, h(y) = 1, h(x y) = 0 = 0&1 = h(x)&h(y)


x 6 P, y P (x y) P

x 6 P, y P h(x) = 1, h(y) = 0, h(x y) = 0 = 1&0 = h(x)&h(y)


x 6 P, y 6 P (x y) 6 P

x 6 P, y 6 P h(x) = 1, h(y) = 1, h(x + y) = 1 = 1&1 = h(x) h(y)

Zadanie:
Poka, e rozszerzenie w powyszym przykadzie algebry A o operacj odejmowania liczb cakowitych , a algebr B o operacj odejmowania modulo dwa ,
to odwzorowanie h jest te homomorzmem algebry A w algebr B.

2.10

Rachunek reszt

Iloraz q z dzielenia n Z przez p N oraz reszta r z tego dzielenia


speniaj warunki:
n = q p + r, 0 r < p
Powyszy rozkad jest jednoznaczny, tzn. istnieje dokadnie jedna taka
para (q, r) speniajca te warunki.
Dowd:
Jeli n = q1 p + r1 = q2 p + r2 , to

|(q1 q2 )| p = |r2 r1 |
Poniewa p dzieli |r1 r2 |, a |r1 r2 | < p, to r1 = r2 .
Std

q1 p = q2 p q1 = q2

I dlatego (q1 , r1 ) = (q2 , r2 ).

Okrelamy funkcj mod p : Z Zp , {0, 1, . . . , p 1}


(czytaj: modulo p), p N:
n Z mod p (n) , reszta z dzielenia n przez p
Podstawowy zwizek resztowy, p > 0:
 
n
n=
p + mod p (n)
p

43

Operacje modulo +p , p , p : Zp Zp Zp
x +p y , mod p (x + y), x p y , mod p (x y), x p y , mod p (x y),
gdzie +, to dodawanie i mnoenie liczb cakowitych
Jednoargumentowa operacja negacji modulo p : Zp Zp
p x , 0 p x = p x, x Zp
Odejmowanie modulo przez dodawanie modulo i negacj modulo:
x p y = x +p (p y)
Wasnoci mod p dla dowolnych x, y Z :
mod p (x + y)
mod p (x + y)
mod p (x)
mod p (x)
mod p (x y)
mod p (x y)
mod p (x y)
mod p (x y)

= mod p (mod p (x) + mod p (y))


= mod p (x) +p mod p (y)
= mod p ( mod p (x)) = mod p (p mod p (x))
= p mod p (x)
= mod p (mod p (x) mod p (y))
= mod p (x) p mod p (y)
= mod p (mod p (x) mod p (y))
= mod p (x) p mod p (y)

Twierdzenie: Funkcja mod p okrela homomorzm algebry (Z, 3; +, , ) w


algebr (Zp , 3; +p , p , p )
Jeli p jest liczb pierwsz to dla dowolnego a Zp {0}, rwnanie ap x =
1 ma dokadnie jedno rozwizanie w zbiorze Zp . Oznaczamy je jako a1 .
Dowd twierdzenia o elemencie odwrotnym w Zp
Niech f (x) , a p x, x Zp bdzie funkcj argumentu x. Zauwamy, e f : Zp Zp i f jest
funkcj rnowartociow bo:
a p x = a p y p|a(x y) p|a p|(x y)
Poniewa 0 < a < p, to p 6 |a, a wic p|(xy). Moemy zaoy, e x y. Wtedy 0 (xy) < p
i p|(x y) tylko wtedy gdy x y = 0, t.j. gdy x = y.
Skoro funkcja f jest okrelona na skoczonym zbiorze i jest rnowartociowa, wic jest te
odwzorowaniem Zp na Zp .
Dlatego f 1 (1) jest zbiorem jednoelementowym, t.j. istnieje dokadnie jeden element x Zp
dla ktrego f (x) = 1, t.j. a p x = 1.

Twierdzenie 2.3 o arytmetyce w IN


Niech IN , {n Z : 2N 1 n < 2N 1 } Z, p , 2N . Wtedy
Na zbiorze IN operacje arytmetyczne +, , staj si funkcjami czciowymi

44

Odwzorowanie modp ograniczone do zbioru IN jest rnowartociowe i


ma posta dla x IN :

x
gdy 0 x (p/2) 1
mod p (x) =
x + p gdy p/2 x 1
Odwzorowanie odwrotne mod1
: Zp IN ma posta dla dowolnego
p
y Zp :

y
gdy 0 y (p/2) 1
mod 1
(y)
=
p
y p gdy (p/2) y p 1

Twierdzenie 2.4 o homomormie algebr


Odwzorowanie mod p jest homomorzmem rnowartociowym na algebry AN ,
(IN , 3; +, , ) na algebr BN , (Zp , 3; +p , p , p ), t.j. dla dowolnych x, y IN ,
z dziedziny operacji po lewej stronie mamy:
mod p (x + y) = mod p (x) +p mod p (y)
mod p (x y) = mod p (x) p mod p (y)
mod p (x y) = mod p (x) p mod p (y)

Wniosek 2.1 o homomorcznym rozszerzeniu


Okrelamy homomorczne rozszerzenie arytmetycznych operacji +, , na IN :
, mod 1
x+y
p (mod p (x) +p mod p (y))
, mod 1
xy
p (mod p (x) p mod p (y))
xy , mod 1
p (mod p (x) p mod p (y))

Wtedy mod p jest izomorzmem algebry BN i rozszerzonej algebry AN .

2.11

Arytmetyka cyfrowa w staym przecinku

N dugo rejestru w ALU (w praktyce N = 8, 16, 32, 64)


Arytmetyka cyfrowa liczb cakowitych standardowo dotyczy dziaa +, ,
na zbiorze IN
Dziaania te s wykonywane poprzez arytmetyk modulo +p , p , p w Zp
Funkcja mod p okrela rnowartociowy homomorzm obu algebr

45

Liczba n ze zbioru IN jest kodowana na dokadnie N bitach z uyciem


odwzorowania mod p , p = 2N :
N bitw

z }| {
u(n) , mod p (n)

u(n) nazywa si kodem uzupenieniowym do dwch (ang. 2s complement


to two)
Przykady dla N = 8: I8 = [128, 127], p = 28 = 256
8 bitw

8 bitw

z
}|
{ z}|{
u(100) = mod 256 (100)= 100 = 01100100
8 bitw

8 bitw

8 bitw

z
}|
{ z
}|
{ z}|{
u(100) = mod 256 (100)=100 + 256= 156 = 10011100
8 bitw

8 bitw

8 bitw

z
}|
{ z
}|
{ z}|{
u(128) = mod 256 (128)=128 + 256= 128 = 10000000
8 bitw

8 bitw

8 bitw

z
}|
{ z }| { z}|{
u(1) = mod 256 (1)=1 + 256= 255 = 11111111

Ustawianie domylnego staego przecinka na cyfrze s = 0, . . . , N 1 :


Dziedzina liczbowa przecinka na cyfrze s :
s
IN
, IN 2s , {x Q : n IN , x = n 2s }
s
Homomorzm algebry AsN = (IN
, 3; +, , ) z algebr BN = (Zp , 3; +p , p , p )
okrela nastpujce odwzorowanie mod sp :
s
mod sp (x) , mod p (x 2s ), x IN

Nazwa kodu u(n) wynika z charakteru odejmowania manualnego od 2N liczby


z przedziau [1, 2N 1 ] w systemie dwjkowym, np. dla N = 8, n = 100 mamy:
256
256
100
u(100)

=
=
=
=

1 0
0 1
0
1

0
1
1
0

0
1
1
0

0
1
0
1

0
1
0
1

0
2
1
1

0
0
0
0

0
0
0
0

Reguy manualne dla u(n): W zapisie dwjkowym liczby n na N bitach nie


zmieniaj zer na najmodszych pozycjach i nie zmieniaj najmodszej jedynki.
Pozostae cyfry zmie na przeciwne.

2.12

Arytmetyka cyfrowa w zmiennym przecinku

46

Arytmetyka w zmiennym przecinku stosuje reprezentacj opart na koncepcji cechy c(x), mantysy m(x) i znaku liczby s(x) dla x R.
W standardzie IEEE 754 Floating Point Numbers (w skrcie IEEE 754)
da si by mantysa bya w przedziale [1, 2) :
x = (1)s(x) m(x)2c(x) , s(x) {0, 1}, m(x) [1, 2), c(x) Z
Jeli x 6= 0, to powysza reprezentacja zmiennoprzecinkowa jest jednoznaczna, bo R {0} mona podzieli na przeskalowane przez 2k , k Z,
wersje przedziau [1, 2) :
R {0} = (, 1] (1, 0) (0, 1) [1, )

X
(, 1] = (8, 4] (4, 2] (2, 1] =
(2k+1 , 2k ]
k=0




X
1
1 1
(2k+1 , 2k ]
(1, 0) = 1, , =
2
2 4
k=1
 



X
1
1 1
,1 =
[2k , 2k+1 )
(0, 1) = ,
4 2
2


k=1

[1, ) = [1, 2) [2, 4) [4, 8) =

[2k , 2k+1 )

k=0

Jeli x [2k , 2k+1 ), k Z, to s(x) = 0, c(x) = k, m(x) = x/2k


Jeli x (2k+1 , 2k ], k Z, to s(x) = 1, c(x) = k, m(x) = x/2k
W praktyce mamy ograniczon liczb bitw nc na pole cechy i nm bitw
na pole mantysy
W IEEE 754 cech c(x) kodujemy jako liczb c(x) + b, gdzie b jest staym
przesuniciem dla cechy
W IEEE 754 struktura sowa zmiennoprzecinkowego ma posta:
precyzja
oat
double

s(x)
1 [31]
1 [63]

c(x) + b
8 [30-23]
11 [62-52]

m(x)
23 [22-00]
52 [51-00]

b
127
1023

gdzie pole bitowe opisano w postaci: dugo [zakres pozycji bitowych] i tak
dla precyzji pojedynczej (oat) mamy nc = 8, nm = 23, a dla podwjnej
(double) nc = 11, nm = 52
W IEEE 754 wiodc jedynk mantysy pomija si

47

W IEEE 754 dopuszczalny kod cechy c + b [1, 2nc 2], t.j. kody zoone
z samych zer i z samych jedynek zarezerwowano dla innych celw. Std
zakres dopuszczalnych cech wynosi:
c [1 b, 2nc 2 b]
W IEEE 754 warto zapisu liczby x w przypadku mantysy znormalizowanej wynosi:
x = (1)s m 2c , m [1, 2 2nm ], c [1 b, 2nc 2 b]
nc

x [22

2b

nc

(2 2nm ), 2b+1 ] [2b+1 , 22


dla nc = 8, nm = 23, b = 127,

2b

(2 2nm )]

x [2127 (2 223 ), 2126 ] [2126 , 2127 (2 223 )]


dla nc = 11, nm = 52, b = 1023,

x [2

1023

(2 252 ), 21022 ] [21022 , 21023 (2 252 )]

W IEEE 754 oprcz mantysy znormalizowanej dopuszczono dla wyrnionej wartoci cechy nie znormalizowany zapis uamka m w miejscu mantysy, z wag jeden dla najstarszej pozycji (bez domylnej jedynki), t.j. dla
c + b = 0 warto zapisu liczby x wynosi:
x = (1)s m 2b , m [2nm +1 , 2 2nm +1 ]

x [2b+1 (1 2nm ), 2bnm +1 ] [2bnm +1 , 2b+1 (1 2nm )]


dla nm = 23, b = 127,

x [2
x [2

126

(1 223 ), 2149 ] [2149 , 2126 (1 223 )]


dla nm = 52, b = 1023,

1022

(1 252 ), 21074 ] [21074 , 21022 (1 252 )]

Reprezentacja zera: pole cechy i mantysy wypenione zerami, pole znaku


dowolne
Liczby rzeczywiste R(N, nc ) = R(1+nc +nm , nc ) reprezentowane w zmiennym przecinku w IEEE 754 s postaci zdeniowanej powyej dla mantysy
znormalizowanej i nie znormalizowanej:
R(N, nc )
Rz (N, nc )

, Rz (N, nc ) Rn (N, nc ) {0},

N = 1 + nc + nm , b = 2nc 1 1

, {x : s, k, c N, x = (1)s m 2c , s {0, 1},


m [1, 2 2nm ], m = 1 + k2nm ,

Rn (N, nc )

c [1 b, 2nc 2 b]}

, {x : s, k N, x = (1)s m 2b , s {0, 1},


m [2nm +1 , 2 2nm +1 ], m = k2nm +1 }
48

Zakresy dla float:


R(32, 8)

Rz (32, 8) Rn (32, 8) {0},


nc = 8, nm = 23, b = 127

Rz (32, 8)

Rn (32, 8) ,

{x : s, k, c N, x = (1)s m 2c , s {0, 1},

m [1, 2 223 ], m = 1 + k223 , c [126, 127]}

{x : s, k N, x = (1)s m 2b , s {0, 1},


m [222 , 2 222 ], m = k222 }

Zakresy dla double:


R(64, 11)

Rz (64, 11) Rn (64, 11) {0},


nm = 52, nc = 11, b = 1023

Rz (64, 11)

Rn (64, 11) ,

{x : s, k, c N, x = (1)s m 2c , s {0, 1},

m [1, 2 252 ], m = 1 + k252 , c [1022, 1023]}

{x : s, k N, x = (1)s m 2b , s {0, 1},


m [251 , 2 251 ], m = k251 }

Reprezentacja nieskoczonoci: same jedynki w polu cechy, same zera w


polu mantysy, pole znaku rwne zero dla + i rwne jeden dla
Kategoria NaN (ang. Not a Number)
Kategoria QNaN (ang. Quiet Not a Number) obsuguje argumenty
nie zdeniowane i jest kodowana w polu cechy przez same jedynki, a
w polu mantysy ma jedynk na pozycji najbardziej znaczcej
Kategoria SNaN (ang. Signalling Not a Number) obsuguje argumenty nieprawidowe i jest kodowana w polu cechy przez same jedynki, a w polu mantysy ma zero na pozycji najbardziej znaczcej i
przynajmniej jedn jedynk na pozostaych pozycjach
Operacje na argumentach specjalnych:
operacja z argumentem NaN ma wynik NaN
operacje z argumentem :
operacja
x/

x 6= 0 x/0
+

wynik
0

49

operacja
0/ 0

/
0

wynik
NaN
NaN
NaN
NaN

2.12.1

s
0

kod(c)
e
0...0

0...0

0 . . . 01
.
..
1 . . . 10
1...1

1...1

1...1

Wzorce bitowe w IEEE 754

kod(m)
f
0...0
0 . . . 01
..
.
1...1
X ...X
0...0
0 . . . 01
..
.
01 . . . 1
10 . . . 0
..
.
1...1

x
+0

s
1

kod(c)
e
0...0

+bez norm.
0, f 2b+1

0...0

+z norm.
1, f 2eb

0 . . . 01
.
..
1 . . . 10
1...1

SN aN

1...1

QN aN

1...1

kod(m)
f
0...0
0 . . . 01
..
.
1...1
X ...X
0...0
0 . . . 01
..
.
01 . . . 1
10 . . . 0
..
.
1...1

x
0
bez norm.
0, f 2b+1
z norm.
1, f 2eb

SN aN

QN aN

Schematy rekurencyjne
Pojcie schematu rekurencyjnego, t.j. rekursji:
Rekursja to specyczny schemat konstrukcji zbiorw typu rekurencyjnego
Rekursja skada si z dwch krokw:
1. krok bazowy: okrela obiekty bazowe
2. krok rekurencyjny: konstruuje elementy zoone z elementw prostszych
Przykady rekursji:
rekurencyjne cigi liczb, np. cig Fibonacciego:
c0 = 1, c1 = 1, cn+1 , cn + cn1 , n N
rekurencyjne cigi zbiorw, np. obrazy fraktalne takie jak trjkt
Sierpiskiego, czy zbir Cantora C :
C = lim Cn
n

C1 = [0, 1], Cn+1 = f1 (Cn ) f2 (Cn )


f1 (x) , x/3, f2 (x) , (x + 2)/3
50

poprawne wyraenia jzyka programowania ze zbioru W, np.


a, b, c, . . . , x, y, z W bazowe wyraenia
w W (w) W wyraenie nawiasowe

w1 , w2 W w1 + w2 W, w1 w2 W, . . . inne operacje
drzewa matematyczne:
Pojedynczy wze w tworzy drzewo Tw
Jeli T1 , . . . , Tk s drzewami, a r jest wzem, to struktura zoona z
wza r jako korzenia z referencjami na drzewa T1 , . . . , Tk jest nowym
drzewem T
Uyteczno rekursji:
Funkcje jzyka programowania mog realizowa rekursje, t.j. procedury rekurencyjne, np. n! oblicza nastpujca funkcja jzyka C:
int silnia(int n) { if (n == 0) return 1; else return nsilnia(n 1); }

Jeli zbir Z jest budowany rekurencyjnie ze zbioru bazowego Z0 , to


prawdziwo zdania typu x Z, P (x) dowodzi si technik oglnej
indukcji matematycznej zoon z dwch krokw:
1. podstawa indukcji:
dowodzimy prawdziwoci P (x) dla wszystkich x Z0
2. krok indukcyjny: jeli element x jest zbudowany rekurencyjnie z
elementw x1 , . . . , xk , to dowodzimy prawdziwoci implikacji
[P (x1 ) P (xk )] P (x)

Przykad 3.1 Palindromy


Rozwamy palindromy nad alfabetem , t.j. sowa, ktre czytane od lewej i od
prawej maj t sam posta. Niech sowo puste E i pojedynczy symbol bd te
palindromem. Pokaemy, e zbir P0 wszystkich palindromw mona zbudowa
nastpujcym schematem rekurencyjnym:
1. krok bazowy:
E P, , P
2. krok rekurencyjny:
, x P x P
Zauwamy, e elementy bazowe ze zbioru s palindromami z denicji. Jeli x jest
palindromem, to konstrukcja x daje rwnie palindrom. Std mamy P P0 .
Jeli wyraenie x jest palindromem, t.j. x P0 , to mona je zbudowa z E lub
z symbolu rodkowego (przypadki parzystej lub nieparzystej dugoci) stosujc
krok rekurencyjny. Std rwnie zachodzi przeciwna inkluzja P0 P.

51


Przykad 3.2 Zbalansowane wyraenia nawiasowe
Zbalansowane wyraenia nawiasowe ze zbioru B budujemy tylko z symboli nawiasw ( oraz ) stosujc nastpujcy schemat rekurencyjny:
1. krok bazowy: E B symbol pusty jest wyraeniem nawiasowym
2. krok rekurencyjny 1: x B (x) B
3. krok rekurencyjny 2: x, y B xy B

Niech w B, w = w1 . . . wn , wi {(, )}. Okrelamy cig liczb Li (Pi ) jako liczb


lewych (prawych) nawiasw na pozycjach 1, . . . , i.
W praktyce czsto wykorzystujemy nastpujc wasno zbalansowanych wyrae nawiasowych:
Li Pi , i = 1, . . . n 1, Ln = Pn

(1)

Oznaczmy przez B0 zbir wyrae nawiasowych speniajcych powysz wasno.


Pokaemy najpierw, e B B0 . W kroku rekurencyjnym pierwszym w wyraeniu
(x) mamy na pozycji i-tej, 2 i n 1 :
Li = 1 + Li1 (x) 1 + Pi1 (x) = 1 + Pi > Pi
gdzie Lj (x) (Pj (x)) dotyczy wartoci analizowanych tylko dla czci x.
Dla i = 1 : L1 = 1 > P1 = 0. Za dla i = n :
Ln = 1 + Ln1 (x) = 1 + Pn1 (x) = Pn
Pokazalimy wic, e (x) spenia warunek (1), t.j. (x) B0 .
Podobnie pokazujemy, e jeli x, y B speniaj warunek (1), to wyraenie xy
rwnie spenia warunek (1). Dlatego B B0 .
Przypumy teraz, e jakie wyraenie w B0 , t.j. spenia warunek (1). Musimy
pokaza, e da si ono zbudowa stosujc kroki rekurencyjne 1 oraz 2.
Wiemy, e jest to prawda dla najkrtszego wyraenia x = (), bo budujemy je z
E stosujc krok 1. Przypumy, e |x| > 2 i e wyraenia x B0 krtsze od x,
t.j. |x | < |x| pokazalimy konstrukcj opart na krokach rekurencyjnych 1 i 2,
t.j. x B. Wtedy x mamy dwa przypadki:
1. x jest postaci x = (x ), x B0 i wtedy moemy zastosowa krok 1 do
x B,

2. moemy x podzieli na czci x = x1 x2 . . . xk , z ktrych kada spenia


warunek (1), t.j. xi B0 . Punkty podziau dostajemy tam gdzie Li = Pi .
Wtedy kada z tych czci (jako krtsza od x) naley do B i stosujc
rekurencyjny krok 2 k 1 razy wnioskujemy, e rwnie x B.

Pokazalimy wic inkluzj przeciwn B0 B. W efekcie B = B0 .


52

3.1

Wiee Hanoi

Problem Wiee Hanoi:


Zabawa w wiee Hanoi wymaga pewnej liczby n piercieni o rnych promieniach
zewntrznych R1 > > Rn , i staym promieniu wewntrznym r1 = = rn =
r < Rn , duo mniejszym ni rozmiar kadego piercienia, ale na tyle duym
by piercienie mogy by naoone przez swoje wewntrzne otwory na szkielet
wiey zoonej z pionowego prta i nieruchomej podstawy. Dysponujemy trzema
takimi szkieletami o numerach 1, 2, 3. Pocztkowo wszystkie piercienie tworz
wie numer 1 w ten sposb, e najwikszy ley na podstawie szkieletu 1 i kolejne
mniejsze piercienie spoczywaj na wikszych. Zadanie polega na przeniesieniu
wszystkich piercieni, jeden po drugim, z wiey numer 1 na wie numer 3 z
wykorzystaniem wiey 2 w ten sposb by nigdy wikszy piercie nie by pooony
na piercieniu mniejszym.
Oznaczmy polecenie przeniesienia krka z wiey i na wie j przez i j;
Wtedy rozwizanie dla n = 1 ma trywialn posta: 1 3;
Dla n = 2 wykorzystamy wie 2 : 1 2; 1 3; 2 3;
Dla n = 3 mamy 7 polece:
1 3; 1 2; 3 2; 1 3; 2 1; 2 3; 1 3;
Schemat rekurencyjny HanoiT owers(i, j, n) jest procedur, ktra ma wygenerowa sekwencj polece przenoszca n piercieni z wiey i na wie j.
1. krok bazowy dla n = 1:
(a) i j;

(b) zakoczenie;
2. krok rekurencyjny dla n > 1:
(a) niech k bdzie numerem trzeciej wiey rnej od i oraz j
(b) HanoiT owers(i, k, n 1);
(c) i j;

(d) HanoiT owers(k, j, n 1);


(e) zakoczenie;

lad procedury uwzgldnia nastpujce fakty:


Kade wykonanie procedury oznacza utworzenie nowej kopii parametrw
procedury (tu dla i, j, n) i zmiennych pomocniczych (tu tylko dla k)
W kopii parametrw wpisujemy wartoci argumentw aktualnego wywoania procedury, a w kopii lokalnych zmiennych wartoci aktualne dla tego
wykonania procedury

53

Zakoczenie procedury skutkuje usuniciem kopii parametrw i lokalnych


zmiennych
Podobne zarzdzanie pamici dotyczy aktualnego kroku jaki jest wykonywany w ramach acucha wywoa procedur
Zmienna pomocnicza t oznacza dugo aktywnego acucha wywoa procedur jeszcze nie zakoczonych
Zawsze mamy w pamici t kopii parametrw i zmiennych lokalnych (u nas
i1 , j1 , n1 , k1 ; . . . ; it , jt , nt , kt )
Aktualnie wykonywana procedura korzysta jako ostatnia w acuchu wywoa procedur z t-tej kopii parametrw i zmiennych lokalnych
Ponisza tabela opisuje lad wywoania HonoiT owers(1, 3, 2)
aktualnekroki
2.(a)
2.(b); 1.(a)
2.(b); 1.(b)
2.(c)
2.(d); 1.(a)
2.(d); 1.(b)
2.(e)

t
1
2
1
1
2
1
0

i1 , j1 , n1 , k1 ; . . . ; it , jt , nt , kt
1, 3, 2, 2
1, 3, 2, 2; 1, 2, 1,
1, 3, 2, 2
1, 3, 2, 2
1, 3, 2, 2; 2, 3, 1,
1, 3, 2, 1

polecenie
12
13
23

Zadanie: Zapisz procedur rekurencyjn silnia(n) i utwrz tabel ladu wykonania silnia(4).
Kolejna tabela opisuje lad wywoania HonoiT owers(1, 3, 3)
kroki
2.(a)
2.(b); 2.(a)
2.(b); 2.(b); 1.(a)
2.(b); 2.(b); 1.(b)
2.(b); 2.(c)
2.(b); 2.(d); 1.(a)
2.(b); 2.(d); 1.(b)
2.(b); 2.(e)
2.(c)
2.(d); 2.(a)
2.(d); 2.(b); 1.(a)
2.(d); 2.(b); 1.(b)
2.(d); 2.(c)
2.(d); 2.(d); 1.(a)
2.(d); 2.(d); 1.(b)
2.(d); 2.(e)
2.(e)

t
1
2
3
2
2
3
2
1
1
2
3
2
2
3
2
1
0

i1 , j1 , n1 , k1 ; . . . ; it , jt , nt , kt
1, 3, 3, 2
1, 3, 3, 2; 1, 2, 2, 3
1, 3, 3, 2; 1, 2, 2, 3; 1, 3, 1,
1, 3, 3, 2; 1, 2, 2, 3
1, 3, 3, 2; 1, 2, 2, 3
1, 3, 3, 2; 1, 2, 2, 3; 3, 2, 1,
1, 3, 3, 2; 1, 2, 2, 3;
1, 3, 3, 2
1, 3, 3, 2
1, 3, 3, 2; 2, 3, 2, 1
1, 3, 3, 2; 2, 3, 2, 1; 2, 1, 1,
1, 3, 3, 2; 2, 3, 2, 1
1, 3, 3, 2; 2, 3, 2, 1
1, 3, 3, 2; 2, 3, 2, 1; 1, 3, 1,
1, 3, 3, 2; 2, 3, 2, 1
1, 3, 3, 2

54

polecenie
13
12
32
13
21
23
13

Wasno 3.1 O liczbie polece w problemie Wiee Hanoi


Niech p(n) bdzie liczb polece generowanych przez procedur HanoiT owers(i, j, n).
Wtedy
1. p(1) = 1
2. p(n) = p(n 1) + 1 + p(n 1)
3. p(n) = 2n 1

Zadanie: Sprawd suszno powyszych wasnoci funkcji p(n).

3.2

Konwersja wyraenia arytmetycznego na ONP

Notacja arytmetyczna (NA), np.: a + b, a + b c, (a + b) c


Notacja Polska (NP), np.: +ab, +a bc, + abc
Odwrotna Notacja Polska (ONP), np.: ab+, abc +, ab + c
Przykady rwnowanych wyrae:
NA
a/b
a+bc
a/b c
a b/c
a b/c
(a b)/c
a + b (c d/a)
(c/d + a) (b d/a)

NP
/ab
+ abc
/abc
/ abc
a/bc
/ abc
+a b c/da
+ /cda b/da

ONP
ab/
ab + c
ab/c
ab c/
abc/
ab c/
abcda/ +
cd/a + bda/

Obserwacje:
Kolejno wystpowania zmiennych w NA, NP i ONP jest taka sama
Kolejno wykonywania operacji w NA uwzgldnia pooenie nawiasw,
priorytety i reguy czenia operacji o jednakowych priorytetach
Kolejno wystpowania operacji w ONP jest taka sama jak kolejno wykonywania operacji w NA
Tabela priorytetw i regu czenia:
poziom operacje reguy czenia
2
/
od prawej
+
od lewej
1
55

Symbol operacji w NA maj poziom zagniedenia okrelony przez liczb


L P , gdzie L (P ) jest liczb lewych (prawych) nawiasw wystpujcych przed dan operacj, np. w wyraeniu (c/d + a) (b (d + c)/a)
kolejne operacje / + +/ maj poziomy zagniedenia rwne odpowiednio 1, 1, 0, 1, 2, 1
Przesanki do algorytmu N A ON P :
Zakadamy sekwencyjny przegld symboli wyraenia w typu NA, kolejno
od lewej do prawej
Pojawienie si symbolu zmiennej oznacza jej kopiowanie na wyjcie u
Zmiana porzdku symbolu operacji o i jej drugiego argumentu wymaga
zapamitania o w jakiej strukturze danych s, np. dla w postaci a/(b+ac),
operacja / zapamitywana jest w s
Drugi argument operacji o moe by te zoonym wyraeniem i dlatego do
s mog by dopisywane kolejne operacje, ktre bd usuwane z s wczeniej
ni symbol o
Struktura danych ma wasno stosu, ktry dziaa wedug zasady ostatni
zapisany pierwszy skasowany (ang. LIFO Last In First Out)
Poniewa nawiasy, priorytety i zasady cznoci ustalaj kolejno operacji, to powinnimy doczy dodatkowe reguy obsugi stosu s :
1. Pojawienie si prawego nawiasu ) oznacza wycofanie z s na wyjcie
u wszystkich operacji z tego poziomu zagniedenia
2. Pojawienie si lewego nawiasu ( oznacza jego automatyczne zapamitanie w s, co pozwoli na atw identykacj wszystkich symboli
operacji zapisanych w s z aktualnego poziomu zagniedenia
3. Pojawienie si operacji onext o niszym priorytecie ni ostatnia operacja otop na stosie s oznacza wycofanie otop z s na wyjcie u
4. Pojawienie si operacji onext o tym samym priorytecie co ostatnia
operacja otop na stosie s, ale o regule czenia od lewej oznacza wycofanie otop z s na wyjcie u
Algorytm 3.1 konwersji N A ON P
Wejcie: poprawne wyraenie typu NA
x = x1 x2 . . . xn , xi {a, . . . , z, (, ), +, , , /}
Dla uproszczenia zapisu algorytmu zakadamy, e x1 = ( , xn = )
Wyjcie: wyraenie typu ONP
y = y1 y2 . . . yn , yi {a, . . . , z, +, , , /}
56

Metoda:
1. Przygotuj wskaniki biecej pozycji:
i dla wejcia w
j 0 dla wyjcia u
t 0 dla stosu s
2. Dla
(a)
(b)
(c)

i = 1, . . . , n :
Przypadek xi {a, . . . , z} : j j + 1; yj xi ;
Przypadek xi = ( : t t + 1; st xi
Przypadek xi = ) :
i. pki st 6= ( wykonuj: j j + 1; yj st ; t t 1;
ii. t t 1
(d) Przypadek xi {+, , , /}
i. pki st {+, , , /} oraz (prty(st ) > prty(xi ) lub prty(st ) =
prty(xi ) i obowizuje regua czenia od lewej dla operacji st
i xi ) wykonuj:
j j + 1; yj st ; t t 1;
ii. Wprowad xi na stos: t t + 1; st xi

lad algorytmu N A ON P na wyraeniu ((c/d + a) (b d + c)/d)


i

xi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

(
(
c
/
d
+
a
)

(
b

d
+
c
)
/
d
)

krok
1.
2.(b)
2.(b)
2.(a)
2.(d)ii.
2.(a)
2.(d)i ii.
2.(a)
2.(c)i ii.
2.(d)ii.
2.(b)
2.(a)
2.(d)ii.
2.(a)
2.(d)i ii.
2.(a)
2.(c)i ii.
2.(d)ii.
2.(a)
2.(c)i ii.

t s 1 . . . st
0
1 (
2 ((

j
0

yj

2
3
4
5

d
/
a
+

7
8
9
10

c
+

3 ((/
3 ((+
1 (
2 (
3 ((
4 ((
4 ((+
2 (
3 (/
0
57

11
d
12 13 /

Wynik konwersji ((c/d + a) (b d + c)/d) na ONP:


y1 . . . y13 = cd/a + bd c + d/

3.3

Generowanie kodu maszynowego wyraenia arytmetycznego

Prosty model maszyny (PMM):


pami MEM zoona z N sw maszynowych o adresach 0, 1, 2, . . . , N
1, np. N = 220 :
M EM [0], M EM [1], . . . , M EM [N 1]
akumulator RA , tj. wyrniony rejestr, w ktrym przed wykonaniem
operacji arytmetycznej znajduje si pierwszy argument, a po jej wykonaniu wynik operacji
rejestr wierzchoka (ang. top) stosu programu RT
jednostka centralna z repertuarem instrukcji:
Instrukcje z adresowaniem bezporednim
instrukcja efekt dziaania
LOAD X
RA M EM [@X]
SAVE X
M EM [@X] RA
ADD X
RA RA + M EM [@X]
SUB X
RA RA M EM [@X]
MUL X
RA RA M EM [@X]
RA RA /M EM [@X]
DIV X
gdzie @X oznacza adres zmiennej X.
Instrukcje stosowe
instrukcja efekt dziaania
PUSH
M EM [RT ] RA ; RT RT + 1
POP
RT RT 1; RA M EM [RT ]
RT RT 1; RA M EM [RT 1];
POP2
M EM [RT 1] M EM [RT ]
ADD *T
RT RT 1; RA RA + M EM [RT ]
RT RT 1; RA RA M EM [RT ]
SUB *T
MUL *T
RT RT 1; RA RA M EM [RT ]
DIV *T
RT RT 1; RA RA /M EM [RT ]
Przykad kodu dla PMM umieszczajcego na stosie programu warto
wyraenia (A + B) C D :
kod
wyniki ONP
LOAD A A w RA
AB+ w RA
ADD B
AB+C* w RA
MUL C
AB+C*D- w RA
SUB D
AB+C*D- na stosie
PUSH
58

Przykad o bardziej zoonej interakcji ze stosem:


NA A C/(B C + D), ONP ACBC D + /
kod
wyniki ONP
LOAD B B w RA
BC- w RA
SUB C
BC-D+ w RA
ADD D
BC-D+ na stosie
PUSH
LOAD C C w RA
CBC-D+/ w RA
DIV *T
CBC-D+/ na stosie
PUSH
LOAD A A w RA
MUL *T ACBC-D+/* w RA
ACBC-D+/* na stosie
PUSH
Algorytm 3.2 ON P CODE
s stos zmiennych aktualizowany z ONP y = y1 y2 . . . yJ
$ dodatkowy symbolem oznaczajcy aktualny wierzchoek stosu
1. Przygotuj wskaniki biecej pozycji:
j dla ONP
t 0 dla stosu s

2. Dla j = 1, . . . , J :

(a) Przypadek yj jest symbolem zmiennej: t t + 1; st yj


(b) Przypadek yj jest symbolem operacji:
v1 st1 ; v2 st ; t t 1; st $ ;
i. Przypadek v1 , v2 zawieraj symbole zmiennych: generuj kod
LOAD v1 ; yj v2 ; PUSH;
gdzie vi jest symbolem zapisanym w vi , i = 1, 2, a yj jest
tekstem ADD gdy yi = + , SUB gdy yi = , MUL gdy
yi = , DIV gdy yi = /
ii. Przypadek v1 jest symbolem zmiennej, v2 = $ : generuj kod
LOAD v1 ; yj T ; PUSH;

iii. Przypadek v2 jest symbolem zmiennej, v1 = $ generuj kod


POP ; yj v2 ; PUSH;
iv. Przypadek v1 = $ , v2 = $ : generuj kod
POP2 ; yj T ; PUSH;

59

3. W kodzie usu wszystkie pary kolejnych instrukcji postaci PUSH;


POP;
4. W kodzie usu wszystkie pary kolejnych INSTRUKCJI postaci PUSH
; POP2; o ile kolejna instrukcji jest postaci ADD *T lub postaci
MUL *T

lad algorytmu ON P CODE na wyraeniu CD/A + BD C + D/


j

yj

1
2
3
4
5
6
7
8
9
10
11
12
13

C
D
/
A
+
B
D

C
+
D
/

krok
1.
2.(a)
2.(a)
2.(b)i.
2.(a)
2.(b)iii.
2.(a)
2.(a)
2.(b)i.
2.(a)
2.(b)iii.
2.(a)
2.(b)iii.
2.(b)iv.

t
0
1
2
1
2
1
2
3
2
2
2
3
2
1

s 1 . . . st
C
CD
$
$A
$
$B
$BD
$$
$$C
$$
$$D
$$
$

generowany kod

LOAD C; DIV D; PUSH;


POP ; ADD A; PUSH;
LOAD B; SUB D; PUSH;
POP ; ADD C; PUSH;
POP ; DIV D; PUSH;
POP2 ; MUL *T; PUSH;

Po kroku 3 usuwajcym pary PUSH; POP oraz kroku 4 usuwajcym pary


PUSH; POP2 (przed MUL) wygenerowany kod ma posta:
LOAD C
DIV D
ADD A
PUSH
LOAD B
SUB D
ADD C
DIV D
MUL *T
PUSH
Zauwamy, e w tym przykadzie automatycznie wygenerowany kod jest optymalny w sensie iloci instrukcji.

3.4

Klasyczna indukcja matematyczna

60

Oglny schemat indukcji matematycznej:


Jeli zbir Z jest budowany rekurencyjnie ze zbioru bazowego Z0 , to prawdziwo zdania typu x Z, P (x) dowodzi si technik oglnej indukcji
matematycznej zoon z dwch krokw:
1. podstawa indukcji:
dowodzimy prawdziwoci P (x) dla wszystkich x Z0

2. krok indukcyjny: jeli element x jest zbudowany rekurencyjnie z elementw x1 , . . . , xk , to dowodzimy prawdziwoci implikacji
[P (x1 ) P (xk )] P (x)
Klasyczna indukcja matematyczna przyjmuje nastpujce zaoenia:
Z = N {0}, Z0 = {0}

n > 0 n = (n1)+1 zasada budowy wikszych liczb z mniejszych


pozwala na konstrukcj:
n = 0 + 1 + + 1

Prawdziwo zdania n n0 , P (n) uzasadniamy dowodzc prawdziwoci:


1. podstawy indukcji dla n0 Z : P (n0 ) jest zdaniem prawdziwym
2. kroku indukcyjnego dla n > n0 w postaci oglnej:
[n0 k < n, P (k)] P (n)
3. lub kroku indukcyjnego dla n > n0 w postaci szczeglnej:
P (n 1) P (n)
3.4.1

Indukcja matematyczna wybrane przykady

Przykad 3.3 Wzr na sum kwadratw liczb parzystych


Dowodzimy prawdziwoci rwnoci:
n
X

k=1

(2k)2 =

2
n(n + 1)(2n + 1)
3

Niech L(n) lewa strona rwnoci, P(n) prawa strona rwnoci, predykat
P (n) :
P (n) , L(n) = P(n)
Podstawa indukcji n0 = 1 :

L(1) = (2 1)2 = 22 = 4, P(1) =

2
1 2 3 = 4, L(1) = P(1) P (1)
3
61

Krok indukcyjny dla n > 1.


Zamy P (n 1), t.j. L(n 1) = P(n 1). Wtedy
L(n) = L(n 1) + (2n)2 = P(n 1) + (2n)2 =

2
(n 1)n(2n 1) + 4n2 =
3

2
2
n[(n 1)(2n 1) + 6n] = n(n + 1)(2n + 1) = P(n)
3
3

W takim razie z zaoenia P (n 1) wynika L(n) = P(n), t.j. P (n). Zauwamy


przy okazji, e w kroku indukcyjnym wnioskujemy z pierwszej linii mamy:
n(n + 1)(2n + 1) =

3
L(n) = (n 1)n(2n 1) + 6n2
2

A to jest krok indukcyjny do dowodu tego, e kady wyraz cigu n(n+1)(2n+1)


jest podzielny przez 6.
Zadania:
Poka metod indukcji matematycznej prawdziwo nastpujcych rwnoci czstkowych sum szeregw liczbowych:
Pn
1.
k=1 (3k 2) = n(3n 1)/2
Pn
2.
k=1 k(k + 1) = n(n + 1)(n + 2)/3
Pn
3.
k=1 k(k 1) = (n 1)n(n + 1)/3
Pn
2
4.
k=1 k = n(n + 1)(2n + 1)/6
Pn
k 2
n
5.
k=1 (1) k = (1) n(n + 1)/2
Pn
6.
k=1 k(k + 1)(k + 2) = n(n + 1)(n + 2)(n + 3)/4
Pn
7.
k=1 k(k 1)(k 2) = (n 2)(n 1)n(n + 1)/4
Pn
8.
k=1 2/(k + 2)k = 3/2 (2n + 3)/(n + 1)(n + 2)
Pn
9.
k=1 1/(2k 1)(2k + 1) = n/(2n + 1)
Pn
10.
k=1 1/(3k 2)(3k + 1) = n/(3n + 1)
Pn1
11.
k=0 1/(n + k)(n + k + 1) = 1/2n
Pn1
2
12.
k=0 1/(n 2k)(n 2k + 2) = n/(4 n ) dla nieparzystych n > 0
Zadania:
Poka metod indukcji matematycznej prawdziwo nastpujcych wasnoci:
1. Oglne prawo de Morgana:
n
[

Ak =

k=1

n
\

k=1

62

Ak

2. 2n > n2 dla n > 4

Pn

3.
n dla n > 1
k=1 1/ k >

4. 4|(3n + 1) dla nieparzystych n > 0

5. 5|(2 4n + 3 9n ) dla n 0
6. 7|(2n+2 + 32n+1 ) dla n 0
7. 13|(42n+1 + 3n+2 ) dla n 0
8. Jeli c0 = c1 = 1, c2 = 3 oraz dla n > 2 cn = 3cn1 3cn2 + cn3 , to
cn = n2 n + 1 dla n 0
Przykad 3.4 Istnienie acucha zwycistw w turnieju
Rozwamy turnieje sportowe , w ktrych kady gracz spotyka si z kadym i
kada gra dwch przeciwnikw koczy si zwycistwem jednego z nich. acuch
zwycistw dugoci k, dotyczy k graczy G1 , . . . , Gk i ma miejsce gdy gracz G1
pokona gracza G2 , G2 wygra z G3 , . . . , Gk1 okaza si lepszy od Gk . Pokaemy, e w kadym takim turnieju z n uczestnikami mona zawsze zidentykowa
acuch zwycistw dugoci n.
Baza indukcji dla n0 = 3. Niech gracze A, B, C uczestnicz w turnieju. Jeli
A wygra z B to zapisujemy ten fakt jako A B. Po jego zakoczeniu mamy
dwie moliwoci:
1. Jeden z graczy pokona pozostaych. Np. A B, A C i wtedy gdy
B C, to acuch zwycistw ma posta A B C, w przeciwnym
razie A C B.
2. Kady z graczy ma po jednym zwycistwie i jednej porace. Np. B A i
A C i wtedy acuch zwycistw to B A C.
Krok indukcyjny dla n > 3. Po zakoczeniu turnieju wybierzmy dowolnego gracza X, ktry ma przynajmniej jedno zwycistwo i przynajmniej jedn porak.
Taki gracz istnieje, bo jego brak oznaczaoby, e w turnieju s tylko dwie kategorie graczy ci, ktrzy wygrali wszystkie spotkania oraz ci, ktrzy odnieli
same poraki. Ale w kadej z tych kategorii moe znale si co najwyej jeden
gracz. Wtedy liczba wszystkich graczy n musiaaby wynosi co najwyej dwch
graczy, wbrew zaoeniu, e n > 3.
Gracz X okrela dwie kategorie graczy:
1. W zbiorze W znajduj si gracze, z ktrymi X wygra
2. W zbiorze P s ci przeciwnicy, z ktrymi X przegra
Poniewa liczno n1 = |P| jest mniejsza ni n, to z zaoenia indukcyjnego
istnieje w zbiorze P acuch zwycistw:
P1 . . . Pn1
63

Podobnie moemy znale acuch zwycistw w zbiorze W :


W1 . . . Wn2
gdzie n2 = n 1 n1 .
Budowa acucha zwycistw dla wszystkich graczy jest teraz prosta. Ma on
bowiem nastpujc posta:
P1 . . . Pn1 X W1 . . . Wn2

Przykad 3.5 Liczba obszarw okrelonych przez n prostych na paszczynie


Mwimy, e proste p1 , . . . , pn s w pooeniu oglnym, gdy kada para pi , pj
ma punkt przecicia, ale adna trjka prostych nie przecina si w jednym punkcie. Pokaemy, e liczba obszarw L(n), na ktre dzieli paszczyzn zestaw n
prostych bdcych w pooeniu oglnym wynosi:
n(n + 1)
2
Baza indukcji dla n0 = 2. Poniewa prosta p2 dzieli na dwie czci kad z
ppaszczyzn okrelonych przez prost p1 , to dwie prost dziel paszczyzn na
cztery obszary i wzr na L(n) jest prawdziwy dla n = 2, bo L(2) = 1 + 3 = 4.
Krok indukcyjny dla n > 2.
Zamy, e proste p1 , . . . , pn1 dziel paszczyzn na L(n1) obszarw. Dodatkowa prosta pn przecina proste p1 , . . . , pn1 w pewnych n 1 rnych punktach.
Punkty te moemy uporzdkowa wedug kolejnoci wystpowania na prostej
pn . Wtedy kolejne punkty przecicia X1 , . . . , Xn1 le na granicach n obszarw
R0 , R1 , . . . , Rn1 , z ktrych kady jest dzielony na dwie czci przez prost pn .
Xi ley na granicy midzy Ri1 a Ri , i = 1, . . . , n 1.
W ten sposb zamiast n starych obszarw pojawia si 2n nowych, tzn. liczba
obszarw wzrasta o n. Std
L(n) = 1 +

L(n) = L(n 1) + n = 1 +

n(n + 1)
(n 1)n
+n=1+
2
2

i wzr na L(n) ma dan posta.


Problemy:
1. Mwimy, e zbir paszczyzn znajduje si w pooeniu oglnym, gdy kade dwie si przecinaj, a przecicie dowolnych trzech nie tworzy prostej.
Poka, e n paszczyzn w przestrzeni trjwymiarowej, ktre znajduj si
w pooeniu oglnym dzieli przestrze na 2 + (n 1)n obszarw.

2. Poka, e w wielokcie wypukym o n wierzchokach suma ktw midzy kolejnymi bokami wynosi (n 2)180 . Uwaga: Figura jest wypuka
gdy kady odcinek czcy jej dwa dowolne punkty cakowicie si w niej
zawiera.
64

3. Maestwo, pan X i pani Y, zaprosio na przyjcie n par maeskich.


Po pocztkowych powitaniach polegajcych na wzajemnym podaniu rk,
pan X zapyta pozostae 2n + 1 osb z iloma osobami wymieniy ucisk
doni. Ku swojemu zdziwieniu otrzyma 2n + 1 rnych odpowiedzi, t.j.
kada osoba przywitaa si z inn liczb osb. Wiadomo, e maonkowie
nie podaway sobie rk. Poka przez indukcj, e pani Y (maonka pana
X) przywitaa si z dokadnie n osobami?
Wskazwka: Rozwa maestwo, w ktrym jeden z partnerw przywita
si z maksymaln liczb osb, t.j. z 2n osobami. Z iloma osobami przywita
si partner tej osoby? Jak wpywa na liczb rnych odpowiedzi usunicie
tej pary z oblicze?
1. Budujemy przykadowy graf paski na mapie powiatw polskich. Krawd
takiego grafu jest wyznaczona przez wspln granic dwch powiatw lub
przez granic powiatu i granic Polski. Koniec takiej wsplnej granicy nazywamy wierzchokiem grafu. Zauwamy, e za wyjtkiem wierzchokw
znajdujcych si na granicy pastwa, wierzchoki grafu znajduj na granicy przynajmniej trzech powiatw.
W terminologii grafw powiat jest regionem wyznaczonym na paszczynie przez krawdzie grafu. Graf powiatw jest paskim grafem spjnym bo
istnieje droga wzdu jego krawdzi midzy dwoma dowolnymi wierzchokami. W naszym przykadzie regionem te jest obszar znajdujcy si poza
obszarem pastwa polskiego.
Na mapie Unii Europejskiej obszar poza Uni skadaby si z wicej ni
jednego regionu, a jednym z nich byaby Szwajcaria. Regiony w takim
podejciu cz si tylko na granicach i pokrywaj ca paszczyzn.
Niech r bdzie liczb regionw w paskim grae spjnym o k krawdziach
i n wierzchokach. Poka metod indukcji oglnej, e obowizuje nastpujcy zwizek Eulera:
nk+r =2
Wskazwka: Jak wpywa na wyraenie n k + r usunicie dowolnej krawdzi z grafu?

3.4.2

Obliczanie sum metod rnic

Lemat 3.1
Jeli an jest cigiem arytmetycznym o rnicy r, to dla m n :
n
X

k=m

Dowd:

1
1
=
ak ak+1
r

Zauwamy, e:
1
1
=
ak ak+1
r

1
1

am
an+1

1
1

ak
ak+1

65

Dlatego
n
X

n 
X

1
1
=
ak ak+1
r

k=m

1
r

h

1
1

am
am+1

1
r

1
1

ak
ak+1

k=m

am+1

1
am+2

+ +

1
an1

1
an

1
1

an
an+1

1
1
1
1
1
1
1
1

+ +

am
am+1
am+1
am+2
an1
an
an
an+1
=

1
r

1
1

am
an+1

i

Przykad 3.6 Pokaemy, e suma


n
X

k=1

n
1
=
n(n + 1)
n+1

Poniewa an = n jest cigiem arytmetycznym o rnicy r = 1, to z powyszego


lematu mamy:




n
X
n
1 1
1
1 1
1
1
=
=

n(n + 1)
r a1
an+1
1 1 n+1
n+1
k=1

Zadania:
Poka metod rnic:
Pn
1.
k=1 1/(2k 1)(2k + 1) = n/(2n + 1)
Pn
2.
k=1 1/(3k 2)(3k + 1) = n/(3n + 1)
Pn1
3.
k=0 1/(n + k)(n + k + 1) = 1/2n
Pn1
2
4.
k=0 1/(n 2k)(n 2k + 2) = n/(4 n ) dla nieparzystych n > 0

3.5

Rwnania rekurencyjne

Przykad rwnania rekurencyjnego deniujcego cig Fibonacciego:


F0 , 0, F1 , 1, n 2, Fn , Fn1 + Fn2
Szukamy rozwizania Fn w postaci jawnej, np. jako liniowej kombinacji
funkcji postaci rn , gdzie r R znajdujemy z rwnania:
rn = rn1 + rn2 , 1 = r + r2
66

Rozwizanie rwnania r2 + r 1 = 0 :

1 5
1 + 5
r1 =
, r2 =
2
2
Szukamy wspczynnikw c1 , c2 , takich, e Fn , c1 r1n + c2 rn spenia warunki pocztkowe F0 = 0, F1 = 1 :
c1 r10 + c2 r20 = 0, c1 r1 + c2 r2 = 1

Std c2 = c1 , c1 = 1/(r1 r2 ) = 1 5/5 i


!n
"
!n #
5
1 + 5
1 5

Fn =
5
2
2
Wasno 3.2 Cig Fibonacciego
1. Fn+1 Fn1 Fn2 = (1)n , n 1.
Dowd: Niech cn , Fn+1 Fn1 Fn2 . Dla n = 1, c1 = 1. Dla n + 1,
wyraenie ma posta:
2
2
cn+1 = Fn+2 Fn Fn+1
= (Fn+1 + Fn )Fn Fn+1
=

= Fn+1 (Fn Fn+1 ) + Fn2 = (Fn+1 Fn1 Fn2 ) = cn


To jest kolejny wyraz tego cigu jest negacj poprzedniego, a poniewa
pierwszy wyraz wynosi 1, wic cn = (1)n .
2. Fn+1 oraz Fn s liczbami wzgldnie pierwszymi.
Dowd: Jeli p|Fn oraz p|Fn+1 , to p|Fn+1 Fn1 Fn2 = (1)n . Std p = 1
co dowodzi naszej tezy.
3. Fn = Fm Fnm+1 + Fm1 Fnm dla n m 1.
Dowd: Zauwamy, e z tego, e F0 = 0, rwnanie jest spenione dla dowolnego m = n oraz dla m = 1, a w szczeglnoci dla n = 2.
Pokaemy teraz prawdziwo rwnoci dla n + 1 jeli jest ona prawdziwa
dla n n. Mamy bowiem dla m 2 i m n :
Fn+1 = Fn + Fn1 =
= (Fm Fnm+1 + Fm1 Fnm ) + (Fm1 F(n1)(m1)+1 + Fm2 F(n1)(m1) ) =
= Fm Fnm+1 + Fm1 Fnm + Fm1 Fnm+1 + Fm2 Fnm =
= (Fm + Fm1 )Fnm+1 + (Fm1 + Fm2 )Fnm =
= Fm+1 F(n+1)(m+1)+1 + Fm F(n+1)(m+1)
Niech k = m + 1. Pokazalimy wic prawdziwo tej relacji dla n + 1 oraz
n+1k 3:
Fn+1 = Fk F(n+1)k+1 + Fk1 F(n+1)k
67

Dla k = 2 mamy:
F2 Fn+12+1 + F1 Fn+12 = F2 Fn + F1 Fn1 = Fn + Fn1 = Fn+1 ,
co uzupenia dowd kroku indukcyjnego.
4. Jeli m|n, m > 0, n 0, to Fm |Fn .
Dowd: Zamy, e n = mk. Jeli k = 1, to m = n, Fm |Fn = Fm . Jeli
k = 2, to n m = 2m m = m i z powyszej rwnoci mamy:
Fn = Fm Fnm+1 + Fm1 Fnm =
= Fm Fnm+1 + Fm1 Fm = Fm (Fnm+1 + Fm1 )
Std dla k = 2, Fm |Fn .

W kroku indukcyjnym pokaemy, e twierdzenie jest prawdziwe dla n =


(k+1)m jeli jest ono prawdziwe dla k. Mianowicie wtedy Fkm = f Fm , f
N i dlatego
Fn = Fm Fnm+1 + Fm1 Fnm = Fm Fnm+1 + Fm1 F(k+1)mm =
= Fm Fnm+1 + Fm1 Fkm = Fm (Fnm+1 + Fm1 f )
co dowodzi prawdziwoci kroku indukcyjnego.
5. FN W P (m,n) |N W P (Fm , Fn ).
Dowd: Z poprzedniego twierdzenia wiemy, e jeli k|m i k|n, to Fk |Fm
oraz Fk |Fn , a std Fk |N W P (Fm , Fn ). W szczeglnoci jako k moemy
wzi N W P (m, n). Std FN W P (m,n) |N W P (Fm , Fn ).

Inny zapis rwnania Fibonacciego:


n 0, Fn+2 Fn+1 Fn = 0
Liniowe rwnanie rekurencyjne rzdu k o staych wspczynnikach
d0 , d1 , . . . , dk R :
dk an+k + dk1 an+k1 + + d1 an+1 + d0 an = vn

(2)

W przypadku rwnania Fibonacciego:


k = 2, d2 = 1, d1 = 1, d0 = 1, n 0, vn = 0
Jeli vn = 0 dla kadego n 0, to rwnanie to nazywa si jednorodnym
Rwnanie charakterystyczne rwnania rnicowego (2):
dk rk + dk1 rk1 + + d1 r + d0 = 0
68

(3)

Twierdzenie 3.1 O rozwizaniach jednorodnych liniowych rwna rekurencyjnych


Niech r1 , r2 , . . . rk C bd wszystkimi pierwiastkami rwnania charakterystycznego (3) (z ewentualnymi powtrzeniami dla tzw. pierwiastkw wielokrotnych).
1. Jeli wszystkie pierwiastki rk s jednokrotne, to rozwizanie rwnania
jednorodnego ma posta:
an = c1 r1n + c2 r2n + + cn rkn

(4)

Wspczynniki c1 , . . . , ck wyznaczamy z k warunkw pocztkowych.


2. Jeli pierwiastek ri = ma krotno ni , to w powyszym rozwizaniu (4)
j-te wystpienie wyraenia rin zastpujemy wyraeniem nj1 rin , dla j =
1, . . . , ni :
ni
XX
ci,j nj1 rin
(5)
an =
i

j=1

Wspczynniki ci,j wyznaczamy z k warunkw pocztkowych.

Przykad 3.7 Pierwiastki jednokrotne


Szukamy rozwizania rwnania rekurencyjnego:
an+2 = an+1 + 2an , n 0, a0 = 2, a1 = 1
Posta jednorodna:
an+2 an+1 2an = 0

Rwnanie charakterystyczne:

r2 r 2 = 0
Pierwiastki rwnania: r1 = 1, r2 = 2. Oglne rozwizanie:
an = c1 (1)n + c2 2n
Wyznaczenie wspczynnikw c1 , c2 z warunkw pocztkowych:
c1 + c2 = 2, c1 + 2c2 = 1
Std c1 = c2 = 1 i rozwizanie an ma posta:
an = (1)n + 2n

Przykad 3.8 Pierwiastki wielokrotne


Szukamy rozwizania rwnania rekurencyjnego:
an+2 = 4an+1 4an , n 0, a0 = 1, a1 = 4
69

Posta jednorodna:
an+2 4an+1 + 4an = 0

Rwnanie charakterystyczne:

r2 4r + 4 = 0
Pierwiastki rwnania: r1 = r2 = 2. Oglne rozwizanie:
an = c1 2n + c2 n2n = (c1 + c2 n)2n
Wyznaczenie wspczynnikw c1 , c2 z warunkw pocztkowych:
c1 = 1, (c1 + c2 )2 = 4
Std c1 = c2 = 1 i rozwizanie an ma posta:
an = (n + 1)2n

Zadania:
Znajd rozwizania nastpujcych rwna rekurencyjnych:
1. Rwnanie Fibonacciego z warunkami: a0 = a1 = 1
2. Rwnanie Fibonacciego z warunkami: a0 = 1, a1 = 3
3. an+2 = 2an+1 2an , a0 = a1 = 2
4. an+2 an+1 6an , a0 = 0, a1 = 1
5. an+2 an+1 6an , a0 = 2, a1 = 1
6. an+2 = an , a0 = a1 = 2
7. an+3 4an+2 + 5an+1 2an = 0, a0 = 4, a1 = 7, a2 = 17
Problemy:
1. Poka, e iloraz kolejnych wyrazw cigu Finonacciego zbiega do zotej
redniej, t.j.:

Fn+1
1+ 5
lim
=
n Fn
2
2. Niech an bdzie liczb wszystkich sw dugoci n zoonych z cyfr 0, 1 nie
zawierajcych kolejnych dwch jedynek 11. Poka, e:
a0 = 1, a1 = 2, a3 = 5, an = an1 + an2 , dla n 3
3. Znajd zwizek rekurencyjny dla cigu
70

(a) an , n/2

(b) bn , n/3

(c) cn , an + bn

Sprawd przez indukcj suszno zaproponowanych zwizkw rekurencyjnych.


Rwnania niejednorodne szczeglnej postaci:
dk an+k + dk1 an+k1 + + d1 an+1 + d0 an = rn v(n)

(6)

gdzie r R, oraz v jest wielomianem


Obserwacja: jeli bn jest rozwizaniem szczeglnym niejednorodnego liniowego rwnania rekurencyjnego, to dowolne rozwizanie cn tego rwnania
jest postaci:
cn = bn + an , n 0,
gdzie an jest rozwizaniem rwnania jednorodnego o tych samych wspczynnikach.

Twierdzenie 3.2 O rozwizaniach niejednorodnych liniowych rwna rekurencyjnych


Szczeglne rozwizanie niejednorodnego rwnania rekurencyjnego (6) o pocztkowych wartociach a0 , . . . , ak1 jest rozwizaniem rwnania jednorodnego o
wielomianie charakterystycznym
p(x)(x r)e+1
gdzie e jest stopniem wielomianu v, p(x) jest wielomianem charakterystycznym
rwnania oryginalnego:
p(x) , dk xk + dk1 xk1 + + d1 x + d0
a brakujce e + 1 wspczynnik ck+1 , . . . , ck+e+1 szukamy z dodatkowych warunkw otrzymanych na elementy ak , ak+1 , . . . , ak+e .
Przykad 3.9 Rekurencyjne rwnanie niejednorodne
Szukamy rozwiza rwnania rekurencyjnego:
an+2 an+1 2an = 2, a0 = 3, a1 = 2
Wielomian charakterystyczny p(x) = x2 x 2 = (x + 1)(x 2), a prawa strona
v(n) = 1n 2. Std r = 1 oraz e = 0. Dlatego wielomian charakterystycznego
nowego rwnania jednorodnego ma posta:
p(x)(x 1)0+1 = (x + 1)(x 2)(x 1)
z dodatkowym warunkiem pocztkowym: a2 = a1 + 2a0 + 2 = 6.
71

Rozwizanie oglne rwnania rekurencyjnego o wielomianie charakterystycznym


(x + 1)(x 2)(x 1) ma posta:
an = c1 (1)n + c2 2n + c3 1n
Podstawienie do warunkw pocztkowych otrzymujemy c1 = 3, c2 = 1, c3 = 1
i szczeglne rozwizanie naszego rwnania ma posta:
an = 3(1)n + 2n 1

Zadania:
Znajd rozwizania nastpujcych rwna rekurencyjnych:
1. an+2 = 3an+1 2an + 2 3n , a0 = 1, a1 = 2
2. an+3 6an+2 + 11an+1 6an = 12n3n, a0 = 2, a1 = 25, a2 = 140
3. an+2 5an+1 + 6an = 4n2 2n 3, a0 = 6, a1 = 14

3.6

Zliczanie obiektw kombinatorycznych

1. Wspczynniki dwumienne
2. Wasnoci liczbowe zbiorw i funkcji
3. Zasada wczania i wyczania
4. Podziay
5. Zbiory z powtrzeniami
6. Zliczanie drzew binarnych
3.6.1

Wspczynniki dwumienne


Wspczynnik dwumienny ak jest wspczynnikiem przy potdze xk w
rozwiniciu w szereg Taylora funkcji (1 + x)a , k {0} N, a R :
 
X
a k
a
(1 + x) =
x
k
k=0

Wzr na wspczynnik szeregu Taylora:


f (x) =

k=0

ck xk ck =
72

f (k) (0)
k!

Wzr na k-t pochodn funkcji (1 + x)a :


dk (1 + x)a
= a(a 1) . . . (a k + 1)(1 + x)ak
dk x
Wzr na wspczynnik dwumienny:

 
dk (1 + x)a
a
a(a 1) . . . (a k + 1)
=
/k! =

k
k
d x
k!
x=0

Zwizek z liczb kombinacji k-elementowych ze zbioru n-elementowego:


 
n
ck,n =
k
Dowd:

Jeli ponumerujemy elementy uniwersum U = {u1 , . . . , un }, to kady podzbir Z U moemy


reprezentowa przez cig binarny b1 , . . . , bn :
bi ,
oraz przez jednomian qZ (x) :
qZ (x) ,

n
Y

gdy ui Z,
gdy ui
6 Z

1
0

xbi , xb1 . . . xbn = xb1 ++bn = x|Z|

i=1

Zauwamy, e: q (x) = 1, qU (x) = xn , qZ (x) = xk wtt |Z| = k. Widzimy, e istnieje dokadnie


ck,n podzbiorw reprezentowanych przez jednomian xk . Rozwamy wielomian p(x) bdcy sum
jednomianw reprezentujcych wszystkie podzbiory U :
p(x) ,

qZ (x) =

Z2U

n
X
X

x =

k=0 Z,|Z|=k

n
X
k=0

Z drugiej strony:
n
XY

p(x) =

bi

Z2U i=1

1
X

1
X

b1 =0

b1 =0

b1 =0

1
X

xbn

[xb1 . . . xbn1 ](1 + x)

bn1 =0

1
X

bn =0

bn1 =0

[xb1 . . . xbn1 ]

1
X

[xb1 . . . xbn2 ](1 + x)2

bn2 =0

.
.
.

xb1 (1 + x)n1 = (1 + x)n

b1 =0

73

ck,n x

Z jednoznacznoci reprezentacji funkcji wielomianowych mamy wic


ck,n =

 

n
.
k

Wasno 3.3 Dwumian


Zwizek rekurencyjny (trjkt Pascala):
  
 

n
n1
n1
=
+
k
k1
k
Wasno przektnej trjkta Pascala:

   

n+1
n
n
=
+
k
k
k1
  
 

n
n1
n1
=
+
+
k
k1
k2
..
.
  
 



n
n1
n2
nk
=
+
+
+ +
k
k1
k2
0


k
X nj
=
kj
j=0

Zadania: Uzasadnij bez indukcji matematycznej:



Pn
n
n
1.
k=0 k = 2

Pn
k n
2.
k=0 (1) k = 0

Pn
n
n1
3.
k=0 2k = 2

Pn
n
n1
4.
k=0 2k+1 = 2

Pn
n
n1
5.
k=0 k k = n2

Pn
k n
n
6.
k=0 2 k = 3

Pn
7. (x + y)n = k=0 nk xk y nk

74

3.6.2

Wasnoci liczbowe zbiorw i funkcji

Dla dowolnych zbiorw skoczonych A, B, Ai U, i = 1, . . . , n :


|A B| = |A| + |B| |A B|
A B = |A B| = |A| + |B|
|U A| = |U | |A|
|A B| = |A||B|

|A1 An | = |A1 | |An |


|2U | = 2|U|
 
n
ck,n =
k

Oznaczmy zbir wszystkich funkcji postaci f : X Y przez Y X , wtedy:


X
Y = |Y ||X|

Liczba funkcji rnowartociowych w X X (permutacji zbioru X) wynosi


|X|!
Liczba funkcji rnowartociowych w Y X , gdy |Y | = |X| wynosi |X|!
Liczba funkcji rnowartociowych w Y X (iniekcji zbioru X w zbir Y ),
|Y | |X|, wynosi:
|Y | (|Y | 1) . . . (|Y | |X| + 1)

3.6.3

Zasada wczania i wyczania

Zasada wczania i wyczania przypadek dwch zbiorw:


|A1 A2 | = |A1 | + |A2 | |A1 A2 |
Zasada wczania i wyczania przypadek trzech zbiorw:
|A1 A2 A3 | = |A1 |+|A2 |+|A3 ||A1 A2 ||A1 A3 ||A2 A3 |+|A1 A2 A3 |
Zasada wczania i wyczania przypadek oglny:
niech I = {1, . . . , n} bdzie zbiorem indeksw, wtedy


n
\
[
X

|J|+1
(1)
|
Ai | =
Ai


i=1

6=JI

75

iJ

Dowd kroku indukcyjnego:


|A1 An An+1 | = |A1 An | + |An+1 | |(A1 An+1 ) (An An+1 )|





\
\
X
X



(1)|J|+2 An+1
Ai
(1)|J|+1 Ai + |An+1 | +
=




iJ
iJ
6=JI
6=JI


\
X


(1)|J|+1 Ai
=


iJ

6=J(I{n+1}

Zastosowanie: Liczba S(k, n) rwna liczbie wszystkich funkcji typu na


Y X , (suriekcji zbioru X na zbir Y ) |X| = k n = |Y | wynosi:
 
n
1 X
n
S(k, n) =
(n j)k
(1)j
j
n! j=0
Dowd formuy S(k, n)
Niech 6= Z ( Y. Oznaczmy przez AZ Y X zbir tych funkcji, ktre nie przyjmuj wartoci
w zbiorze Z, t.j. AZ , (Y Z)X . Liczno zbioru AZ wynosi wic (n |Z|)k
na
Poszukiwany zbir B, funkcji postaci f : X Y otrzymujemy przez odjcie od zbioru Y X sumy
zbiorw A{y} dla wszystkich y Y ;
X

B=Y

A{y}

yY

Dlatego
|B| = n



X



A{y}

yY

Zauwamy, e j-elementowe przecicie zbiorw typu A{yip } , p = 1, . . . , j daje zbir postaci AZ


gdzie Z = {yi1 , . . . , yij } jest dowoln kombinacj j-elementow zbioru Y.
Stosujemy zasad wczania i wyczania:





X

\

X




|Z|+1
A{y} =
A{y}
(1)






yY
yZ
6=ZY
X
(1)|Z|+1 |AZ |

6=ZY

n1
X

(1)

j+1

(n j)

j=1 ZY,|Z|=j
n1
X

(1)

j+1

j=1

Ostatecznie
|B| = nk

n1
X
j=1

(1)j+1

 

n
k
(n j)
j

 

n
(n j)k =
j

n
X
j=0

76

(1)j

 

n
(n j)k
j

3.6.4

Podziay

Podzia zbioru U na n podzbiorw jest dowolnym zestawem zbiorw Z1 , . . . , Zn


U takim, e:
n
X
Zi , Zi Zj = , i 6= j
U=
i=1

Liczba P (k, n) wszystkich podziaw zbioru k-elementowego U na n rozcznych podzbiorw wynosi:


 
n
1 X
j n
P (k, n) =
(n j)k
(1)
j
n! j=0
Dowd Formuy P (k, n)
Niech I bdzie zbiorem indeksw 1, . . . , n. Dowolny podzia na n podzbiorw okrelony przez
funkcj f : U I : zbioru U na zbir I :
f (u) = i wtt u Zi
Dowolna zmiana numeracji, t.j. permutacja g zbioru I zmienia funkcj f, ale nie zmienia podziau:
f (u) = g(i) wtt u Zi
W takim razie jednemu podziaowi odpowiada n! numeracji. Poniewa liczba suriekcji ze zbioru
I U wynosi S(k, n), to P (k, n) = S(k, n)/n!.

3.6.5

Zbiory z powtrzeniami

Przykad: [a, a, a, b, b] jest podzbiorem z powtrzeniami, np. dla uniwersum


U = {a, b, c}
Koncepcja zbioru z powtrzeniami (wielozbioru) pasuje do koncepcji kolekcji danych, gdzie instancje tej samej danej mog si powtarza
Matematycznie wielozbir W moemy reprezentowa przez funkcj fW :
U N {0}
Przykad: wielozbir W = [a, a, a, b, b] reprezentowany jest przez funkcj
fW (a) = 3, fW (b) = 2, fW (c) = 0.
Mwimy, e wielozbir W jest k elementowy gdy:
X
fW (u) = k
uU

77

Niech s(k, n) bdzie liczb rnych k-elementowych wielozbiorw okrelonych w zbiorze n-elementowym. Wtedy:
s(k, n + 1) = s(k, n) + s(k 1, n) + + s(1, n) + s(0, n)
Dowd: Ten rekurencyjny zwizek wynika z faktu, e element n + 1 albo
nie wystepuje w wielozbiorze i mamy wtedy s(k, n) takich wielozbiorw w
zbiorze n-elementowym, albo wystpuje z krotnoci j > i wtedy krotno
k j daje s(k j, n) wielozbiorw.
s(k, n) spenia prostsz relacj rekurencyjn:
s(k, n + 1) = s(k 1, n + 1) + s(k, n)
Wniosek: Tablica wartoci s(k, n) jest obrcon tablic wartoci
dokadniej:


n+k1
s(k, n) =
k
3.6.6


, a

n
k

Zliczanie drzew binarnych

Rekurencyjny schemat denicji zbioru drzew T : Niech s symbolizuje dowoln zawarto wza drzewa, a E jest symbolem drzewa pustego.
1. krok bazowy:
(a) E T puste drzewo binarne
(b) (E, s, E) T binarne drzewo o jednym wle

2. krok indukcyjny:

T1 , T2 T T , (T1 , s, T2 ) T
Drzewo T1 nazywamy lewym poddrzewem drzewa T, a T2 jego prawym poddrzewem. Mwimy, e zawarto s znajduje si w korzeniu
drzewa T. Jeli T1 6= E, to mwimy, e korze T1 jest lewym synem
korzenia drzewa T. Jeli natomiast T2 6= E, to korze T2 jest prawym
synem korzenia drzewa T.
Formalnie drzewo T T jest napisem nad alfabetem {s, E, (, )} poprawnie zdeniowanym wedug powyszego schematu o liczbie wzw rwnej
liczbie wystpie symbolu s
W praktyce programowania w konstrukcji (T1 , s, T2 ), s jest zastpowane
czsto zoon struktur danych, a Ti referencj na by moe puste poddrzewo
Mwimy, e dwa drzewa s rne jeli T1 6= T2 w sensie napisw, ktre je
reprezentuj
78

Poziom zagniedenia wza minus jeden okrela gboko tego wza.


Maksymalna gboko okrela wysoko drzewa.
Przykady drzew:
Napis ((E, s, E), s, (E, s, E)) reprezentuje drzewo o trzech wzach.
Drzewo to ma dwa poddrzewa, kade po jednym wle.Wysoko tego
drzewa wynosi 1.
Napis ((((E, s, E), s, E), s, E), s, E) reprezentuje drzewo o czterech
wzach. Drzewo to ma jedno poddrzewo niepuste, ktre z kolei te
ma tylko lewe poddrzewo niepuste o dwch wzach. Wysoko tego
drzewa wynosi trzy.
Niech Tn oznacza zbir wszystkich drzew binarnych o n wzach, a t(n) ,
|Tn |
Wasnoci:
1. t(0) = 1 bo E T

2. t(1) = 1 bo (E, s, E) T

3. Jeli T Tn , T = (T1 , s, T2 ) oraz T1 Tk , 0 k (n 1), to


T2 Tnk1
4. Rekurencyjny zwizek dla t(n) :

t(n) = t(0)t(n 1) + t(1)t(n 2) + + t(n 2)t(1) + t(n 1)t(0)


5. Jawna posta funkcji dla t(n) :
 
1
2n
t(n) =
, n N {0}
n+1 n
Dowd Wyprowadzenie wzoru (7)
Deniujemy funkcj tworzc;

F (x) ,

f (n)x

n=0

Obliczamy wyraenie xF 2 (x) :

xF 2 (x) = x

f (i)xi

i=0

=x

X
k=0

=x

X
j=0

f (i)f (j)

i+j=k

f (k + 1)xk =

k=0

f (j)xj

f (k + 1)xk+1

k=0

= F (x) f (0) = F (x) 1

79

(7)

Rozwizujemy rwnanie kwadratowe xF 2 (x) F (x) + 1 = 0 wzgldem F (x) :

F (x) =

1 4x
2x

Znajdujemy szereg Taylora w postaci dwumiennej dla G(x) =

G(x) =



X
1/2

(4x)



X
1/2

1 4x :
n

(4) x

n=0

n=0

Zmieniamy posta n-tego wspczynnika rozwinicia Taylora:

1/2
n
(4) =
n

1
2

1
2

3
2

(2n3)
(4)n
2

n!

1 1 3 (2n 3)2n 4n
=
n!
1 3 (2n 3)2n (n 1)!
=
n!(n 1)!

1 3 (2n 3) 2 4 (2n 2) 2
n!(n 1)!

=
=

1 2 3 (2n 3) (2n 2) 2
n!(n 1)!

2
2 2n 2
(2n 2)!
=
(n 1)!(n 1)! n
n n1

Wyliczamy szereg Taylora dla (1 G(x))/2x :

F (x) =



X
1 2n 2

n=1

Wniosek: f (n) =

1
n+1

2n
n

n1

Kongruencje
Podzielno liczb cakowitych
Algebra reszt
Szyfrowanie

80

n1

X
n=0

 

1
2n n
x
n+1 n

4.1

Podzielno liczb cakowitych

Pojcie ilorazu i reszty z dzielenia liczb cakowitych


Jeli a, b Z, 6= 0, to iloraz cakowity q Z liczby a przez liczb b oraz
reszta r Z z dzielenia a przez b speniaj nastpujcy zwizki:
a = qb + r, 0 r |b| 1

(8)

Przykady:
Dla a = 15, b = 4 : q = 3, r = 3

Dla a = 15, b = 4 : q = 3, r = 3

Dla a = 15, b = 4 : q = 4, r = 1

Dla a = 15, b = 4 : q = 4, r = 1

Dla dowolnych a, b Z, b 6= 0 istnieje dokadnie jedna para liczb cakowitych (q, r) speniajca zwizki (8)
Dowd jednoznacznoci ilorazu i reszty:
Jeli a = q1 b + r1 = q2 b + r2 , 0 r1 , r2 |b| 1, to
|q1 q2 | |b| = |r1 r2 | < |b|
Std |q1 q2 | < 1, a dla liczb cakowitych jest to moliwe gdy q1 = q2 = q.
W efekcie r1 = a qb = r2 .
Dowd istnienia ilorazu i reszty dla a 0 (przez indukcj):
Baza indukcji dla a = 0, . . . , |b| 1 :
q = 0, r = a bo a = 0 b + a, 0 a |b| 1
Krok indukcyjny dla a (|b| 1) :
a = qb + r, 0 r |b| 1 a + 1 = q b + r , 0 r |b| 1

Moliwe s dwa przypadki:(1)r + 1 < |b|; (2) r + 1 = |b|.


W pierwszym przypadku q = q, r = r + 1, bo:

a + 1 = (qb + r) + 1 = qb + (r + 1) = q b + r , 0 r |b| 1
W drugim przypadku dla b > 0 mamy q = q + 1, r = 0, bo:
a + 1 = (qb + r) + 1 = (q + 1)b + (r + 1 b) = q b + r , r = 0
Natomiast gdy r + 1 = b dla b < 0 mamy q = q 1, r = 0,
a + 1 = (qb + r) + 1 = (q 1)b + (r + 1 + b) = q b + r , r = 0
81

Dowd istnienia ilorazu i reszty dla a < 0 (przez negacj):


Budujemy iloraz q i reszt r z ilorazu q i reszty r dla a > 0. Jeli r = 0,
to q = q, r = 0, bo:
a = (a) = (qb + r) = (q)b + 0

Jeli r > 0 i b > 0, to q = q 1, r = b r, bo:

a = (a) = (qb + r) = (q 1)b + (b r) = q b + r , 0 r |b| 1


Natomiast gdy r > 0 i b < 0, q = q + 1, r = |b| r, bo:

a = (a) = (qb + r) = (q + 1)b + (|b| r) = q b + r , 0 r |b| 1

Funkcje ilorazu q = a b, i reszty r = mod b (a) :


a = (a b)b + mod b (a)

Zwizek ilorazu cakowitego z ilorazem rzeczywistym


Dolna cz cakowita liczby rzeczywistej x :

x = max{k Z : k x}

Grna cz cakowita liczby rzeczywistej x :

x = min{k Z : k x}

Podstawowe wasnoci x i x, x R :

x x < x + 1

 j k
x
x
n N,
=
n
n
x = x

Jeli b > 0, to iloraz cakowity otrzymujemy jako doln cz cakowit ilorazu rzeczywistego:
jak
ab=
b
Mianowicie:
jak a jak
<
+1
b j bk
j a kb
a
b a<
b+b
b
jak b
0a
b < b
b
Biorc wic q = a/b, r = a qb otrzymujemy wasno denicyjn
dla ilorazu i reszty z dzielenia cakowitego a przez b :
a = qb + r, 0 r b 1
82

Jeli b < 0, to iloraz cakowity otrzymujemy jako grn cz cakowit ilorazu rzeczywistego:
lam
ab=
b
Mianowicie:




a
a
a

+1
<
b
b
b




a
a
(b) a <
(b) + |b|
b
b
lam
lam
b a<
b + |b|
b
lam b
0a
b < |b|
b

Biorc wic q = a/b, r = a qb otrzymujemy wasno denicyjn


dla ilorazu i reszty z dzielenia cakowitego a przez b :
a = qb + r, 0 r |b| 1
wiczenia:
1. Oblicz a b, mod b (a), a/b oraz a/b gdy:
(a) a = 25, b = 3
(b) a = 25, b = 3
(c) a = 25, b = 3

(d) a = 25, b = 3
2. Sprawd wasno n N, x R, x/n = x/n gdy:
(a) x = 25, 333 n = 7
(b) x = 25, 333 n = 7
Zadania:
1. Oblicz a b oraz mod b (a) gdy:
(a) a = 2b 1, a, b Z, b > 0

(b) a = 2b 1, a, b Z, b < 0

2. Udowodnij wasno: n N, x R, x/n = x/n

83

4.1.1

Kombinacje liniowe dwch liczb cakowitych

Kombinacja liniowa liczb a, b Z o wspczynnikach x, y Z to wyraenie


postaci:
xa+yb
Zbir wszystkich kombinacji liczb a, b oznaczamy przez L(a, b) :
L(a, b) , {xa + yb : x, y Z}
Niech L+ (a, b) zawiera tylko dodatnie elementy L(a, b), a L (a, b) tylko
ujemne. Wtedy:
L (a, b) = L+ (a, b)
L(a, b) = L (a, b) {0} L+ (a, b)
gdzie negacja Z zbioru Z oznacza zbir negacji wszystkich elementw Z
Najwikszy wsplny podzielnik N W P (a, b) okrelamy nastpujco:
N W P (a, b) , max{c Z : c|a, c|b}
Najmniejsz wspln wielokrotno N W W (a, b) okrelamy nastpujco:
N W W (a, b) , min{c N : a|c, b|c}
Denicja funkcji NWP jest poprawna o ile |a| + |b| > 0
Najwikszy wsplny podzielnik jest zawsze dodatni
Najwikszy wsplny podzielnik nie zmienia sie przy zmianie znaku:
N W P (a, b) = N W P (a, b) = N W P (a, b)
= N W P (a, b) = N W P (|a|, |b|)

Twierdzenie 4.1 O liniowej reprezentacji funkcji NWP


Niech dla a, b Z, |a| + |b| > 0, ma,b oznacza najmniejszy element zbioru
L+ (a, b). Wtedy:
1. ma,b dzieli kady element L+ (a, b)
2. ma,b dzieli kady element L (a, b)
3. ma,b dzieli kady element L(a, b)
4. ma,b dzieli zarwno a jak i b
84

5. Jeli c dzieli a i b, to dzieli kady element zbioru L(a, b)


6. Jeli c dzieli a i b, to dzieli ma,b
7. ma,b jest najwikszym wsplnym podzielnikiem a i b
8. Najwikszy wsplny podzielnik a i b jest kombinacj liniow a i b, t.j.
istniej takie liczby x, y Z, e:
N W P (a, b) = x a + y b

Dowd:

W kolejnoci faktw do pokazania mamy:


1. Niech ma,b = x0 a+y0 b. Wtedy gdyby dla pewnego xa+yb L+ (a, b) reszta r z dzielenia
xa + yb przez ma,b bya wiksza od zera, to
r = xa + yb qma,b , r = (x qx0 )a + (y qy0 )b
Znalelimy wic r mniejsze od ma,b i nalece do L+ , co przeczy wyborowi ma,b .
2. Bo dla xa + yb L (a, b), to ma,b |(x)a + (y)b L+ (a, b). W takim razie ma,b |xa +
yb L (a, b)
3. ma,b dzieli zero, a wic z powyszych dwch punktw dzieli kady element zbioru L(a, b)
4. Skoro a = 1 a + 0 b, za b = 0 a + 1 b, to a, b L(a, b) i z poprzedniego punktu dziel
si przez ma,b
5. Wsplny podzielnik a i b dzieli rwnie kad kombinacj liczb a i b, a wic kady element
zbioru L(a, b)
6. Poniewa ma,b jest elementem L(a, b), to z poprzedniego punktu musi dzieli si przez
kady wsplny podzielnik a i b
7. ma,b jako wielokrotno kadego wsplnego podzielnika liczb a oraz b, bdc jednoczenie
wsplnym podzielnikiem a i b (punkt 4) musi by najwikszym wsplnym podzielnikiem
aib
8. Skoro ma,b = N W P (a, b) i ma,b L(a, b), to teza tego punktu jest oczywista

4.1.2

Algorytm Euklidesa dla NWP

Twierdzenie 4.2 Poprawno algorytmu Euklidesa dla NWP


Niech a, b Z, b > 0, r0 , a, r1 , b. Wtedy
1. N W P (a, b) = N W P (b, mod b (a))
2. Dla i > 0, gdy ri > 0 algorytm Euklidesa deniuje kolejne wyrazu cigu
ri+1 , mod ri (ri1 ). Gdy ri = 0, element ri+1 nie jest okrelony. Cig ten
ma nastpujce wasnoci:
(a) N W P (r0 , r1 ) = N W P (a, b)
85

(b) ri+1 < ri dla i > 0


(c) N W P (ri , ri+1 ) = N W P (ri1 , ri ) dla i > 0
(d) N W P (ri , ri+1 ) = N W P (a, b)
(e) Jeli ri+1 = 0, to ri = N W P (a, b)
(f) Dla pewnego i b + 1 : ri = 0

Zadanie:
Sprawd na przykadach, e nastpujca funkcja C poprawnie realizuje algorytm
Euklidesa:
int NWP(int a, int b)
{ int r;
while (r = a%b) {
a = b; b = r;
}
return b;
}
wiczenia:
1. Oblicz N W P (a, b) gdy:
(a) a = 81, b = 27
(b) a = 81, b = 27

(c) a = 81, b = 27

2. Wyznacz lad wywoania funkcji NWP(a,b) gdy


(a) a = 1024, b = 10024
(b) a = 10024, b = 1024
Zadania:
1. Niech q = a b, r = mod b (a). Poka, e N W P (a, b) = N W P (q, r).
2. Udowodnij twierdzenie 4.2.
4.1.3

Rozszerzony algorytm Euklidesa dla NWP

Twierdzenie 4.3 Poprawno rozszerzonego algorytmu Euklidesa dla NWP


Niech rwnie a, b Z, b > 0, r0 , a, r1 , b i dodatkowo x0 = 1, y0 = 0, x1 =
0, y1 = 1. Wtedy

86

1. Dla i > 0, gdy ri > 0 rozszerzony algorytm Euklidesa deniuje kolejne


wyrazu cigu ri+1 , mod ri (ri1 ) i dodatkowo wspczynniki kombinacji
liniowej xi+1 , yi+1 :
qi1 , ri1 ri , xi+1 , xi1 qi1 xi , yi+1 , yi1 qi1 yi
Gdy ri = 0, elementy ri+1 , xi+1 , yi+1 nie s okrelone. Cigi ri , xi , yi generowane przez rozszerzony algorytm Euklidesa maj nastpujce wasnoci:
(a) r0 = x0 a + y0 b, r1 = x1 a + y1 b
(b) Jeli dla i > 0, ri > 0, ri1 = xi1 a + yi1 b oraz ri = xi a + yi b, to
ri+1 = xi+1 a + yi+1 b
(c) Jeli ri+1 = 0, to N W P (a, b) = ri = xi a + yi b

Zadanie: Sprawd na przykadach, e nastpujca funkcja nwpxy poprawnie


realizuje w jzyku C rozszerzony algorytm Euklidesa, tj. po wywoaniu z =
nwpxy(u,v,&x,&y) mamy: z = N W P (u, v), z = x u + y v.
int nwpxy(int a, int b, int* px1, int* py1)
{ int q, r, x0=1, y0=0, x1=0, y1=1, x2, y2;
while (q=a/b, r=a%b){
a = b; b = r;
x2 = x0-q*x1; y2 = y0-q*y1;
x0 = x1; x1 = x2; y0 = y1; y1 = y2;
}
*px1 = x1; *py1 = y1;
return b;
}
wiczenia:
1. Oblicz x, y Z takie, e N W P (a, b) = xa + yb gdy:
(a) a = 81, b = 27
(b) a = 81, b = 27

(c) a = 81, b = 27

2. Wyznacz lad wywoania funkcji nwpxy(a,b) gdy


(a) a = 1024, b = 10024
(b) a = 10024, b = 1024
Problem:
Udowodnij twierdzenie 4.3.
87

4.1.4

Przykad rozlewanie pynw

Problem odmierzania pynu


Z rezerwuaru R o bardzo duej pojemnoci naley odmierzy c jednostek pynu
dysponujc miark A o pojemnoci a jednostek oraz miark B o pojemnoci b.
W przypadku
gdy c max(a, b) c jednostek pynu ma znale si w jednym z naczy
A lub B
gdy c > max(a, b) c jednostek pynu ma znale si w dodatkowym naczyniu C o nieznanej pojemnoci wikszej lub rwnej c
Zakadamy, e a, b, c s liczbami naturalnymi. Dopuszczalna operacja w jednym
kroku procesu rozlewania pynw polega albo na wypenieniu do pena lub na
cakowitym oprnieniu jednej z miarek A lub B.
Rozlewanie pynw przypadki specjalne
Niech XY oznacza przelanie pynu z X do Y
Przypadek a|c lub b|c jest trywialny
Przypadek c > a oraz c > b rozwizujemy nastpujco:
1. niech k c a

2. wykonaj k razy: RA, AC


3. pozostae r = c k a < a jednostek uzyskaj stosujc rozwizanie
opisane poniej dla przypadku c < a. W rozwizaniu tym c jednostek traa na kocu do naczynia A. W tym przypadku c = r i tyle
jednostek przelewamy do naczynia C.
Rozlewanie pynw kombinacje liniowe
Zakadamy teraz, e c < a, nie ma naczynia C, a c jednostek znajdzie si na
kocu w miarce A.
Twierdzenie 4.4 O stanach miarek A i B
Po kadym kroku XY w miarce A (B) znajduje si liczba jednostek xA a + yAb
(xB a + yB b dla B) pynu gdzie xA , yA , xB , yB Z.
Dowd Dowd prowadzimy przez indukcj Na pocztku miarki s puste wic xA =
yA = xB = yB = 0.

1. Dla kroku RA (RB) mamy xA = 1, yA = 0 (xB = 0, yB = 1), bo czerpic z


rezerwuaru R dolewamy do A (B) pyn do pena
2. Dla kroku AR (BR) mamy xA = 0, yA = 0 (xB = 0, yB = 0), bo wylewajc
zawarto A (B) do rezerwuaru R oprniamy cakowicie miark
3. Dla kroku AB mamy zmian wspczynnikw zalen od biecej zawartoci obu miarek:
(a) xA a + yA b b (xB a + yB b) :

xA = xA + xB , yA
= yA + yB 1, xB = 0, yB
=1

88

(b) xA a + yA b < b (xB a + yB b) :

xA = 0, yA
= 0, xB = xA + xB , yB
= yA + yB

4. Dla kroku BA mamy warunki i wzory symetryczne:


(a) xB a + yB b a (xA a + yA b) :

xB = xA + xB 1, yB = yA + yB , xA = 0, yA = 1
(b) xB a + yB b < a (xA a + yA b) :

xB = 0, yB = 0, xA = xA + xB , yA = yA + yB
Powysze kroki wyczerpuj wszystkie moliwoci kroku indukcyjnego, w ktrym pokazalimy,
e jeli stan pynw w miarkach przed danym krokiem jest kombinacj liniow xa + yb, to po

Wniosek: Na kocu procesu rozlewania musimy mie c = xa + yb, z wasnoci


zbioru L+ (a, b) mamy N W P (a, b)|c. To jest warunkiem koniecznym na istnienie rozwizania problemu dla przypadku c < a i symetrycznie dla c < b jest:
N W P (a, b)|c.
jej wykonaniu stan ich te jest postaci x a + y b.

Rozlewanie pynw konstrukcja rozwizania dla c < a


Warunek N W P (a, b)|c jest te warunkiem dostatecznym dla przypadku c < a
(symetrycznie rwnie dla c < b), potramy bowiem skonstruowa rozwizanie
nastpujco biorc reprezentacj c = xa + yb, x, y N :
Algorytm 4.1 Rozlewanie w przypadku c < a
Krok 0: k 0; [x, y] nwpxy(a, b); //c = xa + yb, x, y N
Krok 1: Wykonaj x razy:
Krok 1.1: RA; AB;
Krok 1.2: Wykonaj
Krok 1.2.1: jeli miarka B jest pena, to
BR; k k + 1;
jeli k = y, to zakocz (wynik w A)
Krok 1.2.2: jeli miarka A jest pusta, to
wyjd z ptli 1.2 (do kroku 1.1);
w przeciwnym razie
AB i kontynuuj ptl 1.2
Powyszy algorytm korzysta ze specjalnej kombinacji c = xa + yb, w ktrej x
jest dodatnie, a y ujemne.
Lemat 4.1
Jeli a, b, c N oraz N W P (a, b)|c, to istnieje reprezentacja c = xa + yb, dla
ktrej x, y N.
Dowd: Z wasnoci zbioru L+ (a, b) wiemy, e c = xa + yb, dla pewnych x, y Z. Musimy
pokaza, e moemy zawsze dobra dodatnie x w takiej reprezentacji. Zauwamy, e dwie rne
reprezentacje c = x1 a + y1 b = x2 a + y2 b speniaj nastpujcy warunek:
(x1 x2 )a = (y2 y1 )b
Na przykad dla wspczynnikw (x1 , y1 ) nowe wspczynniki (x2 , y2 ) zdeniowane wzorami
x2 = x1 + b/N W P (a, b), y2 = y1 a/N W P (a, b)

89

speniaj powyszy warunek. Zauwamy, e w nowej parze wspczynnik x si zwikszy, a


wspczynnik y zmniejszy. Gdyby w reprezentacji c = xa + yb wspczynnik x by ujemny,
to stosujc powysze przejcia z (x1 , y1 ) na (x2 , y2 ) co najmniej (x) N W P (a, b)/b razy
otrzymamy x dodatnie, a y ujemne.

wiczenia:
1. Znajd x, y Z takie, e x 0, y 0, N W P (a, b) = xa + yb gdy:
(a) a = 1024, b = 10024
(b) a = 10024, b = 1024
2. Uzyskaj 32 litry stosujc tylko menzurki A i B odpowiednio o pojemnociach 64 i 48 litrw.
3. Uzyskaj 96 litrw w naczyniu C o pojemnoci 1000 litrw stosujc menzurki A i B odpowiednio o pojemnociach 64 i 48 litrw.
Zadania:
1. Uzyskaj 36 litrw stosujc tylko menzurki o pojemnoci 64 i 48 litrw.
2. Uzyskaj 108 litrw w naczyniu C o pojemnoci 1000 litrw stosujc menzurki A i B o pojemnoci 64 i 48 litrw.
4.1.5

Liczby pierwsze wprowadzenie

Denicja: Liczby a, b Z s wzgldnie pierwsze wtt N W P (a, b) = 1


Przykady liczb wzgldnie pierwszych: N W P (4, 15) = 1, N W P (3, 7) =
1, N W P (121, 120) = 1
Lemat: Jeli liczby a1 . . . . , an Z s pierwsze wzgldem b Z, liczba
a , a1 an jest pierwsza wzgldem b.
Dowd: Poniewa N W P (ai , b) = 1, to istnieje kombinacja xi ai + yi b = 1. Std:
1=

n
Y

[xi ai + yi b] =

i=1

n
Y

xi ai + yb =

i=1

n
Y
i=1

xi

n
Y

ai + yb = xa + yb

i=1

gdzie x = x1 xn , a y = (1 xa)/b. Dlatego N W P (a, b) = 1.

Niech d(n) bdzie liczb dodatnich dzielnikw liczby n Z


Obserwacje:
d(1) = 1, d(1) = 1
Jeli n Z, |n| =
6 1, to d(n) 2
90

Denicja: Liczba p N, p > 1 jest liczb pierwsz wtt d(n) = 2

Przykady liczb pierwszych: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47

Lemat: Jeli p jest liczb pierwsz, to dla dowolnej liczby n Z albo p, n


s wzgldnie pierwsze lub p dzieli n.
Dowd: Podzielniki p to 1 oraz p, a wic N W P (p, n) = 1 lub N W P (p, n) = p. W
pierwszym przypadku p, n s wzgldnie pierwsze, a w drugim p|n.
Lemat: Jeli p jest liczb pierwsz i p|ab, dla pewnych a, b Z, to albo
p|a lub p|b.
Dowd przez zaprzeczenie Gdyby p 6 |a oraz p 6 |b, to a, b s pierwsze wzgldem
p. Z lematu powyej wiemy, e wtedy p i ab s wzgldnie pierwsze, a to przeczy p|ab.
Wniosek: Jeli p jest liczb pierwsz i p|a1 an , to dla pewnego i, p|ai .
Wniosek: Jeli p, q1 , . . . , qn s liczbami pierwszymi i p|q1 qn , to dla
pewnego i, p = qi .
wiczenia:
1. Wybierz wszystkie pary liczb wzgldnie pierwszych wystpujce w przedziale [4, 24] N
2. Sprawd, e
najmniejsza liczba pierwsza p < n, ktra dzieli n jest nie
wiksza ni n, gdy n = 63, 255, 333.
Zadania:
1. Udowodnij wniosek: Jeli p jest liczb pierwsz i p|a1 an , to dla
pewnego i, p|ai
2. Udowodnij wniosek: Jeli p, q1 , . . . , qn s liczbami pierwszymi i p|q1 qn ,
to dla pewnego i, p = qi .
4.1.6

Faktoryzacja na liczby pierwsze

Twierdzenie 4.5 O rozkadzie na czynniki pierwsze Dla dowolnej liczby naturalnej n 2 istnieje dokadnie jeden rozkad na czynniki pierwsze, t.j. istnieje
jedyne r i istnieje jedyny zestaw liczb pierwszych p1 pr taki, e
n = p1 pr

Dowd przez indukcj

Jeli n jest liczb pierwsz, to r = 1, p1 = n. Jeli dla m < n


twierdzenie jest prawdziwe i n nie jest liczb pierwsz, to istniej liczby a < n, b < n takie, e
n = ab. Z zaoenia indukcyjnego mamy
a = p1 pr1 , b = q1 qr2 , p1 pr1 , q1 qr2

91

czymy i sortujemy oba cigi liczb pierwszych otrzymujc cig p1 pr , r = r1 + r2 :

n = ab = p1 pr
Mamy wic prawdziwo wniosku indukcyjnego dla n.
Przypumy teraz, e mamy dwa rozkady na czynniki pierwsze:
n = p1 pr1 = q1 qr2
Wtedy p1 = qi dla pewnego i, bo p1 |q1 . . . qr2 . Dzielimy obie strony powyszej rwnoci przez

p1 i stosujemy to samo rozumowanie dla p2 . Po r1 krokach otrzymamy po lewej stronie warto

1. Prawa strona te musi by jeden, a wic nie moe by adnego qj , ktre nie ulego skrceniu.
To jest oba zestawy s identyczne.

Przykady rozkadw na czynniki pierwsze:


30 = 2 3 5, 37 = 37, 40 = 2 2 2 5
Wnioski
1. Jeli w rozkadzie na czynniki pierwsze liczby n, liczba pierwsza p
wystpuje e(p) razy, e(p) 0, to
Y
n=
pe(p)
p liczba pierwsza

Q
Q
2. Jeli a = p pe(p) , b = p pf (p) s rozkadami na czynniki pierwsze
liczb a i liczb b, to
Y
N W P (a, b) =
pmin(e(p),f (p))
p liczba pierwsza

N W W (a, b) =

pmax(e(p),f (p))

p liczba pierwsza

wiczenia:
1. Znajd rozkad na czynniki pierwsze dla n = 33, 55, 333, 555
2. Znajd rozkad na czynniki pierwsze dla n = 33 55, 333 555
3. Znajd na podstawie rozkadu na czynniki pierwsze warto N W P (256, 96)
Q
Q
Problem: Udowodnij wniosek: Jeli a = p pe(p) , b = p pf (p) s rozkadami na
czynniki pierwsze liczb a i liczb b, to
Y
N W P (a, b) =
pmin(e(p),f (p))
p liczba pierwsza

N W W (a, b) =

p liczba pierwsza

92

pmax(e(p),f (p))

4.1.7

Liczby pierwsze sito Eratostenesa

Lemat 4.2 J eli n nie jest liczb pierwsz, to istnieje liczba pierwsza p n
taka, e p|n

Dowd: Jeli n = ab, a, b N, a b > 1, to n = ab b2 . Std b n i kada liczba


pierwsza p dzielca b spenia:

n, p|n

Twierdzenie 4.6
Istnieje nieskoczenie wiele liczb pierwszych.
Dowd przez zaprzeczenie
Gdyby zbir liczb pierwszych by skoczony, t.j. gdyby istniao tylko n liczb pierwszych p1 , . . . , pn ,
to liczba q = p1 pn + 1 daje przy dzieleniu przez pi reszt 1, i = 1, . . . , n. Dlatego q nie
dzieli si przez adn liczb pierwsz, a wic samo q musi by liczb pierwsz wiksz od wszyst-

kich liczb pierwszych. Std q > q. Otrzymana sprzeczno dowodzi nieskoczonoci zbioru liczb
pierwszych.

Algorytm 4.2 Sito Eratostenesa


1. Wejcie: n szukamy liczb pierwszych w przedziale [1, n2 ]
2. Wyjcie: tablica liczb cakowitych p[1..n2 ] taka, e |p[i]| = i, p[i] = i,
gdy i jest liczb pierwsz oraz p[i] = i, gdy i nie jest liczb pierwsz,
i = 1, . . . , n2
3. Metoda:
Krok 0:
Krok 1:
Krok 2:
Krok 3:
Krok 4:
Krok 5:
Krok 6:

Utwrz tablic p[1..n2 ];


Dla i = 1, . . . , n2 : p[i] i;
p[1] 1; k 2;
k najmniejsze j [k, n] takie, e p[j] > 0 (jeli istnieje)
Jeli takie j nie istnieje, to zwr tablic p[];
Dla j = 2k, 3k, . . . , mk, mk n2 : p[j] = j;
Kontynuuj od kroku 3;

wiczenie: Znajd technik sita Eratostenesa wszystkie liczby pierwsze z przedziau [1, 111].
4.1.8

Liczby Mersena

Liczba Mersena jest liczb pierwsz postaci 2p 1


Przykady liczb Mersena: 3 = 22 1, 7 = 23 1, 31 = 25 1, 127 = 27 1

93

Obserwacja: dla a, b N, a, b > 1, mamy:


2ab 1
(2a )b 1
=
2a 1
2a 1

1 + 2a + (2a )2 + + (2a )b1 =

Wniosek: 2ab 1 nie jest liczb pierwsz bo


2ab 1 = (2a 1) 1 + 2a + (2a )2 + + (2a )b1

Wniosek: Jeli 2p 1 jest liczb pierwsz, to p jest liczb pierwsz


wiczenie: Czy liczba 21024 1 jest liczb pierwsz?
4.1.9

Liczby Fermata

Liczba Fermata jest liczb pierwsz postaci 2n + 1


Przykady liczb Fermata: 5 = 22 + 1, 17 = 24 + 1, 257 = 28 + 1
Obserwacje:
r

r+1

1. 22 + 1 dzieli 22
r+1

22

1, bo
r

1 = 22

 r 2
r
r
1 = (22 1)(22 + 1)
1 = 22

2. 22 + 1 dzieli 22 1 + 1
r
r
r
r
3. Jeli 22 + 1 dzieli 22 a + 1, to 22 + 1 dzieli 22 (a+2) + 1,
Dowd:
22

(a+2)
2r

22

22
+1
=
+1

r+1

=
r+1

22
2r

Wniosek: 22 + 1 dzieli 22

+1

22 a + 1
22r + 1

+ 1 22

2r

2
22

22

r+1

r+1

+1

+1

+1

r+1

22
1
22r + 1

+ 1 dla dowolnego r N oraz a nieparzystego

Wniosek: Jeli 2 + 1, n N jest liczb pierwsz, to istnieje r N takie,


e n = 2r .
Dowd: Dowolna liczba naturalna n = 2r a dla pewnego r N {0} oraz a niepan

rzystego. Jeli a > 1, to na podstawie poprzedniego wniosku 2n + 1 = 22

liczb pierwsz. Skoro 2n + 1 jest liczb pierwsz, to a = 1 i n = 2r .

wiczenie: Czy liczba 21023 + 1 jest liczb pierwsz?


94

+ 1 nie jest

4.2

Algebra reszt

Niech a, b, m Z, m 6= 0. Mwimy, e a przystaje do b modulo m i zapisujemy a b (mod m) wtt a b jest wielokrotnoci m


Relacja przystawania modulo m jest relacj rwnowanoci
Relacja przystawania modulo m nazywa si te relacj kongruencji
Klasa rwnowanoci [x]m nazywa si te klas kongruencji elementu x Z
Dla dowolnego m Z, m 6= 0, istnieje dokadnie |m| rnych klas kongruencji
Zbir {r0 , . . . , rm1 } Z nazywa si penym zbiorem reszt modulo m wtt
Z = [r0 ]m [rm1 ]m
Jeli x1 y1 (mod m) oraz x2 y2 (mod m), to
x1 x2 y1 y2

(mod m)

(mod m)

x1 x2 y1 y2
Jeli x y (mod m), k N, to
xk y k

kx ky

(mod m)

(mod m), kx ky

(mod m)

Jeli x y (mod m), d|m, to x y (mod d)


Jeli x y (mod m), d|m, d|x, d|y, to

x
d

y
d

(mod m/d)

Regua skracania: Jeli m N, x, y, k Z oraz


kx ky

(mod m)

to
(mod m/N W P (k, m))

xy

Niech d = N W P (k, m), m = dm , k = dk . Wtedy N W P (k , m ) = 1 i dla


pewnej m + k = 1. Std

Dowd:

dm |dk (x y) m |k (x y) m |(x y)

m
|(x y)
d

Dowd inny dowd


Poniewa d = N W P (k, m) dzieli kx, ky, oraz m, to
k
k
x y
d
d

(mod m/d)

Ale k/d oraz m/d s wzgldnie pierwsze i m/d dzielc (k/d)(x y) musi dzieli x y.

95

Jeli x y (mod m1 ) oraz x y (mod m2 ), to


(mod N W W (m1 , m2 ))

xy

Jeli x y (mod mi ), i = 1, . . . , n, to
(mod N W W (m1 , . . . , mn ))

xy
1. Jeli n =
10, to

Pk

i=0 ci 10

jest rozwiniciem dziesitnym liczby n N, 0 ci <

n
n
n

k
X

ci

(mod 9)

(9)

ci

(mod 3)

(10)

i=0

k
X
i=0

k
X

(1)i ci

(mod 11)

(11)

i=0

Pk
2. Jeli n = i=0 ci bi jest rozwiniciem przy podstawie b > 1 liczby n N,
0 ci < b, to
n
n

k
X

ci

i=0

(mod b 1)

k
X
(1)i ci

(mod b + 1)

i=0

wiczenia:
1. Poka, e wasnoci z punktu jeden wynikaj z wasnoci punktu dwa.
2. Dlaczego kongruencja (10) wynika z kongruencji (9).
Zadania:
1. Udowodnij prawdziwo kongruencji (2).
2. Udowodnij prawdziwo kongruencji (2).
Przykad 4.1 rachunku reszt
Znajdujemy reszt z dzielenia 21023 przez 7.
Poniewa 23 = 8 1 (mod 7) i 1023 = 3 341, to
21023 = (23 )341 1341 1 (mod 7)
96

Obliczamy klas kongruencji modulo 11 dla 31111 .


Poniewa 35 1 (mod 11) oraz 1111 = 5 222 + 1, to
31111 = (35 )222 31 1222 3 3

(mod 11)

Jak reszt z dzielenia przez 23 daje liczba x, jeli 3x 15 (mod 23)?


Poniewa 3x 3 5 (mod 23) oraz N W P (3, 23) = 1, to z wasnoci skracania x 5 (mod 23). W takim razie ta reszta wynosi 5
Jak reszt z dzielenia przez 8 daje liczba x, jeli 3x 15 (mod 24)?
Poniewa 3x 3 5 (mod 24) oraz N W P (3, 24) = 3, to z wasnoci skracania x 5 (mod 24/3). W takim razie x 5 (mod 8) i ta reszta wynosi
5.
Czy liczba 1234567890 dzieli si przez przez 9 ?
Tak, bo
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 0 = 45 0

(mod 9)

Czy liczba 1234567890 dzieli si przez przez 11 ?


Nie, bo
1 + 2 3 + 4 5 + 6 7 + 8 9 + 0 = 5 6

(mod 11)

Zadania:
1. Oblicz reszt z dzielenia 31023 przez 7
2. Oblicz reszt z dzielenia 21023 przez 11
3. Poka metod reszt, e 7|(8k 1) dla dowolnego k N
4. Jak reszt z dzielenia przez 27 daje liczba x, jeli 7x 21 (mod 27)?
5. Jak reszt z dzielenia przez 9 daje liczba x, jeli 3x 15 (mod 27)?
6. Czy liczba 9876543210 dzieli si przez przez 3 ?
7. Czy liczba 9876543215 dzieli si przez przez 11 ?
8. Rozwi rwnanie w resztach 14x 2 12 (mod 42)
9. Rozwi rwnanie w resztach 14x 12 2 (mod 120).
Problem:
W midzynarodowym systemie numeracji ksiek (ISBN) dziewi pierwszych

97

cyfr dziesitnych xi , i = 1, . . . , 9, tworzy numer, a dziesity symbol jest symbolem kontrolnym obliczanym nastpujco:
9
X

x10 ,

ixi

(mod 11)

i=1

Jeli x10 = 10, to zapisywany jest symbol X.


Poka, e taki symbol kontrolny pozwala wykrywa bdne zapisy na jednej
pozycji i bdy polegajce na zamianie dwch symboli.
4.2.1

Rwnania w resztach

Liniowe rwnanie w resztach ma posta:


ax b

(mod m)

gdzie m N, a, b Z

Jeli istnieje rozwizanie rwnania ax b (mod m), to N W P (a, m)|b.


Dowd: Jeli ax b (mod m), to m|(ax b), t.j. istnieje k Z takie, e
ax b = km, b = ax km
Skoro b jest kombinacj liniow liczb a oraz m, to b jest wielokrotnoci N W P (a, m).

Przykad: a = 10, b = 15, m = 25.


Warunek konieczny jest speniony bo N W P (a, m) = N W P (10, 25) =
5|15 = b. Rwnanie ax b (mod m) jest spenione np. dla x = 9.
Jeli N W P (a, m)|b, to istnieje rozwizanie rwnania ax b (mod m).
Dowd: Z warunku N W P (a, m)|b wynika istnienie kombinacji liniowej a i m dajcej
warto b. Mianowicie rozszerzony algorytm Euklidesa daje k , l Z takie, e:

k a + l m = N W P (a, m)
k

b
b
b
+ l
= N W P (a, m)
=b
N W P (a, m)
N W P (a, m)
N W P (a, m)

Std dla k = k b/N W P (a, m), l = l b/N W P (a, m) : ka + lm = b. Dlatego m|(ka b) i

x = k = k b/N W P (a, m) jest rozwizaniem rwnania ax b (mod m).

Przykad: a = 10, b = 15, m = 25.


Poniewa N W P (a, m) = 5 oraz 3 10 + (1) 25 = 5, to
x = k b/N W P (a, m) = 3 15/5 = 9
jest rozwizaniem rwnania 10x 15 (mod 25).
98

Jeli x > x, x , x Zm s rozwizaniami rwnania ax b (mod m), to


istnieje i [0, N W P (a, m)) takie, e:
x x + i
Dowd:

m
N W P (a, m)

(mod m)

Z tego, e ax b (mod m) i ax b (mod m) mamy

a(x x) 0

(mod m)

Jeli a = N W P (a, m)a , m = N W P (a, m)m , to dla pewnego i


a (x x) = i m , x x =

i m
i
m , x = x +
= x + im
a
a

gdzie i = i /a . Poniewa x, x Z, to 0 x x < m. Dlatego im < m oraz

i < m/m = N W P (a, m).

Przykad: a = 10, b = 15, m = 25.


Obliczamy N W P (a, m) = N W P (10, 25) = 10, m = m/N W P (a, m) =
25/5 = 5. Na podstawie rozwizania x = 9 otrzymujemy inne rozwizania
w Z25 :
xi x + im (mod m)
x0 = x = 9, x1 = 9 + 1 5 = 14, x2 = x1 + 5 = 19, x3 = x2 + 5 = 24,
x4 24 + 5 = 29 4 (mod 25).

Zadania:
Znajd wszystkie rozwizania rwnania ax b (mod m), gdy:
1. a = 6, b = 18, m = 24
2. a = 12, b = 18, m = 24
3. a = 26, b = 39, m = 65
4. a = 26, b = 39, m = 78
5. a = 127, b = 51, m = 111
4.2.2

Chiskie twierdzenie o resztach

Twierdzenie 4.7 Chiskie twierdzenie o resztach


Niech m1 , . . . , mn N s wzajemnie wzgldnie pierwsze, t.j.
N W P (mi , mj ) = 1, i, j = 1, . . . , n, i 6= j
Okrelamy M = m1 mn . Niech te ri N, ri [0, mi ) bdzie dowoln
reszt modulo mi , i = 1, . . . , n. Wtedy istnieje dokadnie jedna liczba cakowita

99

x [0, M ), ktra przystaje do ri modulo mi , i = 1, . . . , n.


Dowd:

Niech Mi , M/mi oraz ci bdzie rozwizaniem rwnania Mi x 1 (mod mi ).


Rozwizanie istnieje bo N W P (mi , Mi ) = 1. Niech teraz
x , c1 M1 r1 + + cn Mn rn
Zauwamy, e
ci Mi ri ri , i = 1, . . . , n

cj Mj rj 0

(mod mi ), gdy i 6= j

x = c1 M1 r1 + + cn Mn rn ri , i = 1, . . . , n
Wemy x , modM (x ) [0, M ). Sprawdzamy, e x ri , i = 1, . . . , n. Istnieje wic liczba x
speniajca tez twierdzenia.
Dla dowodu jednoznacznoci x w [0, M ), przypumy, e istniej liczby x1 x2 [0, M ) takie,
e
x1 ri (mod mi ), x2 ri (mod mi ), i = 1, . . . , n
Wtedy dla pewnych ki 0, ki Z, i = 1, . . . , n
m1 |x1 x2 , . . . , mn |x1 x2
Poniewa liczby m1 , . . . , mn s wzgldnie pierwsze, to M |x1 x2 . Poniewa x1 x2 < M, to

warunek ten jest moliwy tylko gdy x1 = x2 .

Przykad 4.2 Szukamy wszystkie liczby x Z, ktre przystaj do 1 modulo


2, do 3 modulo 5 i do 5 modulo 7.
Stosujemy chiskie twierdzenie o resztach dla parametrw:
r1 = 1, m1 = 2, r2 = 3, m2 = 5, r3 = 5, m3 = 7
M = m1 m2 m3 = 70, M1 = M/m1 = 35, M2 = M/m2 = 14, M3 = M/m3 = 10
Rozwizujemy rwnania Mi ci 1 (mod mi ), i = 1, 2, 3 :
35c1 1 (mod 2), 14c2 1 (mod 5), 10c3 1

(mod 7)

Wystarczy znale po jednym rozwizaniu tych rwna, np.:


c1 = 1, c2 = 4, c3 = 5
Wtedy zgodnie z dowodem chiskiego twierdzenia o resztach
x = M1 c1 r1 + M2 c2 r2 + M3 c3 r3 = 35 1 1 + 14 4 3 + 10 5 5 = 453
jest jednym z rozwiza. Rozwizanie bazowe dostajemy jako x = mod 70 (453) =
33. Peny zbir rozwiza to klasa kongruencji liczby 33 modulo 70.
Zadania:
Znajd wszystkie liczby x Z, ktre przystaj do r1 modulo m1 , do r2 modulo m2 (w przykadach nieparzystych) oraz do r3 modulo m3 (w przykadach
parzystych) gdzie:
1. r1 = 0, m1 = 2, r2 = 4, m2 = 5
100

2. r1 = 0, m1 = 2, r2 = 4, m2 = 5, r3 = 3, m3 = 7
3. r1 = 3, m1 = 4, r2 = 2, m2 = 3
4. r1 = 3, m1 = 4, r2 = 2, m2 = 3, r3 = 4, m3 = 5
5. r1 = 3, m1 = 4, r2 = 2, m2 = 6
6. r1 = 3, m1 = 4, r2 = 2, m2 = 6, r3 = 4, m3 = 5
4.2.3

Twierdzenia Fermata o resztach

Twierdzenie 4.8 Twierdzenie Fermata o resztach


Jeli p jest liczb pierwsz i a Z, p 6 |a, to
ap1 1

(mod p)

Dowd:

Rozwaamy dwa iloczyny:


x , 1 2 3 (p 1), y , (1 a)(2 a)(3 a) . . . ((p 1) a) = ap1 x
Zauwamy, e jeli ia ja (mod p), j i, j, i = 1, . . . , p 1, to p|(j i)a. A poniewa liczba
pierwsza p 6 |a, to p|(j i). Ale j i < p. Std j = i.
Std kady czynnik y przystaje modulo p do dokadnie jednego czynnika liczby x. Tzn. liczba
y przystaje do liczby x modulo p :
yx

(mod p), ap1 x x

(mod p)

Stosujc regu skracania kolejno dla 2, . . . , p 1 otrzymujemy


ap1 1

(mod p)

wiczenia:
Poka, e:
1. 7 dzieli 1286 1
2. 7 dzieli 646 + 41
3. 11 dzieli 12810 1
4. 11 dzieli 6410 + 54
5. 5 dzieli 12814 1
6. 5 dzieli 6414 + 54

101

4.2.4

Funkcja Eulera

Funkcja Eulera (n), n N okrela ile liczb naturalnych z przedziau [1, n]


jest wzgldnie pierwszych z n :
(n) , |{k N : k [1, n], N W P (k, n) = 1}|
Przykady:(1) = 1, (2) = 1, (3) = 2, (5) = 4
Jeli p jest liczb pierwsz, to (p) = p 1
Jeli p jest liczb pierwsz, to w przedziale [1, p2 1], tylko liczby 1 p, 2
p, . . . , p p nie s wzgldnie pierwsze z p2
Wniosek: (p2 ) = p2 p
Wniosek: (pe ) = pe pe1
Twierdzenie: Jeli m oraz n s wzgldnie pierwsze, to
(mn) = (m)(n)
Przykad:
(300) = (12 25) = (22 3 52 )

= (22 )(3)(52 ) = (22 2)(3 1)(52 5) = 80


Dowd rwnoci (mn) = (m)(n)

Z chiskiego twierdzenia o resztach wiemy, e dla m [0, m) oraz n [0, n) istnieje dokadnie
jedno k [0, mn) o wasnoci:
k m

(mod m), k n

(mod n),

To oznacza, e przeksztacenie f : [0, mn) [0, m) [0, n) okrelone nastpujco:


f (x ) , (mod m (x ), mod n (x ))
jest odwzorowaniem rnowartociowym.
Modykujemy teraz funkcj modulo mod a (x), a N, x Z nastpujco:
mod a (x) ,

a
mod a (x)

jeli a|x
w przeciwnym razie

Wtedy przeksztacenie f : [1, mn] [1, m] [1, n] okrelone jako:


f (x) , (mod m (x), mod n (x))
jest rwnie odwzorowaniem rnowartociowym, bo f jest zoeniem rnowartociowego f z
rnowartociowym mapowaniem (gm (u), gn (v)), gdzie
gm (u) ,

m
u

jeli u = 0,
w przeciwnym razie

102

Poniewa liczby m, n s wzgldnie pierwsze, to wasno N W P (k, mn) = 1 jest rwnowana


koniunkcji wasnoci N W P (k, m) = 1, N W P (k, n) = 1. Wiemy z analizy algorytmu Euklidesa,
e N W P (k, m) = N W P (mod m (k), m) = N W P (mod m (k), m).
Dlatego N W P (k, mn) = 1 jest rwnowane koniunkcji wasnoci N W P (mod m (k), m) = 1,
N W P (mod n (k), n) = 1. Std widzimy, e rnowartociowe przeksztacenie f przeksztaca
wszystkie liczby pierwsze wzgldem mn na wszystkie kombinacje liczb pierwszych wzgldem m
i n odpowiednio. Std liczba (mn) = (m)(n).

4.2.5

Twierdzenie Eulera o resztach

Twierdzenie 4.9 Twierdzenie Eulera o resztach


Jeli m N oraz a Z jest liczb pierwsz wzgldem m, to

Dowd:

a(m) 1

(mod m)

Niech n , (m). Rozwaamy dwa iloczyny:


n

x , b1 b2 b3 bn , y , (b1 a)(b2 a)(b3 a) . . . (bn a) = a x


gdzie liczba bi [1, m] jest liczb pierwsz wzgldem m, i = 1, . . . , n.
Zauwamy, e jeli bi a bj a (mod m), to regua skracania daje bj bi (mod m), t.j. j = i.
Std kady czynnik y przystaje modulo m do dokadnie jednego czynnika liczby x. Tzn. liczba
y przystaje do liczby x modulo m :
yx

(mod m), an x x

(mod m)

Stosujc regu skracania kolejno dla b1 , . . . , bn otrzymujemy


(m)

(mod m)

Inne rozwizanie rwnania liniowego w resztach ax b (mod m) :


a = N W P (a, m)a , b = N W P (a, m)b a x b

(mod m)

Std
(a )(m)1 a x (a )(m)1 b
(a )(m) x (a )(m)1 b
x (a )(m)1 b

(mod m)
(mod m)

(mod m)

Przykady zastosowa twierdzenia Eulera o resztach:


Wyznaczamy reszt z dzielenia 2126 przez 75 :
(75) = (3 52 ) = 2 20 = 40, 126 = 3 40 + 6

240 1 (mod 75), 2126 = 26 (240 )3 64 (mod 75)


103

Rozwizujemy rwnanie 6x 5 (mod 13) :


(13) = 12, x 6121 5 (mod 13), x 611 5

(mod 13)

Ale
Std

11 612 11 611 66 11 611


x 11 5

(mod 13)

(mod 13), x 3 (mod 13)

wiczenia:
1. Wyznacz warto funkcji Eulera (n), gdy:
(a) n = 127
(b) n = 210
(c) n = 24 33 52
2. Sprawd, e:
(a) 127 dzieli liczb 10126 1

(b) 210 dzieli liczb 1148 1


Zadania:

1. Wyznacz reszt z dzielenia 2125 przez 75


2. Rozwi rwnanie 7x 6 (mod 11) stosujc twierdzenie Eulera o resztach
3. Poka, e twierdzenie Fermata jest szczeglnym przypadkiem twierdzenia
Eulera o resztach.
4.2.6

Szyfrowanie algorytm RSA

Odkrywcy algorytmu RSA Rivest, Shamir i Adelson


Klucze w algorytmie RSA:
elementy prywatne:
1. czynnik p dua liczba pierwsza, np. p > 2500
2. czynnik q dua liczba pierwsza q 6= p,

elementy publiczne:

1. dzielnik m liczba zoona postaci m = p q


2. wykadniki e, f elementy nawzajem odwrotne modulo:
ef 1 (mod (p 1)(q 1))
104

Komunikat a podlegajcy zaszyfrowaniu: dowolna liczba a N, a < m


pierwsza wzgldem dzielnika m
Zaszyfrowanie:
r , mod m (ae )
Odszyfrowanie:
a = mod m (rf )
Poprawno szyfrowania:
rf aef (mod m)
k N, ef = 1 + k(p 1)(q 1)

aef = a ak(p1)(q1) = a ak(pq) = a (a(m) )k


a (a(m) )k a 1k a

(mod m)

Przykad 4.3 szyfrowania RSA


1. Ustalamy parametry algorytmu RSA: klucze prywatne p = 17, q = 19;
klucze publiczne m = pq = 323, e = 131.
2. Poszukujemy wykadnika f odwrotnego do e = 131 modulo (p1)(q1) =
288, tj. ef 1 (mod 288). Poniewa N W P (131, 288) = 1, to istniej
f, g Z, takie,e
131f + 288g = 1, 131f + (131 2 + 26)g = 1, 131f + 26g = 1

gdzie f = f + 2g. Bez stosowania rozszerzonego algorytmu Euklidesa


widzimy bezporednio, e f = 1, g = 5 speniaj ostatni z rwnoci.
Std f = f 2g = 11.
3. Wybieramy komunikat do zaszyfrowania a < 323 taki, e N W P (a, 323) =
1, np. a = 7.
4. Zaszyfrowanie:
r , mod 323 7131

Ale stosujc dziaania modulo 323 mamy:


1
7131 = 710 711 1 121 (201)1 1 121 197 258

Zaszyfrowane a = 7 wynosi r = 258.


5. Odszyfrowanie:

a = mod m (rf ) = mod 323 25811


Ale

4
25811 = 258 2582 2582 258 26 264
2
258 26 262 258 26 302 258 26 254 7

Otrzymujemy wic prawidowe odszyfrowanie komunikatu a = 7.


105


Zadanie: Zaszyfruj i odszyfruj komunikat a w schemacie RSA o parametrach:
1. a = 2, p = 3, q = 5, m =?, e = 5, f =?
2. a = 7, p = 3, q =?, m = 15, e = 5, f =?
3. a = 11, p = 17, q = 19, m = 323, e = 131, f = 11
+
Typowy scenariusz stosowania algorytmu RSA z kluczem N -bitowym, m IN
bitowym (np. N = 512)

Kroki nadawcy:
1. Wybierz losowo a < m wzgldnie pierwsze z m i przedstaw a na N
bitach
2. Wylij szyfr RSA r = mod m (ae ) dla a
3. Dla kolejnej N -bitowej porcji d danych szyfrowanych wylij kod d =
a XOR d, gdzie operacja XOR realizowana jest bit po bicie
Kroki odbiorcy:
1. Odbierz r
2. Odszyfruj a = mod m (rf )
3. Dla kolejnej odebranej N -bitowej porcji d zdekoduj d = a XOR d
Poprawno dekodowania:
a XOR d = a XOR (a XOR d) = (a XOR a) XOR d = 0 XOR d = d

106