Title: Tirgul%202
1Tirgul 2
- Subjects of this tirgul
- Short discussion about standard output/error.
- Short discussion about comparators.
- Main subject asymptotic analysis.
2Default I/O Streams
- Class System has 3 default streams, available to
every Java program - Input from the keyboard goes into the standard
input. This is the data member System.in of
type java.io.InputStream - Output (usually to the terminal window) written
through 2 streams - Standard output System.out of type
java.io.PrintStream - Standard error System.err of type
java.io.PrintStream
3Default I/O Streams
- The standard output and error are directed by the
Operating System. By default - both to the
terminal. - The convention - standard error for error
messages, standard output for regular output. - In UNIX, the user can redirect to a file
- standard output by adding gt my_out.txt. For
example java MyClass param1 gt out.txt - both to the same file, by adding gt my_out.txt
- You cant redirect only the standard error, but
redirecting to different files is possible (by
outsmarting) (java MyClass gt out.txt) gt err.txt
4Comparators
- You already know interface Comparable to compare
objects. - Problem some classes may be compared by
different criteria (participants may be compared
by ID, or by name) - Solution create a Comparator for this specific
class. - In the constructor specify the comparison
criteria. - The method compare() receives two objects of this
class and compares them (similar to CompareTo()). - Many Java API data structures can compare classes
either by Comparable or by a Comparator.
5Asymptotic Analysis
- Motivation Suppose you want to evaluate two
programs according to their run-time for inputs
of size n. The first has run-time ofand the
second has run-time ofAnswer For small
inputs, it doesnt matter, both programs will
finish before you notice. What about (really)
large inputs?
6Big - O
- Definition
if there exists constants cgt0 and n0 such
that for all ngtn0, - In other words, g(n) bounds f(n) from above (for
large ns) up to a constant. - Examples
7Big - Omega
- Definition
if there exists constants cgt0 and n0 such
that for all ngtn0, - In other words, g(n) bounds f(n) from below (for
large ns) up to a constant. - Examples
8Big - Theta
- Definition if
and - In other words, g(n) is a tight estimate of f(n)
(in asymptotic terms). - Examples
9Example 1(question 2-4-e. in Cormen)
Claim If (for ngtn0)
then Proof Take . Thus for
ngtn0, Note if there is no such for f(n)
then the claim is not true take for example f(n)
1/n. For any constant c, take ngtc and so
f(n) gt (c/n)f(n) c (f(n))2
10Example 2(question 2-4-d. in Cormen)
- Does imply
- Answer No. For example, Then,
so but, for any constant
cso
11Summations(from Cormen, ex. 3.2-2., page 52)
-
- note how we got rid of the integer rounding
- The first term is n so the sum is also
- Its an example how the largest item dominates
the growth of the term in an exponential
decrease/increase.
12Summations (example 2)(Cormen, ex. 3.1-a., page
52)
- (r is a constant)
note that - But it seems that we can do better by tightening
our analysis a bit more...
13Example 2 (Cont.)
- For an even n
- For an odd n
- Thus so our
upper bound was tight!
14Recurrences
- What is the running time of the Towers of Hanoi
?? - Reminder
- We can express the running-time as a
recurrence h(n) 2h(n-1) 1 h(1) 1 - How do we solve this ?
H(s,t,m,k) if (k gt 1) H(s,m,t,k-1)
moveDisk(s,t) H(m,t,s,k-1) else
moveDisk(s,t)
15Step 1 guessing the solution
- h(n) 2h(n-1) 1
- 22h(n-2)1 1 4h(n-2) 3
42h(n-3)1 3 8h(n-3) 7 - When repeating k times we get h(n)2k h(n-k)
(2k - 1) - Now take kn-1. Well geth(n) 2n-1
h(n-(n-1)) 2n-1 - 1 2n-1 2n-1 -1 2n - 1
16Step 2 proving by induction
- If we guessed right, it will be easy to prove by
induction that h(n)2n - 1 - For n1 h(1) 2-11 (and indeed h(1)1)
- Suppose h(n-1) 2n-1 - 1. Then, h(n) 2h(n-1)
1 2(2n-1 - 1) 1 2n -2 1 2n
-1 - So we conclude that h(n) O(2n)
17Another Example
-
- And we get T(n) k T(n/k)(k-1)For kn we get
T(n) n T(1)n-12n-1Now proving by induction is
very simple. - Another way guess right away T(n) lt c n - b
(for some b and c we dont know yet), and try to
prove by inductionFor n1 T(1)c-b, which is
true when c-b1The induction stepT(n) lt 2
(c(n/2) - b) 1 c n - 2b 1 lt c n - b(the
last step is true if bgt1). Conclusion T(n)
O(n)
T(n) 2T(n/2) 1 2 (2T(n/4) 1) 1
4T(n/4) 3 4 (2T(n/8) 1) 3 8T(n/8) 7
T(n) 2 T(n/2) 1 T(1) 1
18Common errors
- A precise guess is important for the induction to
workh(n) 2n - 1, and not just h(n)O(2n) or
h(n)2n. - For example, the method from the previous
slideIf we guess just T(n)lt cn the induction
step wont work. Lets try by induction
T(n/2) lt c(n/2) T(n) 2T(n/2) 1 c n 1 gt
c n (!!!) - Notice that it is not correct to sayc n 1
O(n) so we proved T(n)O(n).The induction step
must be precise. If guessingT(n) lt cn then this
is what you have to show.
19Recursion Trees
The recursion tree for the towers of Hanoi
- For each level we write the time added due to
this level. In Hanoi, each recursive call adds
one operation (plus the recursion). Thus the
total is