100% found this document useful (1 vote)
85 views

Intro To Data Structures and Algorithms

Contains a brief introduction to Data Structures and Algorithms

Uploaded by

Tony Stark
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
85 views

Intro To Data Structures and Algorithms

Contains a brief introduction to Data Structures and Algorithms

Uploaded by

Tony Stark
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 37

Data Structures and

Data Structures and


Algorithms
Algorithms
Luciano Bononi
Computer Science Engineering
University of Bologna
[email protected]
http!!""".cs.unibo.it!#bononi!
Slide credits these slides have been translated from slides created by $oreno $ar%olla
Data Structures and Algorithms 2
Copyright & '())* Luciano Bononi and $oreno $ar%olla*
Universit+ di Bologna* ,taly
This work is licensed under the Creative Commons Attribution-ShareAlike License. To
view a copy of this license, visit http:creativecommons.or!licensesby-sa".# or send a
letter to Creative Commons, $%" &oward Street, $th 'loor, San 'rancisco, California,
(%)#$, *SA.
Data Structures and Algorithms 3
Course information

Luciano Bononi
[email protected]
http://www.cs.unibo.it/~bononi/

Lessons

$onday -.((.)/.((

0riday -.((.)/.((

Some variations scheduled 1see detailed calendar2

3o tal4 "ith me

Al"ays drop me an email before to define a date!hour.

$y office $ura Anteo 5amboni 6* office 3(7


Data Structures and Algorithms 4
8eneral information
Data Structures and Algorithms 5
Course "ebsite

http!!""".cs.unibo.it!#bononi!

9 Courses 9 Data Structures and Algorithms A.A. '())!'()'

:ill find

General information

Lesson slides

e;ercises

Lin4s and recommended readings

E;am preparation material

Also chec4 <SS and ne"s on the "ebsite


http!!""".unibo.it!Sito:ebDocente!default.htm=upn>luciano.bononi?@(unibo.it
http!!""".unibo.it!Sito:ebDocente!default.htm=upn>luciano.bononi?@(unibo.itA3abControl)>3abAvvisi
3oday , "ill collect your names for a mailing list
Data Structures and Algorithms 6
<ecommended readings
Alfred B. Aho* Ceffrey D. Ullman* Cohn E. Dopcroft* Data Structures and
Algorithms* Addison :esley* )-7/.
3homas D. Cormen* Charles E. Leiserson* <onald L. <ivest* Clifford
Stein* ,ntroduction to Algorithms* $c8ra".Dill* '(().
Donald E. Enuth* 3he Art of Computer Frogramming* Bolumes )./*
Addison.:esley Frofessional* )--7.
S.B. Eishor* Data Structures* Edition /* Das 8anu Fra4ashan* Gagpur*
'((7.
0urther information* boo4s* and material "ill be provided as a :eb
reference.
Data Structures and Algorithms 7
E;am

:ritten e;am

Hral e;am

Dates "ill be agreed by using the mailing list.


Data Structures and Algorithms 8
Algorithms and Data Structures
Data Structures and Algorithms 9
:hat is an algorithm=

A algorithm is a procedure to resolve a


problem by means of a finite seIuence
of basic atomic steps.

3he procedure must be defined in a


not ambiguous and accurate "ay to be
e;ecuted automatically

3he name comes from a Fersian


mathematician Abu CaJfar $uhammad
ibn $usa Eh"ari%mi

Author of the first reference


algebraic te;t

A $oon crater is dedicated to him


Data Structures and Algorithms 10
Algorithm vs Frogram

A algorithm describes 1at high level2 a computation


procedure "hich "hen e;ecuted produces a result.

A program is the implementation of a algorithm by means


of a programming language

A program can be e;ecuted on a computer 1creating a process


under e;ecution2K an algorithm cannot be e;ecuted as is in a
natural form.
Data Structures and Algorithms 11
Algorithms are every"hereL

,nternet. :eb search* pac4et routing* distributed file sharing.

Biology. Duman genome proMect* protein folding.

Computers. Circuit layout* file system* compilers.

Computer graphics. $ovies* video games* virtual reality.

Security. Cell phones* e.commerce* voting machines.

$ultimedia. CD player* DBD* $F/* CF8* DivN* DD3B.

3ransportation. Airline cre" scheduling* map routing.

Fhysics. G.body simulation* particle collision simulation.

...
Data Structures and Algorithms 12
:hy "eJre studying algorithms=
Data Structures and Algorithms 13
:hy :EJre studying algorithms=

e.g. A protein /D structure is determined by interactions of


aminoacids.

Some health issues generated by "rong folding* to be studied.

0olding@Dome
http!!en."i4ipedia.org!"i4i!FroteinOfolding
Data Structures and Algorithms 14
Algorithms again=

Dide rendering surfaces* gaming* physical simulation* etc.


Data Structures and Algorithms 15
:hy to care about algorithms=

Algorithms provide advantages

An efficient algorithm is often the difference bet"een being or


being not able to solve a problem "ith the given resources

$any algorithms "e "ill see "ere invented by studentsL

Algorithms are fun. .2... yes they are. Go* seriously.


Data Structures and Algorithms 16
:here do "e start from=

3here are some classical algs to resolve common


problems

Hrdering* searching* visit of graphs...

Do" could "e evaluate the efficiency of an algorithm=

Do" to derive or invent ne" algorithms that better e;ploit


the resources tradeoffs 1and the opportune data
structures2=
Data Structures and Algorithms 17
:armup 0ibonacci numbers

3he 0ibonacci seIuence


'
)
, '
+
, ... '
n
, ... is defined as
Leonardo 0ibonacci
1Fisa* ))6(PFisa* )'Q(2
http!!it."i4ipedia.org!"i4i!LeonardoO0ibonacci
F
1
=1
F
2
=1
F
n
=F
n1
F
n2
, n2
Data Structures and Algorithms 18
Closed form
8ood ne"s a close form e;ists for '
n
"here

Bad ne"s to evaluate this formula errors are introduced


due to need to compute floating point aritmetics
F
n
=
1

=
1

5
2
1.618

=
1

5
2
0.618
Data Structures and Algorithms 19
3he trivial 0ibonacci algorithm

LetJs define an algorithm to compute 0n based on a trivial


recursive function

:e "ill use pseudo.code description of algorithms. 3he


translation in programming languages is Iuite straight.
for"ard.
algorithm Fibonacci2(int n) int
if ( n==1 || n==2 ) then
return 1;
else
return Fibonacci2(n-1)+Fibonacci2(n-2);
endif
Data Structures and Algorithms 20
<ecursion tree
01@2
01/2 01'2
01'2 01)2
01Q2
01/2
01'2 01)2
01@2>/
01/2>' 01'2>)
01'2>) 01)2>)
01R2>7
01@2>/
01/2>' 01'2>)
01'2>) 01)2>)
01Q2>Q
01/2>'
01'2>) 01)2>)
01@2
01/2 01'2
01'2 01)2
01Q2
01/2
01'2 01)2
01@2>/
01/2>' 01'2>)
01'2>) 01)2>)
01Q2>Q
01/2>'
01'2>) 01)2>)
0162>)/
Data Structures and Algorithms 21
So far so good... but...
3ime needed to compute '
n
gro"s too much as a function
of n
DJohL
Data Structures and Algorithms 22
Do" to estimate the e;ecution time=

,n seconds=

S "ill depend on the computer e;ecuting the program

Gumber of machine language instructions e;ecuted per


second=

Dard to estimate from pseudo.code* and also still depends on


the computer e;ecuting the program

:e estimate the e;ecution time by calculating the number


of basic operations e;ecuted in the pseudo.code.
Data Structures and Algorithms 23
:here is the efficiency problem=

,ntermediate values are often re.calculated again and


again...
01@2
01/2 01'2
01'2 01)2
01Q2
01/2
01'2 01)2
01@2
01/2 01'2
01'2 01)2
01R2
01@2
01/2 01'2
01'2 01)2
01Q2
01/2
01'2 01)2
01@2
01/2 01'2
01'2 01)2
01Q2
01/2
01'2 01)2
01@2
01/2 01'2
01'2 01)2
01Q2
01/2
01'2 01)2
0162
Data Structures and Algorithms 24
Estimation of e;ecution time

let T,n- be the time needed to compuet the n.th 0ibonacci


number.

:e estimate T,n- as the number of nodes of the recursion


tree of '
n

Question ho" to obtain the recursive e;pression of 31n2 as the


number of recursive nodes in the tree for calculating '
n
Data Structures and Algorithms 25
Estimation of e;ecution time

:e can demonstrate 1by induction2 that


T,n- . +'
n
/ )

Question demonstrate that.


By remembering the close form for '
n
"e conclude that
T,n- gro"s e;ponentially

:e can calculate a lo"er bound for 31n2

See ne;t page


Data Structures and Algorithms 26
Estimation of e;ecution time

let 31n2 be the number of nodes of the recursive tree


for calculating '
n

T,)- . T,+- . )K

T,n- . T,n-)- 0 T,n-+- 0 ) ,se n1+-


,t is similar to the recurrence that defines '
n
algorithm Fibonacci2(int n) int
if ( n==1 || n==2 ) then
return 1;
else
return Fibonacci2(n-1)+Fibonacci2(n-2);
endif
Data Structures and Algorithms 27
Lo"er bound of the e;ecution time
T n = T n)T n')
'3n')
@3n@')
73nR'
'
')
...
'
k
T n'4

i =(
k )
'
i
...
'
n/ '

'
n/'
)
')
'
n/ '
:e e;ploit the fact that
31n2 is monotone
increasing
<ecursion ends
"hen 4>n!'
Data Structures and Algorithms 28
Can "e do it better=

LetJs use a vector of si%e n to compute and store the


values of '
)
, '
+
, ... '
n
algorithm Fibonacci3(int n) int
let Fib[1..n] be an array of n ints
Fib[1] := 1;
Fib[2] := 1;
for i:=3 to n do
Fib[i] := Fib[i-1] + Fib[i-2];
endfor
return Fib[n];
Data Structures and Algorithms 29
Do" much does it cost=

LetJs estimate the cost of 0ibonacci/ by counting the


number of pseudocode operations e;ecuted
algorithm Fibonacci3(int n) int
let Fib[1..n] be an array of n integers
Fib[1] := 1; ..................... 1 time
Fib[2] := 1; ..................... 1 time
for i:=3 to n do .................. (n-1) times
Fib[i] := Fib[i-1] + Fib[i-2]; (n-2) times
endfor
return Fib[n]; .................. 1 time
!otal............ 2n
. 3ime is proportional to n
. Space is proportional to n
Data Structures and Algorithms 30
Can "e do it even better=

$emory usage of 0ibonacci/ is proportional to n. Can "e


use less memory=
Tes* because to calculate '
n
"e simply need '
n-)
e '
n-+
algorithm Fibonacci"(int n) int
if ( n==1 || n==2 ) then
return 1;
else
F#n$1 := 1;
F#n$2 := 1;
for i:=3 to n do
F#n := F#n$1 + F#n$2;
F#n$2 := F#n$1;
F#n$1 := F#n;
endfor
return F#n;
endif
Data Structures and Algorithms 31
Do" much does it cost=

letJs count the number of operations e;ecuted


algorithm Fibonacci"(int n) int
if ( n==1 || n==2 ) then
return 1;
else
F#n$1 := 1; .............. 1 time
F#n$2 := 1; .............. 1 time
for i:=3 to n do ........... (n-1) times
F#n := F#n$1 + F#n$2; . (n-2) times
F#n$2 := F#n$1; ........ (n-2) times
F#n$1 := F#n; ........... (n-2) times
endfor
return F#n; ............... 1 time
endif
!otal......... 4n-4
. 3ime is proportional to n
. Space 1memory2 is constantL
Data Structures and Algorithms 32
3hatJs all fol4sL Hr not=

LetJs consider the matri; A

3heorem for any n2+* "e have


1demonstrable by induction2
A=

1 1
1 0

A
n1
=

1 1
1 0

n1
=

F
n
F
n1
F
n1
F
n2

Data Structures and Algorithms 33


,deaL Algorithm 0ibonacciR

:e e;ploit the previous theorem to define algorithm


0ibonacciR as follo"s
algorithm Fibonacci%(int n) : int
& = &at'o(( )* n-1 );
ret+rn &[1][1];
A=

1 1
1 0

$U)VU)V is the first


item of the ro"
Data Structures and Algorithms 34
Tes but...Algorithm $atFo"=

3o compute the 4.th po"er of a matri; A* "e e;ploit the


fact that* for even E* A
k
. ,A
k+
-
+
algorithm &at'o((&atri, )* int -) &atri,
if ( -==. ) then
else
if ( - is e/en ) then
t$0 := &at'o(()*-2)
& := t$0 121 t$0;
else
t$0 := &at'o(()*(--1)2);
& := t$0 121 t$0 121 );
endif
endif
return &;
M=

1 0
0 1

operator JWJ computes the


product of matrices
Data Structures and Algorithms 35
3o sum up
0ibonacci'
0ibonacci/
0ibonacci@
0ibonaccR
3,+
n+
-
4,n-
4,n-
4,lo! n-
4,n-
4,n-
4,)-
4,lo! n-
Algorithm Time Memory
E;ponential time
Logaritmic time
Data Structures and Algorithms 36
Lessons learned=

0or a given problem* "e started from a inefficient


algorithm 1e;ponential cost2 to reach a very efficient
algorithm 1logaritmic cost2.

3he choice of the good algorithm ma4es the difference


bet"een being able to solve a problem or GH3.
Data Structures and Algorithms 37
:armup e;ercise

8iven an array AU)..n.)V containing a permutation of all


values ) . n 1e;tremes included2 but oneK values in A can
be in any order

Eg A > U)* /* @* QV is a permutation of )..Q "ithout the value '

Eg A > U6* )* /* Q* @* 'V is a permutation of )..6 "ithout the value


R

LetJs "rite an algorithm "hich ta4es AU)..n.)V* and returns


the value in the interval )..n "hich is not in A.

You might also like