Matematiske foruds tninger 1 Udsagn
Matematiske foruds tninger 1 Udsagn
Matematiske foruds tninger 1 Udsagn
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Matematiske</strong> <strong>foruds</strong> <strong>tninger</strong><br />
Vi begynder med at repetere nogle matematiske <strong>foruds</strong> <strong>tninger</strong> | alle knyttet til begreberne<br />
udsagn og m ngder. Det meste er formentligt velkendt, men de kvanti cerede<br />
udtryk er nok nyt stof for de este.<br />
Dern st behandles induktionsbeviser, som spiller en stor rolle i de f lgende kapitler.<br />
Til sidst introduceres m ngdekonstruktionerne potensm ngde og m ngdeprodukt, som<br />
nok er ukendte for de este, og vi ser pa, hvorledes datatypen Set kan implementeres.<br />
1 <strong>Udsagn</strong><br />
Lad os kort repetere, hvad et udsagn er:<br />
De nition 1<br />
Et udsagn er en s tning, som enten er sand eller falsk.<br />
Eksempel<br />
Betragt f lgende s <strong>tninger</strong>:<br />
a) Jorden er en planet<br />
b) Manen er lavet af gr n ost<br />
c) Hvad er klokken?<br />
d) Din l rer er klog.<br />
Af disse er kun a) og b) udsagn | a) er et sandt udsagn, mens b) er falsk. c) er ikke et<br />
udsagn, men derimod et sp rgsmal. d) er heller ikke etudsagn (og da slet ikke etfalsk<br />
udsagn!), da begrebet 'klog' ikke erviderevelde neret.<br />
Som bekendt kan man opbygge nye udsagn ud fra gamle. Normalt arbejder man med<br />
f lgende operationer:<br />
^ konjunktion eller 'og'<br />
_ disjunktion eller 'eller'<br />
: negation eller 'ikke'<br />
) implikation eller 'medf rer'<br />
, biimplikation eller 'ensbetydende'.<br />
Sandhedsv rdien af et sammensat udsagn afh nger af de enkelte deludsagn efter f lgende<br />
sandhedstabel:<br />
A B A ^ B A _ B :A :B A ) B A , B<br />
S S S S F F S S<br />
S F F S F S F F<br />
F S F S S F S F<br />
F F F F S S S S<br />
1
hvor S betyder 'sand' og F 'falsk'.<br />
Den eneste operation, som kr ver en n rmere forklaring, er implikationen:<br />
En far siger til sin s n: "Hvis du ikke spiser din spinat, sa slar jeg dig." Dette kan skrives<br />
som udsagnet A ) B, hvor udsagnene A og B er henholdsvis "S nnen spiser ikke sin<br />
spinat" og "Faderen slar s nnen".<br />
Lad os unders ge de re mulige tilf lde:<br />
Hvis bade A og B er sande, sa spiser s nnen ikke sin spinat, og faderen slar ham. Faderen<br />
talte altsa sandt, og det sammensatte udsagn A ) B er sandt.<br />
Hvis A falsk og B er sand, sa spiser s nnen sin spinat, men faderen slar ham alligevel.<br />
Det virker maske uretf rdigt, indtil man husker, at s nnen kunne blive slaet af andre<br />
arsager |maske spiste han ikke sin rosenkal.<br />
Hvis bade A og B er falske, sa spiser s nnen sin spinat, og faderen slar ham ikke. Faderen<br />
talte ogsa sandti dette tilf lde.<br />
Endelig hvis A er sand, og B falsk, sa spiser s nnen ikke sin spinat, men slipper alligevel<br />
for at fa bank. Faderen har altsa ikke staet ved sin trussel, og udsagnet A ) B er falsk.<br />
Der g lder en lang r kke formler for regning med disse udsagn. Vi vil ikke skrive dem<br />
alle op, men kun n jes med et par enkelte, nemlig de Morgans love:<br />
S tning 2<br />
Lad A og B v re udsagn. Sa g lder:<br />
:(A ^ B) =:A _:B<br />
og tilsvarende<br />
:(A _ B) =:A ^:B<br />
Bevis<br />
Vi n jes med at bevise den f rste formel. Ideen er at lave en sandhedstabel, hvori<br />
vi opstiller alle muligheder for sandhedsv rdierne af A og B, og dern st beregner<br />
sandhedsv rdierne for venstre- og h jresiden af formlen. Hvis disse altid er ens,<br />
har vi bevist formlen. Undervejs kan man i tabellen medtage forskellige mellemregninger:<br />
A B A ^ B :(A ^ B) :A :B :A _:B<br />
S S S F F F F<br />
S F F S F S S<br />
F S F S S F S<br />
F F F S S S S<br />
Vi ser, at de to s jler i tabellen for udsagnene :(A ^ B) og :A _:B er ens, og<br />
dette beviser formlen.<br />
Den anden formel kan bevises tilsvarende.<br />
2
Et abent udsagn er et udsagn, hvori der indgar en eller ere ubekendte variabler. Et<br />
eksempel pa etabent udsagn er x>3, hvori vi har variablen x.<br />
Til et abent udsagn h rer en grundm ngde, som er m ngden af de v rdier, hvori x kan<br />
ligge, og en l sningsm ngde, som bestar af de elementer fra grundm ngden, som g r<br />
udsagnet sandt.<br />
Eksempel<br />
Betragt f lgende abne udsagn: x 2 < 30. Som regel vil grundm ngde fremga af problemstillingen,<br />
men her v lger vi den selv til at v re m ngden af alle naturlige tal,<br />
f::: �;3� ;2� ;1� 0� 1� 2� 3� 4�:::g.<br />
L sningsm ngden ses at v re f;5� ;4� ;3� ;2� ;1� 0� 1� 2� 3� 4� 5g.<br />
Opgave 1.1 Opskriv en sandhedstabel for udsagnet<br />
(A _ B) ) ((A ^ B) _ B)<br />
Opgave 1.2 Bevis den anden formel i s tning 2.<br />
Opgave 1.3 Lad A, B og C betegne udsagnene "Det regner i dag", "Solen skinner i<br />
dag"og"Deteretgodtvejr i dag".<br />
Skriv danske s <strong>tninger</strong>, der svarer til nedenstaende udsagn:<br />
a) A _ B b) :A c) :A ^:B<br />
d) B ) C e) A , B f) :(A , B)<br />
Opgave 1.4 Skriv udsagn, som svarer til nedenstaende danske s <strong>tninger</strong>. De ner selv<br />
nogle grundudsagn:<br />
a) Hvis jeg drikker ka e, sa far jeg ondt i maven.<br />
b) Hvis jeg farondtimaven, sa har jeg drukket ka e.<br />
c) Jeg har ikke ondtimaven.<br />
d) Jeg kan godt lide at drikke bade ka e og te.<br />
e) Hvis jeg drikker te, sa far jeg ikke ondt i maven.<br />
f) Det er ukorrekt at pasta, at tedrikning giver mig ondt i maven.<br />
3
2 M ngder<br />
Et af de mest fundamentale begreber indenfor matematikken er m ngden. Da vi i forbindelse<br />
med adskillige algoritmer far brug for m ngder, repeterer vi her de vigtigste<br />
begreber indenfor m ngdel ren:<br />
De nition 3<br />
En m ngde er en samling af objekter, kaldet elementer.<br />
Hvis objektet x er element i m ngden A, sa skriver vi x 2 A.<br />
Hvis x ikke er element iA, sa skrives x =2 A.<br />
Eksempel<br />
Man angiver ofte en m ngde pa listeform, dvs. ved en opremsning af elementerne:<br />
A = f1� 2� 3� 4� 5� 6� 7� 8� 9g<br />
Her g lder udsagnene 3 2 A, 0=2 A og 9 2 A.<br />
Nogle vigtige talm ngder er<br />
De naturlige tal: N = f1� 2� 3� 4� 5�:::g<br />
N 0 = f0� 1� 2� 3� 4� 5�:::g<br />
De hele tal: Z = f:::; 3� ;2� ;1� 0� 1� 2� 3�:::g<br />
De rationale tal: Q = f:::; 3 2<br />
22<br />
� ; � ;1� 0� 2 3 7 :::g<br />
De reelle tal: R = f;2� 2<br />
3� p 2� :::g<br />
Symbolerne for disse talm ngder stammer oprindeligt fra tysk: die naturliche Zahlen,<br />
die Zahlen, die Quotienten og die reellen Zahlen.<br />
En anden made at angive m ngder pa er vha. den sakaldte m ngdebygger-notation:<br />
Eksempel<br />
M ngden B = f3� 4� 5� 6� 7g kan opskrives som<br />
B = fx 2 N j x 3 ^ x 7g<br />
og l ses som:<br />
B bestar af de naturlige tal x, som opfylder udsagnet x 3 _ x 7.<br />
Nogen gange misbruges m ngdebygger-notationen, f.eks. som i<br />
fx j x 3 ^ x 7g<br />
hvor vi ikke angiver grundm ngden. Dette er lidt farligt, for er x her et naturligt,<br />
et rationelt eller et reelt tal? Derfor: Angiv altid grundm ngden, med mindre det er<br />
indlysende ud fra sammenh ngen, hvad den er.<br />
Indenfor datalogien far vi ofte brug for m ngden af hele tal mellem to givne tal:<br />
4
De nition 4<br />
Lad a og b v re hele tal. Sa de nerer vi m ngden [a::b] som<br />
[a::b] =fx 2 Z j a x bg<br />
Tilsvarende har vi<br />
[a::] =fx 2 Z j a xg<br />
[::b] =fx 2 Z j x bg<br />
Et vigtigt princip indenfor m ngdel ren er, at en m ngde er bestemt ved sine elementer.<br />
Dette betyder, at enhver operation mellem m ngder kan de neres vha. m ngdernes<br />
elementer.<br />
For at undga komplikationer antager vi fra nu af, at alle mulige elementer i vores m ngder<br />
ligger i en stor, underliggende m ngde, U | ofte kaldet universet, den universelle<br />
m ngde eller grundm ngden.<br />
De nition 5<br />
To m ngder A og B er ens, skrevet A = B, hvis og kun hvis der for alle elementer<br />
x i grundm ngden U g lder, at<br />
x 2 A , x 2 B<br />
M ngden A er en delm ngde af m ngden B,hvis og kun hvis der for alle elementer<br />
x i U g lder, at<br />
x 2 A ) x 2 B<br />
Vi skriver A B.<br />
Bem rk, at man ofte anvender symbolet i stedet for . Omvendt anvendes ogsa<br />
ofte som betegnende gte delm ngde:<br />
A B , (A B ^ A 6= B)<br />
Eksempel<br />
Talm ngderne fra f r opfylder<br />
se gur 1.<br />
N N 0 Z Q R<br />
En prominent m ngde er den tomme m ngde, � = fg. Den tomme m ngde er en<br />
delm ngde af enhver m ngde.<br />
Vi kan nu de nere forskellige operationer pa m ngder:<br />
5
Figur 1<br />
De nition 6<br />
Lad A og B v re to m ngder. Vi de nerer da f lgende m ngder<br />
F llesm ngden mellem A og B: A \ B = fx 2 U j x 2 A ^ x 2 Bg.<br />
Foreningsm ngden mellem A og B: A [ B = fx 2 U j x 2 A _ x 2 Bg.<br />
Di erensen mellem A og B: A ; B = fx 2 U j x 2 A ^ x =2 Bg.<br />
Komplement rm ngden til A: A = U ; A = fx 2 U j x =2 Ag<br />
Man kan illustrere disse begreber vha. Venn-diagrammer |se gur 2.<br />
Bem rk, at operationerne \, [ og komplement rm ngde n je svarer til de logiske<br />
operationer ^, _ og :.<br />
Eksempel<br />
Betragt universet U = f0� 1� 2� 3� 4� 5� 6� 7� 8� 9g og m ngderne A og B bestemt ved A =<br />
f2� 4� 6� 7� 8g og B = f1� 2� 3� 4� 9g. Sa fas<br />
A \ B = f2� 4g A [ B = f1� 2� 3� 4� 6� 7� 8� 9g<br />
A ; B = f6� 7� 8g B ; A = f1� 3� 9g<br />
A = f0� 1� 3� 5� 9g B = f0� 5� 6� 7� 8g<br />
| se gur 3<br />
Endelig en sidste de nition:<br />
De nition 7<br />
To m ngder, A og B, kaldes disjunkte, hvis A \ B = �.<br />
6
Figur 2<br />
Der g lder en hel r kke regneregler for m ngdeoperationerne. Vi vil kun omtale m ngdeversionen<br />
af de Morgans regler:<br />
S tning 8<br />
a) A [ B = A \ B c) A \ B = A [ B<br />
Bevis<br />
Vi beviser kun regel a:<br />
x 2 A [ B , :(x 2 A [ B) , :((x 2 A) _ (x 2 B)) ,<br />
:(x 2 A) ^:(x 2 B) , x 2 A ^ x 2 B , x 2 A \ B<br />
Bem rk, at vi her brugte de Morgans regel<br />
:(x _ y) ,:x ^:y<br />
7
fra logikken.<br />
Figur 3<br />
Opgave 2.1 Betragt universet U = f0� 1� 2� 3� 4� 5� 6� 7� 8� 9g med delm ngderne A =<br />
f1� 2� 7g, B = fx 2 U j x>6g og C = f3� 5� 8g.<br />
a) Opskriv B pa listeform.<br />
b) Lav etVenn-diagram over U, A, B og C, som pa gur 3.<br />
c) Bestem A [ B, A \ C, A ; C, A ; B, B ; A, C.<br />
d) Er A og C disjunkte.<br />
Opgave 2.2 Den symmetriske m ngdedi erens, A B de neres som<br />
A B = fx 2 U j x 2 A [ B ^ x =2 A \ Bg<br />
a) Lav etVenn-diagram som pa gur 2, der viser A B.<br />
b) Vis, at A B =(A ; B) [ (B ; A)<br />
c) Find formler for A A og A � og bevis disse.<br />
d) Bevis, at A \ (B C) =(A \ B) (A \ C)<br />
e) Hvad skal der g lde for A og B, for at A B = A [ B?<br />
f) Hvilken logisk operation svarer til?<br />
Opgave 2.3 Find en m ngde, som er disjunkt med sig selv. (Der ndes faktisk en!)<br />
Opgave 2.4 Kardinaliteten af en m ngde er de neret som antallet af elementer i m ngden.<br />
(Vi <strong>foruds</strong> tter, at m ngden ikke er uendelig stor). Man anvender ofte notationen<br />
jAj for kardinaliteten af m ngden A.<br />
a) Hvad er j�j?<br />
b) Vis, at jA [ Bj = jAj + jBj;jA \ Bj. BrugerVenn-diagram.<br />
c) Hvornar g lder, at jA [ Bj = jAj + jBj ?<br />
8
3 Kvanti cerede udtryk<br />
Vi vil i det f lgende ofte fa brug for kvanti cerede udtryk. Der ndes adskillige af disse,<br />
men vi vil kun omtale alkvantoren, eksistenskvantoren og summationssymbolet.<br />
Lad os betragte det abne udsagn x 2 0 med grundm ngde N. Dette udsagn er jo sandt<br />
for alle naturlige tal x, ogvikan derfor sige, at for alle naturlige tal x g lder, at x 2 0.<br />
Denne s tning formaliseres til det kvanti cerede udsagn:<br />
8x 2 N : x 0<br />
Vi har her vores f rste eksempel pa enalkvantor.<br />
Generelt opbygges en alkvantor pa f lgende made:<br />
8x 2 A : p(x)<br />
hvor A er en m ngde og p(x) er et abent udsagn i variablen x. Dette udsagn er sandt,<br />
netop nar p(x) er sandt for alle x 2 A.<br />
Variablen x kaldes ofte for en bundet variabel, idet den ikke kan antage nogen v rdi<br />
'udenfor' udsagnet.<br />
Eksempel<br />
<strong>Udsagn</strong>et 8x 2 N : x 6= x + 1 er sandt, da alle tal opfylder udsagnet x 6= x +1.<br />
<strong>Udsagn</strong>et 8x 2 [1::10] : x > 7 er falsk, da der jo er tal i m ngden [1::10], som ikke<br />
opfylder udsagnet x>7, f.eks. tallet 1.<br />
Eksistenskvantoren er en anden logisk kvantor. Lad os introducere denne ved et par<br />
eksempler:<br />
Eksempel<br />
<strong>Udsagn</strong>et "Der ndes et naturligt tal x, som opfylder, at x 2 =4"kan skrives som<br />
9x 2 N : x 2 =4<br />
Der er intet krav om, at der kun skal ndes netop et x, som opfylder betingelsen |<br />
saledes er f lgende kvanti cerede udsagn sandt:<br />
9x 2 Z : x>5<br />
Den sidste type kvanti cerede udtryk, vi skal besk ftige os med, er summationer. Her<br />
er hele det kvanti cerede udtryk ikke et udsagn, men derimod et tal:<br />
Betragt udtrykket<br />
5X<br />
i=1<br />
i 2<br />
9
Dette tal beregnes som f lger: For ethvert tal i mellem 1 og 5 (inklusive) beregnes tallet<br />
i 2 . Derefter adderes alle disse tal:<br />
10X<br />
i 2 =1 2 +2 2 +3 2 +4 2 +5 2 =1+4+9+16+25=55<br />
i=1<br />
Lidt handfast kan man opfatte en summation som en for-l kke:<br />
sum = 0�<br />
for ( int i =1, i 0<br />
e) 9x 2 [;10:: ; 2] : x 2 =25<br />
f) 8x 2 Z : x 2 =(;x) 2<br />
g) 9x 2 N : x =2x +1<br />
h) 9x 2 R : x =2x +1<br />
i) 8x 2 Z : :(x =2x +1)<br />
Opgave 3.2 Udtryk nedenstaende s <strong>tninger</strong> vha. kvantorer:<br />
a) For alle naturlige tal x g lder, at x 6= x +1.<br />
b) Der ndes et tal, som er st rre end 8.<br />
c) For alle naturlige tal x kan vi ndet et naturligt tal y, saledes at x 2 = y.<br />
d) Der ndes ingen naturlige tal x opfyldende, at x 2 =5.<br />
e) Alle naturlige tal er rationale.<br />
Opgave 3.3 Beregn f lgende summer<br />
a)<br />
10X<br />
i=1<br />
i b)<br />
10X<br />
x=1<br />
x c)<br />
3X<br />
i=1<br />
i ; 1 d)<br />
10<br />
X10<br />
i 2<br />
i=1<br />
e)<br />
10X<br />
i=1<br />
5 f)<br />
8X<br />
i=1<br />
x
4 Induktionsbeviser<br />
En indenfor datalogien meget anvendt bevisteknik er induktionsbeviset. Lad os illustrere<br />
denne bevisform med et eksempel:<br />
nX<br />
Antag, at vi skal bevise formlen<br />
i=1<br />
i =<br />
n(n +1)<br />
2<br />
for alle naturlige tal n.<br />
En naturlig strategi er at bevise formlen for n =1,n =2,n =3,... | dette kan g res<br />
ved simpel udregning:<br />
1X<br />
2X<br />
i=1<br />
3X<br />
i=1<br />
i=1<br />
i =1=<br />
1 2<br />
2<br />
i =1+2=3=<br />
2 3<br />
2<br />
i =1+2+3=6=<br />
3 4<br />
2<br />
men denne virker ikke i praksis, da vi skal bevise uendeligt mange specialtilf lde. I<br />
stedet anvender vi induktion:<br />
Vi beviser f rst formlen for den mindste v rdi af n, dvs. n = 1. Igen kan dette g res<br />
ved simpel udregning:<br />
1X<br />
i=1<br />
i =1=<br />
1 2<br />
2<br />
Dern st beviser vi, at hvis formlen g lder for det naturlige tal n, sa g lder den ogsa<br />
for n +1.Saviantager altsa, at formlen<br />
nX<br />
i=1<br />
i =<br />
n(n +1)<br />
2<br />
g lder, og skal ud fra denne bevise, at<br />
n+1 X<br />
i=1<br />
i =<br />
(n + 1)(n +2)<br />
2<br />
g lder. (Bem rk, at dette er den oprindelige formel, hvor vi har erstattet alle forekomster<br />
af n med n +1.)<br />
Dette g res som f lger:<br />
n+1 X<br />
i=1<br />
i =<br />
nX<br />
i=1<br />
i +(n +1)=<br />
n(n +1)<br />
2<br />
+(n +1)= (n2 + n)<br />
2<br />
11<br />
+ 2n +2<br />
2<br />
=
n 2 + n +2n +1<br />
2<br />
= n2 +3n +1<br />
2<br />
= (n + 1)(n +2)<br />
2<br />
(Den sidste ligning kan lettest ses ved at regne bagl ns.)<br />
Vi har nu bevist formlen for alle naturlige tal n. Hvorfor nu det? Jo, antag, at vi skal<br />
argumentere for, at formlen er korrekt for f.eks. n = 7. Men vi har direkte bevist, at<br />
formlen er sand for n = 1, og i anden del af beviset argumenterede vi for, at hvis formlen<br />
gjaldt for n, sa gjaldt den ogsa forn + 1. Dvs. formlen g lder for n = 2, og dermed for<br />
n =3,og dermed for n =4,og dermed for n =5,og dermed for n =6,og dermed for<br />
n =7.<br />
Pa tilsvarende made kan det ses, at formlen g lder for alle andre naturlige tal.<br />
Lad os formalisere denne bevisteknik. Vi nsker at bevise, at det abne udsagn P (n) er<br />
sandt for alle v rdier af n. Dette g res i to trin: Induktionsstarten, hvor vi beviser P (1),<br />
og induktionsskridtet, hvor vi beviser implikationen P (n) ) P (n +1).<br />
S tning 9<br />
Hvis udsagnene P (1) og P (n) ) P (n + 1) g lder, sa g lder<br />
8n 2 N : P (n)<br />
Induktionsbeviser ndes i ere varianter, saledes beh ver man ikke at starte med n =1,<br />
men kan starte med en vilkarlig v rdi af n (udsagnet g lder dog kun i dette tilf lde<br />
for v rdier af n, som er mindst lig med startv rdien). I en anden variant antager man<br />
i induktionsskridtet, at P (j) g lder for alle j n.<br />
Ofte er det trivielt at gennemf re induktionsstarten, mens induktionsskridtet kr ver<br />
normalt meget mere snilde.<br />
Eksempel<br />
Lad os bevise, at for ethvert helt tal n gar 3 op i n 3 +2n.<br />
Vi nedskriver f rst det udsagn, der skal bevises:<br />
P (n) : 3gar op i n 3 +2n<br />
Induktionsstarten er nem: For n =1ern 3 +2n =3,og3gar op i 3.<br />
I selve induktionsskridtet nedskriver f rst, hvad vi kan antage, og dern st, hvad vi skal<br />
bevise:<br />
Antagelse: P (n) : 3gar op i n 3 +2n<br />
Skal bevise: P (n +1): 3gar op i (n +1) 3 +2(n +1)<br />
Vores eneste mulighed for at komme videre er at reducere udtrykket (n +1) 3 +2(n +1)<br />
og habe, at n 3 +2n dukker op:<br />
(n +1) 3 +2(n +1)=n 3 +3n 3 +3n +1+2n +1=(n 3 +2n)+3n 2 +3n +1<br />
Men if lge induktionshypotesen P (n) gar3opin 3 +2n, og3gar ogsa op i de andre led<br />
3n 3 ,3n og 3. Vi kan derfor konkludere, at 3 gar op i (n +1) 3 +2(n + 1), og vi har altsa<br />
bevist implikationen P (n) ) P (n +1).<br />
Opgave 4.1 Bevis, at 1 + 3 + :::+(2n ; 1) = n 2 .<br />
12
Opgave 4.2 Vis, at for alle reelle tal a 6= 1 g lder:<br />
X<br />
i=0<br />
n = an+1 ; 1<br />
a ; 1<br />
Hvordan ser formlen ud for a =1?<br />
Opgave 4.3 Lad funktionen f v re de neret ved f lgende:<br />
a) f(1) = 1<br />
b) For n>1erf(n) =f(n ; 1) + n<br />
Beregn f(1)�f(2)�f(3)�f(4) og f(5).<br />
Bevis ved induktion, at f(n) =n(n +1)=2.<br />
Opgave 4.4 Lad funktionen f v re de neret ved f lgende:<br />
a) f(1) = 1<br />
b) For n>1erf(n) =2 f(n ; 1) + 1<br />
Beregn f(1)�f(2)�f(3)�f(4) og f(5).<br />
Bevis ved induktion, at f(n) =2 n ; 1.<br />
13
5 Flere m ngdeoperationer<br />
Vi skal nu se, hvorledes man kan skabe nye m ngder ud fra gamle:<br />
De nition 10<br />
Lad A og B v re m ngder. Produktm ngden A B de neres som m ngden af<br />
ordnede par:<br />
A B = f(a� b) j a 2 A ^ b 2 Bg<br />
Naturligvis kan man ogsa tageproduktet af tre eller ere m ngder:<br />
A B C = f(a� b� c) j a 2 A ^ b 2 B ^ c 2 Cg<br />
Produktet af en m ngde med sig selv opskrives ofte vha. potensnotationen:<br />
A 2 = A A og A 3 = A A A<br />
Eksempel<br />
Fra geometrien kendes tallinien R, planen R 2 og rummet R 3 .<br />
Fra relativitetsteorien kendes(?) den re-dimensionale rum-tid R 4<br />
Elementerne i produktm ngderne A n | de sakaldte n-tupler | spiller en stor rolle<br />
indenfor programmering | her kaldes et sadant element for et array. Lad os se pa<br />
sammenh ngen:<br />
For et naturligt tal n de nerer vi m ngden [n] =f0� 1� 2�::: �n; 1g.<br />
Et n-tupel (a 0�a 1�a 2�:::a n;1) kan da opfattes som den funktion [n] ! A, som afbilder<br />
tallet i 2 [n] i elementet a i.<br />
Faktisk kan vi opfatte m ngden A n som m ngden af funktioner [n] ! A.<br />
En anden interessant konstruktion er potensm ngden for en m ngde.<br />
De nition 11<br />
Potensm ngden, P(A), af m ngden A, er m ngden af samtlige delm ngder af A.<br />
Man kan ogsa komme ud for notationen 2 A for potensm ngden af A.<br />
Eksempel<br />
Lad A = fx� y� zg. SaerP(A) m ngden bestaende af de 8 elementer:<br />
�� fag� fbg� fcg� fa� bg� fa� cg� fb� cg� fa� b� cg<br />
Kan man lide m ngdeklammer, sa kan vi skrive<br />
P(A) =f�� fag� fbg� fcg� fa� bg� fa� cg� fb� cg� fa� b� cgg<br />
14
Igen kan vi identi cere P(A) med en m ngde af funktioner, nemlig funktionerne A ! [2]:<br />
Til en delm ngde B af A kan vi tildele den karakteristiske funktion B : A ! [2]. Denne<br />
funktion har forskriften:<br />
B(x) =<br />
1 x 2 B<br />
0 x =2 B<br />
Omvendt, har vi en afbildning f : A ! [2], sa kan vi let se, at f faktisk er den karakteristiske<br />
funktion for delm ngden fx 2 A j f(x) =1g<br />
Endelig b r n vnes den disjunkte forening:<br />
De nition 12<br />
Den disjunkte forening af m ngdene A og B er<br />
A q B =(A f1g) [ (B f2g)<br />
Det der sker her, er at vi 'markerer' elementerne i A med et 1-tal og elementerne i B med<br />
et 2-tal. Nar vi derefter tager foreningsm ngden, sa sikrer vi os, at eventuelle elementer<br />
i A \ B kommer med to gange.<br />
Opgave 5.1 Angiv et element ihver af m ngderne nedenfor:<br />
a) N Z R<br />
b) P(N N)<br />
c) P(�) N<br />
d) (N N) ; ((N ;f0� 1g) N)<br />
e) P(P(P(�)))<br />
Opgave 5.2 Vis, at for en m ngde A g lder A �= � A = �.<br />
Opgave 5.3 Bevis nedenstaende regler:<br />
a) A (B \ C) =(A B) \ (A C)<br />
b) (A \ B) C) =(A C) \ (B C)<br />
c) A (B [ C) =(A B) [ (A C)<br />
d) (A [ B) C) =(A C) [ (B C)<br />
Opgave 5.4 Opskriv P(�) pa listeform.<br />
Opgave 5.5 Bevis nedenstaende regler, hvor A og B er vilkarlige m ngder:<br />
a) P(A) 6= �<br />
b) A B ,P(A) P(B)<br />
c) P(A \ B) =P(A) \P(B)<br />
d) P(A) [P(B) P(A [ B)<br />
15
6 Implementering af m ngder<br />
Vi skal nusepa, hvorledes man kan implementere datatypen Set. Lad os f rst speci cere<br />
de metoder, vi nsker i Set. Viantager, at vi har en underliggende datatype Element,<br />
som ikke er konkretiseret pa nuv rende tidspunkt.<br />
void insertElement (Element x)<br />
void deleteElement(Element x)<br />
boolean isElementIn (Element x)<br />
Set union ( Set s)�<br />
Set intersection ( Set s)�<br />
Element [] toArray ()�<br />
De este af disse metoder er selvforklarende� men metoden toArray returnerer et array<br />
bestaende af m ngdens elementer. (I praksis ville man bruge mere avancerede mader at<br />
fa fat pa m ngdens elementer pa | f.eks. en iterator. )<br />
Den f rste made at implementere Set pa, kan kun bruges, hvis vores m ngder altid er<br />
delm ngder af en fast grundm ngde U: Viordnerelementerne i U ienfastr kkef lge,<br />
og repr senterer en delm ngde af U som et array af jUj booleans. Hvis elementet x<br />
er indeholdt i delm ngden, sa lader vi den tilsvarende position i arrayet v re true, og<br />
ellers er positionen false. Vi har i virkeligheden opskrevet den karakteristiske funktion<br />
for arrayet.<br />
Denne repr sentation optager pladsen O(jUj) for hver delm ngde, men hvis U ikke ret<br />
stor, sa er dette ganske glimrende: De este compilere vil pakke et array af booleans<br />
sammen, saledes at der er 8 booleans (bits) i hver byte i hukommelsen. Har U 1000<br />
elementer, sa vil en delm ngde af U kunne repr senteres ved 125 bytes.<br />
Metoderne insertElement, deleteElement og isElementIn vil kunne udf res i konstant<br />
tid, da der her bare er tale om simple a sninger eller opdateringer i arrayet.<br />
union og intersection har tidskompleksiteten O(jUj), men er alligevel meget hurtige |<br />
union kan implementeres som en bitvis or, og intersection som en bitvis and.<br />
toArray har ogsa kompleksiteten O(jUj), hvilket ikke ersa godt, is r for m ngder med<br />
meget far elementer i forhold til U.<br />
Et grundm ngden U meget stor | eller maske uendelig | sa b r man anvende en<br />
liste-baseret implementation i stedet: Hver enkelt m ngde repr senteres som en liste af<br />
sine elementer, hvilket betyder, at pladsbehovet for at repr sentere m ngden A bliver<br />
O(jAj).<br />
De forskellige operationer kan implementeres mere eller mindre smart. Noget af det mest<br />
e ektive er at opbevare elementerne i A i sorteret r kkef lge | dette kr ver dog, at<br />
datatypen Element kan sorteres.<br />
Anvendes bin r s gning, sakan metoderne isElementIn, insertElement og deleteElement<br />
udf res i tiden O(log(jAj). union og intersection kan udf res i line r tid ved at l be de to<br />
m ngde-lister igennem samtidigt | lidt som merge-metoden i MergeSort-algoritmen.<br />
toArray kan ogsa udf res i line r tid.<br />
Opgave 6.1 Implementer en m ngde af heltal i intervallet [0::1000] ved hj lp af begge<br />
metoder.<br />
16
Facitliste<br />
Opgave 1.1<br />
Opgave 1.2<br />
Opgave 1.3<br />
A B A _ B A ^ B (A ^ B) _ B A _ B ) (A ^ B) _ B<br />
S S S S S S<br />
S F S F F F<br />
F S S F S S<br />
F F F F F S<br />
A B A _ B :(A _ B) :A :B :A ^:B<br />
S S S F F F F<br />
S F S F F S F<br />
F S S F S F F<br />
F F F S S S S<br />
a) Det regner i dag, eller solen skinner i dag.<br />
b) Det regner ikke idag<br />
c) Det regner ikke idag,og solen skinner heller ikke i dag.<br />
d) Hvis solen skinner i dag, sa er det godt vejr i dag.<br />
e) Det regner i dag, hvis og kun hvis solen skinner idag.<br />
f) Det er ukorrekt at pasta, at det regner i dag, hvis og kun hvis solen skinner i dag.<br />
Opgave 1.4<br />
A = "Jeg drikker ka e", B = "Jeg drikker te", C = "Jeg har ondt i maven"<br />
a) A ) C<br />
b) A ) C<br />
c) :A<br />
d) A ^ B<br />
e) B ):C<br />
f) :(B ) C)<br />
Opgave 2.1<br />
a) B = f7� 8� 9g<br />
c) A[B = f1� 2� 7� 8� 9g, A\C = �, A;C = f1� 2� 7g, A;B = f1� 2g, B;A = f8� 9g,<br />
C = f0� 1� 2� 4� 6� 7� 9g<br />
d) Ja<br />
17
c) A A = �, A � = A<br />
Opgave 2.2 e) A B = A [ B , A \ B = �<br />
Opgave 2.3<br />
f) xor<br />
Den tomme m ngde, �, erdisjunkt med sig selv.<br />
Opgave 2.4<br />
a) 0 c) A \ B = �<br />
Opgave 3.1<br />
a) F b) S c) F d) F e) S f) S g) F h) S i) F<br />
Opgave 3.2<br />
a) 8x 2 N : x 6= x +1<br />
b) 9x 2 R : x>8<br />
c) 8x 2 N9y 2 N : x 2 = y<br />
d) :(9x 2 Nx 2 =5)eller 8x 2 N : x 2 6=5<br />
e) 8x 2 N : x 2 Q<br />
Opgave 3.3<br />
a) 55 b) 55 c) 5 d) 385 e) 50 f) 8x<br />
Opgave 5.4<br />
f�� f�gg<br />
18