Wednesday, 3 December 2014

CSC165-- Final Exam!!!

Time passed so quickly that csc165 is almost come to the end. At the beginning of the course, i thought i would not do well since i was not  good at logic. And i also wonder that why we need to write blog each week. However, at this time, my thought totally changes, the blogs not only force me to follow up the lecture material but also help me to review on topics that are important in the final exam. There are some of the parts in the blogs that i want to improve. I think i can write more on  my own thought about  the course  throughout the three months. Therefore, the blogs can keep track of my own feelings , which is what blogs usually do.

I like what Ji Yong Choi has mention about the course " I learned a lot of new information that I can use in my future studies."

(http://165choi.blogspot.ca)

CSC165 serves as a milestone of my CS journey and i really enjoy take such a course.
Good Luck everyone with the final exam and hope to see all of you in CSC236!!

Induction--Week 12

This week we learn  a proof technique called induction. Induction basically is used to prove something (ex: p(n) )  is true for natural number n. The idea of induction is similar to dominoes. In order to show that all the dominoes fall, we have 2 steps to do. First, we need to show that the first domino falls, and second, we assume the n-th domino fall and we can come to the result that the (n+1)th domino also falls. At first, it may be hard to understand, but students can think through the ideas of dominoes and find that the dominoes affect makes sense and it helps to understand the induction proof. I have read through some of the blogs written by the classmates and pretty agree with what they have said about the induction proof . For instance, Faye has mention the class example of how to induction work.

(http://165slog.blogspot.ca/2014/12/week-12.html)

ex: In order to prove p(n) is true for all natural number .

1. base case: p(0) is True
2.inductive step: assume p(n) is true and p(n+1) is also True

That is the way how we prove p(n) is True for all natural number.



Sunday, 30 November 2014

Halting Problem--Week 11

This week we discuss that there are some problems in the world that can not solved by algorithms. That is there are uncomputable problems existed for any reasonable computational model. Consider the following halting problem:

def half(f,i) :
      '''return True iff f(i) eventually halts''

we are told that this halt function can not to be implemented. Here is the proof:

assume halt exist.and there are such function exist below:

def confuse(f):
      def halt(f,i):
           #some code here
      if halt(f,f):
          while True:
                    pass
     else:
          return False

we first assume confuse(confuse) halts, then halt(confuse,confuse) is True, then we enter the infinite while loop.
Therefore, we assume confuse(confuse) halts , but got the result of not half

we then assume confuse(confuse) doesn't halts, then we enter the else, which return False.
once again we assume confuse(confuse) doesn't halts but it halts.

so no matter which case we consider, we got the contradiction, that is halt doesn't exist.

Sunday, 23 November 2014

Disprove Big-Oh ---Week 10

last week, we introduce the big-Oh prove, this week we disprove the big-Oh.
Here is one of the examples:

Disprove n^3  O(3n^2)

we first negate  cR+,  BN, nN, n>=B, n^3<=c(3n^2)

  cR+,  BN, nN, n>=B^( n^3)>c(3n^2)


proof:

assume c belongs to R+ and B belongs to N, (Generic c,B)
       pick n=B+ceil(3c)+1  (then n belongs to N)
       then n>=b
     
       then n>=B
       then n^3=n*n^2
       then n^3>3c*n^2 (since n>3c)
       then (n>=B)^ n^3>3cn^2

then  cR+,  BN, nN, n>=B^( n^3)>c(3n^2)


Big-oh of polynomials--Week 9

This week we introduce the big-Oh of polynomials. First, we introduce what is big-Oh O(n^2)? It is a polynomial function that  take a natural number and return a positive real number such that
 cR+,  BN, N, n>=B, 3n^2+2n<=c(n^2). This may look hard to understand, so we can give a simple example of big-Oh proof.

Prove 3n^2+2n O(n^2)

 cR+,  BN, nN, n>=B, 3n^2+2n<=c(n^2)

Pick c=5 ,then CR+
pick b=0, then  BN
assume nN,
    assume n>=B
         then 3n^2+2n<= 3n^2+2n^2
                                 =5n^2
                                =cn^2



     then n>=B ⇒ 3n^2+2n<=cn^2
then BN, then n>=B ⇒ 3n^2+2n<=cn^2
then  cR+,  BN, nN, n>=B, 3n^2+2n<=c(n^2)

Sunday, 9 November 2014

Counting Time Complexity--Week 8

This week we start to learn the interesting and harder staff-----Time Complexity.

I will give a simple linear search python function to talk about the time complexity.

ex:

def  LS(A,x):
       '''Return an index i such that x==L[i]. Otherwise, return -1.'''
       i=0                                 (Line 1)
       while i<len(A):             (Line 2)
              if A[i]==x:             (Line 3)
                    return i             (Line 4)  
              i=i+1                      (Line 5)
       return -1                        (Line 6)

so, if we give an input (A=[2,4,6,8], x=4), what will the time complexity be:

we can trace our code like this:

Line 1: 1 step (i=0)
Line 2: 1 step (0<4)
Line 3: 1 step (A[0]==4)
Line 5: 1 step (i=1)

then again, we go to while loop

Line 2: 1 step (1<4)
Line 3:1 step (A[1]==4)
Line 4: 1 step ( return 1)

so our python function ends here, if we count the total time complexity, it will be 1+1+1+1+1+1+1=7 steps

We can even turn this question into a harder question: what is the worst case in which x isn't in A?

then we can think like this :
line 1 : 1 step (i=0)

while loop : 3* n   (line 2,3,5 executes once for each 0 to len(A)-1 , which line 2,3,5 executes once for n times)

then we have 2 more steps to add, which is last while loop check and the last line 'return -1')

so in worst case, the time complexity is  3n+1.

Sunday, 2 November 2014

Inference Rules-Week 7

Up to today, we have learned some rules of inference to allow us to reach conclusions about certain situations. Here are some of them:

Conjunction Elimination: if we know A^B, we can conclude A and B are both True.

Existential Elimination: if we know that there exist a belongs to X, P(a), then we can certainly pick an element with that property. Pick a' belongs to X, then p(a').

Disjunction Elimination: if we know that A V B, and we know that not(A), we can conclude that B must be True.

Implication Elimination: if we know A implies B, and we also know that A is True, we can conclude that B is also True. On the other hand, if we know not(B), we must conclude that not(A) must be True.

Universal Elimination: if we know that for all x belongs to X, P(x), then if we choose any a belongs to X, we can conclude that P(a) must be True.

Implication introduction:if we assume A and then B follows, then we can conclude that A implies B

Universal Introduction: if we assume that a is generic element of D, and we derive P(a), then we can conclude that for all a belongs to D, P(a).

Existential Introduction:if we can show that x belongs to X, P(x), then we can conclude that there exist x belongs to X, such that P(x).

Conjunction introduction:if we know that A and we know B, then we can conclude A^B

Disjunction introduction: If we know A, we can immediately conclude that A v B

Sunday, 26 October 2014

Proof By Cases---Week 6

Sometime, it is more convenience to prove some proofs by cases. Consider the following proof:

"for all n belongs to N, n^2+n is even"

in order to prove above, it is more convenience to consider the case where n is odd ,then the case n is even.

First, we consider n is odd, then we can use definition of odd to assume n is of the form n=2k+1,where k is natural number. Then n^2+n=(2k+1)(2k+2)=2(k+1)(2k+1)=2m ,where m is a natural number of the form m=(k+1)(2k+1), therefore by definition  n^2+n is also even.

second, we consider n is even, then we can again use definition of even to assume n is of the form n=2k, where k is natural number. Then  n^2+n=(2k)(2k+1)=2n ,where n is a natural number of the form n=k(2k+1), so by definition n^2+n is also even.

So, no matter n is odd or even, we conclude that n^2+n is  even.

Finally, proof by cases are  good techniques that can make some proofs become so easy , therefore we need to know when or how to use proof by cases in the future.

Sunday, 19 October 2014

proof from different directions--Week 5


proof from different directions:

ex:
Prove: for any natural number n, n^2 odd implies that n is odd.

if we start to assume the domain and the antecedent, we may write like this:

assume n is typical natural number.
assume n^2 is odd,
then exist k belongs to N, n^2=2k+1

and from above we want to show that n is odd.

we may find that it is almost impossible for us to proof the case n is odd from n^2 is odd.

However, we may use the fact that the contrapositive of the original statement and the original statement are equivalent, so if we can proof the contrapositive of the original statement, we will find it is much more easier.

which is n is even implies n^2 is even

Sunday, 12 October 2014

For _All_Exists and Exists_For_All--Week 4

Here is one example of python code  to show the differences between for _all_exists and exists_for_all

let S1=S2={1,2,3,4}

def forall_exists(S1,S2):
      return all({any({x+y==5 for y in s2}) for x in S1})

def exists_forall(S1,S2):
      return any({all({x+y==5 for y in S1}) for x in S2})

the first python function will return True, since for all x in S1(x=1 or x=2 or x=3 or x=4), we can find one instance of y in S2 that satisfy x+y==5. (if we pick x=1 ,we can choose y=4 such that x+y=5. if we pick x=2, we can choose y=3 such that x+y=5 and so on)

So the statement inside the all will return True. (all{True, True,True,True} return True) ,therefore the first function will return True.

what second function saying is that for all x in S2,  then for all y in S1, x+y=5. we  find each time we choose x, we can pick a y that make x+y=5 false. for example, if we choose x=1, then we pick y=1, then we see that x+y=5 is false). So the  function will have the result any{False, False, False, False} in which will return  False

Sunday, 5 October 2014

More on negation-- Week 3

As i mention in Week 1's blog, negation means negative of the original 

statement. In this week, we put all the universal  , existing quantifier 

and implication together and we try to negation them all  at once. Here 

is one example:

¬(∀ X∈R, ∃ y∈R, P⇒Q)⇔  (∃ x∈R, ∀ y∈R, ¬(¬PvQ) )
(∃ x∈R, ∀ y∈R, P^ ¬Q)


although, negation of such long statement seems to be hard at the beginning, 

but after many times practicing the negation, it becomes pretty computational 

and easy.

Tuesday, 23 September 2014

'Natural' Language (Implication)--Week 2

There are three  implications are so confuse for me to know which is the 'P' and which is the 'Q' in this week's lecture.

1. Successful program requires skill
2. I'll go only if you ins is
3. Don't know it unless you're tried it.

At the beginning, i am so confused about which implies which. For example statement 1, i think it's the skill implies successful program, however after asking many people for help, I understand that skill don't implies successful program (many people have skill but not everyone of them can make successful program) It's the successful program that implies skill.

This week, i find that there are great differences between  Natural language and the mathematical logic. As  beginners, it may takes us some times to know the differences between them. However, as we think more throughly, logic can also become intuitive for us!

Logic Implication VS Natural Language--Week 2

"If you eat your vegetables, then you can have dessert" (Week 2, Lecture 1)

In our daily language, the implication above means that you can have your dessert if and only if you eat your vegetables. There is no way that you don't eat your vegetable and have the dessert still. This is pretty much intuitive and well-accpeted by us.

However, when it comes to logic, the above statement has different approaches.

if you eat your vegetables, you will surely have your dessert. however, if you don't eat your vegetables, you can have the probability that you can still have the dessert. That mean if we see you have dessert, we are not sure whether you eat the vegetables or not.These refers to something called Vacuous Truth. Once the antecedent is false, the statement is automatic true regardless of the consequent. The reason to explain Vacuous Truth is that we can never find any counter-example to false the statement. Therefore, the whole statement is true.


Tuesday, 16 September 2014

How 'negation' works --week 1

Negation means a negative statement.
Negation can be done easily by put 'not' into the original statement.

for instance:
5+5 equals 10 (original true statement)
5+5 not equal 10 (negation statement)

one should understand that (not any) means none, (not all) means at lease one statement  is false





All and ANY--week1

'All' means every element of the set, 'ANY' means  at least one element of the set.

For instance, we creat a set S and have three statement s1,s2,s3.

To make all(S) true, we have to check every element in S and make sure s1,s2,s3 are all true.
To make all(S) false, we just need to find (at least) one of  the element in S that is false.

To make any(S) true, we need find at least one of the element in S that is true.
To make any(S) False, we need check all elements in S and make sure all s1,s2,s3 are false.

We should understand the differences between each of the cases above and not mix them up