Personal 2005: TDDB56 – DALGOPT-D Algorithms and optimization

advertisement
TDDB56 DALGOPT-D – Lecture 1
TDDB56 DALGOPT-D – Lecture 1
Personal 2005:
ALGORITM-delen:
• Kursledare, examinator,
DALG föreläsningar: Jan Maluszynski
epost: janma@ida.liu.se
• Kursassistent, lektionsgrupp,
labgrupper: Vilhelm Dahllöf
epost: vilda@ida.liu.se
• Assistent, lektionsgrupp,
labgrupper: Magnus Wahlström
epost: magwa@ida.liu.se
• Assistent, lektionsgrupp,
labgrupper: David Broman
epost: davbr@ida.liu.se
• Assistent, lektionsgrupp,
labgrupper: Bengt Wersten
epost: benwe332@student.liu.se
• Kurssekreterare: Madeleine Häger
epost: madha@ida.liu.se
TDDB56 – DALGOPT-D
Algorithms and optimization
Jan Maluszynski, IDA, 2004
http://www.ida.liu.se/~TDDB56
janma @ ida.liu.se
Subject: TDDB56
Jan Maluszynski - HT 2005
1.1
TDDB56 DALGOPT-D – Lecture 1
Planering:
Litteratur:
• ht1/2005: 12 Fö DALG, 6 Le DALG, 4 Labs DALG
• ht2/2005: 1 Le DALG, 1 Lab DALG,
10 Fö OPT, 10 Le OPT, 3 Labs OPT
Skriv TDDB56 i subjekt-raden!
Se även hemsidan för aktuell info!
Jan Maluszynski - HT 2005
TDDB56 DALGOPT-D – Lecture 1
Kursen är organiserad i två spår:
• DALG (data structurer och algorithmer) – IDA
• OPT (optimering) – MAI
Kursen går över två perioder:
OPTIMERINGS-delen:
• Ansvarig för OPT-delen, OPT
föreläsningar: Kaj Holmberg
epost: kahol@mai.liu.se
Kursassistent:
Jenny Karlsson
epost: jekar@mai.liu.se
• Assistent: Reza Razmara
epost: nigol@mai.liu.se
1.2
• DALG (data structurer och algorithmer)
– Michael T. Goodrich, Roberto Tamassia:
Data Structures and Algorithms in Java (3d edition),
Wiley 2004 (alternativa böcker: se hemsidan)
– Uppgifssamling till lektionerna (.pdf hemsidan)
– Laborationskompendium (.pdf hemsidan)
• OPT (optimering)
– Kaj Holmberg: Kombinatorisk optimering med
linjärprogrammering (kompendium 2005), Bokakademien
– Laborationskompendium (.pdf hemsidan)
Jan Maluszynski - HT 2005
1.3
Jan Maluszynski - HT 2005
1.4
1
TDDB56 DALGOPT-D – Lecture 1
TDDB56 DALGOPT-D – Lecture 1
Planering – Examination...
Planering – Föreläsningar...
Det finns fyra (4) tentatillfällen 04/05:
•
•
•
•
Kontrollskrivning efter p1 (frivillig)
Ordinarie tentamen efter p2
Inkluderar kontrollOmtenta under våren
skrivningen. Man behöver
Omtenta i augusti
inte göra om den delen!
Kontrollskrivning
Tentan består av två delar:
• 70-80% av DALG-delen
• Resterande 20-30% av
DALG och all OPT
Ordinarie
tentamen
Jan Maluszynski - HT 2005
Period 1 (prel):
Period 2 (prel):
1.
1.
Inledning, vad & varför, notationer,
”komplexitet”, RAM-modell...
2. Hur analysera algoritmer?
3. Enkla abstrakta datatyper:
Listor, Stackar, Köer
4. Arrayer, Tabeller, Hashing,
...mer analystekniker.
5. Träd, Binära träd, trädvandring...
6. Trädsökning, balansering av träd
7. Skip-listor, prioritetsköer
8. Sortera och söka
9. Mera sortera och söka...
10. Datastrukturer, algoritmer för Grafer,
egenskaper hos dessa...
11. Mera grafer...
12. Reserv!
1.5
Optimering - Intro,
problemformulering, grafisk lösning.
Linjärprogrammeringens grunder
…Simplexmetoden
... Dualitet och känslighetsanalys
Grafteori, billigaste-uppspännandeträdproblemet,handelsresandeproble
met, kinesiska brevbärarprobemet
6. Billigaste-vägproblem, dynamisk
programmering
7. Flöden i nätverk
8. Heltals problem
9. Problemkomplexitet
10. Heuristiker, approximativa algoritmer
2.
3.
4.
5.
Jan Maluszynski - HT 2005
TDDB56 DALGOPT-D – Lecture 1
TDDB56 DALGOPT-D – Lecture 1
Planering – Lektioner...
Planering – Laborationer...
Lektioner, ”räknestuga” handledd problemlösning...
Period 1:
•
Period 1:
•
•
•
• 6 lektioner ALG
Period 2:
1.6
Svarta lådor - analysera tidskomplexitet genom att provköra med
olika indata
Hashtabeller - implementeras i Java
Binära sökträd - implementeras i Java
Quicksort - implementeras i Java
Period 2:
• 1 lektion ALG
• 10 lektioner OPT
•
•
•
Simplexmetoden: Övning och implementering.
Flöden i nätverk: Modellering och lösning med programpaket
Netlin.
Lokaliseringsproblemet: Lösning med AMPL samt heuristik.
Anmälning till laborationer på webben, se hemsidan!
Jan Maluszynski - HT 2005
1.7
Jan Maluszynski - HT 2005
1.8
2
TDDB56 DALGOPT-D – Lecture 1
TDDB56 DALGOPT-D – Lecture 1
DALGOPT – till vad nytta?
DALG – Viktiga principer:
Abstract data types (ADTs)
• machine-independent, high-level description
• of data and operations on them
e.g.: Dictionary, Stack, Queue, PriorityQueue, Set, ...
Data structures: logical organization of computer memory for storing
data
Algorithms: high-level description of concrete operations on data
structures (to be cont.)
ADT implemented by suitable data structures and algorithms
Program: implements algorithms and data structures in some
programming language
Jan Maluszynski - HT 2005
1.9
Jan Maluszynski - HT 2005
TDDB56 DALGOPT-D – Lecture 1
TDDB56 DALGOPT-D – Lecture 1
DALG – Viktiga principer...
Exempel problem:
Algorithm
• Concrete but machine- and language-independent
specification of all necessary steps (simple operations on
data) to compute a solution (output) from a given problem
instance (input)
• Correctness – the computed output for any given input is
as stated in the problem description
• Algorithm analysis – time and space consumption,
scalability, efficiency, worst case, best case, average
case, amortized analysis
• Algorithmic paradigms – commonly used problem
solving strategies e.g., divide&conquer, dynamic
programming, greedy strategy, ...
Jan Maluszynski - HT 2005
1.11
1.10
Problemet:
• Legal in-data är:
– En lista med alla resultat på tentan
– Element: (Namnet på en student, resultat)
• Önskad utdata är ett värde ur
mängden {”ja”, ”nej”}
• Hur ser data ut som skall manipuleras, vilka operationer
på data behövs?
ADT
• Hur representerar dessa data i en dator?
datastruktur
• Hur realiserar vi operationerna på en sådan datastruktur?
Jan Maluszynski - HT 2005
1.12
3
TDDB56 DALGOPT-D – Lecture 1
TDDB56 DALGOPT-D – Lecture 1
Exempel problemet: Beskriv data!
Exempel (forts): Realisera & Analysera
• Steg 1 – välj en lämplig Abstract Data Type
objekt och operationer på dessa!
...i detta fall: ett ”dictionary”, dvs en uppslagstabell, men
”set” (mängd) fungerar också...
• Domain:
K: linjärt ordnad mängd av ”nycklar” (namnen)
I: information (i vårt fall: bara ”ok” / ”inte ok”)
• Ett dictionary D: mängd av element (nyckel,info)
• Operationer på ett dictionary:
LookUp(D,nyckel) returns info
• ...detaljerna är dock dolda för användaren/programmeraren
Jan Maluszynski - HT 2005
1.13
TDDB56 DALGOPT-D – Lecture 1
Sök lämplig implementering av ADT som datastruktur
dvs organisera ditt användande av datorminne
Implementera algoritmerna i din ADT!
Olika algoritmer kan lösa
samma problem!
Hur jämföra dem?
Algoritmer använder...
• Tid
• Minne
Jan Maluszynski - HT 2005
1.14
TDDB56 DALGOPT-D – Lecture 1
Effektivitet
Hur ”mäter” vi exekvering...
Källa till förvirring
• Använd en enkel modell av datorn
och fel!
• Glöm allt vad OS heter
• All minnesåtkomst tar lika lång tid
(random access)
• Alla grundläggande operationer sker på konstant, känd tid
(tidsenheten 1)
• Kopiera mer än en minnesplats = kopiera många gånger!
Analys av ”effektivitet”:
• Maskinoberoende
• Giltig för alla indata
Vi jämför två algoritmer
(och de datastrukturer de
behöver) med avseende på:
• Tidsåtgång (som funktion av indata)
• Minnesåtgång (som funktion av indata)
...fokus på värstafallsbeteende!
Jan Maluszynski - HT 2005
1.15
Jan Maluszynski - HT 2005
1.16
4
TDDB56 DALGOPT-D – Lecture 1
TDDB56 DALGOPT-D – Lecture 1
Hur beskriva det som mäts?
Pseudokod: ...data:
• Som ett program som enbart består av
de primitiva operationerna i vår RAM ...?
(Random Access Machine)
...add, mult, move, jmp,
Grundläggande datatyper:
• integer, boolean, character...
• ”Pekare” är minnesaddresser, Λ ”null”-pekare
• Något lämpligt ”högnivåspråk” som ändå bevarar
analyserbarheten?
... Pascal, C, Java
Man brukar använda en förenklad notation som är
nära Pascal/C
Pseudokod [Goodrich/Tamassia 3.3]
Jan Maluszynski - HT 2005
1.17
TDDB56 DALGOPT-D – Lecture 1
• Table/Array: en i minnet sammanhängande sekvens av data av
samma typ.
Deklaration: table<boolean>T [a..b]
• Key: generellt begrepp för den del av ett dataelement som används
vid sortering/sökning i en sekvens av sådana dataelement
Jan Maluszynski - HT 2005
1.18
TDDB56 DALGOPT-D – Lecture 1
Pseudokod – operationer...
Programmoduler
• Tilldelning: x ← y
x↔ y
 x   y
  ←  
 y  x 
...samtidig tilldelning
• De vanliga ”strukturprimmitiverna”:
if ... then ... / if ... then ... else ...
for ... from ... to ... do
while ... do
• Kortslutande evaluering av boolska uttryck:
X and Y and....
Jan Maluszynski - HT 2005
Sammansatta data:
• Node (= post, record eller struct): en fix sammansättning av datatyper
som ges ett eget namn...
1.19
Funktioner:
function TableSearch (table T[1..n] , key K): integer
integer x; {en lokal variabel}
...
... return x; {avslutar exekvering och returnerar värdet x}
Anrop: X  TableSearch(D, V)
Procedures (functions not returning values)
procedure Link (pointer P, Q)...
Rekursion är tillåten, används flitigt
Jan Maluszynski - HT 2005
1.20
5
TDDB56 DALGOPT-D – Lecture 1
TDDB56 DALGOPT-D – Lecture 1
Exempel på användning av pseudokod:
Alternativt – gör det med pekare...
Implementering av ADT ”dictionary” med hjälp av en
totalt ordnad (=sorterad) tabell...
function TableSearch ( table<integer> T[1..n], key k ):boolean
for i from 1 to n do
if T [i] = k then return true
if T [i] > k then return false
return false
...”scope” definieras av indenteringen!
Jan Maluszynski - HT 2005
1.21
Jan Maluszynski - HT 2005
TDDB56 DALGOPT-D – Lecture 1
TDDB56 DALGOPT-D – Lecture 1
Målet med allt detta:
Analysis of Algorithms...
What to analyze
ADT tells what to do: set of operations on data.
To describe how to do that, we must
• choose a data structure (representation in memory)
• find algorithms that realize the ADT operations and describe them as
functions on that data structure
The same ADT can be implemented with different data structures.
The data structure chosen may restrict the choice of the algorithms to be
used for the ADT operations and thus the efficiency that can be
achieved.
We use pseudocode notation for precise and concise description of
algorithms.
Jan Maluszynski - HT 2005
1.22
1.23
[Goodrich/Tamassia 3.5, Lewis/Denenberg 2.1]
• correctness
• termination
• efficiency
-- yes!
Time/space efficiency
•
•
•
•
...not in
TDDB56!
[Goodrich/Tamassia 3.4, Lewis/Denenberg 2.2]
growth rate
worst case, expected case, amortized
analysis techniques for iterative algorithms
analysis techniques for recursive algorithms
Mathematical background
[Goodrich/Tamassia 3.4]
Jan Maluszynski - HT 2005
1.24
6
TDDB56 DALGOPT-D – Lecture 1
TDDB56 DALGOPT-D – Lecture 1
Principles of Algorithm Analysis
How to compare time/space efficiency?
An algorithm should work for (input) data of any size.
(Example TableSearch: input size is the size of the table.)
Show the resource (time/memory) used as an increasing
function of input size.
Focus on the worst case performance.
Ignore constant factors
• analysis should be machine-independent;
• more powerful computers introduce speed-up by constant
factors.
Study scalability / asymptotic behaviour for large problem sizes:
• ignore lower-order terms, focus on dominating terms.
Jan Maluszynski - HT 2005
1.25
TDDB56 DALGOPT-D – Lecture 1
• Study execution time (or memory usage)
as a function of the size of input data:
• When are they
”equally” effective?
• When is one
better than the
other?
Jan Maluszynski - HT 2005
1.26
TDDB56 DALGOPT-D – Lecture 1
Use asymptotic analysis!
”Order” notation
• Consider two growing functions f , g from natural numbers
to positive real numbers:
• Quite nice to be able to say that (time or memory
consumption of) f grows aproximately as (for) g
...i.e., except for constant factors they have a similar
resource consumption behaviour
• We often use simple well known functions as comparison
functions.... example: f(n) grows aproximately as n2
f dominates g iff f(n) / g(n) increases without bounds for n ∞
that is, for a given constant factor c > 0, there is some
threshold value
such that
• There are many such functions ”similar” to g,
f ∈ O(g) ...f is in ”Ordo” of g
...belongs to the set of functions that does not grow faster
than g
Jan Maluszynski - HT 2005
Jan Maluszynski - HT 2005
1.27
1.28
7
TDDB56 DALGOPT-D – Lecture 1
TDDB56 DALGOPT-D – Lecture 1
Types of growth comparison:
Types of growth comparison:
• f , g growing functions from natural numbers to positive real numbers
• f is (in) O(g) iff there exist c > 0, n0 ≥ 1 such that f(n) ≤ c g(n) for all n ≥ n0
Intuition: Apart from constant factors, f grows at most as quickly as g
• f is (in) Ω(g) iff there exist c > 0, n0 ≥ 1 such that f(n) ≥ c g(n) for all n ≥ n0
Intuition: Apart from constant factors, f grows at least as quickly as g
Ω() is the converse of O, i.e. f is in Ω(g) iff g is in O(f)
≥≤
• f is (in) Θ(g) iff f(n) ∈ O(g(n)) and g(n) ∈ O(f(n))
Ω(g) , Θ(g), O(g) ..??
Intuition: Apart from constant factors, f grows exactly as quickly as g
Jan Maluszynski - HT 2005
1.29
TDDB56 DALGOPT-D – Lecture 1
Jan Maluszynski - HT 2005
1.30
TDDB56 DALGOPT-D – Lecture 1
…comparison with simple math function:
Asymptotic analysis: Dominance Relation Revisited
• Growing functions on natural numbers: f and g
n
log2n
n
n log2 n
n log2 n
2n
2
1
2
2
4
4
16
4
16
64
256
6.5*104
64
6
64
384
4096
1.84*1019
there exists
f is (in) o(g) iff there exist c > 0, n0 ≥ 1 such that f(n) ≤ c g(n) for all n ≥ n0
for any
c f(n) < g(n)
i.e., f is dominated by g
Intuition: g grows strictly more quickly than f .
1.84* 1019 µsec = 2.14* 108 days = 5845 centuries
Jan Maluszynski - HT 2005
1.31
• If f ∈ o(g) then f O(g) but not vice versa.
Example: n ∈ o(2n)
Jan Maluszynski - HT 2005
1.32
8
TDDB56 DALGOPT-D – Lecture 1
TDDB56 DALGOPT-D – Lecture 1
How to check growth rate?
Examples: Prove or disprove...
• Asuming algorithm f has an execution time
behaviour T(f) as listed below, e.g., T(f) = (n+1)2 ...
Jan Maluszynski - HT 2005
1.33
TDDB56 DALGOPT-D – Lecture 1
Jan Maluszynski - HT 2005
1.34
TDDB56 DALGOPT-D – Lecture 1
To check growth rate?
Jan Maluszynski - HT 2005
1.35
Jan Maluszynski - HT 2005
1.36
9
Download