Matematyka dyskretna W adys aw Skarbek

background image

Matematyka Dyskretna

Władysław Skarbek

Państwowa Wyższa Szkoła Informatyki i Zarządzania

Październik 2004 – Styczeń 2005

Spis treści

1

Zbiory

3

1.1 Zbiory a typy danych . . . . . . . . . . . . . . . . . . . . . . . . .

3

1.2 Elementy i podzbiory . . . . . . . . . . . . . . . . . . . . . . . . .

4

1.3 Definiowanie zbioru – notacja . . . . . . . . . . . . . . . . . . . .

5

1.4 Paradoks Russela . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

1.5 Operacje mnogościowe . . . . . . . . . . . . . . . . . . . . . . . .

7

1.6 Arytmetyczne typy danych . . . . . . . . . . . . . . . . . . . . .

7

1.7 Zbiór potęgowy a kombinacje i permutacje . . . . . . . . . . . . .

9

1.8 Produkt kartezjański . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.9 Relacje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.10 Funkcje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.11 Złożony typ danych a produkt kartezjański . . . . . . . . . . . . 15
1.12 Generalizacja typów danych . . . . . . . . . . . . . . . . . . . . . 16
1.13 Atrybuty i cechy . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.14 Tabela relacyjna . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.15 Ciągi i macierze . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.16 Diagramy relacyjne w UML . . . . . . . . . . . . . . . . . . . . . 20

2

Algebry

21

2.1 Intuicje informacyjne algebry . . . . . . . . . . . . . . . . . . . . 22
2.2 Definicja algebry ogólnej . . . . . . . . . . . . . . . . . . . . . . . 22

2.2.1 Algebry a klasy obiektów . . . . . . . . . . . . . . . . . . 23
2.2.2 Diagramy klas w UML . . . . . . . . . . . . . . . . . . . . 23

2.3 Algebra Boole’a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.4 Układy zupełne funkcji Boole’a . . . . . . . . . . . . . . . . . . . 27
2.5 Własności algebry Boole’a . . . . . . . . . . . . . . . . . . . . . . 29
2.6 Mapa Karnaugh . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.7 Rachunek zdań . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.7.1 Spójniki logiczne . . . . . . . . . . . . . . . . . . . . . . . 31
2.7.2 Wyrażenia logiczne . . . . . . . . . . . . . . . . . . . . . . 32
2.7.3 Wyrażenia logiczne a zbiory . . . . . . . . . . . . . . . . . 34

1

background image

2.7.4 Łamigłówka króla . . . . . . . . . . . . . . . . . . . . . . . 35

2.8 Rachunek predykatów i kwantyfikatorów . . . . . . . . . . . . . . 36

2.8.1 Predykaty . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.8.2 Kwantyfikatory . . . . . . . . . . . . . . . . . . . . . . . . 38

2.9 Homomorfizm algebr . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.10 Rachunek reszt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.11 Arytmetyka cyfrowa w stałym przecinku . . . . . . . . . . . . . . 45
2.12 Arytmetyka cyfrowa w zmiennym przecinku . . . . . . . . . . . . 46

2.12.1 Wzorce bitowe w IEEE 754 . . . . . . . . . . . . . . . . . 50

3

Schematy rekurencyjne

50

3.1 Wieże Hanoi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.2 Konwersja wyrażenia arytmetycznego na ONP . . . . . . . . . . 55
3.3 Generowanie kodu maszynowego wyrażenia arytmetycznego . . . 58
3.4 Klasyczna indukcja matematyczna . . . . . . . . . . . . . . . . . 60

3.4.1 Indukcja matematyczna – wybrane przykłady . . . . . . . 61
3.4.2 Obliczanie sum metodą różnic . . . . . . . . . . . . . . . . 65

3.5 Równania rekurencyjne . . . . . . . . . . . . . . . . . . . . . . . 66
3.6 Zliczanie obiektów kombinatorycznych . . . . . . . . . . . . . . . 72

3.6.1 Współczynniki dwumienne . . . . . . . . . . . . . . . . . 72
3.6.2 Własności liczbowe zbiorów i funkcji . . . . . . . . . . . . 75
3.6.3 Zasada włączania i wyłączania . . . . . . . . . . . . . . . 75
3.6.4 Podziały . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.6.5 Zbiory z powtórzeniami . . . . . . . . . . . . . . . . . . . 77
3.6.6 Zliczanie drzew binarnych . . . . . . . . . . . . . . . . . . 78

4

Kongruencje

80

4.1 Podzielność liczb całkowitych . . . . . . . . . . . . . . . . . . . . 81

4.1.1 Kombinacje liniowe dwóch liczb całkowitych . . . . . . . . 84
4.1.2 Algorytm Euklidesa dla NWP . . . . . . . . . . . . . . . . 85
4.1.3 Rozszerzony algorytm Euklidesa dla NWP . . . . . . . . . 86
4.1.4 Przykład – rozlewanie płynów . . . . . . . . . . . . . . . . 88
4.1.5 Liczby pierwsze – wprowadzenie . . . . . . . . . . . . . . 90
4.1.6 Faktoryzacja na liczby pierwsze . . . . . . . . . . . . . . . 91
4.1.7 Liczby pierwsze – sito Eratostenesa . . . . . . . . . . . . . 93
4.1.8 Liczby Mersena . . . . . . . . . . . . . . . . . . . . . . . . 93
4.1.9 Liczby Fermata . . . . . . . . . . . . . . . . . . . . . . . . 94

4.2 Algebra reszt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

4.2.1 Równania w resztach . . . . . . . . . . . . . . . . . . . . . 98
4.2.2 Chińskie twierdzenie o resztach . . . . . . . . . . . . . . . 99
4.2.3 Twierdzenia Fermata o resztach . . . . . . . . . . . . . . 101
4.2.4 Funkcja Eulera . . . . . . . . . . . . . . . . . . . . . . . . 102
4.2.5 Twierdzenie Eulera o resztach . . . . . . . . . . . . . . . . 103
4.2.6 Szyfrowanie – algorytm RSA . . . . . . . . . . . . . . . . 104

2

background image

Przedmowa

Matematyka dyskretna w ujęciu tego wykładu ma na celu wprowadzenie koncep-
cji matematycznych leżących u podstaw takich obszarów wiedzy informatycznej
jak języki i techniki programowania, układy logiczne i arytmetyczne maszyn
cyfrowych oraz algorytmy szyfrowania danych.
Zaczynamy od pojęcia zbioru i szeregu pochodnych pojęć mnogościowych, które
ściśle wiążą się z koncepcję typu danych, atrybutu obiektu w systemie informa-
cyjnym, tabeli w relacyjnej bazie danych oraz instancji obiektu danego typu.
Kolejnym prezentowanym obszarem są algebry i ich związek z projektowaniem
jednostek arytmetycznych i logicznych w maszynach cyfrowych, z koncepcją
klasy obiektów i algebraicznym modelem programu komputerowego.
Rozdział poświęcony schematom rekurencyjnym omawia indukcyjne techniki
definiowania obiektów matematycznych. Obejmuje on szereg przykładów za-
stosowania koncepcji rekursji w przyrostowym definiowaniu złożonych struktur
danych i algorytmów działających na nich.
Wykład zamyka dyskusja zastosowań rachunku reszt w kryptografii. Przedsta-
wiono wybrane algorytmy szyfrowania danych wraz z ich teoretycznymi podsta-
wami.

1

Zbiory

• Zbiór jest pojęciem pierwotnym

”ten typ tak ma”

• Przykład zbioru: księgozbiór Polskiej Biblioteki Narodowej

• Intuicje zbioru:

Zbiór to kolekcja, zestaw elementów

Specyficzna własność wyróżnia elementy

Elementy należą do pewnego uniwersum

Zbiór jest podzbiorem pewnego uniwersum

1.1

Zbiory a typy danych

• Intuicje informatyczne:

Książka to złożony typ danych

Konkretny egzemplarz Pana Tadeusza w księgozbiorze to instancja
typu Książka

3

background image

Ten konkretny egzemplarz należy do zbioru wszystkich instancji typu
Książka

Księgozbiór to specyficzna Kolekcja

Księgozbiór Biblioteki Narodowej to instancja typu Księgozbiór

• Wnioski:

Typ danych nie jest zbiorem

Typ danych T określa własność instancja danych jest typu T

Własność instancja danych jest typu T definiuje zbiór wszystkich
instancji typu T

Ćwiczenia

1. Podaj przykładowe atrybuty obiektu typu Książka.

2. Typ Kolekcja jest generalizacją typu Księgozbiór. Jakich atrybutów typu

Księgozbiór nie posiada Kolekcja ?

3. Określ typ danych, którego zbiór wszystkich instancji jest zbiorem wszyst-

kich danych osobowych studentów PWSIiP.

1.2

Elementy i podzbiory

– przynależność, np.:

x

∈ X x jest elementem zbioru X

y /

∈ X y nie jest elementem zbioru X

⊂, ⊃ – podzbiór, nadzbiór, np.:

A

⊂ B A jest podzbiorem zbioru B

B

⊃ A B jest nadzbiorem zbioru A

• (, ) – podzbiór, nadzbiór właściwy, np.:

A ( B A jest podzbiorem właściwym zbioru B

B ) A B jest nadzbiorem właściwym zbioru A

• = – równość,

6= – różność np.:

A = B – zbiory A i B są identyczne

A

6= B – zbiory A i B są różne

Skrót: wtt – wtedy i tylko wtedy

Ćwiczenia
Uzasadnij następujące własności inkluzji:

4

background image

1. A ⊂ B wtt A ( B lub A = B.

2. Jeśli A ( B, to A 6= B.

3. A ⊂ A.

4. Jeśli A ⊂ B i B ⊂ C, to A ⊂ C.

1.3

Definiowanie zbioru – notacja

– zbiór pusty

{·, . . . , ·} – wyliczenie elementów zbioru, np.:

A =

{1, 2, 3, 4, 5, 6} – zbiór składa się z liczb całkowitych od 1 do 6

B =

{1, 2, . . . , 12} – zbiór liczb naturalnych od 1 do 12

N

, {1, 2, 3, . . . } – zbiór liczb naturalnych

Z

, {0, ±1, ±2, ±3, . . .} – zbiór liczb całkowitych

{x : W (x)} – zbiór tych x, które spełniają warunek W (x), np.:

ZP

, {x : x ∈ Z, 2 dzieli x} – zbiór liczb całkowitych parzystych

Q

, {x : x =

p
q

gdzie q ∈ N, p ∈ Z} – zbiór liczb wymiernych

R

= {x : x ∈ Q lub jest granicą ciągu liczb wymiernych } – zbiór

liczb rzeczywistych

Ćwiczenia

1. Zapisz własność definicyjną zbioru liczb pierwszych.

2. Czy każda liczba rzeczywista o skończonym dziesiętnym zapisie pozycyj-

nym jest liczbą wymierną ?

3. Podaj przykład liczby wymiernej, której nie można zapisać skończoną licz-

bą cyfr dziesiętnych.

Zadania

1. Podaj przykład liczby wymiernej, która w zapisie dziesiętnym ma skoń-

czoną liczbę cyfr, a w zapisie dwójkowym nie ma skończonego zapisu.

2. Dla liczby rzeczywistej x = 0, b

1

, b

2

, . . . podaj ciąg liczb wymiernych zbież-

ny do x.

5

background image

1.4

Paradoks Russela

• Niech U będzie zbiorem wszystkich zbiorów

• Własność: U jest własnym elementem

• Rozważmy zbiór S, który jest zbiorem wszystkich zbiorów nie będących

własnym elementem:

S

, {Z : Z /∈ Z}

• Pytania:

1. Czy S ∈ S ?
2. Czy S /

∈ S ?

• Paradoks:

1. Jeśli S ∈ S, to S /∈ S
2. Jeśli S /

∈ S, to S ∈ S

• Własność definicyjna zbioru S jest sprzeczna

• Paradoks fryzjera:

W pewnej jednostce wojskowej jest fryzjer, który goli wszystkich tych
mężczyzn w jednostce, którzy się sami nie golą. Czy on się sam goli ?

• Paradoks kłamcy:

Pewien osobnik zawsze kłamie. Pewnego dnia wygłosił on sentencję Ja
zawsze kłamię
. Czy tym razem skłamał ?

Ćwiczenie
Niech S będzie zbiorem określonym w paradoksie Russela.

• Dlaczego z tego, że S

∈ S wynika S /

∈ S ?

• Dlaczego z tego, że S /

∈ S wynika S ∈ S ?

Zadania

• Wyjaśnij na czym polega paradoks fryzjera

• Wyjaśnij na czym polega paradoks kłamcy

6

background image

1.5

Operacje mnogościowe

∪, ∩, − operacje sumy, iloczynu i różnicy dwóch zbiorów, np.:

A

∪ B – suma zbiorów A i B

A

∩ B – iloczyn zbiorów A i B

A

− B – różnica zbiorów A i B

| · | – liczność zbioru, np.:

|A| = n – zbiór A ma n elementów

|A ∪ B| – liczność sumy zbiorów A i B

• suma n zbiorów:

n

[

i=1

A

i

, A

1

∪ · · · ∪ A

n

• iloczyn n zbiorów:

n

\

i=1

A

i

, A

1

∩ · · · ∩ A

n

Zadania
Niech A , U − A. Uzasadnij następujące własności operacji mnogościowych:

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ść: (A∪B)∩C = (A∩C)(B∩C), (A∩B)∪C = (A∪C)(B∪C)

4. prawa de’Morgana: A ∪ B = A ∩ B, A ∩ B = A ∪ B

1.6

Arytmetyczne typy danych

• Typ arytmetyczny w języku programowania określa liczbowy zbiór możli-

wych wartości (instancji) zmiennych definiowanych w programie

• Przykład z języka C: deklaracja

int k;

mówi,że zmienna k ma wartości typu całkowitego

• Uwagi:

Zmienna całkowita w realizacji komputerowej ma skończony zbiór
wartości

7

background image

Kodowanie wartości całkowitej ustalone jest przez model jednostki
arytmetyczno-logicznej ALU (ang. Arithmetic-Logic Unit) – zwykle
jest to kod uzupełniający do dwóch (ang. 2’s complement)

• Zapis x

Z w matematyce oznacza, że x może przyjąć dowolną całkowitą

wartość liczbową

• Deklaracja int k; w języku C oznacza, że w programie komputerowym k

może przyjmować wartości z podzbioru liczb całkowitych I

32

kodowanego

na 32 bitach, gdzie

I

n

, {i ∈ Z : 2

n

1

≤ i < 2

n

1

}

• unsigned int k; ogranicza wartości zmiennej k do podzbioru liczb na-

turalnych I

+

32

kodowanego na 32 bitach, gdzie

I

+

n

, {i ∈ Z : 0 ≤ i < 2

n

}

• Deklaracje

float f; double d;

mówią, że zmienne f,d mają wartości typu rzeczywistego

• Uwagi:

Zmienna rzeczywista w realizacji komputerowej ma skończony zbiór
wartości

Kodowanie wartości rzeczywistej odbywa się w reprezentacji o zmien-
nym przecinku z pojedynczą precyzją (deklaracja float) lub podwój-
ną precyzją (deklaracja double) zwykle zgodnie ze standardem ”IE-
EE 774 Floating Point Numbers”

• float f; ogranicza wartości zmiennej f do podzbioru liczb rzeczywistych

R

32,8

kodowanego na 32 bitach z cechą na 8 bitach, gdzie zgodnie ze stan-

dardem ”IEEE 774 Floating Point Numbers”

R

32,8

10

38,53

,

10

44,85

∪ {0} ∪

10

44,85

, 10

38,53

• double d; ogranicza wartości zmiennej d do podzbioru liczb rzeczywistych

R

64,11

kodowanego na 64 bitach z cechą na 11 bitach, gdzie zgodnie ze

standardem ”IEEE 774 Floating Point Numbers”

R

64,11

10

308.3

,

10

323.3

∪ {0} ∪

10

323.3

, 10

308.3

Ćwiczenia
Uzasadnij dla n ∈ N następujące własności:

1. I

n

(

I

n+1

8

background image

2. I

+

n

(

I

n+1

3. I

+

n

(

I

+

n+1

Zadania
Pokaż dla dowolnego k ∈ N :

1. Z =

S

n=k

I

n

2. N = {0} ∪

S

n=k

I

+

n

Problem
Uzasadnij, że każda liczba rzeczywista x 6= 0 da się zapisać jednoznacznie w

notacji naukowej:

x = (

1)

s(x)

m(x)2

c(x)

gdzie s(x) ∈ {0, 1} – bit znaku, m(x)

1
2

, 1

– mantysa, c(x) Z – cecha

liczby x.

1.7

Zbiór potęgowy a kombinacje i permutacje

Niech U będzie skończonym uniwersum, n , |U|. Wtedy

• Zbiór 2

U

, {Z : Z ⊂ U} nazywamy zbiorem potęgowym

• Liczność zbioru potęgowego:

|2

U

| = 2

|U|

• Jeśli k

∈ {0} ∪ N i 0 ≤ k ≤ n, to k-elementowy podzbiór Z ⊂ U nazy-

wamy k-elementową kombinacją elementów z U. Zbiór takich kombinacji
oznaczamy przez U

k

, a jego liczność prze c

k,n

• Własności:

U

0

= {∅}, c

0,n

, |U

0

| = 1

Jeśli k 6= k

, to U

k

∩ U

k

=

2

U

=

S

n
k
=0

U

k

oraz

P

n
k
=0

c

k,n

= 2

n

Dla 0 < k ≤ n : c

k,n+1

= c

k,n

+ c

k

1,n

• Dowolne uporządkowanie zbioru U nazywamy permutacją tego zbioru

• Własności:

Zbiór n-elementowy ma n! różnych permutacji, gdzie n! jest iloczy-
nem liczb od 1 do n :

n!

, 1 · · · · · n

Liczba c

k,n

kombinacji k-elementowych ze zbioru n-elementowego dla

k > 0 wynosi

c

k,n

=

n!

k!(n

− k)!

9

background image

Ćwiczenia
Oblicz liczność zbioru potęgowego 2

U

dla:

1. U = {0, 1}

2. U = {1, 2, 3}

3. U = {1, 2, . . . , n}

Zadania

1. Narysuj trójkąt Pascala dla n = 5.

2. Sprawdź prawdziwość wzoru

c

k,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ę położoną na prawo od dwójki ?

1.8

Produkt kartezjański

Niech A

1

, A

2

, . . . , A

n

będą dowolnymi zbiorami. Wtedy

• (a

1

, a

2

) oznacza uporządkowaną parę elementów gdzie a

1

∈ A

1

jest pierw-

szą składową pary, zaś a

2

∈ A

2

jej drugą składową

A

1

× A

2

, {(a

1

, a

2

) : a

1

∈ A

1

, a

2

∈ A

2

} – produkt kartezjański zbioru A

1

i zbioru A

2

• (a

1

, . . . , a

n

) oznacza uporządkowaną krotkę elementów gdzie a

i

∈ A

i

jest

i-tą składową tej krotki, i = 1, . . . , n

A

1

× · · · × A

n

, {(a

1

, . . . , a

n

) : a

1

∈ A

1

, . . . a

n

∈ A

n

} – produkt kartezjań-

ski zbiorów A

1

, . . . , A

n

• Jeśli A

1

= · · · = A

n

= A, to produkt kartezjański A × · · · × A oznaczamy

przez A

n

Ćwiczenia
Niech A = {0, 1}, B = {2, 3}. Wyznacz:

1. C = A × A

2. D = B × B

10

background image

3. A × B

4. B × A

5. C × D

Zadania
Niech A = [0, 1], B = [1/4, 3/4]

1. Podaj interpretację zbiorów A

2

oraz A

3

2. Wyznacz pole zbioru A

2

− B

2

3. Wyznacz objętość zbioru A

3

− 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: Zbiór {a, {a, b}} może być traktowany jako zbiór definicyjny dla

pary elementów (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 współwystępowanie dwóch lub więcej elemen-

tów w związkach o dowolnym charakterze

• Przykłady relacji:

R

1

, {(x, y) : x jest ojcem y}

R

2

, {(x, y, z) : punkty x, y, z są współliniowe }

R

3

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

na przedmiocie p otrzymana przez studenta s}

• Definicja relacji między elementami zbiorów A

1

, A

2

, . . . , A

n

:

Zbiór R ⊂ A

1

× · · · × A

n

modeluje relację n-argumentową

• Jeśli n = 2, to relacja jest nazywana relacją binarną. Wtedy zamiast

(a

1

, a

2

) ∈ R piszemy a

1

Ra

2

• Relacja binarna może być reprezentowana graficznie:

jeśli a

1

Ra

2

, to z wierzchołka o etykiecie a

1

prowadzimy gałąź do wierz-

chołka o etykiecie a

2

i z grotem wskazującym na niego.

11

background image

• Relacja odwrotna R

1

do relacji binarnej R ⊂ A

1

× A

2

:

R

1

, {(a

2

, a

1

) : (a

1

, a

2

) ∈ R}

• Dziedzina relacji binarnej R

⊂ A

1

× A

2

:

D

R

, {a

1

∈ A

1

: a

1

Ra

2

dla pewnego a

2

∈ A

2

}

• Przeciw-dziedzina relacji binarnej R

⊂ A

1

× A

2

:

D

1

R

, {a

2

∈ A

2

: a

1

Ra

2

dla pewnego a

1

∈ A

1

}

• Własność: D

1

R

= D

R

1

• Definicje:

Relacja binarna jest zwrotna wtt aRa dla wszystkich a ∈ D

R

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ę re-
lację równoważności

• Niech [x]

R

, {y ∈ A : xRy} będzie tzw. klasą równoważności relacji

równoważności 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

=

• Zbiór wszystkich klas równoważności relacji R w zbiorze A oznaczamy

przez A/R.

Ćwiczenia

1. Określ zbiory A, B, C, D, w produktach kartezjańskich których określono

następujące relacje:

(a) A × B ⊃ R

1

, {(x, y) : x jest synem y}

(b) A × B × C ⊃ R

2

, {(x, y, z) : punkty x, y, z nie są współliniowe }

(c) A×B×C×D ⊃ R

3

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

na przedmiocie p studentowi s}

2. Podaj po cztery przykłady relacji

(a) międzyludzkich występujących w grupie pracowniczej

(b) między dwoma dowolnymi kołami na płaszczyźnie

(c) między długością, masą i marką samochodu

12

background image

3. Narysuj graf następujących relacji binarnych:

(a) R

4

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

(b) R

5

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

(c) R

6

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

(d) R

7

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

4. Wyznacz relacje R

1

i

, i = 1, . . . , 7, tj. relacje odwrotne do relacji R

1

, . . . , R

7

,

zdefiniowanych w powyższych ć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ą równoważności ?

4. Ile różnych klas równoważności ma następująca relacja liczb całkowitych

przy ustalonym m ∈ Z :

xRy wtt m dzieli x

− y

Problemy

1. Udowodnij: D

R

1

= D

1

R

2. Określamy relację R w zbiorze A instancji typu int w C następująco: xRy

wtt instancje x i y reprezentują tę samą liczbę całkowitą. Pokaż, że R jest
relacją równoważności, dla której A/R = I

32

.

1.10

Funkcje

Niech R ⊂ A

1

× A

2

będzie relacją.

• Definicje:

Obraz elementu a

1

∈ A

1

:

R(a

1

) , {a

2

∈ A

2

: a

1

Ra

2

}

Przeciw-obraz elementu a

2

∈ A

2

:

R

1

(a

2

) , {a

1

∈ A

1

: a

1

Ra

2

}

• Binarna relacja R nazywa się funkcją częściową wtt

|R(a

1

)| = 1 dla wszyst-

kich a

1

∈ D

R

.

13

background image

• Funkcję częściową f identyfikujemy symbolami: f : A

1

·

→ A

2

• Funkcja częściowa f : A

1

·

→ A

2

nazywa się funkcją jeśli D

f

= A

1

.

• Funkcję f identyfikujemy symbolami: f : A

1

→ A

2

• Dla funkcji zapis relacyjny a

1

f a

2

zastępujemy przez a

2

= f(a

1

) lub a

1

f

7→

a

2

• Szczególne rodzaje funkcji:

f : A

1

→ A

2

jest jednoznaczną funkcją ”w” A

2

wtt |f

1

(a

2

)| = 1 dla

wszystkich a

2

∈ D

f

1

Własność: Relacja odwrotna do funkcji jednoznacznej ”w” jest funk-
cją częściową

f jest jednoznacznym odwzorowaniem A

1

”na” A

2

wtt |f

1

(a

2

)| = 1

dla wszystkich a

2

∈ D

f

1

oraz D

f

1

= A

2

Własność: Relacja odwrotna do funkcji jednoznacznej ”na” jest funk-
cją jednoznaczną ”na”

Ćwiczenia

1. Czy relacja x jest ojcem y jest funkcją w zbiorze wszystkich mężczyzn?

2. Czy relacja x jest synem y jest funkcją w zbiorze wszystkich mężczyzn?

3. Czy relacja x jest synem y jest funkcją częściową w zbiorze wszystkich

mężczyzn?

4. Czy relacja osoba x ma żyjącego ojca y jest funkcją częściową?

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ą częściową w R ?

2. Ile istnieje różnych funkcji postaci f : {0, 1} → {0, 1}

Problemy

1. Pokaż, że graf relacji binarnej będącej funkcją f : X → X na skończonym

zbiorze X zawiera co najmniej jeden cykl.

2. Pokaż, że funkcja jest jednoznaczna ”na” wtedy i tylko wtedy gdy jej graf

jako relacji binarnej składa się z rozłącznych cykli.

3. Sprawdź, że liczba funkcji binarnych na zbiorze n-elementowym równa się

liczbie podzbiorów tego zbioru.

14

background image

1.11

Złożony typ danych a produkt kartezjański

Niech A

1

, A

2

, . . . , A

n

będą zbiorami instancji typów T

1

, . . . , T

n

. Wtedy

• W językach programowania składowe instancji złożonego typu zamiast

numeru pozycji mają swoje nazwy

• W języku C typ złożony jest nazywany strukturą i ma on ogólną 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;

• Przykład struktury numerycznej:

typedef struct

{double re; double im} Complex;

• Przykład struktury biznesowej:

typedef struct

{int seria, int numer, float cena, String opis} Produkt;

• Typ T złożony z typów T

1

, . . . , T

n

ma instancje w postaci krotek o skła-

dowych, które są instancjami kolejno typów T

1

, . . . , T

n

• Wniosek: Produkt kartezjański zbiorów instancji typów T

1

, . . . , T

n

jest

zbiorem instancji typu złożonego T

• Jeśli A jest zbiorem instancji typu danych T i R jest relacją równoważności

w A, to zbiór A/R nazywamy modelem M

R

typu danych T względem

relacji R.

• Własność: Jeśli typ T jest złożony z typów T

1

, . . . , T

n

i M

R

1

, . . . , M

R

n

modelami tych typów, to M

R

jest modelem typy T względem relacji R

określonej następująco w zbiorze instancji typu T :

(x

1

, . . . , x

n

)R(y

1

, . . . , y

n

) wtt x

i

R

i

y

i

, i = 1, . . . , n

Co więcej, model typu złożonego jest produktem kartezjańskim modeli
składowych:

M

R

= M

R

1

× · · · × M

R

n

Ćwiczenia

1. Opisz zbiór instancji typu danych złożonego

(a) z dwóch składowych typu int:

typedef struct

{int m; int n;} T;

(b) z trzech składowych typu double:

typedef struct

{double a; double b; double c;} T;

15

background image

2. Podaj trzy dowolne instancje typu:

(a) Complex

(b) Product

Zadania
Model typu danych Ti ma n

i

elementów, i = 1, 2. Ile elementów 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 typów danych

• Przyrostowe tworzenie krotki:

(a

1

, a

2

, a

3

) jest równoważne ((a

1

, a

2

), a

3

)

• Przyrostowe tworzenie produktu kartezjańskiego:

A

1

× A

2

× A

3

= (A

1

× A

2

) × A

3

• Kontekst koncepcji generalizacji typów danych:

Najpierw programujemy własności ogólne obiektu (np. ruch figury),
a następnie jego specyficzne atrybuty (np. wizualizacja koła)

Rozszerzenie projektu o nowe funkcjonalności wymaga dodania no-
wych atrybutów – mechanizmy dziedziczenia w programowaniu obiek-
towym pozwalają je realizować bez aktualizacji istniejących już mo-
dułów oprogramowania

• Przykłady:

Do przemieszczenia figury symetrycznej względem jej środka wystar-
czy jego przemieszczenie. Natomiast narysowanie takiej figury, np.
pierścienia i koła wymaga znajomości innych parametrów. Dołącze-
nie tych parametrów do informacji o środku jest przykładem rozsze-
rzania typów danych lub dziedziczenia typów danych.

W języku Java dodanie do typu T1 atrybutu nowyAtrybut symboli-
zuje konstrukcja extends tworząc nowy typ danych
T2

:class T2 extends T1 {int nowyAtrybut;...}

Ćwiczenia
Niech T1 będzie typem danych złożonym z dwóch składowych typu int:
typedef struct

{int m; int n;} T1;

16

background image

1. Opisz zbiór instancji typu danych, który specjalizuje T1 (operacja odwrot-

na 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 n

i

elementów, i = 1, 2. Ile elementów ma model typu

1. class T3 extends T1 {T2 pole;}

2. class T4 extends T2 {T1 pole;}

1.13

Atrybuty i cechy

• Przykłady stosowania pojęć atrybut, cecha:

Jan ma 175 cm wzrostu – obiekt: konkretny Jan; atrybut: wzrost;
cecha: 175 cm

Kolor dominujący w tym obrazie jest czerwony – obiekt: konkretny
obraz
; atrybut: kolor dominujący; cecha: kolor czerwony

Toyota Corolla z silnikiem 2, 5 litra kosztuje 20 tysięcy Euro – obiekt:
konkretny model samochodu; atrybut 1: pojemność silnika; cecha 1:
2,5 litra; atrybut 2: cena; cecha 2: 20 tysięcy Euro

• Cecha c

∈ C przysługuje obiektowi o ∈ O w kontekście danego atrybutu

a :

o

a

7→ c, c = a(o)

• Atrybut a jest funkcją określoną na zbiorze obiektów

O o wartościach w

zbiorze cech C

a :

O → C

Ćwiczenia

1. Określ obiekt, atrybut i cechę w zdaniu

(a) Słoń ma dwie tony wagi.

(b) Temperatura barwowa tego obrazu wynosi 3000

Kelvina

(c) Jaś ma 38

gorączki

(d) Subaru Impreza ma moc 200 KM

17

background image

2. Określ zbiór obiektów, atrybut i zbiór cech dla

(a) wagi słoni w ZOO warszawskim

(b) temperatur barwowych obrazów w Muzeum Narodowym

(c) temperatur dzieci w przedszkolach łomżyńskich

(d) mocy samochodów produkowanych w Europie w roku 2003

Zadania

1. Podaj przykład atrybutu, którego cechy są trójkami liczb całkowitych z

przedziału [0, 255].

2. Ile różnych atrybutów binarnych można określić na zbiorze trzech obiek-

tów.

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 którym:

wiersz tabeli odpowiada obiektowi danych

kolumna tabeli reprezentuje atrybut

element c

ij

leżący na przecięciu wiersza obiektu o

i

i kolumny atry-

butu a

j

jest cechą tego obiektu

c

ij

= a

j

(o

i

) ∈ C

j

• Zwykle cecha w tabeli relacyjnej jest liczbą, łańcuchem znaków (ang.

String), lub jest instancją specjalnego typu, np. typu data, czas (ang.
Date, Time)

• Dlaczego termin tabela relacyjna ? Jest kilka powodów:

Tabela relacyjna z atrybutami a

1

, . . . , a

n

reprezentuje następującą

szczególną relację:

R

a

, {(a

1

(o), . . . , a

n

(o)) : o ∈ O} ⊂ C

1

× · · · × C

n

Krotka (a

1

(o), . . . , a

n

(o)) to wiersz tabeli opisujący obiekt o

Dowolną relację R

o

między kolekcjami obiektów O

1

,

O

2

można opisać

tzw. asocjacyjną tabelą relacyjną z jednym atrybutem złożonym a

a :

O

1

× O

2

N × N,

który przypisuje parze obiektów (o

1

, o

2

) parę ich identyfikatorów (id(o

1

), id(o

2

))

18

background image

Ćwiczenia

1. Określ obiekty, atrybuty, cechy i ich typy w następującej tabeli relacyjnej

Nazwisko

Imię

Waga [kg]

Wzrost [cm]

Abacki

Karol

55,4

155

Babacki

Jan

47,6

134

2. Zaprojektuj tabelę relacyjną reprezentującą listę ocen z Matematyki Dys-

kretnej dla dwóch kolokwiów i egzaminu pisemnego. Zapełnij jeden wiersz
tej tabeli oczekiwanymi przez siebie danymi

Zadania

1. Czy tabela relacyjna może zawierać dwa różne wiersze o tej samej zawar-

tości ?

2. Tabele w bazach danych mogą mieć niektóre pozycje typu brak danych.

Jak zmodyfikować definicję atrybutu, by obejmowała przypadki pozycji
nie zdefiniowanych ?

1.15

Ciągi i macierze

Niech I ⊂ Z będzie zbiorem indeksów całkowitych.

• Ciąg c = (c

i

)

i

∈I

elementów ze zbioru Z indeksowany przez I jest funkcją

postaci

c : I

→ Z, c(i) , c

i

∈ Z, i ∈ I

• Przykłady:

Jeśli I = N oraz Z = R, to ciąg c jest ciągiem liczb rzeczywistych

Jeśli I = [1, n], to c jest wektorem długości n, c ∈ Z

n

Jeśli I = [0, 9] oraz Z jest zbiorem instancji typu int w języku C,
to c jest instancją macierzy jednowymiarowej deklarowanej jako int
c[10];

Niech I

j

Z będzie j-tym zbiorem indeksów całkowitych, j = 1, . . . , k.

• Niech i = (i

1

, . . . , i

k

) ∈ I , I

1

× . . . I

k

będzie wielo-indeksem

• Macierz elementów c = (c

i

)

i

∈I

ze zbioru Z indeksowany przez I jest funk-

cją postaci

c : I

→ Z, c(i) , c

i

, i

∈ I

• Przykłady:

Jeśli I

1

= I

2

= N oraz Z = R, to ciąg c jest nieskończoną macierzą

liczb rzeczywistych

19

background image

Jeśli I

1

= [1, m], I

2

= [1, n] to c jest macierzą o m wierszach i n

kolumnach. Zbiór takich macierzy oznaczamy przez Z

m

×n

Jeśli I

1

= [0, 9], I

2

= [0, 19] oraz Z jest zbiorem instancji typu float

w języku C, to c jest instancją macierzy deklarowanej jako double
c[10][20];

Ćwiczenia

1. Określ zbiór indeksów dla

(a) wektora wierszowego [c

2

, c

1

, c

0

, c

1

, c

2

, c

3

]

(b) wektora kolumnowego

[c

0

, c

1

, c

2

, c

3

]

t

,

c

0

c

1

c

2

c

3

(c) macierzy kwadratowej

c

0,0

c

0,1

c

1,0

c

1,1

(d) macierzy prostokątnej

c

1,1

c

1,2

c

1,3

c

2,1

c

2,2

c

2,3

2. Ile elementów zawiera macierz o zbiorze indeksów I = [0, 5]

3

?

Zadania

1. Dlaczego wektor jest szczególnym przypadkiem macierzy dowolnego wy-

miaru ?

2. Ile elementów zawiera macierz o zbiorze indeksów I = I

1

× I

2

× I

3

, gdzie

|I

i

| = n

i

, i = 1, 2, 3 ?

1.16

Diagramy relacyjne w UML

Ćwiczenia
Narysuj diagram relacyjny dla:

1. roli Nauczyciel uczy matematykę jeśli nauczyciel jest typu Pracownik, a

matematyka jest typu Przedmiot nauczania

2. generalizacji typu Koło, Prostokąt i elipsa do typu Kształt

3. kompozycji typów Środek koła i Promień koła do typu Koło

4. kolekcji obiektów typu Kształt

20

background image

«datatype»

Pracownik Umysłowy

«datatype»

Kampania Reklamowa

szef

1

0..*

kieruje

«datatype»

Reklama

«datatype»

Reklama TV

«datatype»

Reklama prasowa

«datatype»

Komponent

1

1..*

Generalization

Composition

Aggregation

Rysunek 1: Relacje w UML: composition – kompozycja obiektów, aggregation
– kolekcje obiektów, generalization – generalizacja (opozycja dziedziczenia)

2

Algebry

• Pojęcie algebry:

1. Dziedzina D algebry, np. zbiór liczb rzeczywistych, t.j. D = R
2. Operacje O algebry, np. dodawanie, odejmowanie, mnożenie i dziele-

nie w zbiorze liczb rzeczywistych, t.j. O = {+, −, ∗, /}

3. Operacja ma ustaloną liczbę argumentów, np. dodawanie ma dwa

argumenty

4. Operacje mogą być funkcjami częściowymi, np. dzielenie

• Przykłady algebr:

1. Zbiór liczb całkowitych Z z dodawaniem + i odejmowaniem : (Z; +, −)
2. Zbiór liczb rzeczywistych R z dodawaniem +, odejmowaniem −, mno-

żeniem i dzieleniem / : (R; +, −, ∗, /)

3. Zbiór izometrii I przestrzeni z operacją składania funkcji: (I; )

np. obrót na płaszczyźnie o kąt φ wokół punktu O(x

0

, y

0

) :

x

= x

0

+ x cos(φ) + y sin(φ)

y

= y

0

− x sin(φ) + y cos(φ)

np. symetria osiowa względem osi x :

x

= x

y

= −y

21

background image

Ćwiczenia

1. Dlaczego operacja dzielenia w R jest funkcją częściową?

2. Jaka operacja określona jest w algebrze obrotów płaszczyzny w siebie?

3. Jaka operacja określona jest w algebrze izometrii płaszczyzny w siebie?

4. Jakie przekształcenie określone jest przez złożenie dwóch symetrii osio-

wych względem tej samej osi ?

Zadania

1. Uzasadnij, że złożenie dwóch obrotów jest obrotem

2. Uzasadnij, że złożenie dwóch 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 I

64

• Każde zdanie programu C określa funkcję na pamięci komputera

• Każde zdanie programu C określa funkcję na globalnym stanie programu

• Wynik programu jest złożeniem funkcji – złożenie jest tu operacją w zbio-

rze funkcji realizowanych przez kolejne zdania programu C

• Wynik programu jest złożeniem elementarnych operacji arytmetyczno-

logicznych

• Algebra Boole’a stanowi podstawę projektowania układów logicznych

2.2

Definicja algebry ogólnej

• Formalna definicja algebry ogólnej:

A , (X, K; f

i

: X

n

i

.

→ X, i = 1, . . . , K)

gdzie

X jest dziedziną algebry

f

i

jest i-tą operacją algebry (funkcja częściowa!)

n

i

jest liczbą argumentów i-tej operacji

22

background image

2.2.1

Algebry a klasy obiektów

• Algebra

A łączy w logiczną całość zbiór X i operacje f

i

na tym zbiorze

• Klasa

K w programowaniu obiektowym określa zbiór instancji (obiektów)

tej klasy i jednocześnie operacje na tych instancjach i opcjonalnie na in-
stancjach innych klas.

• Wartość operacji klasy

K może być instancją klasy K

6= K, np.: class X

{int x; improve(); Y produce(double a);}

• Biorąc produkt kartezjański zbiorów instancji rodziny klas, które są uży-

wane w danej aplikacji możemy traktować każdą operację w klasie jako
operację w takim zbiorze. Otrzymujemy więc algebrę.

2.2.2

Diagramy klas w UML

• UML pozwala na reprezentację graficzną klasy (rys.2)

• Z diagramu klasy można generować definicję klasy w różnych językach,

np. w Javie lub C++

2.3

Algebra Boole’a

• 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 de’Morgana w algebrze Boole’a:

NOT OR:

x

|y = x&y

23

background image

Rysunek 2: Diagram klas w UML: klasa Shape jest generalizacją klas Circle,
Rectangle

NOT AND:

x&y = x

|y

• Funkcja Boole’a, inaczej funkcja bitowa n argumentowa to każda funkcja

f taka, że:

f :

{0, 1}

n

→ {0, 1}

Ćwiczenia

1. Czemu służą operacje logiczne w CPU?

2. Niech funkcja bitowa NAND będzie określona wzorem:

NAND(x, y) , x&y , x&y

Sprawdź, że x = x&x.

3. Niech funkcja bitowa NOR będzie określona wzorem:

NOR(x, y) , | , x|y

Sprawdź, że x = x|x.

4. Czym się różni operacja składania funkcji mnożących liczby całkowite od

operacji mnożenia liczb całkowitych?

24

background image

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 następujące funkcje bitowe mają wartość 1 tylko w jednym ele-

mencie dziedziny, a w pozostałych wartość 0.

x&y&z = 1 wtt

x = 1, y = 1, z = 1

x&y&z = 1 wtt

x = 0, y = 1, z = 1

x&y&z = 1 wtt

x = 0, y = 0, z = 1

x&y&z = 1 wtt

x = 0, y = 0, z = 0

2. Jaka jest postać wyrażenia Boole’a złożonego tylko z funkcji NOT oraz

AND, która przyjmuje 1 tylko w następującym 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ą przyjmującą wartość 1 tylko w elemencie (a, b, c)

przez f

a,b,c

. Pokaż, że funkcja g przyjmuje wartość 1 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)}

4. Pokaż, że każda funkcja bitowa f o trzech argumentach da się przedsta-

wić jako złożenie funkcji NOT, AND, OR w tzw. dyzjunkcyjnej postaci
normalnej:

f (x, y, z) = OR

(a,b,c):f (a,b,c)=1

f

a,b,c

(x, y, z)

gdzie OR

I

W (i) oznacza wyrażenie łączące operacją OR wartości wyraże-

nia W (i) otrzymane dla każdego i ∈ I.

25

background image

5. Zapisz i uzasadnij uogólnienie dyzjunkcyjnej postaci normalnej dla dowol-

nej funkcji bitowej o n argumentach, n > 1

6. Zapisz postać dyzjunkcyjną normalną dla funkcji Boole’a f zadanej tabelą:

x

y

z

f(x,y,z)

0

0

0

1

0

0

1

0

0

1

0

1

0

1

1

0

1

0

0

1

1

0

1

0

1

1

0

1

1

1

1

0

7. Pokaż,że następujące funkcje bitowe mają wartość 0 tylko w jednym ele-

mencie dziedziny, a w pozostałych wartość 1.

x

|y|z = 0 wtt x = 0, y = 0, z = 0

x

|y|z = 0 wtt x = 1, y = 0, z = 0

x

|y|z = 0 wtt x = 1, y = 1, z = 0

x

|y|z = 0 wtt x = 1, y = 1, z = 1

8. Jaka jest postać wyrażenia Boole’a złożonego tylko z funkcji NOT oraz

OR, która przyjmuje 0 tylko w następującym 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ą przyjmującą 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 każda funkcja bitowa f o trzech argumentach da się przedsta-

wić jako złożenie funkcji NOT, OR i AND w tzw. koniunkcyjnej postaci
normalnej:

f (x, y, z) = AND

(a,b,c):f (a,b,c)=1

f

a,b,c

(x, y, z)

gdzie AND

I

W (i) oznacza wyrażenie łączące operacją AND wartości wy-

rażenia W (i) otrzymane dla każdego i ∈ I.

26

background image

11. Zapisz i uzasadnij uogólnienie koniunkcyjnej postaci normalnej dla dowol-

nej funkcji bitowej o n argumentach, n > 1

12. Zapisz postać koniunkcyjną normalną dla funkcji Boole’a f zadaną po-

wyższą tabelą.

2.4

Układy zupełne funkcji Boole’a

S – zbiór funkcji selekcji, t.j. funkcji postaci:

f (x

1

, x

2

, . . . , x

n

) = x

i

dla pewnego i ∈ [1, n]

C – zbiór funkcji stałych, t.j. funkcji postaci:

f (x

1

, x

2

, . . . , x

n

) = const

• Zbiór funkcji Boole’a

F nazywa się układem zupełnym wtt dowolna funkcja

Boole’a da się przedstawić jako złożenie funkcji z F ∪ S ∪ C

• Zbiór funkcji

{|, &, ·} jest układem zupełnym

• Zbiór funkcji

{&, ·} jest układem zupełnym

• Zbiór funkcji

{|, ·} jest układem zupełnym

• Zbiór funkcji

{|} jest układem zupełnym

• Zbiór funkcji

{&} jest układem zupełnym

Fakt: Jeśli funkcje układu zupełnego A możemy otrzymać przez złożenie

z funkcji układu B, to układ B jest zupełny

• Funkcja Boole’a f :

{0, 1}

n

→ {0, 1} jest monotoniczna wtt

x

i

≤ x

i

, i = 1, . . . , n

−→ f(x

1

, . . . , x

n

) ≤ f(x

1

, . . . , x

n

)

Fakt: Złożenie funkcji monotonicznych jest funkcją monotoniczną

Wniosek: Układ zupełny zawiera co najmniej jedną funkcję, która nie jest

monotoniczna

• Funkcja Boole’a f :

{0, 1}

n

→ {0, 1} jest samosprzężona wtt

f (x

1

, . . . , x

n

) = f(x

1

, . . . , x

n

)

Fakt: Złożenie funkcji samosprzężonych jest funkcją samosprzężoną

Wniosek: Układ zupełny zawiera co najmniej jedną funkcję, która nie jest

samosprzężona

27

background image

• Dla funkcji n argumentowej f, która nie jest samosprzężona istnieje krotka

(a

1

, . . . , a

n

) ∈ {0, 1}

n

, na której f nie jest sprzężona, t.j.:

f (a

1

, . . . , a

n

) = f(a

1

, . . . , a

n

)

• W klasie funkcji Boole’a, które nie są samosprzężone wyróżniamy funkcje

f które są sprzężone w zerze, t.j.

f (0, . . . , 0) = f (1, . . . , 1)

f (a

1

, . . . , a

n

) = f(a

1

, . . . , a

n

)

dla pewnego (a

1

, . . . , a

n

)

Twierdzenie 2.1

O warunkach na zupełność układu

Jeśli układ funkcji Boole’a zawiera funkcję f

1

niemonotoniczną i funkcję f

2

sprzężoną w zerze, która nie jest samosprzężona, to układ ten jest zupełny.

Dowód:

Pokażemy najpierw, że z funkcji f

1

(x

1

, . . . , x

n

) możemy skonstruować funkcję N OT . Miano-

wicie brak monotoniczności oznacza istnienie takich dwóch elementów w dziedzinie f

1

, że po

uporządkowaniu zmiennych według rosnących wartości mamy:

f

1

(0, . . . , 0, 1, . . . , 1, 1, . . . , 1) = 0

f

1

(0, . . . , 0, 0, . . . , 0, 1, . . . , 1) = 1

Podstawiając x = 0, 1 sprawdzamy, że funkcja

g(x)

, f

1

(0, . . . , 0, x, . . . , x, 1, . . . , 1) = x

Następnie pokażemy, że z funkcji f

2

możemy przez właściwe podstawienie zmiennych x, y jako

argumentów funkcji otrzymamy jedną z funkcji AND, NOR, OR lub NAND.
Mianowicie x podstawiamy w miejsce jedynek sekwencji (a

1

, . . . , a

n

), dla której nie jest speł-

niony warunek sprzężenia:

f

2

(a

1

, . . . , a

n

) = f

2

(a

1

, . . . , a

n

)

Zmienną y podstawiamy w miejsce zer tej sekwencji. Obydwa podstawienia się możliwe gdyż
sekwencja ta nie może składać się z samych zer lub samych jedynek – konsekwencja warunku

sprzężenia w zerze. Porządkując argumenty według rosnących wartości mamy:

f

2

(0, . . . , 0, 1, . . . , 1) = f

2

(1, . . . , 1, 0, . . . , 0)

h(x, y)

, f

2

(y, . . . , y, x, . . . , x)

h(0, 1) = h(1, 0)

Ponieważ h(0, 0) = f

2

(0, . . . , 0) = f

2

(1, . . . , 1) = h(1, 1). Rozważając dwie możliwe wartości

dla h(0, 0) i również dwie możliwości dla h(0, 1) otrzymujemy następujące cztery możliwości na
funkcję h :

x

y

h(x,y)

h(x,y)

h(x,y)

h(x,y)

0

0

0

1

0

1

0

1

0

0

1

1

1

0

0

0

1

1

1

1

1

0

1

0

Widzimy więc, że możemy z funkcji f

2

otrzymać:

• AND dla h(0, 0) = 0, h(0, 1) = 0 – wtedy otrzymane AND wraz z NOT (otrzymanym z

f

1

) jest układem zupełnym

• NOR dla h(0, 0) = 1, h(0, 1) = 0 – wtedy otrzymane NOR tworzy układ zupełny

28

background image

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

f

1

)jest układem zupełnym

• NAND dla h(0, 0) = 1, h(0, 1) = 1 – wtedy otrzymane NAND tworzy układ zupełny

Stąd f

1

oraz f

2

tworzą układ zupełny, bo z nich możemy otrzymać układ zupełny.

Ćwiczenia:
Stosując twierdzenie o układach zupełnych sprawdź zupełność układu:

1. AND i NOT

2. OR i NOT

3. AND, OR i NOT

4. NAND

5. NOR

2.5

Własności algebry Boole’a

• Przemienność:

x

|y = y|x, x&y = y&x

• Łączność:

x

|(y|z) = (x|y)|z, x&(y&z) = (x&y)&z

• Rozdzielność koniunkcji względem alternatywy:

x&(y

|z) = (x&y)|(x&z)

• Rozdzielność alternatywy względem koniunkcji:

x

|(y&z) = (x|y)&(x|z)

• Własności negacji:

x = x, x

|y = x&y, x&y = x|y

• Pełność negacji:

x

|x = 1, x&x = 0

• Własności zera:

x

|0 = x, x&0 = 0

• Własności jedynki:

x&1 = x, x

|1 = 1

29

background image

Ćwiczenia
Uzasadnij równości funkcji Boole’a:

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 wyrażeniem 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 wyrażeniem boolowskim

• Eliminacja dwóch zmiennych w koniunkcji alternatyw:

(x|y|w)&(x|y|w)&(x|y|w)&(x|y|w) = w

Eliminacja dwóch 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ść wyrażenia boolowskie do wyrażenia o:

1. jednej zmiennej: x&y|y&x
2. dwóch zmiennych: x&y&z|x&z&y

30

background image

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

4. jednej zmiennej: (x|y)&(y|x)

5. dwóch 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ń

• Przykłady zdań o wartości logicznej prawda (1):

1000 = 1000

5 < 55

17 = 7 + 10

sześć jest liczbą parzystą

1024 jest całkowitą potęgą dwójki

• Przykłady zdań o wartości logicznej fałsz (0):

1000 = 2000

5 > 15

17 = 2 + 51

sześć jest liczbą nieparzystą

1024 jest całkowitą potęgą trójki

• Następującym zdaniom nie można przypisać wartości logicznej:

x = 2000

x > y

x = y + z

2.7.1

Spójniki logiczne

Spójnik

Nazwa

Spójnik w C

Funkcja Boole’a

Funkcja w C

¬

negacja

!

·

˜

alternatywa

k

|

|

koniunkcja

&&

&

&

równoważność

==

=

implikacja
alt. wyłączna

^

31

background image

2.7.2

Wyrażenia logiczne

• Budowa wyrażeń logicznych:

Stałe logiczne: T F

Zmienne logiczne:

a b c . . . x y z

Wyrażenia atomowe: stałe logiczne lub zmienne logiczne

Negacja atomów:

¬a ¬b ¬c . . . ¬x ¬y ¬z ¬T ¬F

Wyrażenia złożone z wyrażeń prostszych w

1

, w

2

:

¬(w

1

)

(w

1

) (w

2

)

(w

1

) (w

2

)

(w

1

) (w

2

)

Jeśli wyrażenie w

1

lub w

2

jest atomem lub jego negacją, to pomijamy

nawiasy.

• Przykłady wyrażeń logicznych:

¬a, x → y, (¬a ∨ b) (a ∧ b)

• Wyrażenie logiczne w reprezentuje funkcję Boole’a f

w

• Niech wyrażenia logiczne w

1

i w

2

będą zbudowane z tego samego zestawu

zmiennych logicznych. Mówimy, że

w

1

i w

2

są logicznie równoważne, w

1

⇐⇒ w

2

, wtt określają tą samą

funkcję Boole’a:

w

1

⇐⇒ w

2

wtt f

w

1

= f

w

2

w

1

implikuje w

2

, w

1

=⇒ w

2

, wtt jedynki f

w

1

są jedynkami f

w

2

:

w

1

=⇒ w

2

wtt f

w

1

≤ f

w

2

wttf

w

1

(a, b, . . . ) = 1 → f

w

2

(a, b, . . . ) = 1

• Jeśli f

w

nie przyjmuje wartości zero, to wyrażenie w nazywa się tautologią

• Równoważna definicja wyrażeń równoważnych:

w

1

⇐⇒ w

2

wtt (w

1

) (w

2

) jest tautologią

• Równoważna definicja implikacji logicznej:

w

1

=⇒ w

2

wtt (w

1

) (w

2

) jest tautologią

32

background image

• Ważne 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 można powiedzieć o prawdzi-

wości zdania:

[a ∨ ¬b ∨ (a ∨ b)] [(¬(a ∨ b)) (¬a ∧ b)]

2. Co możesz powiedzieć o prawdziwości zdań a , x ∈ A, b , y ∈ B, c , y ∈

A jeśli następujące implikacje są prawdziwe:

Jeśli x ∈ A oraz y ∈ B, to y ∈ A

Jeśli x 6∈ A oraz y ∈ A, to y 6∈ B

3. Sprawdź czy następujące wyrażenia 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

ci, którzy zawsze kłamią, a w grupie P ci, którzy zawsze mówią prawdę.

Określ przynależność osób do tych grup, jeśli:

33

background image

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

nas jest kłamcą”

(b) spotykają się osoby A, B i A powiada ”ja jestem kłamcą lub B nie

jest kłamcą”

(c) spotykają się osoby A, B, C i A powiada ”wszyscy jesteśmy kłamca-

mi”, zaś B na to ”tylko jeden z nas nie kłamie”

(d) spotykają się osoby A, B, C i A powiada ”panowie należycie do tej

samej grupy” – co powie C jeśli ktoś go zapyta ”czy A i B są w tej
samej grupie?”

2. W pewnej wiosce w Transylwanii mieszkają osobnicy, których można zali-

czyć do jednej z czterech kategorii: (1) ludzie zdrowi, którzy zawsze mówią
prawdę; (2) ludzie chorzy, którzy zawsze kłamią; (3) wampiry zdrowe, któ-
re zawsze kłamią; (4) wampiry chore, które zawsze mówią prawdę.

(a) Pewien mieszkaniec tej wioski powiada ”jestem albo człowiekiem albo

jestem zdrowy.” Do jakiej kategorii należy ta osoba?

(b) Inny mieszkaniec powiada ”nie jestem zdrowym człowiekiem”. Kim

on jest?

(c) Jeszcze inny powiada ”jestem chorym człowiekiem”. Czy należy on

do tej samej kategorii co poprzednik?

(d) Tubylec na zadane przez turystę pytanie ”czy jesteś chorym wampi-

rem?” odpowiedział ”tak lub nie.” Kim był ten tubylec?

Przykład dowodu przez zaprzeczenie
Twierdzenie 2.2

O pierwiastku z dwóch

2 jest liczbą niewymierną.

Dowód:

Niech zdanie p ma postać:

2 jest liczbą niewymierną.

Wtedy

¬p oznacza, że dla pewnych liczb m, n ∈ N względnie pierwszych mamy:

2 =

m

n

, m

2

= 2n

2

Stąd m jest podzielne przez dwa, a więc m

2

jest podzielne przez cztery i stąd n jest też podzielne

przez dwa. Co przeczy temu, że m i n są względnie pierwsze.

2.7.3

Wyrażenia logiczne a zbiory

34

background image

wyrażenie logiczne

własność

zbiory

a

∨ a ↔ a ∧ a ↔ a

idempotentność

A

∪ A = A ∩ A = A

(a ∨ b) ∨ c ↔ a ∨ (b ∨ c)

łączność

(A ∪ B) ∪ C = A ∪ (B ∪ C)

(a ∨ b) ∧ c ↔ a ∧ (b ∧ c)

(A ∩ B) ∩ C = A ∩ (B ∩ C)

a

∨ b ↔ b ∨ a

przemienność

A

∪ B = B ∪ A

a

∧ b ↔ b ∧ a

A

∩ B = B ∩ A

a

(b ∨ c) (a ∧ b) (a ∧ c)

rozdzielczość

A

(B ∪ C) = (A ∩ B) (A ∩ C)

a

(b ∧ c) (a ∨ b) (a ∨ c)

A

(B ∩ C) = (A ∪ B) (A ∪ C)

¬¬a ↔ a

inwolucja

A

= A

¬(a ∨ b) ↔ ¬a ∧ ¬b

prawa

A

∪ B = A ∩ B

¬(a ∧ b) ↔ ¬a ∨ ¬b

de’Morgana

A

∩ B = A ∪ B

a

∨ F ↔ a

a

∧ F ↔ F

identyczność

A

∪ ∅ = A

A

∩ ∅ =

a

∧ T ↔ a

a

∨ T ↔ T

A

∩ U = A

A

∪ U = U

a

(a ∧ b) ↔ a

absorpcja

A

(A ∩ B) = A

a

(a ∨ b) ↔ a

A

(A ∪ B) = A

2.7.4

Łamigłówka króla

Królewicz poślubi tę z trzech panien, która pierwsza rozwiąże zadanie opraco-
wane przez króla. Król powiedział pannom, że w sąsiedniej ciemnej komnacie
nałoży kolejno każdej z nich kapelusz koloru czerwonego lub zielonego. Gdy to
uczynił poinstruował je, że mają podnieść rękę gdy zobaczą przynajmniej jeden
kapelusz koloru czerwonego, a następnie pomyśleć i odgadnąć jaki kapelusz ma-
ją na głowie. Wygra ta z panien, która pierwsza da poprawną odpowiedź. Po
wprowadzeniu panien zgromadzeni zobaczyli, że król założył wszystkim pannom
kapelusze koloru czerwonego. Po dłuższej chwili milczenia jedna z panien ogłosiła
z pewnością siebie, że nosi kapelusz czerwony. Skąd to wiedziała?
Rozwiązanie logiczne

• Niech symbole A, B, C reprezentują trzy panny

• Załóżmy, że zagadkę rozwiązała panna A

• Określamy zdania logiczne:

1. a

1

, Panna A ma kapelusz czerwony.

2. a

2

, Panna A podniosła rękę.

3. a

3

, Panna A określiła kolor swojego kapelusza

4. Analogicznie określamy zdania b

1

, b

2

, b

3

dla panny B oraz c

1

, c

2

, c

3

dla panny C

• Gdy ”wszystkie panny podniosły rękę”, w ocenie sytuacji przez pannę A

następujące zdania są prawdziwe i ich prawdziwość może być sprawdzona
przez panny B i C:

35

background image

1. ¬a

1

∧ b

2

∧ c

2

→ ¬a

1

∧ b

1

∧ c

1

2. ¬a

1

∧ b

1

∧ c

1

→ b

3

∨ c

3

3. ¬(b

3

∧ c

3

) → ¬(¬a

1

∧ b

2

∧ c

2

)

4. ¬(b

3

∨ c

3

) → a

1

∨ ¬b

2

∨ ¬c

2

5. b

2

↔ T

6. c

2

↔ T

7. ¬(b

3

∨ c

3

) → a

1

∨ F ∨ F ↔ a

1

8. ¬b

3

∧ ¬c

3

→ a

1

2.8

Rachunek predykatów i kwantyfikatorów

1. Formy zdaniowe

2. Kwantyfikatory

2.8.1

Predykaty

• Forma zdaniowa (predykat) jednej zmiennej to wyrażenie P (x), które po

podstawieniu dowolnego a ∈ D

x

staje się zdaniem logicznym

• Zbiór D

x

nazywamy dziedziną zmiennej x

• Jeśli P (a) jest zdaniem prawdziwym, to mówimy, że a spełnia P

• Zbiór tych wszystkich a

∈ D

x

, które spełniają P oznaczamy przez T (P ) i

nazywamy zbiorem spełniania predykatu P

• Forma zdaniowa (predykat) wielu zmiennych P (x, y, . . . ) ma określone

dziedziny D

x

, D

y

, . . . dla każdego parametru, a zbiór T (P ) spełniania P

jest relacją zawartą w D

x

× D

y

× · · · :

T (P )

, {(a, b, . . . ) : a ∈ D

x

, b

∈ D

y

, . . . P (a, b, . . . ) jest spełniony

}

T (P )

⊂ D , D

x

× D

y

× . . .

• Produkt kartezjański D

, D

x

× D

y

× . . . nazywamy dziedziną predykatu

P

• Przykłady:

P (x)

, x jest liczbą parzystą, D

x

, N, T (P ) to zbiór liczb parzystych

Q(x, y)

, x

2

+ y

2

= 25, D

x

= D

y

, N, T (Q) = {(3, 4), (4, 3)}

Q

(x, y) , P (x) ∧ Q(x, y), D

x

= D

y

, N, T (Q

) = {(4, 3)}

36

background image

P

1

(x

1

, . . . , x

n

) , |x

1

| + . . . |x

n

| ≤ 1, D

x

1

= · · · = D

x

n

= R, T (P

1

) =

kula w normie pierwszej w R

n

P

2

(x

1

, . . . , x

n

) , x

2

1

+ . . . x

2

n

1, D

x

1

= · · · = D

x

n

= R, T (P

2

) =

kula w R

n

P

(x

1

, . . . , x

n

) , max

i

|x

i

| ≤ 1, D

x

1

= · · · = D

x

n

= R, T (P

) =

kula w normie Czebyszewa w R

n

• Jeśli 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))

• Mówimy, że z predykatu P wynika predykat Q wtt T

P

⊂ T

Q

. Oznaczamy

ten fakt przez P ⇒ Q

• Mówimy, że predykat P jest równoważny predykatowi Q wtt T

P

= T

Q

.

Oznaczamy ten fakt przez P ⇔ Q

Ćwiczenia:

1. Zapisz predykat P, dla którego zbiór spełniania T (P ) jest:

(a) kulą o promieniu 5 i o środku w punkcie (5, −5, 55)

(b) kołem o promieniu 10 i o środku w (1, 11)

(c) kwadratem o bokach równoległych do osi układu, o powierzchni 4 i

o środku w (5, 5)

(d) kwadratem obróconym o 45 stopni względem środka poprzednio okre-

ślonego kwadratu

(e) zbiorem wszystkich punktów na płaszczyźnie o współrzędnych całko-

witych, które są względnie pierwsze

2. Znajdź zbiór spełniania T (P ) dla następującego predykatu P (x) :

x

2

+ x + 1 < 30

• 1

3

x

27

• 0 < x < 40 oraz x

2

+ 7 jest całkowitą potęgą dwójki

Zadania:

1. Wyraź P (x) , ”x jest wielokrotnością 4” przy pomocy predykatu Q(x) ,

”x jest liczbą parzystą”

37

background image

2. Niech A ⊂ D

x

będzie dowolnym zbiorem w dziedzinie D

x

. Zdefiniuj pre-

dykat P (x) taki, że T (P ) = A

3. Niech A , {x ∈ N : x ≤ 18}, B , {x ∈ N : x ≤ 25, 2|x}.

(a) Wypisz elementy zbiorów A − B oraz B − A

(b) Określ predykaty definiujące zbiory A − B oraz B − A

4. Przypuśćmy, że mamy logiczną implikację P ⇒ Q dla predykatów P i

Q określonych w dziedzinie D. Co można powiedzieć o zbiorze spełniania
T ((P )

(Q))?

Problemy:
Jakie relacje muszą zachodzić między zbiorami spełniania T (P ) oraz T (Q) by
prawdą były następujące 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

Kwantyfikatory

• Kwantyfikator ogólny

∀x (czytaj ”dla każdego x”) dotyczy predykatu jed-

nej zmiennej P (x) lub wielu zmiennych P (x, y, . . . )

Zmienna kwantyfikatora przyjmuje wartości z dziedziny D

x

lub z jej

podzbioru Z ⊂ D

x

Predykat P (x) jednej zmiennej – otrzymujemy zdanie logiczne q :

q

, ∀x ∈ Z, P (x)

Zdanie q jest prawdziwe wtt Z ⊂ T (P )

Jeśli Z = ∅, to zdanie ∀x ∈ Z, P (x) jest zawsze prawdziwe

Przykłady:

∀x ∈ N, x

2

> x

1

∀x ∈ Z − {0}, x

2

> x

1

∀x ∈ R, x

2

2x − 1

Predykat P (x, y) dwóch zmiennych – otrzymujemy predykat Q(y) :

Q(y)

, ∀x ∈ Z, P (x, y)

Zdanie Q(b) dla x = b jest prawdziwe wtt

Z

⊂ {x ∈ D

x

: P (x, b)}

38

background image

Przykłady:

∀x ∈ R, x

2

+ y ≥ 2x − 1

∀x ∈ R, sin(x · y) 1

• Kwantyfikator egzystencjalny

∃x (czytaj ”istnieje x”) dotyczy predykatu

jednej zmiennej P (x) lub wielu zmiennych P (x, y, . . . )

Zmienna kwantyfikatora przyjmuje wartości z dziedziny D

x

lub z jej

podzbioru Z ⊂ D

x

Predykat P (x) jednej zmiennej – otrzymujemy zdanie logiczne q :

q

, ∃x ∈ Z, P (x)

Zdanie q jest prawdziwe wtt Z ∩ T (P ) 6=

Przykłady:

∃x ∈ N, 2

x

> 10

10000

∃x ∈ R, x

2

2x − 1

Predykat P (x, y) dwóch zmiennych – otrzymujemy predykat Q(y) :

Q(y)

, ∃x ∈ Z, P (x, y)

Zdanie Q(b) dla x = b jest prawdziwe wtt

Z

∩ {x ∈ D

x

: P (x, b)} 6=

Przykłady:

∃x ∈ R, x

2

+ 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

background image

• Przykład – definicja ciągłości funkcji w punkcie x

0

:

P (x, x

0

) , ∀ǫ > 0∃δ > 0, |x − x

0

| < δ → |f(x) − f(x

0

)| < ǫ

¬P (x, x

0

) ↔ ∃ǫ > 0∀δ > 0, |x − x

0

| < δ ∧ |f(x) − f(x

0

)| ≥ ǫ

• Przemienność

:

∀x ∈ Z

x

,

∀y ∈ Z

y

, P (x, y)

↔ ∀y ∈ Z

y

,

∀x ∈ Z

x

, P (x, y)

∀x ∈ Z

x

,

∀y ∈ Z

y

, P (x, y, z)

↔ ∀y ∈ Z

y

,

∀x ∈ Z

x

, P (x, y, z)

• Przemienność

:

∃x ∈ Z

x

,

∃y ∈ Z

y

, P (x, y)

↔ ∃y ∈ Z

y

,

∃x ∈ Z

x

, P (x, y)

∃x ∈ Z

x

,

∃y ∈ Z

y

, P (x, y, z)

↔ ∃y ∈ Z

y

,

∃x ∈ Z

x

, 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 kwantyfikatorowej następujące zdania:

(a) Istnieją wysocy mężczyźni

(b) Tylko pobożni zasługują na zbawienie

(c) Coś się psuje w państwie duńskim

(d) Są rzeczy na ziemi i w niebie, które nie śnią się nawet filozofom

(e) Żadne prosię nie lata

2. Określ prawdziwość zdań:

(a) ∀x ∈ N, x

2

+ x < 10

10000

(b) ∃x ∈ N, (x

2

= 2x) (x

2

= 100)

Zadania:

1. Uzasadnij prawdziwość implikacji:

[∃x, (P (x) ∧ Q(x))] [∃x, P (x)] [∃x, Q(x)]

2. Podaj przykład predykatów P (x), Q(x), dla których następujące implika-

cje są fałszywe:

[∀x, (P (x) ∨ Q(x))] [∀x, P (x)] [∀x, Q(x)]

∀x∃y, P (x, y) → ∃y∀x, P (x, y)

∀x∃y, P (x, y) → ∃x∀y, ¬P (x, y)

40

background image

Problemy:

1. Niech D

x

= {a, b, c.} Wyeliminuj kwantyfikatory z następujących zdań:

∀x ∈ D, P (x)

• [

∀x ∈ D, R(x)] [∃x ∈ D, S(x)]

2. Zapisz w postaci kwantyfikatorowej następujące zdania:

• Istnieją co najmniej dwa elementy x

∈ D, spełniające predykat P (x)

• Istnieją co najwyżej dwa elementy x

∈ D, spełniające predykat P (x)

• Istnieją dokładnie dwa elementy x

∈ D, spełniające predykat P (x)

• Można upiec szarlotkę na więcej niż dwa sposoby

• Własność P (n) jest prawdziwa dla wszystkich n

N za wyjątkiem

skończonej liczby przypadków

2.9

Homomorfizm algebr

• Homomorfizm to odwzorowanie dziedziny jednej algebry w dziedzinę dru-

giej algebry zachowujące działania tych algebr

• Formalna definicja homomorfizmu:

Algebra oryginalna:

A , (X, K; f

i

: X

n

i

.

→ X, i = 1, . . . , K)

Algebra homomorficzna:

B , (Y, K; f

i

: Y

n

i

.

→ Y, i = 1, . . . , K)

Homomorfizm to odwzorowanie h : X → Y spełniające warunki:

h(f

i

(x

1

, . . . , x

n

i

)) = f

i

(h(x

1

), . . . , h(x

n

i

))

dla dowolnych (x

1

, . . . , x

n

i

) ∈ D(f

i

), i = 1, . . . , K.

W algebrze homomorficznej B (przy homomorfiźmie h : X → Y )

dziedziny operacji są nadzbiorami obrazów dziedzin odpowiednich
operacji w algebrze A :

h(D(f

i

)) ⊂ D(f

i

), i = 1, . . . , K

Jeśli homomorfizm h : X → Y jest odwzorowaniem różnowartościo-

wym i ”na”, to h

1

nie musi być homomorfizmem. Jeśli h

1

jest

homomorfizmem, to h nazywamy izomorfizmem algebr A oraz B.

41

background image

Jeśli h jest homomorfizmem różnowartościowym i ”na”, to h

1

: Y →

X jest homomorfizmem wtt gdy dziedziny operacji w algebrze B
obrazem dziedzin odpowiednich operacji w algebrze A :

D(f

i

) = h(D(f

i

)), i = 1, . . . , K

Jeśli h jest homomorfizmem różnowartościowym ”na” oraz dla pew-
nej operacji f

i

w algebrze A istnieje element (y

1

, . . . , y

n

i

) ∈ D(f

i

), bę-

dący obrazem elementu spoza dziedziny operacji f

i

, t.j. x

i

= h

1

(y

i

), i =

1, . . . , K oraz

(y

1

, . . . , y

n

i

) ∈ D(f

i

), (x

1

, . . . , x

n

i

)) 6∈ D(f

i

),

to rozszerzenie operacji f

1

na element (x

1

, . . . , x

n

i

)

f

i

(x

1

, . . . , x

n

i

) , h

1

(f

i

(y

1

, . . . , y

n

i

))

określa rozszerzenie algebry A izomorficzne z algebrą B.

• Przykład:

A , (Z, 2; +, ·) – algebra liczb całkowitych z operacjami dodawania

i mnożenia

B , ({0, 1}, 1; ⊕, &) – algebra binarna z operacjami XOR i AND

Odwzorowanie h : Z → {0, 1} określone następująco: h(x) = 0 wtt x

jest liczbą parzystą (x ∈ P)

Odwzorowanie h jest homomorfizmem 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)

Dowód

homomorfizmu w powyższym przykładzie

Rozważmy cztery następujące 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

background image

Rozważmy te same przypadki tym razem dla operacji mnożenia:

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 powyższym przykładzie algebry A o operację odejmo-

wania liczb całkowitych , a algebrę B o operację odejmowania modulo dwa ,

to odwzorowanie h jest też homomorfizmem algebry A w algebrę B.

2.10

Rachunek reszt

• Iloraz q z dzielenia n

Z przez p ∈ N oraz reszta r z tego dzielenia

spełniają warunki:

n = q

· p + r, 0 ≤ r < p

• Powyższy rozkład jest jednoznaczny, tzn. istnieje dokładnie jedna taka

para (q, r) spełniająca te warunki.
Dowód:

Jeśli n = q

1

· p + r

1

= q

2

· p + r

2

, to

|(q

1

− q

2

)

| · p = |r

2

− r

1

|

Ponieważ p dzieli

|r

1

− r

2

|, a |r

1

− r

2

| < p, to r

1

= r

2

.

Stąd

q

1

· p = q

2

· p ⇒ q

1

= q

2

I dlatego (q

1

, r

1

) = (q

2

, r

2

).

• Określamy funkcję mod

p

: Z Z

p

, {0, 1, . . . , p − 1}

(czytaj: modulo p), p ∈ N:

∀n ∈ Z mod

p

(n) , reszta z dzielenia n przez p

• Podstawowy związek resztowy, p > 0:

n =

n

p

· p + mod

p

(n)

43

background image

• Operacje modulo +

p

,

p

,

p

: Z

p

× Z

p

Z

p

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 mnożenie liczb całkowitych

• Jednoargumentowa operacja negacji modulo

p

: Z

p

Z

p

p

x

, 0

p

x = p

− x, x ∈ Z

p

• Odejmowanie modulo przez dodawanie modulo i negację modulo:

x

p

y = x +

p

(

p

y)

• Własności mod

p

dla dowolnych x, y ∈ Z :

mod

p

(x + y) = mod

p

(mod

p

(x) + mod

p

(y))

mod

p

(x + y) = mod

p

(x) +

p

mod

p

(y)

mod

p

(−x)

= mod

p

(mod

p

(x)) = mod

p

(p − mod

p

(x))

mod

p

(−x)

=

p

mod

p

(x)

mod

p

(x − y) = mod

p

(mod

p

(x) mod

p

(y))

mod

p

(x − y) = mod

p

(x)

p

mod

p

(y)

mod

p

(x · y)

= mod

p

(mod

p

(x) · mod

p

(y))

mod

p

(x · y)

= mod

p

(x)

p

mod

p

(y)

Twierdzenie: Funkcja mod

p

określa homomorfizm algebry (Z, 3; +, −, ·) w

algebrę (Z

p

, 3; +

p

,

p

,

p

)

• Jeśli p jest liczbą pierwszą to dla dowolnego a

Z

p

−{0}, równanie a∗

p

x =

1 ma dokładnie jedno rozwiązanie w zbiorze Z

p

. Oznaczamy je jako a

1

.

Dowód

twierdzenia o elemencie odwrotnym w Z

p

Niech f (x)

, a ∗

p

x, x

Z

p

będzie funkcją argumentu x. Zauważmy, że f : Z

p

Z

p

i f jest

funkcją różnowartościową 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 więc p|(x−y). Możemy założyć, że x ≥ y. Wtedy 0 (x−y) < p

i p

|(x − y) tylko wtedy gdy x − y = 0, t.j. gdy x = y.

Skoro funkcja f jest określona na skończonym zbiorze i jest różnowartościowa, więc jest też
odwzorowaniem Z

p

na Z

p

.

Dlatego f

1

(1) jest zbiorem jednoelementowym, t.j. istnieje dokładnie jeden element x

Z

p

dla którego f (x) = 1, t.j. a

p

x = 1.

Twierdzenie 2.3

o arytmetyce w I

N

Niech I

N

, {n ∈ Z : 2

N

1

≤ n < 2

N

1

} ⊂ Z, p , 2

N

. Wtedy

• Na zbiorze I

N

operacje arytmetyczne +, −, · stają się funkcjami częścio-

wymi

44

background image

• Odwzorowanie mod

p

ograniczone do zbioru I

N

jest różnowartościowe i

ma postać dla x ∈ I

N

:

mod

p

(x) =

x

gdy 0 ≤ x ≤ (p/2) 1

x + p gdy

− p/2 ≤ x ≤ −1

• Odwzorowanie odwrotne mod

1

p

: Z

p

→ I

N

ma postać dla dowolnego

y

Z

p

:

mod

1

p

(y) =

y

gdy 0 ≤ y ≤ (p/2) 1

y

− p gdy (p/2) ≤ y ≤ p − 1

Twierdzenie 2.4

o homomorfiźmie algebr

Odwzorowanie mod

p

jest homomorfizmem różnowartościowym ”na” algebry A

N

,

(I

N

, 3; +,

−, ·) na algebrę B

N

, (Z

p

, 3; +

p

,

p

,

p

), t.j. dla dowolnych x, y ∈ I

N

,

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 homomorficznym rozszerzeniu

Określamy homomorficzne rozszerzenie arytmetycznych operacji +, −, · na I

N

:

x ˜

+y , mod

1

p

(mod

p

(x) +

p

mod

p

(y))

x ˜

−y , mod

1

p

(mod

p

(x)

p

mod

p

(y))

x˜

·y , mod

1

p

(mod

p

(x)

p

mod

p

(y))

Wtedy mod

p

jest izomorfizmem algebry B

N

i rozszerzonej algebry A

N

. ⊳

2.11

Arytmetyka cyfrowa w stałym przecinku

N – długość rejestru w ALU (w praktyce N = 8, 16, 32, 64)

• Arytmetyka cyfrowa liczb całkowitych standardowo dotyczy działań +,

−, ·

na zbiorze I

N

• Działania te są wykonywane poprzez arytmetykę modulo +

p

,

p

,

p

w Z

p

• Funkcja mod

p

określa różnowartościowy homomorfizm obu algebr

45

background image

• Liczba n ze zbioru I

N

jest kodowana na dokładnie N bitach z użyciem

odwzorowania mod

p

, p = 2

N

:

u(n)

,

N bitów

z

}|

{

mod

p

(n)

u(n) nazywa się kodem uzupełnieniowym do dwóch (ang. 2’s complement
to two)

Przykłady dla N = 8: I

8

= [128, 127], p = 2

8

= 256

u(100) =

8 bitów

z

}|

{

mod

256

(100)=

8 bitów

z}|{

100 = 01100100

u(

100) =

8 bitów

z

}|

{

mod

256

(100)=

8 bitów

z

}|

{

100 + 256=

8 bitów

z}|{

156 = 10011100

u(

128) =

8 bitów

z

}|

{

mod

256

(128)=

8 bitów

z

}|

{

128 + 256=

8 bitów

z}|{

128 = 10000000

u(

1) =

8 bitów

z

}|

{

mod

256

(1)=

8 bitów

z

}|

{

1 + 256=

8 bitów

z}|{

255 = 11111111

• Ustawianie domyślnego stałego przecinka na cyfrze s = 0, . . . , N

1 :

Dziedzina liczbowa przecinka na cyfrze s :

I

s

N

, I

N

· 2

−s

, {x ∈ Q : ∃n ∈ I

N

, x = n

· 2

−s

}

Homomorfizm algebry A

s

N

= (I

s

N

, 3; +,

−, ·) z algebrą B

N

= (Z

p

, 3; +

p

,

p

,

p

)

określa następujące odwzorowanie mod

s

p

:

mod

s

p

(x) , mod

p

(x · 2

s

), x ∈ I

s

N

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

N

liczby

z przedziału [1, 2

N

1

] w systemie dwójkowym, np. dla N = 8, n = 100 mamy:

256 = 1 0 0 0 0 0 0 0 0
256 = 0 1 1 1 1 1 2 0 0

100 =

0 1 1 0 0 1 0 0

u(

100) =

1 0 0 1 1 1 0 0

Reguły manualne dla u(n): W zapisie dwójkowym liczby n na N bitach nie
zmieniaj zer na najmłodszych pozycjach i nie zmieniaj najmłodszej jedynki.
Pozostałe cyfry zmień na przeciwne.

2.12

Arytmetyka cyfrowa w zmiennym przecinku

46

background image

• Arytmetyka w zmiennym przecinku stosuje reprezentację opartą na kon-

cepcji cechy c(x), mantysy m(x) i znaku liczby s(x) dla x ∈ R.

• W standardzie ”IEEE 754 Floating Point Numbers” (w skrócie IEEE 754)

żąda się by mantysa była w przedziale [1, 2) :

x = (

1)

s(x)

m(x)2

c(x)

, s(x)

∈ {0, 1}, m(x) [1, 2), c(x) Z

• Jeśli x

6= 0, to powyższa reprezentacja zmiennoprzecinkowa jest jedno-

znaczna, bo R − {0} można podzielić na przeskalowane przez ±2

k

, k

Z,

wersje przedziału [1, 2) :

R

− {0} = (−∞, −1] (1, 0) (0, 1) [1, ∞)

(−∞, −1] = · · · ∪ (8, −4] (4, −2] (2, −1] =

X

k=0

(2

k+1

,

2

k

]

(1, −0) =

1, −

1
2

1
2

,

1
4

∪ · · · =

−∞

X

k=

1

(2

k+1

,

2

k

]

(0, 1) = · · · ∪

1

4

,

1
2

1

2

, 1

=

−∞

X

k=

1

[2

k

, 2

k+1

)

[1, ∞) = [1, 2) [2, 4) [4, 8) ∪ · · · =

X

k=0

[2

k

, 2

k+1

)

• Jeśli x

[2

k

, 2

k+1

), k ∈ Z, to s(x) = 0, c(x) = k, m(x) = x/2

k

• Jeśli x

(2

k+1

,

2

k

], k ∈ Z, to s(x) = 1, c(x) = k, m(x) = −x/2

k

• W praktyce mamy ograniczoną liczbę bitów n

c

na pole cechy i n

m

bitów

na pole mantysy

• W IEEE 754 cechę c(x) kodujemy jako liczbę c(x) + b, gdzie b jest stałym

przesunięciem dla cechy

• W IEEE 754 struktura słowa zmiennoprzecinkowego ma postać:

precyzja

s(x)

c(x) + b

m(x)

b

float

1 [31]

8 [30-23]

23 [22-00]

127

double

1 [63]

11 [62-52]

52 [51-00]

1023

gdzie pole bitowe opisano w postaci: długość [zakres pozycji bitowych] i tak
dla precyzji pojedynczej (float) mamy n

c

= 8, n

m

= 23, a dla podwójnej

(double) n

c

= 11, n

m

= 52

• W IEEE 754 wiodącą jedynkę mantysy pomija się

47

background image

• W IEEE 754 dopuszczalny kod cechy c + b

[1, 2

n

c

2], t.j. kody złożone

z samych zer i z samych jedynek zarezerwowano dla innych celów. Stąd
zakres dopuszczalnych cech wynosi:

c

[1 − b, 2

n

c

2 − b]

• W IEEE 754 wartość zapisu liczby x w przypadku mantysy znormalizo-

wanej wynosi:

x = (

1)

s

· m · 2

c

, m

[1, 2 2

−n

m

], c ∈ [1 − b, 2

n

c

2 − b]

x

[2

2

nc

2−b

(2 2

−n

m

), −2

−b+1

] [2

−b+1

, 2

2

nc

2−b

(2 2

−n

m

)]

dla n

c

= 8, n

m

= 23, b = 127,

x

[2

127

(2 2

23

), −2

126

] [2

126

, 2

127

(2 2

23

)]

dla n

c

= 11, n

m

= 52, b = 1023,

x

[2

1023

(2 2

52

), −2

1022

] [2

1022

, 2

1023

(2 2

52

)]

• W IEEE 754 oprócz mantysy znormalizowanej dopuszczono dla wyróżnio-

nej wartości cechy nie znormalizowany zapis ułamka m w miejscu manty-
sy, z wagą jeden dla najstarszej pozycji (bez domyślnej jedynki), t.j. dla
c + b = 0 wartość zapisu liczby x wynosi:

x = (

1)

s

· m · 2

−b

, m

[2

−n

m

+1

, 2

2

−n

m

+1

]

x

[2

−b+1

(1 2

−n

m

), −2

−b−n

m

+1

] [2

−b−n

m

+1

, 2

−b+1

(1 2

−n

m

)]

dla n

m

= 23, b = 127,

x

[2

126

(1 2

23

), −2

149

] [2

149

, 2

126

(1 2

23

)]

dla n

m

= 52, b = 1023,

x

[2

1022

(1 2

52

), −2

1074

] [2

1074

, 2

1022

(1 2

52

)]

• Reprezentacja zera: pole cechy i mantysy wypełnione zerami, pole znaku

dowolne

• Liczby rzeczywiste R(N, n

c

) = R(1+n

c

+n

m

, n

c

) reprezentowane w zmien-

nym przecinku w IEEE 754 są postaci zdefiniowanej powyżej dla mantysy
znormalizowanej i nie znormalizowanej:

R(N, n

c

)

, R

z

(N, n

c

) ∪ R

n

(N, n

c

) ∪ {0},

N = 1 + n

c

+ n

m

, b = 2

n

c

1

1

R

z

(N, n

c

) , {x : ∃s, k, c ∈ N, x = (1)

s

· m · 2

c

, s

∈ {0, 1},

m

[1, 2 2

−n

m

], m = 1 + k2

−n

m

,

c

[1 − b, 2

n

c

2 − b]}

R

n

(N, n

c

) , {x : ∃s, k ∈ N, x = (1)

s

· m · 2

−b

, s

∈ {0, 1},

m

[2

−n

m

+1

, 2

2

−n

m

+1

], m = k2

−n

m

+1

}

48

background image

• Zakresy dla float:

R(32, 8)

, R

z

(32, 8) ∪ R

n

(32, 8) ∪ {0},

n

c

= 8, n

m

= 23, b = 127

R

z

(32, 8) , {x : ∃s, k, c ∈ N, x = (1)

s

· m · 2

c

, s

∈ {0, 1},

m

[1, 2 2

23

], m = 1 + k2

23

, c

[126, 127]}

R

n

(32, 8) , {x : ∃s, k ∈ N, x = (1)

s

· m · 2

−b

, s

∈ {0, 1},

m

[2

22

, 2

2

22

], m = k2

22

}

• Zakresy dla double:

R(64, 11)

, R

z

(64, 11) ∪ R

n

(64, 11) ∪ {0},

n

m

= 52, n

c

= 11, b = 1023

R

z

(64, 11) , {x : ∃s, k, c ∈ N, x = (1)

s

· m · 2

c

, s

∈ {0, 1},

m

[1, 2 2

52

], m = 1 + k2

52

, c

[1022, 1023]}

R

n

(64, 11) , {x : ∃s, k ∈ N, x = (1)

s

· m · 2

−b

, s

∈ {0, 1},

m

[2

51

, 2

2

51

], m = k2

51

}

• Reprezentacja nieskończoności: same jedynki w polu cechy, same zera w

polu mantysy, pole znaku równe zero dla +i równe jeden dla −∞

• Kategoria NaN (ang. Not a Number)

Kategoria QNaN (ang. Quiet Not a Number) – obsługuje argumenty
nie zdefiniowane i jest kodowana w polu cechy przez same jedynki, a
w polu mantysy ma jedynkę na pozycji najbardziej znaczącej

Kategoria SNaN (ang. Signalling Not a Number) – obsługuje argu-
menty nieprawidłowe i jest kodowana w polu cechy przez same je-
dynki, a w polu mantysy ma zero na pozycji najbardziej znaczącej i
przynajmniej jedną jedynkę na pozostałych pozycjach

• Operacje na argumentach specjalnych:

operacja z argumentem NaN ma wynik NaN

operacje z argumentem :

operacja

wynik

x/

± ∞

0

±∞ · ±∞

±∞

x

6= 0 → ±x/0

±∞

+

operacja

wynik

±0/ ± 0

NaN

∞ − ∞

NaN

±∞/ ± ∞

NaN

±∞ · 0

NaN

49

background image

2.12.1

Wzorce bitowe w IEEE 754

kod

(c)

kod

(m)

s

e

f

x

0

0 . . . 0

0 . . . 0

+0

0

0 . . . 0

0 . . . 01

..

.

1 . . . 1

+bez norm.

0, f · 2

b+1

0

0 . . . 01

.

..

1 . . . 10

X . . . X

+z norm.

1, f · 2

e

b

0

1 . . . 1

0 . . . 0

+

0

1 . . . 1

0 . . . 01

..

.

01 . . . 1

SN aN

0

1 . . . 1

10 . . . 0

..

.

1 . . . 1

QN aN

kod

(c)

kod

(m)

s

e

f

x

1

0 . . . 0

0 . . . 0

0

1

0 . . . 0

0 . . . 01

..

.

1 . . . 1

bez norm.

0, f · 2

b+1

1

0 . . . 01

.

..

1 . . . 10

X . . . X

z norm.

1, f · 2

e

b

1

1 . . . 1

0 . . . 0

−∞

1

1 . . . 1

0 . . . 01

..

.

01 . . . 1

SN aN

1

1 . . . 1

10 . . . 0

..

.

1 . . . 1

QN aN

3

Schematy rekurencyjne

• Pojęcie schematu rekurencyjnego, t.j. rekursji:

Rekursja to specyficzny schemat konstrukcji zbiorów typu rekuren-
cyjnego

Rekursja składa się z dwóch kroków:

1. krok bazowy: określa obiekty bazowe
2. krok rekurencyjny: konstruuje elementy złożone z elementów prost-

szych

• Przykłady rekursji:

rekurencyjne ciągi liczb, np. ciąg Fibonacciego:

c

0

= 1, c

1

= 1, c

n+1

, c

n

+ c

n

1

, n

N

rekurencyjne ciągi zbiorów, np. obrazy fraktalne takie jak trójkąt
Sierpińskiego, czy zbiór Cantora C :

C = lim

n

→∞

C

n

C

1

= [0, 1], C

n+1

= f

1

(C

n

) ∪ f

2

(C

n

)

f

1

(x) , x/3, f

2

(x) , (x + 2)/3

50

background image

poprawne wyrażenia języka programowania ze zbioru W, np.

a, b, c, . . . , x, y, z

∈ W – bazowe wyrażenia

w

∈ W → (w) ∈ W – wyrażenie nawiasowe

w

1

, w

2

∈ W → w

1

+ w

2

∈ W, w

1

− w

2

∈ W, . . . inne operacje

• drzewa matematyczne:

Pojedynczy węzeł w tworzy drzewo T

w

Jeśli T

1

, . . . , T

k

są drzewami, a r jest węzłem, to struktura złożona z

węzła r jako korzenia z referencjami na drzewa T

1

, . . . , T

k

jest nowym

drzewem T

• Użyteczność rekursji:

Funkcje języka programowania mogą realizować rekursje, t.j. proce-
dury rekurencyjne, np. n! oblicza następująca funkcja języka C:
int silnia(int n) { if (n == 0) return 1; else return n∗silnia(n − 1); }

Jeśli zbiór Z jest budowany rekurencyjnie ze zbioru bazowego Z

0

, to

prawdziwość zdania typu ∀x ∈ Z, P (x) dowodzi się techniką ogólnej

indukcji matematycznej złożoną z dwóch kroków:

1. podstawa indukcji:

dowodzimy prawdziwości P (x) dla wszystkich x ∈ Z

0

2. krok indukcyjny: jeśli element x jest zbudowany rekurencyjnie z

elementów x

1

, . . . , x

k

, to dowodzimy prawdziwości implikacji

[P (x

1

) ∧ · · · ∧ P (x

k

)] → P (x)

Przykład 3.1

Palindromy

Rozważmy palindromy nad alfabetem Σ, t.j. słowa, które czytane od lewej i od
prawej mają tą samą postać. Niech słowo puste E i pojedynczy symbol będą też
palindromem. Pokażemy, że zbiór P

0

wszystkich palindromów można zbudować

następującym schematem rekurencyjnym:

1. krok bazowy:

E

∈ P, ∀σ ∈ Σ, σ ∈ P

2. krok rekurencyjny:

∀σ ∈ Σ, x ∈ P → σxσ ∈ P

Zauważmy, że elementy bazowe ze zbioru są palindromami z definicji. Jeśli x jest
palindromem, to konstrukcja σxσ daje również palindrom. Stąd mamy P ⊂ P

0

.

Jeśli wyrażenie x jest palindromem, t.j. x ∈ P

0

, to można je zbudować z E lub

z symbolu środkowego (przypadki parzystej lub nieparzystej długości) stosując
krok rekurencyjny. Stąd również zachodzi przeciwna inkluzja P

0

⊂ P.

51

background image

Przykład 3.2

Zbalansowane wyrażenia nawiasowe

Zbalansowane wyrażenia nawiasowe ze zbioru B budujemy tylko z symboli na-

wiasów ’(’ oraz ’)’ stosując następujący schemat rekurencyjny:

1. krok bazowy: E ∈ B – symbol pusty jest wyrażeniem nawiasowym
2. krok rekurencyjny 1: x ∈ B → (x) ∈ B
3. krok rekurencyjny 2: x, y ∈ B → xy ∈ B

Niech w ∈ B, w = w

1

. . . w

n

, w

i

∈ {(, )}. Określamy ciąg liczb L

i

(P

i

) jako liczbę

lewych (prawych) nawiasów na pozycjach 1, . . . , i.
W praktyce często wykorzystujemy następującą własność zbalansowanych wy-
rażeń nawiasowych:

L

i

≥ P

i

, i = 1, . . . n

1, L

n

= P

n

(1)

Oznaczmy przez B

0

zbiór wyrażeń nawiasowych spełniających powyższą wła-

sność.
Pokażemy najpierw, że B ⊂ B

0

. W kroku rekurencyjnym pierwszym w wyrażeniu

(x) mamy na pozycji i-tej, 2 ≤ i ≤ n − 1 :

L

i

= 1 + L

i

1

(x) 1 + P

i

1

(x) = 1 + P

i

> P

i

gdzie L

j

(x) (P

j

(x)) dotyczy wartości analizowanych tylko dla części x.

Dla i = 1 : L

1

= 1 > P

1

= 0. Zaś dla i = n :

L

n

= 1 + L

n

1

(x) = 1 + P

n

1

(x) = P

n

Pokazaliśmy więc, że (x) spełnia warunek (1), t.j. (x) ∈ B

0

.

Podobnie pokazujemy, że jeśli x, y ∈ B spełniają warunek (1), to wyrażenie xy

również spełnia warunek (1). Dlatego B ⊂ B

0

.

Przypuśćmy teraz, że jakieś wyrażenie w ∈ B

0

, t.j. spełnia warunek (1). Musimy

pokazać, że da się ono zbudować stosując kroki rekurencyjne 1 oraz 2.
Wiemy, że jest to prawda dla najkrótszego wyrażenia x = (), bo budujemy je z
E stosując krok 1. Przypuśćmy, że

|x| > 2 i że wyrażenia x

∈ B

0

krótsze od x,

t.j. |x

| < |x| pokazaliśmy konstrukcję opartą na krokach rekurencyjnych 1 i 2,

t.j. x

∈ B. Wtedy x mamy dwa przypadki:

1. x jest postaci x = (x

), x

∈ B

0

i wtedy możemy zastosować krok 1 do

x

∈ B,

2. możemy x podzielić na części x = x

1

x

2

. . . x

k

, z których każda spełnia

warunek (1), t.j. x

i

∈ B

0

. Punkty podziału dostajemy tam gdzie L

i

= P

i

.

Wtedy każda z tych części (jako krótsza od x) należy do B i stosując

rekurencyjny krok 2 k − 1 razy wnioskujemy, że również x ∈ B.

Pokazaliśmy więc inkluzję przeciwną B

0

⊂ B. W efekcie B = B

0

. ⊳

52

background image

3.1

Wieże Hanoi

Problem Wieże Hanoi:
Zabawa w wieże Hanoi wymaga pewnej liczby n pierścieni o różnych promieniach
zewnętrznych R

1

>

· · · > R

n

, i stałym promieniu wewnętrznym r

1

= · · · = r

n

=

r < R

n

, dużo mniejszym niż rozmiar każdego pierścienia, ale na tyle dużym

by pierścienie mogły być nałożone przez swoje wewnętrzne otwory na szkielet
wieży złożonej z pionowego pręta i nieruchomej podstawy. Dysponujemy trzema
takimi szkieletami o numerach
1, 2, 3. Początkowo wszystkie pierścienie tworzą
wieżę numer
1 w ten sposób, że największy leży na podstawie szkieletu 1 i kolejne
mniejsze pierścienie spoczywają na większych. Zadanie polega na przeniesieniu
wszystkich pierścieni, jeden po drugim, z wieży numer
1 na wieżę numer 3 z
wykorzystaniem wieży
2 w ten sposób by nigdy większy pierścień nie był położony
na pierścieniu mniejszym.
Oznaczmy polecenie przeniesienia krążka z wieży i na wieżę j przez i → j;

Wtedy rozwiązanie 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ą, która ma wygene-
rować sekwencję poleceń przenosząca n pierścieni z wieży i na wieżę j.

1. krok bazowy dla n = 1:

(a) i → j;

(b) zakończenie;

2. krok rekurencyjny dla n > 1:

(a) niech k będzie numerem trzeciej wieży różnej od i oraz j

(b) HanoiT owers(i, k, n − 1);

(c) i → j;

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

(e) zakończenie;

Ślad procedury uwzględnia następujące fakty:

• Każde wykonanie procedury oznacza utworzenie nowej kopii parametrów

procedury (tu dla i, j, n) i zmiennych pomocniczych (tu tylko dla k)

• W kopii parametrów wpisujemy wartości argumentów aktualnego wywo-

łania procedury, a w kopii lokalnych zmiennych wartości aktualne dla tego
wykonania procedury

53

background image

• Zakończenie procedury skutkuje usunięciem kopii parametrów i lokalnych

zmiennych

• Podobne zarządzanie pamięcią dotyczy aktualnego kroku jaki jest wyko-

nywany w ramach łańcucha wywołań procedur

• Zmienna pomocnicza t oznacza długość aktywnego łańcucha wywołań pro-

cedur jeszcze nie zakończonych

• Zawsze mamy w pamięci t kopii parametrów i zmiennych lokalnych (u nas

i

1

, j

1

, n

1

, k

1

; . . . ; i

t

, j

t

, n

t

, k

t

)

• Aktualnie wykonywana procedura korzysta jako ostatnia w łańcuchu wy-

wołań procedur z t-tej kopii parametrów i zmiennych lokalnych

Poniższa tabela opisuje ślad wywołania HonoiT owers(1, 3, 2)

aktualnekroki t

i

1

, j

1

, n

1

, k

1

; . . . ; i

t

, j

t

, n

t

, k

t

polecenie

2.(a)

1 1, 3, 2, 2

2.(b); 1.(a)

2 1, 3, 2, 2; 1, 2, 1, −

1 2

2.(b); 1.(b)

1 1, 3, 2, 2

2.(c)

1 1, 3, 2, 2

1 3

2.(d); 1.(a)

2 1, 3, 2, 2; 2, 3, 1, −

2 3

2.(d); 1.(b)

1 1, 3, 2, 1

2.(e)

0

Zadanie: Zapisz procedurę rekurencyjną silnia(n) i utwórz tabelę śladu wyko-
nania silnia(4).
Kolejna tabela opisuje ślad wywołania HonoiT owers(1, 3, 3)

kroki

t

i

1

, j

1

, n

1

, k

1

; . . . ; i

t

, j

t

, n

t

, k

t

polecenie

2.(a)

1 1, 3, 3, 2

2.(b); 2.(a)

2 1, 3, 3, 2; 1, 2, 2, 3

2.(b); 2.(b); 1.(a)

3 1, 3, 3, 2; 1, 2, 2, 3; 1, 3, 1, −

1 3

2.(b); 2.(b); 1.(b)

2 1, 3, 3, 2; 1, 2, 2, 3

2.(b); 2.(c)

2 1, 3, 3, 2; 1, 2, 2, 3

1 2

2.(b); 2.(d); 1.(a) 3 1, 3, 3, 2; 1, 2, 2, 3; 3, 2, 1, −

3 2

2.(b); 2.(d); 1.(b)

2 1, 3, 3, 2; 1, 2, 2, 3;

2.(b); 2.(e)

1 1, 3, 3, 2

2.(c)

1 1, 3, 3, 2

1 3

2.(d); 2.(a)

2 1, 3, 3, 2; 2, 3, 2, 1

2.(d); 2.(b); 1.(a) 3 1, 3, 3, 2; 2, 3, 2, 1; 2, 1, 1, −

2 1

2.(d); 2.(b); 1.(b)

2 1, 3, 3, 2; 2, 3, 2, 1

2.(d); 2.(c)

2 1, 3, 3, 2; 2, 3, 2, 1

2 3

2.(d); 2.(d); 1.(a) 3 1, 3, 3, 2; 2, 3, 2, 1; 1, 3, 1, −

1 3

2.(d); 2.(d); 1.(b) 2 1, 3, 3, 2; 2, 3, 2, 1
2.(d); 2.(e)

1 1, 3, 3, 2

2.(e)

0

54

background image

Własność 3.1

O liczbie poleceń w problemie Wieże Hanoi

Niech p(n) będzie 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) = 2

n

1

Zadanie: Sprawdź słuszność powyższych własności funkcji p(n).

3.2

Konwersja wyrażenia 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∗

• Przykłady równoważnych wyrażeń:

NA

NP

ONP

a/b

/ab

ab/

a + b

− c

+ abc

ab + c

a/b

∗ c

∗/abc

ab/c

a

∗ b/c

/

∗ abc

ab

∗ c/

a

− b/c

−a/bc

abc/

(a − b)/c

/

− abc

ab

− c/

a + b

(c − d/a)

+a ∗ b − c/da

abcda/

− ∗+

(c/d + a) (b − d/a) + /cda − b/da cd/a + bda/ − ∗

Obserwacje:

• Kolejność występowania zmiennych w NA, NP i ONP jest taka sama

• Kolejność wykonywania operacji w NA uwzględnia położenie nawiasów,

priorytety i reguły łączenia operacji o jednakowych priorytetach

• Kolejność występowania operacji w ONP jest taka sama jak kolejność wy-

konywania operacji w NA

• Tabela priorytetów i reguł łączenia:

poziom operacje reguły łączenia

2

∗ /

od prawej

1

+

od lewej

55

background image

• Symbol operacji w NA mają poziom zagnieżdżenia określony przez liczbę

L

− P

, gdzie L

(P

) jest liczbą lewych (prawych) nawiasów wystę-

pujących przed daną operacją, np. w wyrażeniu (c/d + a) (b − (d + c)/a)

kolejne operacje / + ∗ − +/ mają poziomy zagnieżdżenia równe odpowied-

nio 1, 1, 0, 1, 2, 1

Przesłanki do algorytmu NA → ONP :

• Zakładamy sekwencyjny przegląd symboli wyrażenia w typu NA, kolejno

od lewej do prawej

• Pojawienie się symbolu zmiennej oznacza jej kopiowanie na wyjście u

• Zmiana porządku symbolu operacji o i jej drugiego argumentu wymaga

zapamiętania o w jakiejś strukturze danych s, np. dla w postaci a/(b+a∗c),

operacja / zapamiętywana jest w s

• Drugi argument operacji o może być też złożonym wyrażeniem i dlatego do

s mogą być dopisywane kolejne operacje, które będą usuwane z s wcześniej
niż symbol o

• Struktura danych ma własność stosu, który działa według zasady ostatni

zapisany – pierwszy skasowany (ang. LIFO – Last In First Out)

• Ponieważ nawiasy, priorytety i zasady łączności ustalają kolejność opera-

cji, to powinniśmy dołączyć dodatkowe reguły obsługi stosu s :

1. Pojawienie się prawego nawiasu ) oznacza wycofanie z s na wyjście

u wszystkich operacji z tego poziomu zagnieżdżenia

2. Pojawienie się lewego nawiasu ( oznacza jego automatyczne zapa-

miętanie w s, co pozwoli na łatwą identyfikację wszystkich symboli
operacji zapisanych w s z aktualnego poziomu zagnieżdżenia

3. Pojawienie się operacji o

next

o niższym priorytecie niż ostatnia ope-

racja o

top

na stosie s oznacza wycofanie o

top

z s na wyjście u

4. Pojawienie się operacji o

next

o tym samym priorytecie co ostatnia

operacja o

top

na stosie s, ale o regule łączenia od lewej oznacza wy-

cofanie o

top

z s na wyjście u

Algorytm 3.1

konwersji NA → ONP

• Wejście: poprawne wyrażenie typu NA

x = x

1

x

2

. . . x

n

, x

i

∈ {a, . . . , z, (, ), +, −, ∗, /}

Dla uproszczenia zapisu algorytmu zakładamy, że x

1

=

(

, x

n

=

)

• Wyjście: wyrażenie typu ONP

y = y

1

y

2

. . . y

n

, y

i

∈ {a, . . . , z, +, −, ∗, /}

56

background image

• Metoda:

1. Przygotuj wskaźniki bieżącej pozycji:

i – dla wejścia w

j

0 – dla wyjścia u

t

0 – dla stosu s

2. Dla i = 1, . . . , n :

(a) Przypadek x

i

∈ {a, . . . , z} : j ← j + 1; y

j

← x

i

;

(b) Przypadek x

i

=

(

: t ← t + 1; s

t

← x

i

(c) Przypadek x

i

=

)

:

i. póki s

t

6=

(

wykonuj: j ← j + 1; y

j

← s

t

; t ← t − 1;

ii. t ← t − 1

(d) Przypadek x

i

∈ {+, −, ∗, /}

i. póki s

t

∈ {+, −, ∗, /} oraz (prty(s

t

) > prty(x

i

) lub prty(s

t

) =

prty(x

i

) i obowiązuje reguła łączenia od lewej dla operacji s

t

i x

i

) wykonuj:

j

← j + 1; y

j

← s

t

; t ← t − 1;

ii. Wprowadź x

i

na stos: t ← t + 1; s

t

← x

i

Ślad algorytmu NA → ONP na wyrażeniu ((c/d + a) (b − d + c)/d)

i

x

i

krok

t

s

1

. . . s

t

j

y

j

1.

0

0

1

(

2.(b)

1 (

2

(

2.(b)

2 ((

3

c

2.(a)

1

c

4

/

2.(d)ii.

3 ((/

5

d

2.(a)

2

d

6

+ 2.(d)i − ii. 3 ((+

3

/

7

a

2.(a)

4

a

8

)

2.(c)i − ii. 1 (

5

+

9

2.(d)ii.

2 (

10 (

2.(b)

3 ((

11 b

2.(a)

6

b

12 2.(d)ii.

4 ((

13 d

2.(a)

7

d

14 + 2.(d)i − ii. 4 ((+

8

15 c

2.(a)

9

c

16 )

2.(c)i − ii. 2 (

10

+

17 /

2.(d)ii.

3 (∗/

18 d

2.(a)

11

d

19 )

2.(c)i − ii. 0

12 13 /∗

57

background image

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

y

1

. . . y

13

= cd/a + bd − c + d/∗

3.3

Generowanie kodu maszynowego wyrażenia arytme-
tycznego

• Prosty model maszyny (PMM):

pamięć MEM złożona z N słów maszynowych o adresach 0, 1, 2, . . . , N−

1, np. N = 2

20

:

M EM [0], M EM [1], . . . , M EM [N

1]

akumulator R

A

, tj. wyróżniony rejestr, w którym przed wykonaniem

operacji arytmetycznej znajduje się pierwszy argument, a po jej wy-
konaniu wynik operacji

rejestr wierzchołka (ang. top) stosu programu R

T

jednostka centralna z repertuarem instrukcji:

∗ Instrukcje z adresowaniem bezpośrednim

instrukcja

efekt działania

LOAD X

R

A

← MEM[@X]

SAVE X

M EM [@X]

← R

A

ADD X

R

A

← R

A

+ MEM[@X]

SUB X

R

A

← R

A

− MEM[@X]

MUL X

R

A

← R

A

∗ MEM[@X]

DIV X

R

A

← R

A

/M EM [@X]

gdzie @X oznacza adres zmiennej X.

∗ Instrukcje stosowe

instrukcja

efekt działania

PUSH

M EM [R

T

] ← R

A

; R

T

← R

T

+ 1

POP

R

T

← R

T

1; R

A

← MEM[R

T

]

POP2

R

T

← R

T

1; R

A

← MEM[R

T

1];

M EM [R

T

1] ← MEM[R

T

]

ADD *T

R

T

← R

T

1; R

A

← R

A

+ MEM[R

T

]

SUB *T

R

T

← R

T

1; R

A

← R

A

− MEM[R

T

]

MUL *T

R

T

← R

T

1; R

A

← R

A

∗ MEM[R

T

]

DIV *T

R

T

← R

T

1; R

A

← R

A

/M EM [R

T

]

Przykład kodu dla PMM umieszczającego na stosie programu wartość
wyrażenia (A + B) ∗ C − D :

kod

wyniki ONP

LOAD A

A w R

A

ADD B

AB+ w R

A

MUL C

AB+C* w R

A

SUB D

AB+C*D- w R

A

PUSH

AB+C*D- na stosie

58

background image

Przykład o bardziej złożonej interakcji ze stosem:
NA – A ∗ C/(B − C + D), ONP – ACBC − D + /∗

kod

wyniki ONP

LOAD B

B w R

A

SUB C

BC- w R

A

ADD D

BC-D+ w R

A

PUSH

BC-D+ na stosie

LOAD C

C w R

A

DIV *T

CBC-D+/ w R

A

PUSH

CBC-D+/ na stosie

LOAD A

A w R

A

MUL *T

ACBC-D+/* w R

A

PUSH

ACBC-D+/* na stosie

Algorytm 3.2

ON P

→ CODE

s – stos zmiennych aktualizowany z ONP y = y

1

y

2

. . . y

J

• $ – dodatkowy symbolem oznaczający aktualny wierzchołek stosu

1. Przygotuj wskaźniki bieżącej pozycji:

j – dla ONP

t

0 – dla stosu s

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

(a) Przypadek y

j

jest symbolem zmiennej: t ← t + 1; s

t

← y

j

(b) Przypadek y

j

jest symbolem operacji:

v

1

← s

t

1

; v

2

← s

t

; t ← t − 1; s

t

$

;

i. Przypadek v

1

, v

2

zawierają symbole zmiennych: generuj kod

LOAD v

1

; y

j

v

2

; PUSH;

gdzie v

i

jest symbolem zapisanym w v

i

, i = 1, 2, a y

j

jest

tekstem ADD gdy y

i

=

+

, SUB gdy y

i

=

, MUL gdy

y

i

=

, DIV gdy y

i

=

/

ii. Przypadek v

1

jest symbolem zmiennej, v

2

=

$

: generuj kod

LOAD v

1

; y

j

∗ T ; PUSH;

iii. Przypadek v

2

jest symbolem zmiennej, v

1

=

$

generuj kod

POP ; y

j

v

2

; PUSH;

iv. Przypadek v

1

=

$

, v

2

=

$

: generuj kod

POP2 ; y

j

∗ T ; PUSH;

59

background image

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 ONP → CODE na wyrażeniu CD/A + BD − C + D/∗

j

y

j

krok

t

s

1

. . . s

t

generowany kod

1.

0

1

C

2.(a)

1 C

2

D

2.(a)

2 CD

3

/

2.(b)i.

1 $

LOAD C; DIV D; PUSH;

4

A

2.(a)

2 $A

5

+ 2.(b)iii. 1 $

POP ; ADD A; PUSH;

6

B

2.(a)

2 $B

7

D

2.(a)

3 $BD

8

2.(b)i.

2 $$

LOAD B; SUB D; PUSH;

9

C

2.(a)

2 $$C

10 + 2.(b)iii. 2 $$

POP ; ADD C; PUSH;

11 D 2.(a)

3 $$D

12 /

2.(b)iii. 2 $$

POP ; DIV D; PUSH;

13

2.(b)iv. 1 $

POP2 ; MUL *T; PUSH;

Po kroku 3 usuwającym pary ”PUSH; POP” oraz kroku 4 usuwającym 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

Zauważmy, że w tym przykładzie automatycznie wygenerowany kod jest opty-
malny w sensie ilości instrukcji.

3.4

Klasyczna indukcja matematyczna

60

background image

Ogólny schemat indukcji matematycznej:

Jeśli zbiór Z jest budowany rekurencyjnie ze zbioru bazowego Z

0

, to praw-

dziwość zdania typu ∀x ∈ Z, P (x) dowodzi się techniką ogólnej indukcji

matematycznej złożoną z dwóch kroków:

1. podstawa indukcji:

dowodzimy prawdziwości P (x) dla wszystkich x ∈ Z

0

2. krok indukcyjny: jeśli element x jest zbudowany rekurencyjnie z ele-

mentów x

1

, . . . , x

k

, to dowodzimy prawdziwości implikacji

[P (x

1

) ∧ · · · ∧ P (x

k

)] → P (x)

• Klasyczna indukcja matematyczna przyjmuje następujące założenia:

Z = N

∪ {0}, Z

0

= {0}

n > 0

→ n = (n−1)+1 – zasada budowy większych liczb z mniejszych

pozwala na konstrukcję:

n = 0 + 1 +

· · · + 1

Prawdziwość zdania ∀n ≥ n

0

, P (n) uzasadniamy dowodząc prawdzi-

wości:

1. podstawy indukcji dla n

0

∈ Z : P (n

0

) jest zdaniem prawdziwym

2. kroku indukcyjnego dla n > n

0

w postaci ogólnej:

[∀n

0

≤ k < n, P (k)] → P (n)

3. lub kroku indukcyjnego dla n > n

0

w postaci szczególnej:

P (n

1) → P (n)

3.4.1

Indukcja matematyczna – wybrane przykłady

Przykład 3.3

Wzór na sumę kwadratów liczb parzystych

Dowodzimy prawdziwości równości:

n

X

k=1

(2k)

2

=

2
3

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

Niech L(n) – lewa strona równości, P(n) – prawa strona równości, predykat
P (n) :

P (n)

, L(n) = P(n)

Podstawa indukcji n

0

= 1 :

L(1) = (2 · 1)

2

= 2

2

= 4, P(1) =

2
3

1 · 2 · 3 = 4, → L(1) = P(1) → P (1)

61

background image

Krok indukcyjny dla n > 1.
Załóżmy 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
3

(n − 1)n(2n − 1) + 4n

2

=

2
3

n[(n

1)(2n − 1) + 6n] =

2
3

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

P(n)

W takim razie z założenia P (n − 1) wynika L(n) = P(n), t.j. P (n). Zauważmy

przy okazji, że w kroku indukcyjnym wnioskujemy z pierwszej linii mamy:

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

3
2 L

(n) = (n − 1)n(2n − 1) + 6n

2

A to jest krok indukcyjny do dowodu tego, że każdy wyraz ciągu n(n+1)(2n+1)
jest podzielny przez 6. ⊳

Zadania:
Pokaż metodą indukcji matematycznej prawdziwość następujących równości cząst-
kowych sum szeregów liczbowych:

1.

P

n
k
=1

(3k − 2) = n(3n − 1)/2

2.

P

n
k
=1

k(k + 1) = n(n + 1)(n + 2)/3

3.

P

n
k
=1

k(k

1) = (n − 1)n(n + 1)/3

4.

P

n
k
=1

k

2

= n(n + 1)(2n + 1)/6

5.

P

n
k
=1

(1)

k

k

2

= (1)

n

n(n + 1)/2

6.

P

n
k
=1

k(k + 1)(k + 2) = n(n + 1)(n + 2)(n + 3)/4

7.

P

n
k
=1

k(k

1)(k − 2) = (n − 2)(n − 1)n(n + 1)/4

8.

P

n
k
=1

2/(k + 2)k = 3/2 (2n + 3)/(n + 1)(n + 2)

9.

P

n
k
=1

1/(2k − 1)(2k + 1) = n/(2n + 1)

10.

P

n
k
=1

1/(3k − 2)(3k + 1) = n/(3n + 1)

11.

P

n

1

k=0

1/(n + k)(n + k + 1) = 1/2n

12.

P

n

1

k=0

1/(n − 2k)(n − 2k + 2) = n/(4 − n

2

) dla nieparzystych n > 0

Zadania:
Pokaż metodą indukcji matematycznej prawdziwość następujących własności:

1. Ogólne prawo de Morgana:

n

[

k=1

A

k

=

n

\

k=1

A

k

62

background image

2. 2

n

> n

2

dla n > 4

3.

P

n
k
=1

1/

k >

n dla n > 1

4. 4|(3

n

+ 1) dla nieparzystych n > 0

5. 5|(2 · 4

n

+ 3 · 9

n

) dla n ≥ 0

6. 7|(2

n+2

+ 3

2n+1

) dla n ≥ 0

7. 13|(4

2n+1

+ 3

n+2

) dla n ≥ 0

8. Jeśli c

0

= c

1

= 1, c

2

= 3 oraz dla n > 2 c

n

= 3c

n

1

3c

n

2

+ c

n

3

, to

c

n

= n

2

− n + 1 dla n ≥ 0

Przykład 3.4

Istnienie łańcucha zwycięstw w turnieju

Rozważmy turnieje sportowe , w których każdy gracz spotyka się z każdym i
każda gra dwóch przeciwników kończy się zwycięstwem jednego z nich. Łańcuch
zwycięstw długości k, dotyczy k graczy G

1

, . . . , G

k

i ma miejsce gdy gracz G

1

pokonał gracza G

2

, G

2

wygrał z G

3

, . . . , G

k

1

okazał się lepszy od G

k

. Pokaże-

my, że w każdym takim turnieju z n uczestnikami można zawsze zidentyfikować
łańcuch zwycięstw długości n.
Baza indukcji dla n

0

= 3. Niech gracze A, B, C uczestniczą w turnieju. Jeśli

A wygrał z B to zapisujemy ten fakt jako A

→ B. Po jego zakończeniu mamy

dwie możliwości:

1. Jeden z graczy pokonał pozostałych. Np. A → B, A → C i wtedy gdy

B

→ C, to łańcuch zwycięstw ma postać A → B → C, w przeciwnym

razie A → C → B.

2. Każdy z graczy ma po jednym zwycięstwie i jednej porażce. Np. B → A i

A

→ C i wtedy łańcuch zwycięstw to B → A → C.

Krok indukcyjny dla n > 3. Po zakończeniu turnieju wybierzmy dowolnego gra-
cza X, który ma przynajmniej jedno zwycięstwo i przynajmniej jedną porażkę.
Taki gracz istnieje, bo jego brak oznaczałoby, że w turnieju są tylko dwie ka-
tegorie graczy – ci, którzy wygrali wszystkie spotkania oraz ci, którzy odnieśli
same porażki. Ale w każdej z tych kategorii może znaleźć się co najwyżej jeden
gracz. Wtedy liczba wszystkich graczy n musiałaby wynosić co najwyżej dwóch
graczy, wbrew założeniu, że n > 3.
Gracz X określa dwie kategorie graczy:

1. W zbiorze W znajdują się gracze, z którymi X wygrał

2. W zbiorze P są ci przeciwnicy, z którymi X przegrał

Ponieważ liczność n

1

= |P| jest mniejsza niż n, to z założenia indukcyjnego

istnieje w zbiorze P łańcuch zwycięstw:

P

1

→ . . . → P

n

1

63

background image

Podobnie możemy znaleźć łańcuch zwycięstw w zbiorze W :

W

1

→ . . . → W

n

2

gdzie n

2

= n − 1 − n

1

.

Budowa łańcucha zwycięstw dla wszystkich graczy jest teraz prosta. Ma on
bowiem następującą postać:

P

1

→ . . . → P

n

1

→ X → W

1

→ . . . → W

n

2

Przykład 3.5

Liczba obszarów określonych przez n prostych na płaszczyźnie

Mówimy, że proste p

1

, . . . , p

n

są w położeniu ogólnym, gdy każda para p

i

, p

j

ma punkt przecięcia, ale żadna trójka prostych nie przecina się w jednym punk-
cie. Pokażemy, że liczba obszarów L(n), na które dzieli płaszczyznę zestaw n
prostych będących w położeniu ogólnym wynosi:

L(n) = 1 +

n(n + 1)

2

Baza indukcji dla n

0

= 2. Ponieważ prosta p

2

dzieli na dwie części każdą z

półpłaszczyzn określonych przez prostą p

1

, to dwie prostą dzielą płaszczyznę na

cztery obszary i wzór na L(n) jest prawdziwy dla n = 2, bo L(2) = 1 + 3 = 4.
Krok indukcyjny dla n > 2.
Załóżmy, że proste p

1

, . . . , p

n

1

dzielą płaszczyznę na L(n−1) obszarów. Dodat-

kowa prosta p

n

przecina proste p

1

, . . . , p

n

1

w pewnych n−1 różnych punktach.

Punkty te możemy uporządkować według kolejności występowania na prostej
p

n

. Wtedy kolejne punkty przecięcia X

1

, . . . , X

n

1

leżą na granicach n obszarów

R

0

, R

1

, . . . , R

n

1

, z których każdy jest dzielony na dwie części przez prostą p

n

.

X

i

leży na granicy między R

i

1

a R

i

, i = 1, . . . , n

1.

W ten sposób zamiast n starych obszarów pojawia się 2n nowych, tzn. liczba
obszarów wzrasta o n. Stąd

L(n) = L(n

1) + n = 1 +

(n − 1)n

2

+ n = 1 +

n(n + 1)

2

i wzór na L(n) ma żądaną postać.

Problemy:

1. Mówimy, że zbiór płaszczyzn znajduje się w położeniu ogólnym, gdy każ-

de dwie się przecinają, a przecięcie dowolnych trzech nie tworzy prostej.
Pokaż, że n płaszczyzn w przestrzeni trójwymiarowej, które znajdują się
w położeniu ogólnym dzieli przestrzeń na 2 + (n − 1)n obszarów.

2. Pokaż, że w wielokącie wypukłym o n wierzchołkach suma kątów mię-

dzy kolejnymi bokami wynosi (n − 2)180

. Uwaga: Figura jest wypukła

gdy każdy odcinek łączący jej dwa dowolne punkty całkowicie się w niej
zawiera.

64

background image

3. Małżeństwo, pan X i pani Y, zaprosiło na przyjęcie n par małżeńskich.

Po początkowych powitaniach polegających na wzajemnym podaniu rąk,
pan X zapytał pozostałe 2n + 1 osób z iloma osobami wymieniły uścisk
dłoni. Ku swojemu zdziwieniu otrzymał 2n + 1 różnych odpowiedzi, t.j.
każda osoba przywitała się z inną liczbą osób. Wiadomo, że małżonkowie
nie podawały sobie rąk. Pokaż przez indukcję, że pani Y (małżonka pana
X) przywitała się z dokładnie n osobami?
Wskazówka: Rozważ małżeństwo, w którym jeden z partnerów przywitał
się z maksymalną liczbą osób, t.j. z 2n osobami. Z iloma osobami przywitał
się partner tej osoby? Jak wpływa na liczbę różnych odpowiedzi usunięcie
tej pary z obliczeń?

1. Budujemy przykładowy graf płaski na mapie powiatów polskich. Krawędź

takiego grafu jest wyznaczona przez wspólną granicę dwóch powiatów lub
przez granicę powiatu i granicę Polski. Koniec takiej wspólnej granicy na-
zywamy wierzchołkiem grafu. Zauważmy, że za wyjątkiem wierzchołków
znajdujących się na granicy państwa, wierzchołki grafu znajdują na gra-
nicy przynajmniej trzech powiatów.
W terminologii grafów powiat jest regionem wyznaczonym na płaszczyź-
nie przez krawędzie grafu. Graf powiatów jest płaskim grafem spójnym bo
istnieje droga wzdłuż jego krawędzi między dwoma dowolnymi wierzchoł-
kami. W naszym przykładzie regionem też jest obszar znajdujący się poza
obszarem państwa polskiego.
Na mapie Unii Europejskiej obszar poza Unią składałby się z więcej niż
jednego regionu, a jednym z nich byłaby Szwajcaria. Regiony w takim
podejściu łączą się tylko na granicach i pokrywają całą płaszczyznę.
Niech r będzie liczbą regionów w płaskim grafie spójnym o k krawędziach
i n wierzchołkach. Pokaż metodą indukcji ogólnej, że obowiązuje następu-
jący związek Eulera:

n

− k + r = 2

Wskazówka: Jak wpływa na wyrażenie n − k + r usunięcie dowolnej kra-

wędzi z grafu?

3.4.2

Obliczanie sum metodą różnic

Lemat 3.1
Jeśli a

n

jest ciągiem arytmetycznym o różnicy r, to dla m ≤ n :

n

X

k=m

1

a

k

a

k+1

=

1
r

1

a

m

1

a

n+1

Dowód:

Zauważmy, że:

1

a

k

a

k

+1

=

1
r

1

a

k

1

a

k

+1

65

background image

Dlatego

n

X

k

=m

1

a

k

a

k

+1

=

1
r

n

X

k

=m

1

a

k

1

a

k

+1

=

1
r

h

1

a

m

1

a

m

+1

+

1

a

m

+1

1

a

m

+2

+

· · · +

1

a

n

1

1

a

n

+

1

a

n

1

a

n

+1

i

=

1
r

1

a

m

1

a

m

+1

+

1

a

m

+1

1

a

m

+2

+

· · · +

1

a

n

1

1

a

n

+

1

a

n

1

a

n

+1

=

1
r

1

a

m

1

a

n

+1

Przykład 3.6

Pokażemy, że suma

n

X

k=1

1

n(n + 1)

=

n

n + 1

Ponieważ a

n

= n jest ciągiem arytmetycznym o różnicy r = 1, to z powyższego

lematu mamy:

n

X

k=1

1

n(n + 1)

=

1
r

1

a

1

1

a

n+1

=

1
1

1

1

1

n + 1

=

n

n + 1

Zadania:
Pokaż metodą różnic:

1.

P

n
k
=1

1/(2k − 1)(2k + 1) = n/(2n + 1)

2.

P

n
k
=1

1/(3k − 2)(3k + 1) = n/(3n + 1)

3.

P

n

1

k=0

1/(n + k)(n + k + 1) = 1/2n

4.

P

n

1

k=0

1/(n − 2k)(n − 2k + 2) = n/(4 − n

2

) dla nieparzystych n > 0

3.5

Równania rekurencyjne

• Przykład równania rekurencyjnego definiującego ciąg Fibonacciego:

F

0

, 0, F

1

, 1, ∀n ≥ 2, F

n

, F

n

1

+ F

n

2

• Szukamy rozwiązania F

n

w postaci jawnej, np. jako liniowej kombinacji

funkcji postaci r

n

, gdzie r

R znajdujemy z równania:

r

n

= r

n

1

+ r

n

2

, 1 = r + r

2

66

background image

Rozwiązanie równania r

2

+ r − 1 = 0 :

r

1

=

1

5

2

, r

2

=

1 +

5

2

• Szukamy współczynników c

1

, c

2

, takich, że F

n

, c

1

r

n

1

+ c

2

r

n

spełnia wa-

runki początkowe F

0

= 0, F

1

= 1 :

c

1

r

0

1

+ c

2

r

0

2

= 0, c

1

r

1

+ c

2

r

2

= 1

Stąd c

2

= −c

1

, c

1

= 1/(r

1

− r

2

) = 1

5/5 i

F

n

=

5

5

"

1 +

5

2

!

n

1

5

2

!

n

#

Własność 3.2

Ciąg Fibonacciego

1. F

n+1

F

n

1

− F

2

n

= (1)

n

, n

1.

Dowód: Niech c

n

, F

n+1

F

n

1

− F

2

n

. Dla n = 1, c

1

= 1. Dla n + 1,

wyrażenie ma postać:

c

n+1

= F

n+2

F

n

− F

2

n+1

= (F

n+1

+ F

n

)F

n

− F

2

n+1

=

= F

n+1

(F

n

− F

n+1

) + F

2

n

= (F

n+1

F

n

1

− F

2

n

) = −c

n

To jest kolejny wyraz tego ciągu jest negacją poprzedniego, a ponieważ
pierwszy wyraz wynosi 1, więc c

n

= (1)

n

.

2. F

n+1

oraz F

n

są liczbami względnie pierwszymi.

Dowód: Jeśli p|F

n

oraz p|F

n+1

, to p

|F

n+1

F

n

1

− F

2

n

= (1)

n

. Stąd p = 1

co dowodzi naszej tezy.

3. F

n

= F

m

F

n

−m+1

+ F

m

1

F

n

−m

dla n ≥ m ≥ 1.

Dowód: Zauważmy, że z tego, że F

0

= 0, równanie jest spełnione dla do-

wolnego m = n oraz dla m = 1, a w szczególności dla n = 2.
Pokażemy teraz prawdziwość równości dla n + 1 jeśli jest ona prawdziwa
dla n

≤ n. Mamy bowiem dla m ≥ 2 i m ≤ n :

F

n+1

= F

n

+ F

n

1

=

= (F

m

F

n

−m+1

+ F

m

1

F

n

−m

) + (F

m

1

F

(n

1)(m−1)+1

+ F

m

2

F

(n

1)(m−1)

) =

= F

m

F

n

−m+1

+ F

m

1

F

n

−m

+ F

m

1

F

n

−m+1

+ F

m

2

F

n

−m

=

= (F

m

+ F

m

1

)F

n

−m+1

+ (F

m

1

+ F

m

2

)F

n

−m

=

= F

m+1

F

(n+1)

(m+1)+1

+ F

m

F

(n+1)

(m+1)

Niech k = m + 1. Pokazaliśmy więc prawdziwość tej relacji dla n + 1 oraz
n + 1

≥ k ≥ 3 :

F

n+1

= F

k

F

(n+1)

−k+1

+ F

k

1

F

(n+1)

−k

67

background image

Dla k = 2 mamy:

F

2

F

n+1

2+1

+ F

1

F

n+1

2

= F

2

F

n

+ F

1

F

n

1

= F

n

+ F

n

1

= F

n+1

,

co uzupełnia dowód kroku indukcyjnego.

4. Jeśli m|n, m > 0, n ≥ 0, to F

m

|F

n

.

Dowód: Załóżmy, że n = mk. Jeśli k = 1, to m = n, F

m

|F

n

= F

m

. Jeśli

k = 2, to n

− m = 2m − m = m i z powyższej równości mamy:

F

n

= F

m

F

n

−m+1

+ F

m

1

F

n

−m

=

= F

m

F

n

−m+1

+ F

m

1

F

m

= F

m

(F

n

−m+1

+ F

m

1

)

Stąd dla k = 2, F

m

|F

n

.

W kroku indukcyjnym pokażemy, że twierdzenie jest prawdziwe dla n =
(k+1)m jeśli jest ono prawdziwe dla k. Mianowicie wtedy F

km

= fF

m

, f

N

i dlatego

F

n

= F

m

F

n

−m+1

+ F

m

1

F

n

−m

= F

m

F

n

−m+1

+ F

m

1

F

(k+1)m

−m

=

= F

m

F

n

−m+1

+ F

m

1

F

km

= F

m

(F

n

−m+1

+ F

m

1

f )

co dowodzi prawdziwości kroku indukcyjnego.

5. F

N W P (m,n)

|NW P (F

m

, F

n

).

Dowód: Z poprzedniego twierdzenia wiemy, że jeśli k|m i k|n, to F

k

|F

m

oraz F

k

|F

n

, a stąd F

k

|NW P (F

m

, F

n

). W szczególności jako k możemy

wziąć NW P (m, n). Stąd F

N W P (m,n)

|NW P (F

m

, F

n

).

• Inny zapis równania Fibonacciego:

∀n ≥ 0, F

n+2

− F

n+1

− F

n

= 0

• Liniowe równanie rekurencyjne rzędu k o stałych współczynnikach

d

0

, d

1

, . . . , d

k

R :

d

k

a

n+k

+ d

k

1

a

n+k

1

+ · · · + d

1

a

n+1

+ d

0

a

n

= v

n

(2)

• W przypadku równania Fibonacciego:

k = 2, d

2

= 1, d

1

= 1, d

0

= 1, ∀n ≥ 0, v

n

= 0

• Jeśli v

n

= 0 dla każdego n ≥ 0, to równanie to nazywa się jednorodnym

• Równanie charakterystyczne równania różnicowego (2):

d

k

r

k

+ d

k

1

r

k

1

+ · · · + d

1

r + d

0

= 0

(3)

68

background image

Twierdzenie 3.1

O rozwiązaniach jednorodnych liniowych równań rekurencyj-

nych
Niech r

1

, r

2

, . . . r

k

C będą wszystkimi pierwiastkami równania charaktery-

stycznego (3) (z ewentualnymi powtórzeniami dla tzw. pierwiastków wielokrot-
nych).

1. Jeśli wszystkie pierwiastki r

k

są jednokrotne, to rozwiązanie równania

jednorodnego ma postać:

a

n

= c

1

r

n

1

+ c

2

r

n

2

+ · · · + c

n

r

n

k

(4)

Współczynniki c

1

, . . . , c

k

wyznaczamy z k warunków początkowych.

2. Jeśli pierwiastek r

i

= ma krotność n

i

, to w powyższym rozwiązaniu (4)

j-te wystąpienie wyrażenia r

n

i

zastępujemy wyrażeniem n

j

1

r

n

i

, dla j =

1, . . . , n

i

:

a

n

=

X

i

n

i

X

j=1

c

i,j

n

j

1

r

n

i

(5)

Współczynniki c

i,j

wyznaczamy z k warunków początkowych.

Przykład 3.7

Pierwiastki jednokrotne

Szukamy rozwiązania równania rekurencyjnego:

a

n+2

= a

n+1

+ 2a

n

, n

0, a

0

= 2, a

1

= 1

Postać jednorodna:

a

n+2

− a

n+1

2a

n

= 0

Równanie charakterystyczne:

r

2

− r − 2 = 0

Pierwiastki równania: r

1

= 1, r

2

= 2. Ogólne rozwiązanie:

a

n

= c

1

(1)

n

+ c

2

2

n

Wyznaczenie współczynników c

1

, c

2

z warunków początkowych:

c

1

+ c

2

= 2, −c

1

+ 2c

2

= 1

Stąd c

1

= c

2

= 1 i rozwiązanie a

n

ma postać:

a

n

= (1)

n

+ 2

n

Przykład 3.8

Pierwiastki wielokrotne

Szukamy rozwiązania równania rekurencyjnego:

a

n+2

= 4a

n+1

4a

n

, n

0, a

0

= 1, a

1

= 4

69

background image

Postać jednorodna:

a

n+2

4a

n+1

+ 4a

n

= 0

Równanie charakterystyczne:

r

2

4r + 4 = 0

Pierwiastki równania: r

1

= r

2

= 2. Ogólne rozwiązanie:

a

n

= c

1

2

n

+ c

2

n2

n

= (c

1

+ c

2

n)2

n

Wyznaczenie współczynników c

1

, c

2

z warunków początkowych:

c

1

= 1, (c

1

+ c

2

)2 = 4

Stąd c

1

= c

2

= 1 i rozwiązanie a

n

ma postać:

a

n

= (n + 1)2

n

Zadania:
Znajdź rozwiązania następujących równań rekurencyjnych:

1. Równanie Fibonacciego z warunkami: a

0

= a

1

= 1

2. Równanie Fibonacciego z warunkami: a

0

= 1, a

1

= 3

3. a

n+2

= 2a

n+1

2a

n

, a

0

= a

1

= 2

4. a

n+2

− a

n+1

6a

n

, a

0

= 0, a

1

= 1

5. a

n+2

− a

n+1

6a

n

, a

0

= 2, a

1

= 1

6. a

n+2

= −a

n

, a

0

= a

1

= 2

7. a

n+3

4a

n+2

+ 5a

n+1

2a

n

= 0, a

0

= 4, a

1

= 7, a

2

= 17

Problemy:

1. Pokaż, że iloraz kolejnych wyrazów ciągu Finonacciego zbiega do złotej

średniej, t.j.:

lim

n

→∞

F

n+1

F

n

=

1 +

5

2

2. Niech a

n

będzie liczbą wszystkich słów długości n złożonych z cyfr 0, 1 nie

zawierających kolejnych dwóch jedynek 11. Pokaż, że:

a

0

= 1, a

1

= 2, a

3

= 5, a

n

= a

n

1

+ a

n

2

, dla n

3

3. Znajdź związek rekurencyjny dla ciągu

70

background image

(a) a

n

, ⌊n/2

(b) b

n

, ⌊n/3

(c) c

n

, a

n

+ b

n

Sprawdź przez indukcję słuszność zaproponowanych związków rekurencyj-
nych.

• Równania niejednorodne szczególnej postaci:

d

k

a

n+k

+ d

k

1

a

n+k

1

+ · · · + d

1

a

n+1

+ d

0

a

n

= r

n

v(n)

(6)

gdzie r ∈ R, oraz v jest wielomianem

• Obserwacja: jeśli b

n

jest rozwiązaniem szczególnym niejednorodnego linio-

wego równania rekurencyjnego, to dowolne rozwiązanie c

n

tego równania

jest postaci:

c

n

= b

n

+ a

n

, n

0,

gdzie a

n

jest rozwiązaniem równania jednorodnego o tych samych współ-

czynnikach.

Twierdzenie 3.2

O rozwiązaniach niejednorodnych liniowych równań rekuren-

cyjnych
Szczególne rozwiązanie niejednorodnego równania rekurencyjnego (6) o począt-
kowych wartościach a

0

, . . . , a

k

1

jest rozwiązaniem równania jednorodnego o

wielomianie charakterystycznym

p(x)(x

− r)

e+1

gdzie e jest stopniem wielomianu v, p(x) jest wielomianem charakterystycznym
równania oryginalnego:

p(x)

, d

k

x

k

+ d

k

1

x

k

1

+ · · · + d

1

x + d

0

a brakujące e + 1 współczynnik c

k+1

, . . . , c

k+e+1

szukamy z dodatkowych wa-

runków otrzymanych na elementy a

k

, a

k+1

, . . . , a

k+e

.

Przykład 3.9

Rekurencyjne równanie niejednorodne

Szukamy rozwiązań równania rekurencyjnego:

a

n+2

− a

n+1

2a

n

= 2, a

0

= 3, a

1

= 2

Wielomian charakterystyczny p(x) = x

2

− x− 2 = (x+ 1)(x− 2), a prawa strona

v(n) = 1

n

· 2. Stąd r = 1 oraz e = 0. Dlatego wielomian charakterystycznego

nowego równania jednorodnego ma postać:

p(x)(x

1)

0+1

= (x + 1)(x − 2)(x − 1)

z dodatkowym warunkiem początkowym: a

2

= a

1

+ 2a

0

+ 2 = 6.

71

background image

Rozwiązanie ogólne równania rekurencyjnego o wielomianie charakterystycznym
(x + 1)(x − 2)(x − 1) ma postać:

a

n

= c

1

(1)

n

+ c

2

2

n

+ c

3

1

n

Podstawienie do warunków początkowych otrzymujemy c

1

= 3, c

2

= 1, c

3

= 1

i szczególne rozwiązanie naszego równania ma postać:

a

n

= 3(1)

n

+ 2

n

1

Zadania:
Znajdź rozwiązania następujących równań rekurencyjnych:

1. a

n+2

= 3a

n+1

2a

n

+ 2 · 3

n

, a

0

= 1, a

1

= 2

2. a

n+3

6a

n+2

+ 11a

n+1

6a

n

= 12n3

n

, a

0

= 2, a

1

= 25, a

2

= 140

3. a

n+2

5a

n+1

+ 6a

n

= 4n

2

2n − 3, a

0

= 6, a

1

= 14

3.6

Zliczanie obiektów kombinatorycznych

1. Współczynniki dwumienne

2. Własności liczbowe zbiorów i funkcji

3. Zasada włączania i wyłączania

4. Podziały

5. Zbiory z powtórzeniami

6. Zliczanie drzew binarnych

3.6.1

Współczynniki dwumienne

• Współczynnik dwumienny

a
k

jest współczynnikiem przy potędze x

k

w

rozwinięciu w szereg Taylora funkcji (1 + x)

a

, k

∈ {0} ∪ N, a ∈ R :

(1 + x)

a

=

X

k=0

a

k

x

k

• Wzór na współczynnik szeregu Taylora:

f (x) =

X

k=0

c

k

x

k

→ c

k

=

f

(k)

(0)

k!

72

background image

• Wzór na k-tą pochodną funkcji (1 + x)

a

:

d

k

(1 + x)

a

d

k

x

= a(a − 1) . . . (a − k + 1)(1 + x)

a

−k

• Wzór na współczynnik dwumienny:

a

k

=

d

k

(1 + x)

a

d

k

x

x=0

/k! =

a(a

1) . . . (a − k + 1)

k!

• Związek z liczbą kombinacji k-elementowych ze zbioru n-elementowego:

c

k,n

=

n

k

Dowód:

Jeśli ponumerujemy elementy uniwersum U =

{u

1

, . . . , u

n

}, to każdy podzbiór Z ⊂ U możemy

reprezentować przez ciąg binarny b

1

, . . . , b

n

:

b

i

,

n

1

gdy u

i

∈ Z,

0

gdy u

i

6∈ Z

oraz przez jednomian q

Z

(x) :

q

Z

(x)

,

n

Y

i

=1

x

b

i

, x

b

1

. . . x

b

n

= x

b

1

+···+b

n

= x

|Z|

Zauważmy, że: q

(x) = 1, q

U

(x) = x

n

, q

Z

(x) = x

k

wtt

|Z| = k. Widzimy, że istnieje dokładnie

c

k,n

podzbiorów reprezentowanych przez jednomian x

k

. Rozważmy wielomian p(x) będący sumą

jednomianów reprezentujących wszystkie podzbiory U :

p(x)

,

X

Z

2

U

q

Z

(x) =

n

X

k

=0

X

Z,

|Z|=k

x

k

=

n

X

k

=0

c

k,n

x

k

Z drugiej strony:

p(x) =

X

Z

2

U

n

Y

i

=1

x

b

i

=

1

X

b

1

=0

· · ·

1

X

b

n

1

=0

[x

b

1

. . . x

b

n

1

]

1

X

b

n

=0

x

b

n

=

1

X

b

1

=0

· · ·

1

X

b

n

1

=0

[x

b

1

. . . x

b

n

1

](1 + x)

=

1

X

b

1

=0

· · ·

1

X

b

n

2

=0

[x

b

1

. . . x

b

n

2

](1 + x)

2

.

.

.

=

1

X

b

1

=0

x

b

1

(1 + x)

n

1

= (1 + x)

n

73

background image

Z jednoznaczności reprezentacji funkcji wielomianowych mamy więc

c

k,n

=

n
k

.

Własność 3.3

Dwumian

• Związek rekurencyjny (trójkąt Pascala):

n

k

=

n − 1

k

1

+

n − 1

k

• Własność przekątnej trójkąta Pascala:

n + 1

k

=

n

k

+

n

k

1

=

n

k

+

n − 1

k

1

+

n − 1

k

2

..

.

=

n

k

+

n − 1

k

1

+

n − 2

k

2

+ · · · +

n − k

0

=

k

X

j=0

n − j

k

− j

Zadania: Uzasadnij bez indukcji matematycznej:

1.

P

n
k
=0

n
k

= 2

n

2.

P

n
k
=0

(1)

k n

k

= 0

3.

P

n
k
=0

n

2k

= 2

n

1

4.

P

n
k
=0

n

2k+1

= 2

n

1

5.

P

n
k
=0

k

n
k

= n2

n

1

6.

P

n
k
=0

2

k n

k

= 3

n

7. (x + y)

n

=

P

n
k
=0

n
k

x

k

y

n

−k

74

background image

3.6.2

Własności liczbowe zbiorów i funkcji

• Dla dowolnych zbiorów skończonych A, B, A

i

⊂ U, i = 1, . . . , n :

|A ∪ B| = |A| + |B| − |A ∩ B|

A

∩ B = ∅ → |A ∪ B| = |A| + |B|

|U − A| = |U| − |A|

|A × B| = |A||B|

|A

1

× · · · × A

n

| = |A

1

| · · · · · |A

n

|

|2

U

| = 2

|U|

c

k,n

=

n

k

• Oznaczmy zbiór wszystkich funkcji postaci f : X

→ Y przez Y

X

, wtedy:

Y

X

= |Y |

|X|

• Liczba funkcji różnowartościowych w X

X

(permutacji zbioru X) wynosi

|X|!

• Liczba funkcji różnowartościowych w Y

X

, gdy

|Y | = |X| wynosi |X|!

• Liczba funkcji różnowartościowych w Y

X

(iniekcji zbioru X w zbiór Y ),

|Y | ≥ |X|, wynosi:

|Y | · (|Y | − 1) . . . (|Y | − |X| + 1)

3.6.3

Zasada włączania i wyłączania

• Zasada włączania i wyłączania – przypadek dwóch zbiorów:

|A

1

∪ A

2

| = |A

1

| + |A

2

| − |A

1

∩ A

2

|

• Zasada włączania i wyłączania – przypadek trzech zbiorów:

|A

1

∪A

2

∪A

3

| = |A

1

|+|A

2

|+|A

3

|−|A

1

∩A

2

|−|A

1

∩A

3

|−|A

2

∩A

3

|+|A

1

∩A

2

∩A

3

|

• Zasada włączania i wyłączania – przypadek ogólny:

niech I = {1, . . . , n} będzie zbiorem indeksów, wtedy

|

n

[

i=1

A

i

| =

X

∅6=J⊂I

(1)

|J|+1

\

i

∈J

A

i

75

background image

Dowód kroku indukcyjnego:

|A

1

∪ · · · ∪ A

n

∪ A

n+1

| = |A

1

∪ · · · ∪ A

n

| + |A

n+1

| − |(A

1

∩ A

n+1

) ∪ · · · ∪ (A

n

∩ A

n+1

)|

=

X

∅6=J⊂I

(1)

|J|+1

\

i

∈J

A

i

+ |A

n+1

| +

X

∅6=J⊂I

(1)

|J|+2

A

n+1

\

i

∈J

A

i

=

X

∅6=J⊂(I∩{n+1}

(1)

|J|+1

\

i

∈J

A

i

• Zastosowanie: Liczba S(k, n) równa liczbie wszystkich funkcji typu ”na”

Y

X

, (suriekcji zbioru X na zbiór Y )

|X| = k ≥ n = |Y | wynosi:

S(k, n) =

1

n!

n

X

j=0

(1)

j

n

j

(n − j)

k

Dowód

formuły S(k, n)

Niech

∅ 6= Z ( Y. Oznaczmy przez A

Z

⊂ Y

X

zbiór tych funkcji, które nie przyjmują wartości

w zbiorze Z, t.j. A

Z

, (Y − Z)

X

. Liczność zbioru A

Z

wynosi więc (n

− |Z|)

k

Poszukiwany zbiór B, funkcji postaci f : X

na

→ Y otrzymujemy przez odjęcie od zbioru Y

X

sumy

zbiorów A

{y}

dla wszystkich y

∈ Y ;

B = Y

X

X

y

∈Y

A

{y}

Dlatego

|B| = n

k

X

y

∈Y

A

{y}

Zauważmy, że j-elementowe przecięcie zbiorów typu A

{y

ip

}

, p = 1, . . . , j daje zbiór postaci A

Z

gdzie Z =

{y

i

1

, . . . , y

i

j

} jest dowolną kombinacją j-elementową zbioru Y.

Stosujemy zasadę włączania i wyłączania:

X

y

∈Y

A

{y}

=

X

∅6=Z⊂Y

(

1)

|Z|+1

\

y

∈Z

A

{y}

=

X

∅6=Z⊂Y

(

1)

|Z|+1

|A

Z

|

=

n

1

X

j

=1

X

Z

⊂Y,|Z|=j

(

1)

j

+1

(n

− j)

k

n

1

X

j

=1

(

1)

j

+1

n

j

(n

− j)

k

Ostatecznie

|B| = n

k

n

1

X

j

=1

(

1)

j

+1

n

j

(n

− j)

k

=

n

X

j

=0

(

1)

j

n

j

(n

− j)

k

76

background image

3.6.4

Podziały

• Podział zbioru U na n podzbiorów jest dowolnym zestawem zbiorów Z

1

, . . . , Z

n

U takim, że:

U =

n

X

i=1

Z

i

, Z

i

∩ Z

j

= ∅, i 6= j

• Liczba P (k, n) wszystkich podziałów zbioru k-elementowego U na n roz-

łącznych podzbiorów wynosi:

P (k, n) =

1

n!

n

X

j=0

(1)

j

n

j

(n − j)

k

Dowód

Formuły P (k, n)

Niech I będzie zbiorem indeksów 1, . . . , n. Dowolny podział na n podzbiorów określony przez

funkcję f : U

→ I : zbioru U na zbiór I :

f (u) = i wtt u

∈ Z

i

Dowolna zmiana numeracji, t.j. permutacja g zbioru I zmienia funkcję f, ale nie zmienia po-
działu:

f (u) = g(i) wtt u

∈ Z

i

W takim razie jednemu podziałowi 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 powtórzeniami

• Przykład: [a, a, a, b, b] jest podzbiorem z powtórzeniami, np. dla uniwersum

U =

{a, b, c}

• Koncepcja zbioru z powtórzeniami (wielozbioru) pasuje do koncepcji ko-

lekcji danych, gdzie instancje tej samej danej mogą się powtarzać

• Matematycznie wielozbiór W możemy reprezentować przez funkcję f

W

:

U

N ∪ {0}

• Przykład: wielozbiór W = [a, a, a, b, b] reprezentowany jest przez funkcję

f

W

(a) = 3, f

W

(b) = 2, f

W

(c) = 0.

• Mówimy, że wielozbiór W jest k elementowy gdy:

X

u

∈U

f

W

(u) = k

77

background image

• Niech s(k, n) będzie liczbą różnych k-elementowych wielozbiorów określo-

nych w zbiorze n-elementowym. Wtedy:

s(k, n + 1) = s(k, n) + s(k

1, n) + · · · + s(1, n) + s(0, n)

Dowód: Ten rekurencyjny związek wynika z faktu, że element n + 1 albo
nie wystepuje w wielozbiorze i mamy wtedy s(k, n) takich wielozbiorów w
zbiorze n-elementowym, albo występuje z krotnością j > i wtedy krotność
k

− j daje s(k − j, n) wielozbiorów.

s(k, n) spełnia prostszą relację rekurencyjną:

s(k, n + 1) = s(k

1, n + 1) + s(k, n)

• Wniosek: Tablica wartości s(k, n) jest obróconą tablicą wartości

n
k

, a

dokładniej:

s(k, n) =

n + k − 1

k

3.6.6

Zliczanie drzew binarnych

• Rekurencyjny schemat definicji zbioru drzew

T : Niech s symbolizuje do-

wolną zawartość węzła 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 węźle

2. krok indukcyjny:

T

1

, T

2

∈ T → T , (T

1

, s, T

2

) ∈ T

Drzewo T

1

nazywamy lewym poddrzewem drzewa T, a T

2

jego pra-

wym poddrzewem. Mówimy, że zawartość s znajduje się w korzeniu
drzewa T. Jeśli T

1

6= E, to mówimy, że korzeń T

1

jest lewym synem

korzenia drzewa T. Jeśli natomiast T

2

6= E, to korzeń T

2

jest prawym

synem korzenia drzewa T.

• Formalnie drzewo T

∈ T jest napisem nad alfabetem {s, E, (, )} popraw-

nie zdefiniowanym według powyższego schematu o liczbie węzłów równej
liczbie wystąpień symbolu s

• W praktyce programowania w konstrukcji (T

1

, s, T

2

), s jest zastępowane

często złożoną strukturą danych, a T

i

referencją na być może puste pod-

drzewo

• Mówimy, że dwa drzewa są różne jeśli T

1

6= T

2

w sensie napisów, które je

reprezentują

78

background image

• Poziom zagnieżdżenia węzła minus jeden określa głębokość tego węzła.

Maksymalna głębokość określa wysokość drzewa.

• Przykłady drzew:

Napis ((E, s, E), s, (E, s, E)) reprezentuje drzewo o trzech węzłach.
Drzewo to ma dwa poddrzewa, każde po jednym węźle.Wysokość tego
drzewa wynosi 1.

Napis ((((E, s, E), s, E), s, E), s, E) reprezentuje drzewo o czterech
węzłach. Drzewo to ma jedno poddrzewo niepuste, które z kolei też
ma tylko lewe poddrzewo niepuste o dwóch węzłach. Wysokość tego
drzewa wynosi trzy.

• Niech

T

n

oznacza zbiór wszystkich drzew binarnych o n węzłach, a t(n) ,

|T

n

|

• Własności:

1. t(0) = 1 – bo E ∈ T
2. t(1) = 1 – bo (E, s, E) ∈ T
3. Jeśli T ∈ T

n

, T = (T

1

, s, T

2

) oraz T

1

∈ T

k

, 0

≤ k ≤ (n − 1), to

T

2

∈ T

n

−k−1

4. Rekurencyjny związek 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) :

t(n) =

1

n + 1

2n

n

, n

N ∪ {0}

(7)

Dowód

Wyprowadzenie wzoru (7)

• Definiujemy funkcję tworzącą;

F (x)

,

X

n

=0

f (n)x

n

• Obliczamy wyrażenie xF

2

(x) :

xF

2

(x) = x

X

i

=0

f (i)x

i

X

j

=0

f (j)x

j

= x

X

k

=0

X

i

+j=k

f (i)f (j)

!

x

k

= x

X

k

=0

f (k + 1)x

k

=

X

k

=0

f (k + 1)x

k

+1

= F (x)

− f (0) = F (x) 1

79

background image

• Rozwiązujemy równanie kwadratowe xF

2

(x)

− F (x) + 1 = 0 względem F (x) :

F (x) =

1

±

1

4x

2x

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

1

4x :

G(x) =

X

n

=0

1/2

n

(

4x)

n

=

X

n

=0

1/2

n

(

4)

n

x

n

• Zmieniamy postać n-tego współczynnika rozwinięcia Taylora:

1/2

n

(

4)

n

=

1
2

·

1

2

·

3

2

· · · · ·

(2n−3)

2

(

4)

n

n!

=

1

· 1 · 3 · · · · · (2n − 3)2

−n

4

n

n!

=

1

· 3 · · · · · (2n − 3)2

n

(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)!

=

(2n

2)!

(n

1)!(n − 1)!

2

n

=

2

n

2n

2

n

1

• Wyliczamy szereg Taylora dla (1

− G(x))/2x :

F (x) =

X

n

=1

1

n

2n

2

n

1

x

n

1

=

X

n

=0

1

n + 1

2n

n

x

n

• Wniosek: f (n) =

1

n

+1

2n

n

4

Kongruencje

• Podzielność liczb całkowitych

• Algebra reszt

• Szyfrowanie

80

background image

4.1

Podzielność liczb całkowitych

• Pojęcie ilorazu i reszty z dzielenia liczb całkowitych

Jeśli a, b ∈ Z, 6= 0, to iloraz całkowity q ∈ Z liczby a przez liczbę b oraz

reszta r ∈ Z z dzielenia a przez b spełniają następujący związki:

a = qb + r, 0

≤ r ≤ |b| − 1

(8)

• Przykłady:

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 dokładnie jedna para liczb całkowi-

tych (q, r) spełniająca związki (8)

• Dowód jednoznaczności ilorazu i reszty:

Jeśli a = q

1

b + r

1

= q

2

b + r

2

, 0

≤ r

1

, r

2

≤ |b| − 1, to

|q

1

− q

2

| · |b| = |r

1

− r

2

| < |b|

Stąd |q

1

− q

2

| < 1, a dla liczb całkowitych jest to możliwe gdy q

1

= q

2

= q.

W efekcie r

1

= a − qb = r

2

.

• Dowód 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

Możliwe 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

background image

• Dowód istnienia ilorazu i reszty dla a < 0 (przez negację):

Budujemy iloraz q

i resztę r

z ilorazu q i reszty r dla −a > 0. Jeśli r = 0,

to q

= −q, r

= 0, bo:

a =

(−a) = (qb + r) = (−q)b + 0

Jeśli 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)

• Związek ilorazu całkowitego z ilorazem rzeczywistym

Dolna część całkowita liczby rzeczywistej ⌊x⌋ :

⌊x⌋ = max{k ∈ Z : k ≤ x}

Górna część całkowita liczby rzeczywistej ⌈x⌉ :

⌈x⌉ = min{k ∈ Z : k ≥ x}

Podstawowe własności ⌊x⌋ i ⌈x⌉, x ∈ R :

⌊x⌋ ≤ x < ⌊x⌋ + 1

∀n ∈ N,

⌊x⌋

n

=

j x

n

k

⌈−x⌉ = −⌊x⌋

Jeśli b > 0, to iloraz całkowity otrzymujemy jako dolną część całko-
witą ilorazu rzeczywistego:

a

÷ b =

j a

b

k

Mianowicie:

j a

b

k

a

b

<

j a

b

k

+ 1

j a

b

k

· b ≤ a <

j a

b

k

· b + b

0 ≤ a −

j a

b

k

· b < b

Biorąc więc q = ⌊a/b⌋, r = a − qb otrzymujemy własność definicyjną

dla ilorazu i reszty z dzielenia całkowitego a przez b :

a = qb + r, 0

≤ r ≤ b − 1

82

background image

Jeśli b < 0, to iloraz całkowity otrzymujemy jako górną część całko-
witą ilorazu rzeczywistego:

a

÷ b =

l a

b

m

Mianowicie:

−a

b

−a

b

<

−a

b

+ 1

−a

b

· (−b) ≤ a <

−a

b

· (−b) + |b|

l a

b

m

· b ≤ a <

l a

b

m

· b + |b|

0 ≤ a −

l a

b

m

· b < |b|

Biorąc więc q = ⌈a/b⌉, r = a − qb otrzymujemy własność definicyjną

dla ilorazu i reszty z dzielenia całkowitego 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ź własność ∀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 własność: ∀n ∈ N, ∀x ∈ R, ⌊⌊x⌋/n⌋ = ⌊x/n⌋

83

background image

4.1.1

Kombinacje liniowe dwóch liczb całkowitych

• Kombinacja liniowa liczb a, b

Z o współczynnikach x, y ∈ Z to wyrażenie

postaci:

x

· a + y · b

• Zbiór 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 zbiór negacji wszystkich elementów Z

• Największy wspólny podzielnik N W P (a, b) określamy następująco:

N W P (a, b)

, max{c ∈ Z : c|a, c|b}

• Najmniejszą wspólną wielokrotność N W W (a, b) określamy następująco:

N W W (a, b)

, min{c ∈ N : a|c, b|c}

• Definicja funkcji NWP jest poprawna o ile

|a| + |b| > 0

• Największy wspólny podzielnik jest zawsze dodatni

• Największy wspólny podzielnik nie zmienia sie przy zmianie znaku:

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

−a, b) = NW P (a, −b)

= NW P (−a, −b) = NW P (|a|, |b|)

Twierdzenie 4.1

O liniowej reprezentacji funkcji NWP

Niech dla a, b ∈ Z, |a| + |b| > 0, m

a,b

oznacza najmniejszy element zbioru

L

+

(a, b). Wtedy:

1. m

a,b

dzieli każdy element L

+

(a, b)

2. m

a,b

dzieli każdy element L

(a, b)

3. m

a,b

dzieli każdy element L(a, b)

4. m

a,b

dzieli zarówno a jak i b

84

background image

5. Jeśli c dzieli a i b, to dzieli każdy element zbioru L(a, b)

6. Jeśli c dzieli a i b, to dzieli m

a,b

7. m

a,b

jest największym wspólnym podzielnikiem a i b

8. Największy wspólny 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

Dowód:

W kolejności faktów do pokazania mamy:

1. Niech m

a,b

= x

0

a+y

0

b. Wtedy gdyby dla pewnego xa+yb

∈ L

+

(a, b) reszta r z dzielenia

xa + yb przez m

a,b

była większa od zera, to

r = xa + yb

− qm

a,b

, r = (x

− qx

0

)a + (y

− qy

0

)b

Znaleźliśmy więc r mniejsze od m

a,b

i należące do

L

+

, co przeczy wyborowi m

a,b

.

2. Bo dla xa + yb

∈ L

(a, b), to m

a,b

|(−x)a + (−y)b ∈ L

+

(a, b). W takim razie m

a,b

|xa +

yb

∈ L

(a, b)

3. m

a,b

dzieli zero, a więc z powyższych dwóch punktów dzieli każdy 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 m

a,b

5. Wspólny podzielnik a i b dzieli również każdą kombinację liczb a i b, a więc każdy element

zbioru

L(a, b)

6. Ponieważ m

a,b

jest elementem

L(a, b), to z poprzedniego punktu musi dzielić się przez

każdy wspólny podzielnik a i b

7. m

a,b

jako wielokrotność każdego wspólnego podzielnika liczb a oraz b, będąc jednocześnie

wspólnym podzielnikiem a i b (punkt 4) musi być największym wspólnym podzielnikiem
a i b

8. Skoro m

a,b

= N W P (a, b) i m

a,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, r

0

, a, r

1

, b. Wtedy

1. NW P (a, b) = NW P (b, mod

b

(a))

2. Dla i > 0, gdy r

i

> 0 algorytm Euklidesa definiuje kolejne wyrazu ciągu

r

i+1

, mod

r

i

(r

i

1

). Gdy r

i

= 0, element r

i+1

nie jest określony. Ciąg ten

ma następujące własności:

(a) NW P (r

0

, r

1

) = NW P (a, b)

85

background image

(b) r

i+1

< r

i

dla i > 0

(c) NW P (r

i

, r

i+1

) = NW P (r

i

1

, r

i

) dla i > 0

(d) NW P (r

i

, r

i+1

) = NW P (a, b)

(e) Jeśli r

i+1

= 0, to r

i

= NW P (a, b)

(f) Dla pewnego i ≤ b + 1 : r

i

= 0

Zadanie:
Sprawdź na przykładach, że następująca 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 NW P (a, b) gdy:

(a) a = 81, b = 27

(b) a = 81, b = 27

(c) a = 81, b = 27

2. Wyznacz ślad wywołania 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 NW P (a, b) = NW 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 również a, b ∈ Z, b > 0, r

0

, a, r

1

, b i dodatkowo x

0

= 1, y

0

= 0, x

1

=

0, y

1

= 1. Wtedy

86

background image

1. Dla i > 0, gdy r

i

> 0 rozszerzony algorytm Euklidesa definiuje kolejne

wyrazu ciągu r

i+1

, mod

r

i

(r

i

1

) i dodatkowo współczynniki kombinacji

liniowej x

i+1

, y

i+1

:

q

i

1

, r

i

1

÷ r

i

, x

i+1

, x

i

1

− q

i

1

x

i

, y

i+1

, y

i

1

− q

i

1

y

i

Gdy r

i

= 0, elementy r

i+1

, x

i+1

, y

i+1

nie są określone. Ciągi r

i

, x

i

, y

i

gene-

rowane przez rozszerzony algorytm Euklidesa mają następujące własności:

(a) r

0

= x

0

a + y

0

b, r

1

= x

1

a + y

1

b

(b) Jeśli dla i > 0, r

i

> 0, r

i

1

= x

i

1

a + y

i

1

b oraz r

i

= x

i

a + y

i

b, to

r

i+1

= x

i+1

a + y

i+1

b

(c) Jeśli r

i+1

= 0, to NW P (a, b) = r

i

= x

i

a + y

i

b

Zadanie: Sprawdź na przykładach, że następująca funkcja nwpxy poprawnie
realizuje w języku C rozszerzony algorytm Euklidesa, tj. po wywołaniu z =
nwpxy(u,v,&x,&y)

mamy: z = NW 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 NW P (a, b) = xa + yb gdy:

(a) a = 81, b = 27

(b) a = 81, b = 27

(c) a = 81, b = 27

2. Wyznacz ślad wywołania funkcji nwpxy(a,b) gdy

(a) a = 1024, b = 10024

(b) a = 10024, b = 1024

Problem:
Udowodnij twierdzenie 4.3.

87

background image

4.1.4

Przykład – rozlewanie płynów

Problem odmierzania płynu
Z rezerwuaru R o bardzo dużej pojemności należy odmierzyć c jednostek płynu
dysponując miarką A o pojemności a jednostek oraz miarką B o pojemności b.
W przypadku

gdy c

max(a, b) – c jednostek płynu ma znaleźć się w jednym z naczyń

A lub B

gdy c > max(a, b) – c jednostek płynu ma znaleźć się w dodatkowym na-

czyniu C o nieznanej pojemności większej lub równej c

Zakładamy, że a, b, c są liczbami naturalnymi. Dopuszczalna operacja w jednym
kroku procesu rozlewania płynów polega albo na wypełnieniu do pełna lub na
całkowitym opróżnieniu jednej z miarek A lub B.

Rozlewanie płynów – przypadki specjalne

• Niech X

Y oznacza przelanie płynu z X do Y

• Przypadek a

|c lub b|c jest trywialny

• Przypadek c > a oraz c > b rozwiązujemy następująco:

1. niech k ← c ÷ a
2. wykonaj k razy: RA, AC
3. pozostałe r = c − k · a < a jednostek uzyskaj stosując rozwiązanie

opisane poniżej dla przypadku c < a. W rozwiązaniu tym c jedno-
stek trafia na końcu do naczynia A. W tym przypadku c = r i tyle
jednostek przelewamy do naczynia C.

Rozlewanie płynów – kombinacje liniowe
Zakładamy teraz, że c < a, nie ma naczynia C, a c jednostek znajdzie się na
końcu w miarce A.

Twierdzenie 4.4

O stanach miarek A i B

Po każdym kroku XY w miarce A (B) znajduje się liczba jednostek x

A

a + y

A

b

(x

B

a + y

B

b dla B) płynu gdzie x

A

, y

A

, x

B

, y

B

Z. ⊳

Dowód

Dowód prowadzimy przez indukcję

Na początku miarki są puste więc x

A

=

y

A

= x

B

= y

B

= 0.

1. Dla kroku R

A (RB) mamy x

A

= 1, y

A

= 0 (x

B

= 0, y

B

= 1), bo czerpiąc z

rezerwuaru R dolewamy do A (B) płyn do pełna

2. Dla kroku A

R (BR) mamy x

A

= 0, y

A

= 0 (x

B

= 0, y

B

= 0), bo wylewając

zawartość A (B) do rezerwuaru R opróżniamy całkowicie miarkę

3. Dla kroku A

B mamy zmianę współczynników zależną od bieżącej zawartości obu mia-

rek:

(a) x

A

a + y

A

b

≥ b − (x

B

a + y

B

b) :

x


A

= x

A

+ x

B

, y


A

= y

A

+ y

B

1, x


B

= 0, y


B

= 1

88

background image

(b) x

A

a + y

A

b < b

(x

B

a + y

B

b) :

x


A

= 0, y


A

= 0, x


B

= x

A

+ x

B

, y


B

= y

A

+ y

B

4. Dla kroku B

A mamy warunki i wzory symetryczne:

(a) x

B

a + y

B

b

≥ a − (x

A

a + y

A

b) :

x


B

= x

A

+ x

B

1, y


B

= y

A

+ y

B

, x


A

= 0, y


A

= 1

(b) x

B

a + y

B

b < a

(x

A

a + y

A

b) :

x


B

= 0, y


B

= 0, x


A

= x

A

+ x

B

, y


A

= y

A

+ y

B

Powyższe kroki wyczerpują wszystkie możliwości kroku indukcyjnego, w którym pokazaliśmy,

że jeśli stan płynów w miarkach przed danym krokiem jest kombinacją liniową xa + yb, to po

jej wykonaniu stan ich też jest postaci x

a + y

b.

Wniosek: Na końcu procesu rozlewania musimy mieć c = xa + yb, z własności
zbioru L

+

(a, b) mamy NW P (a, b)|c. To jest warunkiem koniecznym na istnie-

nie rozwiązania problemu dla przypadku c < a i symetrycznie dla c < b jest:
N W P (a, b)

|c.

Rozlewanie płynów – konstrukcja rozwiązania dla

c < a

Warunek NW P (a, b)|c jest też warunkiem dostatecznym dla przypadku c < a

(symetrycznie również dla c < b), potrafimy bowiem skonstruować rozwiązanie
następująco biorąc 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: R

A; AB;

Krok 1.2: Wykonaj

Krok 1.2.1: jeśli miarka B jest pełna, to

B

R; k ← k + 1;

jeśli

k =

−y, to zakończ (wynik w A)

Krok 1.2.2: jeśli miarka A jest pusta, to

wyjdź z pętli 1.2 (do kroku 1.1);

w przeciwnym razie

A

B i kontynuuj pętlę 1.2

Powyższy algorytm korzysta ze specjalnej kombinacji c = xa + yb, w której x
jest dodatnie, a y ujemne.
Lemat 4.1

Jeśli a, b, c ∈ N oraz NW P (a, b)|c, to istnieje reprezentacja c = xa + yb, dla

której x, −y ∈ N. ⊳

Dowód:

Z własności zbioru

L

+

(a, b) wiemy, że c = xa + yb, dla pewnych x, y

Z. Musimy

pokazać, że możemy zawsze dobrać dodatnie x w takiej reprezentacji. Zauważmy, że dwie różne

reprezentacje c = x

1

a + y

1

b = x

2

a + y

2

b spełniają następujący warunek:

(x

1

− x

2

)a = (y

2

− y

1

)b

Na przykład dla współczynników (x

1

, y

1

) nowe współczynniki (x

2

, y

2

) zdefiniowane wzorami

x

2

= x

1

+ b/N W P (a, b), y

2

= y

1

− a/NW P (a, b)

89

background image

spełniają powyższy warunek. Zauważmy, że w nowej parze współczynnik x się zwiększył, a

współczynnik y zmniejszył. Gdyby w reprezentacji c = xa + yb współczynnik x był ujemny,

to stosując powyższe przejścia z (x

1

, y

1

) na (x

2

, y

2

) co najmniej

(−x) · NW P (a, b)/b⌉ razy

otrzymamy x dodatnie, a y ujemne.

Ćwiczenia:

1. Znajdź x, y ∈ Z takie, że x ≥ 0, −y ≥ 0, NW P (a, b) = xa + yb gdy:

(a) a = 1024, b = 10024

(b) a = 10024, b = 1024

2. Uzyskaj 32 litry stosując tylko menzurki A i B odpowiednio o pojemno-

ściach 64 i 48 litrów.

3. Uzyskaj 96 litrów w naczyniu C o pojemności 1000 litrów stosując men-

zurki A i B odpowiednio o pojemnościach 64 i 48 litrów.

Zadania:

1. Uzyskaj 36 litrów stosując tylko menzurki o pojemności 64 i 48 litrów.

2. Uzyskaj 108 litrów w naczyniu C o pojemności 1000 litrów stosując men-

zurki A i B o pojemności 64 i 48 litrów.

4.1.5

Liczby pierwsze – wprowadzenie

• Definicja: Liczby a, b

Z są względnie pierwsze wtt NW P (a, b) = 1

• Przykłady liczb względnie pierwszych: N W P (4, 15) = 1, N W P (3, 7) =

1, NW P (121, 120) = 1

• Lemat: Jeśli liczby a

1

. . . . , a

n

Z są pierwsze względem b ∈ Z, liczba

a

, a

1

· · · · · a

n

jest pierwsza względem b.

Dowód:

Ponieważ N W P (a

i

, b) = 1, to istnieje kombinacja x

i

a

i

+ y

i

b = 1. Stąd:

1 =

n

Y

i

=1

[x

i

a

i

+ y

i

b] =

n

Y

i

=1

x

i

a

i

+ yb =

n

Y

i

=1

x

i

n

Y

i

=1

a

i

+ yb = xa + yb

gdzie x = x

1

· · · · · x

n

, a y = (1

− xa)/b. Dlatego NW P (a, b) = 1.

• Niech d(n) będzie liczbą dodatnich dzielników liczby n

Z

• Obserwacje:

d(1) = 1, d(

1) = 1

Jeśli n ∈ Z, |n| 6= 1, to d(n) 2

90

background image

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

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

• Lemat: Jeśli p jest liczbą pierwszą, to dla dowolnej liczby n

Z albo p, n

są względnie pierwsze lub p dzieli n.
Dowód:

Podzielniki p to 1 oraz p, a więc N W P (p, n) = 1 lub N W P (p, n) = p. W

pierwszym przypadku p, n są względnie pierwsze, a w drugim p

|n.

• Lemat: Jeśli p jest liczbą pierwszą i p

|ab, dla pewnych a, b ∈ Z, to albo

p

|a lub p|b.

Dowód

przez zaprzeczenie

Gdyby p

6 |a oraz p 6 |b, to a, b są pierwsze względem

p. Z lematu powyżej wiemy, że wtedy p i ab są względnie pierwsze, a to przeczy p

|ab.

• Wniosek: Jeśli p jest liczbą pierwszą i p

|a

1

· · · · · a

n

, to dla pewnego i, p

|a

i

.

• Wniosek: Jeśli p, q

1

, . . . , q

n

są liczbami pierwszymi i p|q

1

· · · · · q

n

, to dla

pewnego i, p = q

i

.

Ćwiczenia:

1. Wybierz wszystkie pary liczb względnie pierwszych występujące w prze-

dziale [4, 24] N

2. Sprawdź, że najmniejsza liczba pierwsza p < n, która dzieli n jest nie

większa niż

n

⌋, gdy n = 63, 255, 333.

Zadania:

1. Udowodnij wniosek: Jeśli p jest liczbą pierwszą i p|a

1

· · · · · a

n

, to dla

pewnego i, p|a

i

2. Udowodnij wniosek: Jeśli p, q

1

, . . . , q

n

są liczbami pierwszymi i p|q

1

·· · ··q

n

,

to dla pewnego i, p = q

i

.

4.1.6

Faktoryzacja na liczby pierwsze

Twierdzenie 4.5

O rozkładzie na czynniki pierwsze Dla dowolnej liczby na-

turalnej n ≥ 2 istnieje dokładnie jeden rozkład na czynniki pierwsze, t.j. istnieje

jedyne r i istnieje jedyny zestaw liczb pierwszych p

1

≤ · · · ≤ p

r

taki, że

n = p

1

· · · · · p

r

Dowód

przez indukcję

Jeśli n jest liczbą pierwszą, to r = 1, p

1

= n. Jeśli dla m < n

twierdzenie jest prawdziwe i n nie jest liczbą pierwszą, to istnieją liczby a < n, b < n takie, że

n = ab. Z założenia indukcyjnego mamy

a = p

1

· · · · · p

r

1

, b = q

1

· · · · · q

r

2

, p

1

≤ · · · ≤ p

r

1

, q

1

≤ · · · ≤ q

r

2

91

background image

Łączymy i sortujemy oba ciągi liczb pierwszych otrzymując ciąg p


1

≤ · · · ≤ p


r

, r = r

1

+ r

2

:

n = ab = p


1

· · · · · p


r

Mamy więc prawdziwość wniosku indukcyjnego dla n.

Przypuśćmy teraz, że mamy dwa rozkłady na czynniki pierwsze:

n = p

1

· · · · · p

r

1

= q

1

· · · · · q

r

2

Wtedy p

1

= q

i

dla pewnego i, bo p

1

|q

1

. . . q

r

2

. Dzielimy obie strony powyższej równości przez

p

1

i stosujemy to samo rozumowanie dla p

2

. Po r

1

krokach otrzymamy po lewej stronie wartość

1. Prawa strona też musi być jeden, a więc nie może być żadnego q

j

, które nie uległo skróceniu.

To jest oba zestawy są identyczne.

• Przykłady rozkładów na czynniki pierwsze:

30 = 2 · 3 · 5, 37 = 37, 40 = 2 · 2 · 2 · 5

• Wnioski

1. Jeśli w rozkładzie na czynniki pierwsze liczby n, liczba pierwsza p

występuje e(p) razy, e(p) 0, to

n =

Y

p liczba pierwsza

p

e(p)

2. Jeśli a =

Q

p

p

e(p)

, b =

Q

p

p

f (p)

są rozkładami na czynniki pierwsze

liczb a i liczb b, to

N W P (a, b) =

Y

p liczba pierwsza

p

min(e(p),f (p))

N W W (a, b) =

Y

p liczba pierwsza

p

max(e(p),f (p))

Ćwiczenia:

1. Znajdź rozkład na czynniki pierwsze dla n = 33, 55, 333, 555

2. Znajdź rozkład na czynniki pierwsze dla n = 33 · 55, 333 · 555
3. Znajdź na podstawie rozkładu na czynniki pierwsze wartość NW P (256, 96)

Problem: Udowodnij wniosek: Jeśli a =

Q

p

p

e(p)

, b =

Q

p

p

f (p)

są rozkładami na

czynniki pierwsze liczb a i liczb b, to

N W P (a, b) =

Y

p liczba pierwsza

p

min(e(p),f (p))

N W W (a, b) =

Y

p liczba pierwsza

p

max(e(p),f (p))

92

background image

4.1.7

Liczby pierwsze – sito Eratostenesa

Lemat 4.2

J eśli n nie jest liczbą pierwszą, to istnieje liczba pierwsza p ≤

n

taka, że p|n ⊳

Dowód:

Jeśli n = ab, a, b

N, a ≥ b > 1, to n = ab ≥ b

2

. Stąd b

n i każda liczba

pierwsza p dzieląca b spełnia:

p

n, p

|n

Twierdzenie 4.6
Istnieje nieskończenie wiele liczb pierwszych.
Dowód

przez zaprzeczenie

Gdyby zbiór liczb pierwszych był skończony, t.j. gdyby istniało tylko n liczb pierwszych p

1

, . . . , p

n

,

to liczba q = p

1

· · · · · p

n

+ 1 daje przy dzieleniu przez p

i

resztę 1, i = 1, . . . , n. Dlatego q nie

dzieli się przez żadną liczbę pierwszą, a więc samo q musi być liczbą pierwszą większą od wszyst-

kich liczb pierwszych. Stąd q > q. Otrzymana sprzeczność dowodzi nieskończoności zbioru liczb

pierwszych.

Algorytm 4.2

Sito Eratostenesa

1. Wejście: n – szukamy liczb pierwszych w przedziale [1, n

2

]

2. Wyjście: tablica liczb całkowitych p[1..n

2

] 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, . . . , n

2

3. Metoda:

Krok 0: Utwórz tablicę

p[1..n

2

];

Krok 1: Dla

i = 1, . . . , n

2

: p[i] ← i;

Krok 2:

p[1]

← −1; k ← 2;

Krok 3:

k

najmniejsze j ∈ [k, n] takie, że p[j] > 0 (jeśli istnieje)

Krok 4: Jeśli takie

j nie istnieje, to zwróć tablicę p[];

Krok 5: Dla

j = 2k, 3k, . . . , mk, mk

≤ n

2

: p[j] = −j;

Krok 6: Kontynuuj od kroku 3;

Ćwiczenie: Znajdź techniką sita Eratostenesa wszystkie liczby pierwsze z prze-
działu [1, 111].

4.1.8

Liczby Mersena

• Liczba Mersena jest liczbą pierwszą postaci 2

p

1

• Przykłady liczb Mersena: 3 = 2

2

1, 7 = 2

3

1, 31 = 2

5

1, 127 = 2

7

1

93

background image

• Obserwacja: dla a, b

N, a, b > 1, mamy:

1 + 2

a

+ (2

a

)

2

+ · · · + (2

a

)

b

1

=

(2

a

)

b

1

2

a

1

=

2

ab

1

2

a

1

• Wniosek: 2

ab

1 nie jest liczbą pierwszą bo

2

ab

1 = (2

a

1) 1 + 2

a

+ (2

a

)

2

+ · · · + (2

a

)

b

1

• Wniosek: Jeśli 2

p

1 jest liczbą pierwszą, to p jest liczbą pierwszą

Ćwiczenie: Czy liczba 2

1024

1 jest liczbą pierwszą?

4.1.9

Liczby Fermata

• Liczba Fermata jest liczbą pierwszą postaci 2

n

+ 1

• Przykłady liczb Fermata: 5 = 2

2

+ 1, 17 = 2

4

+ 1, 257 = 2

8

+ 1

• Obserwacje:

1. 2

2

r

+ 1 dzieli 2

2

r

+1

1, bo

2

2

r

+1

1 = 2

2

r

·2

1 =

2

2

r

2

1 = (2

2

r

1)(2

2

r

+ 1)

2. 2

2

r

+ 1 dzieli 2

2

r

·1

+ 1

3. Jeśli 2

2

r

+ 1 dzieli 2

2

r

·a

+ 1, to 2

2

r

+ 1 dzieli 2

2

r

·(a+2)

+ 1,

Dowód:

2

2

r

·(a+2)

+ 1

2

2

r

+ 1

=

2

2

r

+1

· 2

2

r

·a

+ 1

2

2

r

+ 1

=

2

2

r

+1

· 2

2

r

·a

+ 1

2

2

r

+1

+ 1

2

2

r

+ 1

=

2

2

r

+1

· 2

2

r

·a

+ 1

2

2

r

+ 1

2

2

r

+1

1

2

2

r

+ 1

• Wniosek: 2

2

r

+ 1 dzieli 2

2

r

·a

+ 1 dla dowolnego r ∈ N oraz a nieparzystego

• Wniosek: Jeśli 2

n

+ 1, n ∈ N jest liczbą pierwszą, to istnieje r ∈ N takie,

że n = 2

r

.

Dowód:

Dowolna liczba naturalna n = 2

r

a dla pewnego r

N ∪ {0} oraz a niepa-

rzystego. Jeśli a > 1, to na podstawie poprzedniego wniosku 2

n

+ 1 = 2

2

r

·a

+ 1 nie jest

liczbą pierwszą. Skoro 2

n

+ 1 jest liczbą pierwszą, to a = 1 i n = 2

r

.

Ćwiczenie: Czy liczba 2

1023

+ 1 jest liczbą pierwszą?

94

background image

4.2

Algebra reszt

• Niech a, b, m

Z, m 6= 0. Mówimy, że a przystaje do b modulo m i zapisu-

jemy a ≡ b (mod m) wtt a − b jest wielokrotnością m

• Relacja przystawania modulo m jest relacją równoważności

• Relacja przystawania modulo m nazywa się też relacją kongruencji

• Klasa równoważności [x]

m

nazywa się też klasą kongruencji elementu x ∈ Z

• Dla dowolnego m

Z, m 6= 0, istnieje dokładnie |m| różnych klas kongru-

encji

• Zbiór

{r

0

, . . . , r

m

1

} ⊂ Z nazywa się pełnym zbiorem reszt modulo m wtt

Z

= [r

0

]

m

∪ · · · ∪ [r

m

1

]

m

• Jeśli x

1

≡ y

1

(mod m) oraz x

2

≡ y

2

(mod m), to

x

1

± x

2

≡ y

1

± y

2

(mod m)

x

1

x

2

≡ y

1

y

2

(mod m)

• Jeśli x

≡ y (mod m), k ∈ N, to

x

k

≡ y

k

(mod m)

kx

≡ ky (mod m), −kx ≡ −ky (mod m)

• Jeśli x

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

• Jeśli x

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

x
d

y
d

(mod m/d)

Reguła skracania: Jeśli m

N, x, y, k ∈ Z oraz

kx

≡ ky (mod m)

to

x

≡ y (mod m/NW P (k, m))

Dowód:

Niech d = N W P (k, m), m = dm

, k = dk

. Wtedy N W P (k

, m

) = 1 i dla

pewnej αm

+ βk

= 1. Stąd

dm

|dk

(x

− y) → m

|k

(x

− y) → m

|(x − y)

m

d

|(x − y)

Dowód

inny dowód

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

k
d

x

k
d

y

(mod m/d)

Ale k/d oraz m/d są względnie pierwsze i m/d dzieląc (k/d)(x

− y) musi dzielić x − y.

95

background image

• Jeśli x

≡ y (mod m

1

) oraz x ≡ y (mod m

2

), to

x

≡ y (mod NW W (m

1

, m

2

))

• Jeśli x

≡ y (mod m

i

), i = 1, . . . , n, to

x

≡ y (mod NW W (m

1

, . . . , m

n

))

1. Jeśli n =

P

k
i
=0

c

i

10

i

jest rozwinięciem dziesiętnym liczby n ∈ N, 0 ≤ c

i

<

10, to

n

k

X

i=0

c

i

(mod 9)

(9)

n

k

X

i=0

c

i

(mod 3)

(10)

n

k

X

i=0

(1)

i

c

i

(mod 11)

(11)

2. Jeśli n =

P

k
i
=0

c

i

b

i

jest rozwinięciem przy podstawie b > 1 liczby n ∈ N,

0 ≤ c

i

< b, to

n

k

X

i=0

c

i

(mod b − 1)

n

k

X

i=0

(1)

i

c

i

(mod b + 1)

Ćwiczenia:

1. Pokaż, że własności z punktu jeden wynikają z własności punktu dwa.

2. Dlaczego kongruencja (10) wynika z kongruencji (9).

Zadania:

1. Udowodnij prawdziwość kongruencji (2).

2. Udowodnij prawdziwość kongruencji (2).

Przykład 4.1

rachunku reszt

• Znajdujemy resztę z dzielenia 2

1023

przez 7.

Ponieważ 2

3

= 8 1 (mod 7) i 1023 = 3 · 341, to

2

1023

= (2

3

)

341

1

341

1 (mod 7)

96

background image

• Obliczamy klasę kongruencji modulo 11 dla 3

1111

.

Ponieważ 3

5

1 (mod 11) oraz 1111 = 5 · 222 + 1, to

3

1111

= (3

5

)

222

· 3

1

1

222

· 3 3 (mod 11)

• Jaką resztę z dzielenia przez 23 daje liczba x, jeśli 3x

15 (mod 23)?

Ponieważ 3x ≡ 3 · 5 (mod 23) oraz NW P (3, 23) = 1, to z własności skra-

cania x ≡ 5 (mod 23). W takim razie ta reszta wynosi 5

• Jaką resztę z dzielenia przez 8 daje liczba x, jeśli 3x

15 (mod 24)?

Ponieważ 3x ≡ 3 · 5 (mod 24) oraz NW P (3, 24) = 3, to z własności skra-

cania 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 3

1023

przez 7

2. Oblicz resztę z dzielenia 2

1023

przez 11

3. Pokaż metodą reszt, że 7|(8

k

1) dla dowolnego k ∈ N

4. Jaką resztę z dzielenia przez 27 daje liczba x, jeśli 7x ≡ 21 (mod 27)?

5. Jaką resztę z dzielenia przez 9 daje liczba x, jeśli 3x ≡ 15 (mod 27)?

6. Czy liczba 9876543210 dzieli się przez przez 3 ?

7. Czy liczba 9876543215 dzieli się przez przez 11 ?

8. Rozwiąż równanie w resztach 14x − 2 12 (mod 42)

9. Rozwiąż równanie w resztach 14x − 12 2 (mod 120).

Problem:
W międzynarodowym systemie numeracji książek (ISBN) dziewięć pierwszych

97

background image

cyfr dziesiętnych x

i

, i = 1, . . . , 9, tworzy numer, a dziesiąty symbol jest symbo-

lem kontrolnym obliczanym następująco:

x

10

,

9

X

i=1

ix

i

(mod 11)

Jeśli x

10

= 10, to zapisywany jest symbol X.

Pokaż, że taki symbol kontrolny pozwala wykrywać błędne zapisy na jednej
pozycji i błędy polegające na zamianie dwóch symboli.

4.2.1

Równania w resztach

• Liniowe równanie w resztach ma postać:

ax

≡ b (mod m)

gdzie m ∈ N, a, b ∈ Z

• Jeśli istnieje rozwiązanie równania ax

≡ b (mod m), to NW P (a, m)|b.

Dowód:

Jeśli 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 wielokrotnością N W P (a, m).

• Przykład: a = 10, b = 15, m = 25.

Warunek konieczny jest spełniony bo NW P (a, m) = NW P (10, 25) =
5|15 = b. Równanie ax ≡ b (mod m) jest spełnione np. dla x = 9.

• Jeśli N W P (a, m)

|b, to istnieje rozwiązanie równania ax ≡ b (mod m).

Dowód:

Z warunku N W P (a, m)

|b wynika istnienie kombinacji liniowej a i m dającej

wartość b. Mianowicie rozszerzony algorytm Euklidesa daje k

, l

Z takie, że:

k

a + l

m = N W P (a, m)

k

b

N W P (a, m)

+ l

b

N W P (a, m)

= N W P (a, m)

b

N W P (a, m)

= b

Stąd 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 rozwiązaniem równania ax

≡ b (mod m).

• Przykład: a = 10, b = 15, m = 25.

Ponieważ NW P (a, m) = 5 oraz 3 · 10 + (1) · 25 = 5, to

x = k

b/N W P (a, m) = 3

· 15/5 = 9

jest rozwiązaniem równania 10x ≡ 15 (mod 25).

98

background image

• Jeśli x

> x, x

, x

Z

m

są rozwiązaniami równania ax ≡ b (mod m), to

istnieje i ∈ [0, NW P (a, m)) takie, że:

x

≡ x + i

m

N W P (a, m)

(mod m)

Dowód:

Z tego, że ax

≡ b (mod m) i ax

≡ b (mod m) mamy

a(x

− x) 0 (mod m)

Jeśli 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

a

m

, x

= x +

i

m

a

= x + im

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).

• Przykład: a = 10, b = 15, m = 25.

Obliczamy NW P (a, m) = NW P (10, 25) = 10, m

= m/NW P (a, m) =

25/5 = 5. Na podstawie rozwiązania x = 9 otrzymujemy inne rozwiązania
w Z

25

:

x

i

≡ x + im

(mod m)

x

0

= x = 9, x

1

= 9 + 1 · 5 = 14, x

2

= x

1

+ 5 = 19, x

3

= x

2

+ 5 = 24,

x

4

24 + 5 = 29 4 (mod 25).

Zadania:
Znajdź wszystkie rozwiązania równania 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

Chińskie twierdzenie o resztach

Twierdzenie 4.7

Chińskie twierdzenie o resztach

Niech m

1

, . . . , m

n

N są wzajemnie względnie pierwsze, t.j.

N W P (m

i

, m

j

) = 1, i, j = 1, . . . , n, i 6= j

Określamy M = m

1

· · · · · m

n

. Niech też r

i

N, r

i

[0, m

i

) będzie dowolną

resztą modulo m

i

, i = 1, . . . , n. Wtedy istnieje dokładnie jedna liczba całkowita

99

background image

x

[0, M), która przystaje do r

i

modulo m

i

, i = 1, . . . , n. ⊳

Dowód:

Niech M

i

, M/m

i

oraz c

i

będzie rozwiązaniem równania M

i

x

1 (mod m

i

).

Rozwiązanie istnieje bo N W P (m

i

, M

i

) = 1. Niech teraz

x

, c

1

M

1

r

1

+

· · · + c

n

M

n

r

n

Zauważmy, że

c

i

M

i

r

i

≡ r

i

, i = 1, . . . , n

c

j

M

j

r

j

0 (mod m

i

), gdy i

6= j

x

= c

1

M

1

r

1

+

· · · + c

n

M

n

r

n

≡ r

i

, i = 1, . . . , n

Weźmy x

, mod

M

(x

)

[0, M). Sprawdzamy, że x ≡ r

i

, i = 1, . . . , n. Istnieje więc liczba x

spełniająca tezę twierdzenia.
Dla dowodu jednoznaczności x w [0, M ), przypuśćmy, że istnieją liczby x

1

≥ x

2

[0, M) takie,

że

x

1

≡ r

i

(mod m

i

), x

2

≡ r

i

(mod m

i

), i = 1, . . . , n

Wtedy dla pewnych k

i

0, k

i

Z, i = 1, . . . , n

m

1

|x

1

− x

2

, . . . , m

n

|x

1

− x

2

Ponieważ liczby m

1

, . . . , m

n

są względnie pierwsze, to M

|x

1

− x

2

. Ponieważ x

1

− x

2

< M, to

warunek ten jest możliwy tylko gdy x

1

= x

2

.

Przykład 4.2

Szukamy wszystkie liczby x ∈ Z, które przystają do 1 modulo

2, do 3 modulo 5 i do 5 modulo 7.
Stosujemy chińskie twierdzenie o resztach dla parametrów:

r

1

= 1, m

1

= 2, r

2

= 3, m

2

= 5, r

3

= 5, m

3

= 7

M = m

1

m

2

m

3

= 70, M

1

= M/m

1

= 35, M

2

= M/m

2

= 14, M

3

= M/m

3

= 10

Rozwiązujemy równania M

i

c

i

1 (mod m

i

), i = 1, 2, 3 :

35c

1

1 (mod 2), 14c

2

1 (mod 5), 10c

3

1 (mod 7)

Wystarczy znaleźć po jednym rozwiązaniu tych równań, np.:

c

1

= 1, c

2

= 4, c

3

= 5

Wtedy zgodnie z dowodem chińskiego twierdzenia o resztach

x

= M

1

c

1

r

1

+ M

2

c

2

r

2

+ M

3

c

3

r

3

= 35 · 1 · 1 + 14 · 4 · 3 + 10 · 5 · 5 = 453

jest jednym z rozwiązań. Rozwiązanie bazowe dostajemy jako x = mod

70

(453) =

33. Pełny zbiór rozwiązań to klasa kongruencji liczby 33 modulo 70. ⊳

Zadania:
Znajdź wszystkie liczby x ∈ Z, które przystają do r

1

modulo m

1

, do r

2

mo-

dulo m

2

(w przykładach nieparzystych) oraz do r

3

modulo m

3

(w przykładach

parzystych) gdzie:

1. r

1

= 0, m

1

= 2, r

2

= 4, m

2

= 5

100

background image

2. r

1

= 0, m

1

= 2, r

2

= 4, m

2

= 5, r

3

= 3, m

3

= 7

3. r

1

= 3, m

1

= 4, r

2

= 2, m

2

= 3

4. r

1

= 3, m

1

= 4, r

2

= 2, m

2

= 3, r

3

= 4, m

3

= 5

5. r

1

= 3, m

1

= 4, r

2

= 2, m

2

= 6

6. r

1

= 3, m

1

= 4, r

2

= 2, m

2

= 6, r

3

= 4, m

3

= 5

4.2.3

Twierdzenia Fermata o resztach

Twierdzenie 4.8

Twierdzenie Fermata o resztach

Jeśli p jest liczbą pierwszą i a ∈ Z, p 6 |a, to

a

p

1

1 (mod p)

Dowód:

Rozważamy dwa iloczyny:

x

, 1 · 2 · 3 · · · · · (p − 1), y , (1 · a)(2 · a)(3 · a) . . . ((p − 1) · a) = a

p

1

x

Zauważmy, że jeśli 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. Stąd j = i.

Stąd każdy czynnik y przystaje modulo p do dokładnie jednego czynnika liczby x. Tzn. liczba

y przystaje do liczby x modulo p :

y

≡ x

(mod p), a

p

1

x

≡ x

(mod p)

Stosując regułę skracania kolejno dla 2, . . . , p

1 otrzymujemy

a

p

1

1

(mod p)

Ćwiczenia:
Pokaż, że:

1. 7 dzieli 128

6

1

2. 7 dzieli 64

6

+ 41

3. 11 dzieli 128

10

1

4. 11 dzieli 64

10

+ 54

5. 5 dzieli 1281

4

1

6. 5 dzieli 641

4

+ 54

101

background image

4.2.4

Funkcja Eulera

• Funkcja Eulera ϕ(n), n

N określa ile liczb naturalnych z przedziału [1, n]

jest względnie pierwszych z n :

ϕ(n)

, |{k ∈ N : k ∈ [1, n], NW P (k, n) = 1}|

• Przykłady:ϕ(1) = 1, ϕ(2) = 1, ϕ(3) = 2, ϕ(5) = 4

• Jeśli p jest liczbą pierwszą, to ϕ(p) = p

1

• Jeśli p jest liczbą pierwszą, to w przedziale [1, p

2

1], tylko liczby 1 · p, 2 ·

p, . . . , p

· p nie są względnie pierwsze z p

2

• Wniosek: ϕ(p

2

) = p

2

− p

• Wniosek: ϕ(p

e

) = p

e

− p

e

1

• Twierdzenie: Jeśli m oraz n są względnie pierwsze, to

ϕ(mn) = ϕ(m)ϕ(n)

• Przykład:

ϕ(300) = ϕ(12

· 25) = ϕ(2

2

· 3 · 5

2

)

= ϕ(2

2

)ϕ(3)ϕ(5

2

) = (2

2

2)(3 1)(5

2

5) = 80

Dowód

równości ϕ(mn) = ϕ(m)ϕ(n)

Z chińskiego twierdzenia o resztach wiemy, że dla m

[0, m) oraz n

[0, n) istnieje dokładnie

jedno k

[0, mn) o własności:

k

≡ m

(mod m), k

≡ n

(mod n),

To oznacza, że przekształcenie f

: [0, mn)

[0, m) × [0, n) określone następująco:

f

(x

)

, (mod

m

(x

), mod

n

(x

))

jest odwzorowaniem różnowartościowym.

Modyfikujemy teraz funkcję modulo mod

a

(x), a

N, x ∈ Z następująco:

mod

a

(x)

,

n

a

jeśli a

|x

mod

a

(x)

w przeciwnym razie

Wtedy przekształcenie f : [1, mn]

[1, m] × [1, n] określone jako:

f (x)

, (mod

m

(x), mod

n

(x))

jest również odwzorowaniem różnowartościowym, bo f jest złożeniem różnowartościowego f

z

różnowartościowym mapowaniem (g

m

(u), g

n

(v)), gdzie

g

m

(u)

,

n

m

jeśli u = 0,

u

w przeciwnym razie

102

background image

Ponieważ liczby m, n są względnie pierwsze, to własność N W P (k, mn) = 1 jest równoważna
koniunkcji własności 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 równoważne koniunkcji własności N W P (mod

m

(k), m) = 1,

N W P (mod

n

(k), n) = 1. Stąd widzimy, że różnowartościowe przekształcenie f przekształca

wszystkie liczby pierwsze względem mn na wszystkie kombinacje liczb pierwszych względem m

i n odpowiednio. Stąd liczba ϕ(mn) = ϕ(m)ϕ(n).

4.2.5

Twierdzenie Eulera o resztach

Twierdzenie 4.9

Twierdzenie Eulera o resztach

Jeśli m ∈ N oraz a ∈ Z jest liczbą pierwszą względem m, to

a

ϕ(m)

1 (mod m)

Dowód:

Niech n

, ϕ(m). Rozważamy dwa iloczyny:

x

, b

1

· b

2

· b

3

· · · · · b

n

, y

, (b

1

· a)(b

2

· a)(b

3

· a) . . . (b

n

· a) = a

n

x

gdzie liczba b

i

[1, m] jest liczbą pierwszą względem m, i = 1, . . . , n.

Zauważmy, że jeśli b

i

a

≡ b

j

a (mod m), to reguła skracania daje b

j

≡ b

i

(mod m), t.j. j = i.

Stąd każdy czynnik y przystaje modulo m do dokładnie jednego czynnika liczby x. Tzn. liczba
y przystaje do liczby x modulo m :

y

≡ x

(mod m), a

n

x

≡ x

(mod m)

Stosując regułę skracania kolejno dla b

1

, . . . , b

n

otrzymujemy

a

ϕ

(m)

1 (mod m)

• Inne rozwiązanie równania 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)

Stąd

(a

)

ϕ(m)

1

a

x

(a

)

ϕ(m)

1

b

(mod m)

(a

)

ϕ(m)

x

(a

)

ϕ(m)

1

b

(mod m)

x

(a

)

ϕ(m)

1

b

(mod m)

• Przykłady zastosowań twierdzenia Eulera o resztach:

Wyznaczamy resztę z dzielenia 2

126

przez 75 :

ϕ(75) = ϕ(3

· 5

2

) = 2 · 20 = 40, 126 = 3 · 40 + 6

2

40

1 (mod 75), 2

126

= 2

6

(2

40

)

3

64 (mod 75)

103

background image

Rozwiązujemy równanie 6x ≡ 5 (mod 13) :

φ(13) = 12, x

6

12

1

5 (mod 13), x ≡ 6

11

5 (mod 13)

Ale

11 6

12

· 11 6

11

· 66 · 11 6

11

(mod 13)

Stąd

x

11 · 5 (mod 13), x ≡ 3 (mod 13)

Ćwiczenia:

1. Wyznacz wartość funkcji Eulera ϕ(n), gdy:

(a) n = 127

(b) n = 210

(c) n = 2

4

3

3

5

2

2. Sprawdź, że:

(a) 127 dzieli liczbę 10

126

1

(b) 210 dzieli liczbę 11

48

1

Zadania:

1. Wyznacz resztę z dzielenia 2

125

przez 75

2. Rozwiąż równanie 7x ≡ 6 (mod 11) stosując twierdzenie Eulera o resztach

3. Pokaż, że twierdzenie Fermata jest szczególnym 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 – duża liczba pierwsza, np. p > 2

500

2. czynnik q – duża liczba pierwsza q 6= p,

elementy publiczne:

1. dzielnik m – liczba złożona postaci m = p · q
2. wykładniki e, f – elementy nawzajem odwrotne modulo:

ef

1 (mod (p − 1)(q − 1))

104

background image

• Komunikat a podlegający zaszyfrowaniu: dowolna liczba a

N, a < m

pierwsza względem dzielnika m

• Zaszyfrowanie:

r

, mod

m

(a

e

)

• Odszyfrowanie:

a = mod

m

(r

f

)

• Poprawność szyfrowania:

r

f

≡ a

ef

(mod m)

∃k ∈ N, ef = 1 + k(p − 1)(q − 1)

a

ef

= a · a

k(p

1)(q−1)

= a · a

(pq)

= a · (a

ϕ(m)

)

k

a

· (a

ϕ(m)

)

k

≡ a · 1

k

≡ a (mod m)

Przykład 4.3

szyfrowania RSA

1. Ustalamy parametry algorytmu RSA: klucze prywatne – p = 17, q = 19;

klucze publiczne m = pq = 323, e = 131.

2. Poszukujemy wykładnika f odwrotnego do e = 131 modulo (p−1)(q−1) =

288, tj. ef ≡ 1 (mod 288). Ponieważ NW 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 bezpośrednio, że f

= 1, g = 5 spełniają ostatnią z równości.

Stąd f = f

2g = 11.

3. Wybieramy komunikat do zaszyfrowania a < 323 taki, że NW P (a, 323) =

1, np. a = 7.

4. Zaszyfrowanie:

r

, mod

323

7

131

Ale stosując działania modulo 323 mamy:

7

131

= 7

10

· 7

11

1

1 121 · (201)

1

1 121 · 197 258

Zaszyfrowane a = 7 wynosi r = 258.

5. Odszyfrowanie:

a = mod

m

(r

f

) = mod

323

258

11

Ale

258

11

= 258 · 258

2

· 258

2

4

258 · 26 · 26

4

258 · 26 · 26

2

2

258 · 26 · 30

2

258 · 26 · 254 7

Otrzymujemy więc prawidłowe odszyfrowanie komunikatu a = 7.

105

background image

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 ∈ I

+

N

bitowym (np. N = 512)

• Kroki nadawcy:

1. Wybierz losowo a < m względnie pierwsze z m i przedstaw a na N

bitach

2. Wyślij szyfr RSA r = mod

m

(a

e

) dla a

3. Dla kolejnej N-bitowej porcji d danych szyfrowanych wyślij kod d

=

a XOR d, gdzie operacja XOR realizowana jest bit po bicie

• Kroki odbiorcy:

1. Odbierz r
2. Odszyfruj a = mod

m

(r

f

)

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


Document Outline


Wyszukiwarka

Podobne podstrony:
matematyka dyskretna w 2 id 283 Nieznany
Denisjuk A Matematyka Dyskretna
C2, Matematyka studia, Matematyka dyskretna
W adys aw Opydo
Matematyka Dyskretna Test#1
Matematyka dyskretna Zadania(1)
Matematyka dyskretna id 283281 Nieznany
Kolo 3, Politechnika, Matematyka Dyskretna
Matematyka dyskretna opracowani Nieznany
Matematyka dyskretna 2004 01 Podstawowe pojęcia, oznaczenia
Wykład z dnia 10.05.2008, Zajęcia, II semestr 2008, Matematyka dyskretna i logika
Matematyka Dyskretna Test 2a
Matematyka dyskretna prawd id 7 Nieznany
Matematyka Dyskretna Test 2d
Matematyka dyskretna syllabus (2)
Laboratorium Matematyki Dyskretnej szablon
Matematyka Dyskretna Test3a
Daszkiewicz A Matematyka Dyskretna I '2003

więcej podobnych podstron