Matematyka dyskretna 2002 05 Funkcje boolowskie

background image

Matematyka Dyskretna

Andrzej Szepietowski

25 czerwca 2002 roku

background image
background image

Rozdział 1

Funkcje boolowskie

1.1

Algebra Boole’a

Przykładem algebry Boole’a jest zbiór dwuelementowy:

z trzema operacjami: alternatyw¸a, koniunkcj¸a i negacj¸a.

Alternatywa, któr¸a b¸edziemy te˙z nazywa´c po prostu sum¸a, jest operacj¸a dwuargumentow¸a,

oznaczan¸a przez:

lub

i okre´slon¸a przez tabel¸e:

p

q

p+q

0

0

0

0

1

1

1

0

1

1

1

1

Koniunkcja (lub iloczyn) jest drug¸a operacj¸a dwuargumentow¸a, oznaczan¸a przez:

lub

i okre´slon¸a przez tabel¸e:

p

q

0

0

0

0

1

0

1

0

0

1

1

1

3

background image

4

Rozdział 1. Funkcje boolowskie

Podobnie jak w arytmetyce, kropk¸e b¸edziemy opuszcza ´c, je˙zeli nie b¸edzie to prowadzi´c
do niejednoznaczno´sci.

Operacje alternatywy i koniunkcji mo˙zna te˙z zdefiniowa´c za pomoc¸a nast¸epuj¸acych

wzorów:

Negacja jest operacj¸a jednoargumentow¸a, oznaczan¸a przez:

lub

i okre´slon¸a przez tabel¸e:

p

0

1

1

0

Algebr¸e

mo˙zemy interpretowa´c jako logik¸e zdaniow¸a. Zmienne s¸a zdaniami,

które mog¸a przyjmowa´c warto´sci prawda lub fałsz. Je˙zeli oznaczymy prawd¸e przez

i

fałsz przez

, to powy˙zej zdefiniowane operacje odpowiadaj¸a znanym operacjom z logiki

zda´n.

Lemat 1.1 Operacje alternatywy, koniunkcji i negacji spełniaj¸a nast¸epuj¸ace to˙zsamo´sci:

(a)

(alternatywa i koniunkcja s¸a przemienne),

(b)

(alternatywa i koniunkcja s¸a

ł¸aczne),

(c)

(alternatywa jest rozdzielna wzgl¸edem koniunkcji),

(d)

(koniunkcja jest rozdzielna wzgl¸edem alternatywy),

(e)

,

,

,

,

(f)

,

,

,

,

(g)

,

(prawa pochłaniania),

(h)

,

(prawa de’Morgana),

(i)

(prawo podwójnego przeczenia).

Najprostsze dowody powy˙zszych to˙zsamo´sci polegaj¸a na sprawdzeniu, ˙ze zachodz¸a one
dla ka˙zdego mo˙zliwego podstawienia za zmienne warto´sci 1 lub 0. Na przykład, udowod-
nimy to˙zsamo´s´c:

Wszystkie mo˙zliwe podstawienia zebrane s¸a w tabeli:

background image

1.1. Algebra Boole’a

5

p

q

0

0

0

0

1

0

1

0

1

1

1

1

Poniewa˙z trzecia kolumna jest identyczna z pierwsz¸a, wi¸ec równo´s´c

jest

prawdziwa dla ka˙zdego podstawienia, czyli jest to˙zsamo´sci¸a.

Innym przykładem algebry Boole’a jest zbiór wszystkich podzbiorów jakiego´s zbioru

z operacjami okre´slonymi w nast¸epuj¸acy sposób:

jest sum¸a mnogo´sciow¸a

jest iloczynem

jest uzupełnieniem zbioru,

,

1

jest zbiorem

,

0

jest zbiorem pustym

.

Tak˙ze te operacje spełniaj¸a to˙zsamo´sci z lematu 1.1.

Udowodnimy, dla przykładu, to˙zsamo´s´c

. Je˙zeli element

nale˙zy do

zbioru

, to nale˙zy tak˙ze do sumy

. Je˙zeli za´s

nie nale˙zy do

, to nie nale˙zy

tak˙ze do iloczynu

, a wi¸ec

nie nale˙zy do ˙zadnego składnika sumy

, czyli nie

nale˙zy do

. Tak wi¸ec zbiory

i

zawieraj¸a dokładnie te same elementy,

a wi¸ec s¸a równe.

Oprócz trzech podstawowych, w algebrze Boole’a definiuje si¸e inne operacje. Dla nas

wa˙zna b¸edzie operacja xor (ang. exclusive or) albo alternatywa wykluczaj¸aca. xor jest
operacj¸a dwuargumentow¸a, oznaczan¸a przez:

i okre´slon¸a przez tabel¸e:

p

q

0

0

0

0

1

1

1

0

1

1

1

0

Operacja ta jest nazywana alternatyw¸a wykluczaj¸ac¸a, poniewa˙z w logice zdaniowej

zdanie

jest prawdziwe, je˙zeli albo

, albo

jest prawdziwe, ale nie jest prawdziwe,

gdy

i

naraz s¸a prawdziwe. Operacja

ma nast¸epuj¸ace własno´sci:

Lemat 1.2

(a)

(jest przemienna),

background image

6

Rozdział 1. Funkcje boolowskie

(b)

(jest ł¸aczna),

(c)

(xor jest rozdzielne wzgl¸edem koniunkcji),

(d)

,

,

,

,

(e) Je˙zeli

, to

.

(f) zbiór

z działaniami xor i koniunkcji tworzy ciało.

Ł¸aczno´s´c operacji

zapewnia, ˙ze mo˙zemy opuszcza´c nawiasy w wyra˙zeniach typu

, bez spowodowania niejednoznaczno´sci.

Operacj¸e xor mo˙zna zdefiniowa´c poprzez alternatyw¸e, koniunkcj¸e i negacj¸e:

W algebrze podzbiorów operacja xor odpowiada ró˙znicy symetrycznej:

1.2

Wyra˙zenia boolowskie

Podobnie jak wyra˙zenia arytmetyczne, mo˙zemy budowa ´c wyra˙zenia boolowskie. Wyra-

˙zeniami boolowskimi s¸a stałe

i

oraz zmienne boolowskie (typu boolean). Bardziej

zło˙zone wyra˙zenia mo˙zna budowa´c za pomoc¸a operatorów boolowskich i nawiasów. Je-

˙zeli

i

s¸a dwoma wyra˙zeniami boolowskimi, to wyra˙zeniami boolowskimi s¸a tak˙ze

nast¸epuj¸ace wyra˙zenia:

1.2.1

Wyra˙zenia boolowskie w j¸ezyku Pascal

W j¸ezyku Pascal wyra˙zeniami boolowskimi s¸a stałe

true

i

false

oraz zmienne ty-

pu

boolean

. Wyra˙zenia boolowskie mo˙zna te˙z budowa´c z wyra˙ze´n arytmetycznych za

pomoc¸a tak zwanych operatorów relacyjnych. Je˙zeli

U

i

W

s¸a dwoma wyra˙zeniami aryt-

metycznymi, to wyra˙zeniem boolowskim jest wyra˙zenie:

U op W,

gdzie

op

oznacza dowolny operator relacyjny. Operatory relacyjne s¸a zestawione w tabeli:

operator

znaczenie

=

równe

<

mniejsze

>

wi¸eksze

<>

ró˙zne

<=

mniejsze lub równe

>=

wi¸eksze lub równe

background image

1.3. Funkcje boolowskie

7

Wyra˙zenia boolowskie mo˙zna tak˙ze budowa´c za pomoc¸a operatorów boolowskich i na-
wiasów. Je˙zeli

U

i

W

s¸a dwoma wyra˙zeniami boolowskimi, to wyra˙zeniami boolowskimi

s¸a tak˙ze nast¸epuj¸ace wyra˙zenia:

U or W

(suma lub alternatywa),

U and W

(koniunkcja),

not W

(negacja),

U xor W

(exclusive or lub alternatywa wykluczaj¸aca),

(U)

(wyra˙zenie

U

wzi¸ete w nawias).

Przykładami wyra˙ze ´n boolowskich w j¸ezyku Pascal s¸a:

true or b

,

b and not(x>=0)

,

(0<=x) and (x<=10)

,

(0<x) or (x>10)

.

gdzie

b

jest zmienn¸a typu boolean, a

x

— zmienn¸a liczbow¸a.

Wyra˙zenia boolowskie wyst¸epuj¸a w j¸ezyku Pascal w instrukcjach warunkowych lub

w p¸etlach while i repeat.

1.3

Funkcje boolowskie

Funkcje boolowskie

zmiennych to funkcje:

gdzie

. Mamy cztery funkcje boolowskie jednej zmiennej:

funkcj¸e stał¸a

równ¸a 0,

identyczno´s´c

,

negacj¸e

,

funkcj¸e stał¸a

równ¸a 1.

Warto´sci tych funkcji zestawiono w tabeli:

x

0

0

0

1

1

1

0

1

0

1

background image

8

Rozdział 1. Funkcje boolowskie

S¸a to wszystkie funkcje boolowskie jednej zmiennej, poniewa˙z s¸a to funkcje ze zbioru
w zbiór

, a takich funkcji jest:

Funkcji boolowskich dwóch zmiennych jest:

Ich warto´sci zestawiono w tabeli:

x

y

0

0

0

0

0

0

0

0

0

0

1

1

1

1

1

1

1

1

0

1

0

0

0

0

1

1

1

1

0

0

0

0

1

1

1

1

1

0

0

0

1

1

0

0

1

1

0

0

1

1

0

0

1

1

1

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

Zauwa˙zmy, ˙ze ci¸ag warto´sci ka˙zdej z tych funkcji czytany od góry do dołu stanowi zapis
binarny jej numeru. Przyjrzyjmy si¸e bli˙zej tym funkcjom:

jest funkcj¸a stał¸a równ¸a 0,

jest funkcj¸a stał¸a równ¸a 1,

jest koniunkcj¸a,

jest alternatyw¸a,

jest xorem,

jest implikacj¸a z

do

,

jest implikacj¸a z

do

,

jest równowa˙zno´sci¸a,

jest rzutem na pierwsz¸a współrz¸edn¸a,

jest rzutem na drug¸a współrz¸edn¸a,

jest negacj¸a drugiej współrz¸ednej,

jest negacj¸a pierwszej współrz¸ednej,

jest zaprzeczeniem koniunkcji, tak zwany nand,

jest zaprzeczeniem alternatywy, tak zwany nor,

jest zaprzeczeniem implikacji z

do

,

jest zaprzeczeniem implikacji z

do

.

background image

1.3. Funkcje boolowskie

9

Jak wida´c, ka˙zd¸a z tych funkcji mo˙zna przedstawi´c za pomoc¸a koniunkcji, alternatywy i
negacji.

Funkcji boolowskich trzech zmiennych jest:

nie b¸edziemy ich wszystkich wypisywa´c.

Nasuwa si¸e pytanie, czy ka˙zd¸a funkcj¸e

zmiennych mo˙zna przedstawi ´c za pomoc¸a

koniunkcji, alternatywy i negacji. Odpowied´z jest pozytywna. Najpierw przykład. Roz-
patrzmy funkcj¸e boolowsk¸a trzech zmiennych:

x

y

z

f(x,y,z)

0

0

0

0

0

0

1

1

0

1

0

0

0

1

1

1

1

0

0

1

1

0

1

1

1

1

0

0

1

1

1

0

Rozwa˙zmy wyra˙zenie:

Przyjmuje ono warto´s´c 1 tylko dla jednego wektora

, czyli dla podstawienia

,

,

. Podobnie, wyra˙zenie

przyjmuje warto´s´c 1 tylko dla wektora

,

wyra˙zenie

— tylko dla

, a wyra˙zenie

— tylko dla

. Suma tych

wyra˙ze´n:

(1.1)

przyjmuje warto´s´c 1 tylko dla wektorów

,

,

,

, czyli jest

równowa˙zna naszej funkcji

. Wyra˙zenie (1.1) jest w tak zwanej dysjunkcyjnej postaci

normalnej (DNF).

Funkcj¸e

mo˙zna te˙z opisa´c w innej formie. Rozwa˙zmy wyra˙zenie:

Przyjmuje ono warto´s´c 0 tylko dla jednego wektora

, czyli dla podstawienia

,

,

. Podobnie, wyra˙zenie

przyjmuje warto´s´c 0 tylko dla wektora

, wyra˙zenie

— tylko dla

, a wyra˙zenie

— tylko

dla

. Iloczyn tych wyra˙ze ´n:

przyjmuje warto´s´c zero tylko dla wektorów

,

,

, i

, czy-

li jest równowa˙zny funkcji

. Jest to tak zwana koniunkcyjna posta´c normalna (CNF)

funkcji

.

background image

10

Rozdział 1. Funkcje boolowskie

Metod¸e t¸e mo˙zna uogólni´c na funkcje

zmiennych. Wprowadzimy oznaczenie:

Dla dowolnego wektora

, niech

oznacza

-t¸a współrz¸edn¸a wektora .

Rozwa˙zmy teraz wyra˙zenie:

Zauwa˙zmy, ˙ze

jest równe 1 tylko wtedy, gdy podstawimy

, dla ka˙zdego

, czyli dla

. Wida´c z tego, ˙ze:

Jest to dysjunkcyjna posta´c normalna (DNF) funkcji

(sumowanie oznacza tutaj alternatyw¸e).

Aby otrzyma´c posta´c koniukcyjn¸a, zaczynamy od wyra˙zenia:

Zauwa˙zmy, ˙ze

jest równe 0 tylko wtedy, gdy podstawimy:

, dla ka˙zdego

, czyli dla

. Wida´c z tego, ˙ze:

Jest to koniunkcyjna posta´c normalna (CNF) funkcji

.

1.4

Sieci boolowskie

Najpierw przykład. Na rysunku 1.1 przedstawiono pewn¸a sie ´c boolowsk¸a. Jest to graf
skierowany z sze´scioma wierzchołkami (bramkami) i pi¸ecioma kraw¸edziami ł¸acz¸acymi
niektóre bramki. W tym i nast¸epnych przykładach przyjmujemy, ˙ze kraw¸edzie s¸a skiero-
wane od góry do dołu. Bramki maj¸a etykiety. Jedna etykietowana jest stał¸a

, dwie ety-

kietowane s¸a zmiennymi

i

, a trzy etykietowane s¸a operatorami logicznymi,

,

i

.

Bramki oznaczone stałymi lub zmiennymi s¸a bramkami wej´sciowymi i ˙zadne kraw¸edzie
nie prowadz¸a do nich. Bramka

ma jedn¸a kraw¸ed´z wchodz¸ac¸a, a bramki

i

po dwie.

Bramka

jest bramk¸a wyj´sciow¸a, bo nie wychodzi z niej ˙zadna kraw¸ed´z. Z ka˙zd¸a bramk¸a

w sieci mo˙zemy zwi¸aza´c wyra˙zenie boolowskie. W przypadku bramki etykietowanej stał¸a
lub zmienn¸a, tym wyra˙zeniem jest ta stała lub ta zmienna. Z bramk¸a

zwi¸azane jest wy-

ra˙zenie

, z bramk¸a

wyra˙zenie

, a z bramk¸a

wyra˙zenie

.

Ogólnie, sie´c boolowska to graf składaj¸acy si¸e z wierzchołków, nazywanych bramka-

mi, i skierowanych kraw¸edzi ł¸acz¸acych niektóre bramki. Ka˙zda bramka ma swoj¸a etykiet¸e,
któr¸a mo˙ze by´c stała 1 lub 0, zmienna lub operator boolowski. W naszych rozwa˙zaniach
ograniczymy si¸e do czterech operatorów:

,

,

i

, ale mo˙zna rozwa˙za ´c sieci z innym

zbiorem operatorów. Do bramek oznaczonych stałymi lub zmiennymi nie prowadz¸a ˙zadne

background image

1.4. Sieci boolowskie

11

Rysunek 1.1: Przykład sieci boolowskiej

kraw¸edzie, s¸a to bramki wej´sciowe. Bramki oznaczone przez

maj¸a po jednej kraw¸edzi

wej´sciowej, a bramki z pozostałymi operatorami maj¸a po dwie kraw¸edzie wchodz¸ace. W
sieci boolowskiej nie mo˙ze by´c cyklu, czyli ci¸agu kraw¸edzi

takiego ˙ze

, i dla ka˙zdego

spełniaj¸acego warunek

w sieci istnieje

kraw¸ed´z od wierzchołka

do wierzchołka

. Wierzchołek, z którego nie wychodz¸a

˙zadne kraw¸edzie, nazywamy wyj´sciowym. W sieci mo˙ze by´c kilka bramek wyj´sciowych.

Z ka˙zd¸a bramk¸a

w sieci mo˙zemy zwi¸aza´c wyra˙zenie boolowskie

. Robimy to

przez indukcj¸e ze wzgl¸edu na struktur¸e sieci:

Najpierw przypisujemy wyra˙zenia bramkom wej´sciowym. W tym wypadku wyra-

˙zeniem tym jest etykieta bramki

: stała lub zmienna.

Je˙zeli bramka

jest etykietowana negacj¸a

i dochodzi do niej kraw¸ed´z od bramki

oraz bramka

ma ju˙z przypisane wyra˙zenie

, to bramce

przypisujemy

wyra˙zenie

.

Je˙zeli etykiet¸a bramki

jest operator dwuargumentowy

, to do

prowadz¸a kraw¸edzie

od dwóch bramek,

i

. Je˙zeli przypisano ju˙z wyra˙zenia

i

bramkom

i

, to bramce

przypisujemy wyra˙zenie

.

Liczb¸e wszystkich bramek w sieci nazywamy kosztem sieci, a długo´s´c najdłu˙zszej ´scie˙zki
w sieci nazywamy gł¸eboko´sci¸a sieci. Je˙zeli w sieci istnieje bramka wyj´sciowa

, to mo-

˙zemy powiedzie´c, ˙ze sie´c oblicza wyra˙zenie

. Z faktu, ˙ze ka˙zd¸a funkcj¸e boolowsk¸a

mo˙zna przedstawi´c w postaci normalnej, wynika, ˙ze ka˙zd¸a funkcj¸e boolowsk¸a mo˙zna
przedstawi´c za pomoc¸a sieci. Jednak konstrukcja sieci dla funkcji boolowskiej

poprzez

wyznaczanie postaci normalnej zazwyczaj prowadzi do sieci o du˙zym koszcie (liczbie
bramek). Poni˙zej omówiono przykłady sieci o stosunkowo małym koszcie.

background image

12

Rozdział 1. Funkcje boolowskie

1.4.1

Suma (alternatywa) kilku zmiennych

Rysunek 1.2: Sie´c boolowska obliczaj¸aca alternatyw¸e o´smiu zmiennych

Na rysunku 1.2 przedstawiono sie´c obliczaj¸ac¸a alternatyw¸e o´smiu zmiennych:

Gł¸eboko´s´c tej sieci wynosi 3.

Podobnie mo˙zna skonstruowa´c sie´c licz¸ac¸a alternatyw¸e

zmiennych, gdzie

jest

jak¸a´s pot¸eg¸a dwójki. Gł¸eboko´s´c takiej sieci wynosi

. Oczywi´scie tak samo mo˙zemy

zbudowa´c sie´c dla uogólnionej koniunkcji lub operatora

.

1.4.2

Funkcje progowe

Funkcja

gdy liczba jedynek w´sród

jest

równa lub wi¸eksza od

w przeciwnym wypadku,

jest funkcj¸a progow¸a o

zmiennych z progiem

. B¸edziemy zakłada ´c, ˙ze

.

Sieci funkcji progowych dwóch zmiennych s¸a proste, poniewa˙z:

Przedstawiono je na rysunku 1.3.

background image

1.4. Sieci boolowskie

13

Rysunek 1.3: Sieci funkcji progowych dwóch zmiennych

Przypu´s´cmy, ˙ze mamy ju˙z sieci funkcji progowych

zmiennych. Za ich pomoc¸a

mo˙zemy skonstruowa´c funkcje progowe

zmiennych (rysunek 1.4). Zrobimy to

posługuj¸ac si¸e nast¸epuj¸acymi zale˙zno´sciami:

Je˙zeli

, to:

Je˙zeli zestawimy równolegle sieci funkcji progowych, tak jak zrobiono to na rysun-

ku 1.5, to otrzymamy sie´c sortuj¸ac¸a. Sie´c ta bierze na wej´sciu ci¸ag czterech bitów:

i zwraca na wyj´sciu te same bity w porz¸adku nierosn¸acym:

Na przykład gdy na wej´sciu b¸edzie ci¸ag

, wówczas na wyj´sciu pojawi si¸e ci¸ag

.

1.4.3

Sumator

Zastanówmy si¸e teraz, jak skonstruowa´c sumator, czyli sie´c, która b¸edzie dodawa´c dwie
liczby -bitowe:

oraz

i da w wyniku

bitów sumy:

background image

14

Rozdział 1. Funkcje boolowskie

Rysunek 1.4: Sie´c funkcji progowej

Na wej´sciu sumatora mamy

bitów pierwszej liczby,

, ... ,

, oraz

bitów drugiej

liczby,

, ... ,

, a na wyj´sciu

bitów sumy arytmetycznej

, ... ,

. Nasz sumator

na´sladuje szkolne dodawanie opisane w rozdziale o arytmetyce. Najpierw dodaje bity

i

i oblicza ostatni bit sumy

oraz przeniesienie

, które ma by´c dodane do nast¸epnego

bitu. Potem dla kolejnych pozycji

od

do

dodaje bity

,

oraz przeniesienie

z poprzedniej pozycji i oblicza

-ty bit sumy

oraz przeniesienie

do nast¸epnej

pozycji.

Na rysunku 1.6 przedstawiono sie´c HA (ang. half adder — półsumator), która ma na

wej´sciu dwa bity,

i

, a na wyj´sciu — bit sumy

oraz bit przeniesienia

.

Na rysunku 1.7 przedstawiono sie´c FA (ang. full adder), która ma na wej´sciu trzy

bity,

,

oraz

, a na wyj´sciu bit sumy

oraz bit przeniesienia

.

Na rysunku 1.8 przedstawiono schemat konstrukcji sumatora dla

. Podobnie

mo˙zna skonstruowa´c sumator dla dowolnego

. Taki sumator b¸edzie zawierał

background image

1.5. Operacje boolowskie na wektorach

15

Rysunek 1.5: Schemat sieci sortuj¸acej

bramek i miał gł¸eboko´s´c

.

1.5

Operacje boolowskie na wektorach

Operacje boolowskie mo˙zna wykonywa´c tak˙ze na ci¸agach bitów okre´slonej długo´sci, czy-
li na elementach zbioru

Dla dwóch ci¸agów:

oraz

operacje koniunkcji, alternatywy, xor i negacji wykonywane s¸a po współrz¸ednych:

Je˙zeli wektor zerowy

oznaczymy przez 0, a wektor zło˙zony z samych jedy-

nek

— przez 1, to zachodz¸a wszystkie to˙zsamo´sci lematu1.1 oraz to˙zsamo-

´sci (a)—(e) z lematu 1.2. Nie jest natomiast na ogół spełniona własno´s´c (e) lematu 1.2,

background image

16

Rozdział 1. Funkcje boolowskie

Rysunek 1.6: Sie´c obliczaj¸aca HA (półsumator)

poniewa˙z je˙zeli

, to

z działaniami

i

nie jest ciałem (nie ma elementu prze-

ciwnego do

). Zbiór

jest przestrzeni¸a liniow¸a nad ciałem

, z

jako

dodawaniem oraz mno˙zeniem przez skalar zdefiniowanym przez:

(tutaj zero po lewej stronie jest zerem z ciała, a zero po prawej stronie jest

wektorem zerowym),

.

1.5.1

Operacje na wektorach w j¸ezyku Pascal

W j¸ezyku Pascal (i w wielu innych j˛ezykach) operacje boolowskie:

and, or, xor,

neg

, mo˙zna stosowa´c do liczb typu integer lub innych typów całkowitych (byte, shor-

tint, word lub longint). Liczba traktowana jest wtedy jako ci¸ag bitów jej przedstawienia
binarnego. Na przykład:

13 and 6=4

poniewa˙z 13 jest reprezentowane przez:

6 przez:

oraz:

(0000 0000 0000 1101)

and

(0000 0000 0000 0110) =(0000 0000 0000 0100),

a ten ostatni ci¸ag reprezentuje 4 w typie integer. Podobnie zachodzi:

13 or 6=15; 13 xor 6=11; not 0=-1.

background image

1.5. Operacje boolowskie na wektorach

17

Rysunek 1.7: Sie´c obliczaj¸aca FA

1.5.2

Reprezentacja zbioru

Ci¸agi bitów z

mog¸a słu˙zy´c do reprezentacji podzbiorów zbioru

Ci¸ag

nale˙zy traktowa´c jako funkcj¸e charakterystyczn¸a pewnego podzbioru.

Wtedy operacje boolowskie na ci¸agach odpowiadaj¸a operacjom na zbiorach. Alternaty-
wa odpowiada sumie zbiorów, koniunkcja cz¸e´sci wspólnej, a negacja uzupełnieniu zbio-
ru. Operacja xor odpowiada ró˙znicy symetrycznej. Taka reprezentacja ma dwie zalety.
Zajmuje mało pami¸eci i operacje na zbiorach s¸a wykonywane bardzo szybko, poniewa˙z
operacje boolowskie s¸a operacjami niskiego poziomu.

Na przykład je˙zeli chcemy reprezentowa´c w pami¸eci komputera uło˙zenie kamieni w

grze w warcaby na 64-polowej szachownicy, to wystarcz¸a dwie liczby typu longint (po 32
bity). W jednej liczbie reprezentujemy poło˙zenie czarnych, a w drugiej poło˙zenie białych
kamieni (w grze w warcaby kamienie mog¸a le˙ze´c tylko na 32 czarnych polach).

1.5.3

Szyfrowanie w systemie one-pad

Operacje boolowskie na wektorach mo˙zna wykorzysta´c do szyfrowania. W systemie szy-
frowania „one-pad” wiadomo´s´c

i klucz

s¸a ci¸agami bitów

(Je˙zeli wia-

domo´s´c jest ci¸agiem znaków, to kodujemy ka˙zdy znak jako 8 bitów i cały ci¸ag mo˙ze by ´c
traktowany jako ci ˛

ag bitów). Zaszyfrowana wiadomo´s´c ma posta´c:

background image

18

Rozdział 1. Funkcje boolowskie

Rysunek 1.8: Schemat sumatora

HA

FA

FA

FA

Zauwa˙zmy, ˙ze deszyfrowa´c mo˙zna według tego samego wzoru:

poniewa˙z

gdzie 0 reprezentuje wektor zerowy. Zalet¸a tego systemu jest to, ˙ze jest on absolutnie bez-
pieczny. Zróbmy nast¸epuj¸acy eksperyment. Przypu´s´cmy, ˙ze kto´s ma zaszyfrowan¸a wia-
domo´s´c

i chce j¸a odszyfrowa´c przez odgadni¸ecie samej wiadomo´sci

. Zastanówmy si¸e,

dla jakich ci¸agów

istnieje klucz

, taki ˙ze

, czyli inaczej, jakie wiadomo´sci

mog¸a by´c zaszyfrowane w

. Okazuje si¸e, ˙ze dla ka˙zdego ci¸agu

istnieje klucz

, taki ˙ze

. Wystarczy wzi¸a´c

. Mamy wtedy:

background image

1.6. Funkcja parzysto´sci (parity)

19

Wad¸a tego systemu jest to, ˙ze klucze musz¸a by´c tej samej długo´sci co sama wiadomo´s´c i
musz¸a by´c trzymane w sekrecie. Powoduje to kłopoty z przesyłaniem i przechowywaniem
kluczy.

System one-pad mo˙zna stosowa´c w nast¸epuj¸acy sposób: Najpierw przesyła si¸e bezpieczn¸a

poczt¸a (na przykład kuriersk¸a) zapasy kluczy, na przykład notesy z kartkami, gdzie ka˙zda
strona zawiera jeden klucz. Nast¸epnie szyfrowane depesze mog¸a by ´c przesyłane mniej
bezpiecznymi kanałami. Trzeba tylko przestrzega´c zasady, ˙ze jedna kartka mo˙ze by´c u˙zy-
ta tylko raz (st¸ad angielska nazwa systemu). Same klucze powinny by ´c losowane, aby
przeciwnik nie mógł ich odgadn¸a´c.

Łami¸ac szyfry cz¸esto korzysta si¸e z faktu, ˙ze wiadomo´sci, lub ich fragmenty, wyst¸epuj¸a

z ró˙zn¸a cz¸esto´sci¸a (prawdopodobie ´nstwem). Przypu´s´cmy dla prostoty, ˙ze szyfrujemy po-
jedyncze znaki i niech

b¸edzie zbiorem wiadomo´sci (kody ASCII). Dla normal-

nych tekstów (listów) rozkład cz¸esto´sci poszczególnych znaków jest bardzo niejednostaj-
ny. Kody jednych liter wyst¸epuj¸a du˙zo cze´sciej, ni˙z innych, a pewne znaki nie wyst¸epuj¸a
wcale. Gdyby´smy teraz zastosowali jaki´s prymitywny sposób kodowania bez klucza,
gdzie ka˙zdy znak

zawsze jest szyfrowany za pomoc¸a

, to w zaszyfrowanej wia-

domo´sci rozkład cz¸esto´sci b¸edzie podobny (przepermutowany). Najcz¸e´sciej wyst¸epuj¸acy
znak w wiadomo´sci zaszyfrowanej odpowiada najcz¸e´sciej wyst¸epuj¸acemu znakowi w tek-
´scie, itd. Mo˙zna to wykorzysta´c przy łamaniu szyfrów.

Jak zaraz zobaczymy w przypadku szyfrów one-pad tak nie jest. Znaki w zaszyfro-

wanej wiadomo´sci posiadaj¸a rozkład jednostajny, tak jakby´smy losowali kolejne znaki i
dlatego analiza statystyczna jest tutaj bezu˙zyteczna.

Niech

b¸edzie zbiorem wiadomo´sci z dowolnym rozkładem prawdopo-

dobie´nstwa, a

zbiorem kluczy z jednostajnym rozkładem prawdopodobie ´n-

stwa. Losujemy wiadomo´s´c

i klucz

i obliczamy wiadomo´s´c

. Niech

oznacza zdarzenie, ˙ze wylosowano wiadomo´s´c

,

, ˙ze wylosowano

klucz

, a

zdarzenie, ˙ze otrzymano zaszyfrowan¸a wiadomo´s´c

. Zgodnie ze wzorem

na prawdopodobie ´nstwo całkowite mamy

ale

bo tylko dla jednego klucza

,

. Dlatego

1.6

Funkcja parzysto´sci (parity)

Zdefiniujmy funkcj¸e boolowsk¸a parzysto´sci (parity):

background image

20

Rozdział 1. Funkcje boolowskie

Funkcja

jest addytywna, to znaczy:

co wynika z faktu, ˙ze operacja

jest ł¸aczna i przemienna.

jest równa 1, je˙zeli liczba jedynek w ci¸agu

jest nieparzysta, oraz jest równa

0, je˙zeli w ci¸agu

liczba jedynek jest parzysta. Je˙zeli b¸edziemy uto˙zsamia ´c wektor

ze

zbiorem, to

jest równe parzysto´sci mocy zbioru

.

Twierdzenie 1.3

dla dokładnie połowy wej´s´c. To znaczy:

Pierwszy dowód. Twierdzenie wynika z faktu, ˙ze dokładnie połowa podzbiorów zbioru

jest nieparzystej mocy.

Drugi dowód. We´zmy wektor:

który ma jedynk¸e tylko na pierwszej współrz¸ednej. Zdefiniujemy teraz funkcj¸e

:

Funkcja

ł¸aczy elementy ze zbioru

w pary, poniewa˙z je˙zeli

, to

. Rzeczywi´scie:

Ponadto:

a st¸ad wynika, ˙ze dla ka˙zdej pary

,

dokładnie jedna z dwóch liczb

,

jest jedynk¸a, czyli dla dokładnie połowy

,

1.7

Zabezpieczanie danych

Funkcja

jest wykorzystywana do kontroli, czy dane nie zostały przekłamane podczas

przesyłania lub przechowywania. Przypu´s´cmy, ˙ze Małgosia chce przesła´c Jasiowi wiado-
mo´s´c

i chce cho´c troch¸e zabezpieczy´c

przed przekłamaniem. Wtedy Mał-

gosia wysyła

razem z bitem

— jego podpisem. Przypu´s´cmy teraz, ˙ze Ja´s dostał

wiadomo´s´c

z podpisem

. Dla prostoty zakładamy, ˙ze podpis

nie został

przekłamany, na przykład Małgosia i Ja´s mog¸a si¸e umówi´c, ˙ze przesyłaj¸a sobie tylko ta-
kie wiadomo´sci

, dla których

. Aby sprawdzi´c, czy wiadomo´s´c nie została

przekłamana, Ja´s oblicza

i porównuje go z

. Je˙zeli

, to

Ja´s ma pewno´s´c, ˙ze

. Je˙zeli

, to Ja´s przyjmuje, ˙ze

, cho´c

background image

1.7. Zabezpieczanie danych

21

w tym przypadku nie mo˙ze mie´c pewno´sci. Zauwa˙zmy, ˙ze je˙zeli

i

ró˙zni¸a si¸e tylko na

jednym bicie, to

ma tylko jedn¸a jedynk¸e, wi¸ec:

Z drugiej strony:

z czego wynika:

Tak wi¸ec je˙zeli w przesyłanych danych zostanie zmieniony (przekłamany) jeden bit, b¸edzie
mo˙zna to wykry´c porównuj¸ac

z

.

Jest to bardzo stary system kontroli danych. Działa on dobrze, je˙zeli przekłamania s¸a

przypadkowe i prawdopodobie ´nstwo przekłamania dwóch bitów jest du˙zo mniejsze ni˙z
prawdopodobie ´nstwo przekłamania jednego bitu. Funkcja

jest jednak zbyt prosta,

aby zabezpieczy´c dane przed zło´sliwym przekłamywaniem. Wystarczy bowiem zawsze
przekłamywa´c parzyst¸a liczb¸e bitów, aby rzecz si¸e nie wykryła.

Poka˙zemy teraz bardziej zło˙zony sposób zabezpieczania danych przed przekłama-

niem. Dla dowolnego wektora

zdefiniujmy funkcj¸e:

Funkcja

oblicza parzysto´s´c liczby bitów wektora

, ale liczone s¸a tylko bity na

pozycjach wyznaczonych przez wektor

, inaczej —

to parzysto´s´c przekroju

i

.

Funkcja

jest addytywna:

Twierdzenie 1.4 Je˙zeli

oraz

, to dla dokładnie połowy

zachodzi

.

Dowód. Je˙zeli

, to istnieje wektor

z jedn¸a jedynk¸a, taki ˙ze:

Wektor

powinien mie´c jedynk¸e na pozycji, na której

te˙z ma jedynk¸e. Podobnie jak w

dowodzie twierdzenia 1.3, mo˙zemy teraz okre´sli´c funkcj¸e:

która „zlepia” wektory z

w pary. Ponadto mamy:

background image

22

Rozdział 1. Funkcje boolowskie

Z tego wynika, ˙ze:

a st¸ad — ˙ze dla ka˙zdej pary,

,

, dokładnie jedna z dwóch liczb

,

jest jedynk¸a.

Wykorzystuj¸ac funkcje

, mo˙zna zbudowa´c lepszy system zabezpieczania da-

nych. Na pocz¸atku Małgosia i Ja´s zaopatruj¸a si¸e w ci¸ag wylosowanych kluczy:

Klucze te powinny by´c trzymane w sekrecie. Je˙zeli teraz Małgosia chce przesła´c Jasio-
wi wiadomo´s´c

, to bierze kolejny klucz

z ci¸agu

i wysyła

razem z

podpisem

. Ja´s po odebraniu wiadomo´sci

razem z podpisem

(tak

jak poprzednio zakładamy, ˙ze

nie jest przekłamywane) porównuje

i

.

Je˙zeli

, to dla ka˙zdego

:

Je˙zeli za´s

, to

i dla połowy wektorów

mamy:

a wi¸ec dla połowy wektorów

mamy:

Tak wi¸ec z prawdopodobie ´nstwem jedna druga Ja´s wykryje, ˙ze

.

Aby zwi¸ekszy´c to prawdopodobie ´nstwo mo˙zna bra´c kilka kolejnych kluczy

.

Wtedy prawdopodobie ´nstwo, ˙ze w przypadku, gdy

, mamy

,

dla ka˙zdego

, jest równe

.

1.8

Zadania

1. Udowodnij lematy 1.1 i 1.2.

2. Udowodnij, ˙ze to˙zsamo´sci lematu 1.1 s¸a to˙zsamo´sciami w algebrze podzbiorów

zbioru

.

3. Które z poni˙zszych równo´sci s¸a to˙zsamo´sciami w algebrze

:

a) p+qr=q+pr,

b) (p+q)r=p+qr,

c) (r+q)r=r+qr,

d) (p+q)r=p(q+r)+qr.

4. Udowodnij, ˙ze wszystkie funkcje boolowskie dwóch zmiennych mo˙zna przedsta-

wi´c za pomoc¸a dwóch operatorów, koniunkcji i negacji (lub alternatywy i negacji).

background image

1.9. Problemy

23

5. Udowodnij, ˙ze wszystkie funkcje boolowskie dwóch zmiennych mo˙zna przedsta-

wi´c za pomoc¸a jednego operatora nand (lub nor).

6. Ile funkcji

spełnia równanie

7. Funkcja

przyjmuje warto´s´c 1 tylko dla wektorów

,

oraz

. Przedstaw funkcj¸e

w postaciach normalnych (dysjunkcyjnej i ko-

niunkcyjnej).

8. Narysuj sie´c boolowsk¸a dla funkcji z poprzedniego zadania.

9. Zaprojektuj sie´c odejmuj¸ac¸a od siebie dwie liczby w postaci dwójkowej.

10. Zaprojektuj sie´c, która mno˙zy dwie liczby dwubitowe.

11. Opisz schemat sumatora dla liczb

-bitowych, którego gł¸eboko´s´c jest proporcjo-

nalna do

.

12. Oblicz warto´s´c wyra˙ze´n

x or y, x and y, not x, x xor y

:

a) je˙zeli zmienne

x

i

y

s¸a typu shortint i przyjmuj¸a warto´sci:

x=6, y=-3

,

b) je˙zeli zmienne

x

i

y

s¸a typu byte i przyjmuj¸a warto´sci:

x=6, y=3

.

13. Dany jest wektor

. Dla jakich wektorów

,

?

14. Dane s¸a dwa wektory:

oraz

. Dla jakich wektorów

,

.

1.9

Problemy

1.9.1

System one-pad

System „one-pad” mo˙ze by´c stosowany do ci¸agów liter alfabetu łaci ´nskiego. Wtedy uto˙z-
samiamy litery z liczbami od 0 do 25 i zamiast operacji

stosujemy:

czyli reszt¸e z dzielenia

przez 26. Jak wygl¸ada wtedy operacja deszyfrowania?

Poka˙z, ˙ze system one-pad z literami jest równie bezpieczny jak system z dwoma cyframi
0 i 1.

1.9.2

Zabezpieczanie

Zaproponuj zmiany w systemie podpisów opisanym pod koniec rozdziału, tak aby praw-
dopodobie ´nstwo wykrycia bł¸edu zwi¸ekszy´c do 0.75.

background image

24

Rozdział 1. Funkcje boolowskie

1.9.3

Posta´c normalna

Udowodnij, ˙ze dla ka˙zdej funkcji funkcji

istnieje dokładnie jeden wektor:

taki ˙ze:


Wyszukiwarka

Podobne podstrony:
Matematyka dyskretna 2002 07 Rekurencja
Matematyka dyskretna 2002 04 Rachunek prawdopodobieństwa
Matematyka dyskretna 2002 01 Oznaczenia
Matematyka dyskretna 2002 11 Poprawność programów
Matematyka dyskretna 2002 10 Grafy skierowane
Matematyka dyskretna 2002 04 Rachunek prawdopodobieństwa
Matematyka dyskretna 2002 07 Rekurencja
Matematyka dyskretna 2002 08 Struktury danych
Matematyka dyskretna 2002 01 Oznaczenia
Matematyka dyskretna 2002 03 Kombinatoryka
Matematyka dyskretna 2002 11 Poprawność programów
Matematyka dyskretna 2002 02 Arytmetyka
Matematyka dyskretna 2002 06 Teoria liczb
Wykład z dnia 10.05.2008, Zajęcia, II semestr 2008, Matematyka dyskretna i logika
Z Ćwiczenia 11.05.2008, Zajęcia, II semestr 2008, Matematyka dyskretna i logika
md - egzamin 13 02 05 r, wisisz, wydzial informatyki, studia zaoczne inzynierskie, matematyka dyskre
matematyka dyskretna w 2 id 283 Nieznany
Denisjuk A Matematyka Dyskretna

więcej podobnych podstron