Algoritmer kap 5 Flashcards

1
Q

a) Definiera begreppet algoritm (algorithm)!

A

En algoritm är en ordnad mängd otvetydiga och exekverbara steg som definierar en process som
avslutas

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

b) På vilka två grundläggande olika sätt kan man åstadkomma repetition i en algoritm?

A

Rekursion och iteration.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

När är sekventiell sökning att föredra framför binärsökning?

A

Sekventiell sökning är att föredra för mycket korta listor och när data inte är sorterat eftersom
binärsökning kräver sorterad data.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Beskriv hur binärsökning går till! Vilka krav finns på den data som man söker i?

A

Binärsökning kräver att den data man söker i är sorterad. Vid varje repetition i sökningen halveras
antalet poster. För varje repetition så undersök posten i mittenpositionen: om posten som eftersöks
ordnas före posten i mittenpositionen så fortsätt sökningen i första halvan; om posten som eftersöks
ordnas efter posten i mittenpositionen så fortsätt sökningen i andra halvan. Fortsätt på liknande sätt
och avsluta sökningen när posten antingen hittats eller den kvarvarande halvan är tom.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Vilka metoder kan användas för att verifiera ett programs korrekthet?

A

Statisk verifiering (static verification) eller kodanalys (code analysis), och testning (testing).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Ett program kan ge upphov till tre olika typer av fel: syntaktiska fel (syntactic errors), exekveringsfel
(runtime errors) och logiska fel (logic errors). Vilken typ av fel är mest allvarliga och varför?

A

Logiska fel, eftersom de inte ger upphov till något felmeddelande.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

c) Vilket typ av fel är minst allvarliga och varför?

A

Syntaktiska fel, eftersom de upptäcks redan av kompilatorn.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Antag att vi har två algoritmer Algoritm1 och Algoritm2 för att utföra en beräkning, och vi har
följande exekveringstider (i någon tidsenhet) för dessa algoritmer för olika stora datamängder:
Data mängd: 8, 16, 32, 64
Algoritm1: 64, 256, 1024, 4096
Algoritm2: 8000, 16000, 32000, 64000

Vilken av dess algoritmer är effektivast att använda för större datamängder (> 10000)? Motivera ditt
svar!

A

Algoritm2, eftersom tiden för Algoritm1 växer kvadratiskt O(n2
) medan tiden för Algoritm2 växer linjärt

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Definiera begreppet algoritm (algorithm)!

A

En algoritm är en ordnad mängd av otvetydiga, exekverbara steg som beskriver en avslutande process

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Vad är ett program i förhållande till en algoritm?

A

Ett program är en algoritm kodad i ett programmeringsspråk, d.v.s. på ett sådant sätt att en dator kan
exekvera den.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Vad är skillnaden mellan en algoritm och ett program?

A

Ett program är en algoritm kodad på ett sådant sätt att en dator kan exekvera den.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

c) Vilka två olika metoder används för att verifiera att ett program är korrekt (software verification)?

A

Statisk verifiering (static verification) eller kodanalys (code analysis), och testning (testing).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

b) Är ett programmeringsspråk, t.ex. Python, lämpligt för att beskriva algoritmer? Motivera ditt svar!

A

Ja, för att programmeringsspråk har väldefinierade primitiv och regler för hur primitiven kan
kombineras. (Nej, för att programmeringsspråk kräver att man specificerar många detaljer.)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Vad är det minsta antalet gånger som satserna i en loop-kropp (loop body) utförs i en iteration med
pre-test-villkor?

A

0 (noll).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Vad är pseudo-kod (pseudo code)?

A

Ett beskrivningssystem för algoritmer, och som är mindre formellt än riktiga programmeringsspråk (a
notational system in which algorithms can be expressed, and which is less formal than real programming
language code)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Vad är det minsta antal gånger som satserna i en loop-kropp (loop body) utförs i en iteration med
post-test-villkor?

A

En

17
Q

Är det någon skillnad mellan iteration och rekursion när det gäller användningen av minne?

A

Ja, varje rekursivt anrop i en rekursion kräver extra minne, till skillnad från en iteration där varje varv
inte kräver något extra minne

18
Q

Vad är rekursion?

A

Alternativ 1: Rekursion innebär en repetition genom att en subrutin/funktion anropar sig själv.
Alternativ 2: En repetition där varje steg (i repetitionen) löser en deluppgift av tidigare steg (i
repetitionen).

19
Q

Varför är binär sökning bättre än sekvensiell sökning på sorterat data?

A

Därför att med binärsökning så växer antalet steg i sökprocessen logaritmiskt med antalet poster,
medan med sekvensiell sökning så växer antalet steg linjärt med antalet poster, vilket innebär att
binärsökning är betydligt effektivare.