Skip to main content

Week 11: Touring the Turing Machine

Hello readers!!

I hope most of you have survived last week's cold weather and are enjoying this week's much more enjoyable temperatures!

Last week we were introduced the Turing Machine, which sounds really cool (and it is), but it isn't exactly what it sounds like.

For one, the Turing Machine isn't actually a machine. In fact, it isn't even a tangible object! It was something a thoughtful man named Alan Turing came up with, even before computing machines were even made (or were at least available to most people)!! Secondly, it doesn't exactly set out to 'do' anything. It is rather something that was made to prove what we can't do (or to be more specific, compute). 

So what exactly was Turing trying to find out with his not-actually-real machine? He was trying to find the limits of what he thought mechanical machines or nowadays, computers could ever compute. "If you're thinking, oh man, computers can do everything!! Just look at those cool websites like WolframAlpha! It helps me check all my calculus homework." Well, my dear friend, just because there seem like there are infinitely many computable functions out there, it doesn't mean that there aren't any that can't be computed!

As a simple example we learned in class, we can define functions as halting or not halting (not halting refers to functions that go in an infinite loop and are therefore uncomputable). 
Let's look as this code:

def cute_puppy(f):
    while halt(f, f):
        pass
    return 'lost_puppy'

Looking at this function, we consider the input cute_puppy and decide if it will halt or not. Lets say we decide that cute_puppy(cute_puppy) halts, which means that the while loop condition will be True, which means that we enter the loop, only to pass and go back to the while loop, which is True, which means that we enter the loop and pass, and then go back to the the while loop?!?!?!?! This means that the function doesn't really halt, since we are infinitely stuck in that while loop! (side note: which isn't so bad, if you've ever gone to one of those websites that showcases cute animals, which feels like an infinite loop of awesomeness)
Ok then, you say, why don't we decide that cute_puppy(cute_puppy)does not halt! Then surely this is true! Let's give it a try: so if we say that halt(cute_puppy, cute_puppy)is False, then the loop condition is not fulfilled and we return the statement lost_puppy............ but wait, our function just halted!! So our statement has just been contradicted once more!!

While I do apologize for the many exclamatory marks all over those preceding 2 paragraphs, I just wanted to show how crazy it is to have thought all my life that probably everything could be solved by a computer, only to learn that something as simple as this has already beaten the computer at its own game. This concept is really cool to me, and I will be looking forward to learning all about halting functions and the limits to what computers can do! 

Hope you all learned a little today or at least had a little fun reading this and as always have a nice week!

Lana :)

Comments

Popular posts from this blog

Week 12: Halting Problem Visualized

Hello readers! I'm sure you're all hard at work trying to finish assignment 3. I just wanted to take a few minutes to share with you a video I found on the halting problem. It may be a tad overdramatic (especially with the music) and corny, but it does explain the problem quite well. Here's part 1 (which can be skipped if you want): And part 2, which is where the real explanation of the halting function starts (skip to 2:33 if you don't like corny dialogue): Hopefully this helps with your endeavors (or at least is a bit entertaining)! Good luck with the assignment! Lana :)

Week 5: Tracing Recursion

Hello readers! How have you guys been recently? I have been bombarded with a myriad of tests, labs, and assignments, as usual, but I'll holding up alright! Today's blurb is on tracing recursion! As you all know, a recursive function is basically any function that is called within itself. You'll need it any time a bigger problem can be solved by solving smaller versions of a same type of problem until you get your answer to the big one. Kind of. At least that's how I see it. Anyhow, tracing recursion is not as bad as it sounds, it takes some bit of practice, of course, but all in all it will eventually click. Tracing recursion was on the test this week went successfully I should think. The quasi-solution I came out with with involved the function we needed to trace giving the maximum length of any lists that were fed into it, including the length of the overall list. If I am correct, then my tracing would have been successful. We shall see in due time! Bu...

Week 10: How to solve a problem

Hello my good friends! This week is the coveted fall reading break, and I hope you all are doing something useful with your time, like me, who is currently writing my SLOG. Now that the course is nearing its end, I would like to take it back to the beginning and try to solve one of those logic puzzles, using the Polya method we learned in class. I am, afterall, an amateur logician now, am I not? So here is the puzzle I have found from the problem solving wiki page. So without further ado, I present to you: Walk Tilings Suppose you have tiles that are 1x2 rectangles, and you have to tile a walk that is 2x3 units long. You've got three choices: 3 vertical tiles, 1 vertical tile followed by two horizontal tiles, or two horizontal tiles followed by one vertical tiles. How many choices do you have in tiling a 2x4 walk? How about a 2xn walk, where n is some natural number? Do you have a procedure that works for any n? Understanding the Problem Ultimately ...