Monday, January 24, 2011

Konstantino K's Computerless Algorithm


In my project, I chose to explore a process of the human subconscious -- that is, our thought process when choosing where to seat ourselves. We encounter variants of this phenomenon on a regular basis each day, whether it be on the subway or in the classroom.

To make this a fairly manageable task, I made an algorithm specific to our classroom (where there are three rows of seats on either side of the class with an aisle in the centre). Furthermore, because not every person chooses a seat in precisely the same way, I developed three stereotypical personalities that would function like boolean variables in the algorithm -- that is, they can be true or false. For the scope of this project, the personalities were:
  1. The mark seeker (Someone who would typically sit towards the front of the class, most likely to make eye contact with the professor regularly.)
  2. The social outcast (Someone who typically prefers the back-most seats, preferably next to the window if possible. In the case of the algorithm, these people have no friends within the class at the moment of seating.)
  3. The social butterfly (Someone who has at least one friend in the class at their moment of being seated. In some unfortunate cases a butterfly can become an outcast, even if they have a friend in the room. More on that later.)
To better understand this algorithm, it would be best to first view it in its entirety. But allow me to give you fair warning: the code is notably dense. Phrases marked in red mean the algorithm has reached a conclusive result.

//define variables
boolean markSeeker
boolean socialOutcast
boolean socialButterfly
boolean available //a seat that is empty
boolean unavailable //a seat being occupied
boolean hasFriends //used to determine socialOutcast/Butterfly scenario

//analyze how many free seats there are in the room:
  • look at first seat
  • is the seat empty?
  • YES: mark as "available"
  • NO: mark as "unavailable"
  • look at next unmarked seat (return to "is the seat empty?")
  • (when all seats are marked, go to next step)
//determine seat-search type:
  • are your grades the most valuable thing to you in this class?
  • YES: "markSeeker" = TRUE
  • NO: go to next step
  • is "hasFriends" TRUE? --> socialButterfly = TRUE
  • is "hasFriends" FALSE? --> socialOutcast = TRUE
IF markSeeker = TRUE {
  • is the front-centre seat (left or right side) "available"?
  • YES: sit in it
  • NO: is the seat next to it "available"?
  • YES: sit in it
  • NO: (return to "is the seat next to it 'available'?" above)
  • is the next row-center seat (left or right side) "available"?
  • YES: sit in it
  • NO: (return to "is the seat next to it 'available'?" above)
}

IF socialOutcast = TRUE {
  • is the back-most window seat "available"?
  • YES: sit in it
  • NO: is the seat next to it "available"?
  • YES: sit in it
  • NO: (return to "is the seat next to it 'available'?")
  • do you have a seat yet?
  • YES: done
  • NO: are there any "available" seats?
  • YES: sit at random
  • NO: sit on the floor OR remain standing
}

IF socialButterfly = TRUE {

have any of your friends made a seat "unavailable"?
  • YES: is there an "available" seat next to them?
  • YES: do they have another friend they would rather sit next to?
  • YES: socialButterfly = FALSE, socialOutcast = TRUE
  • NO: sit in the "available" seat next to them
  • NO: do you have another friend making a seat "unavailable"?
  • YES: (return to "is there an 'available' seat next to them?")
  • NO: socialButterfly = FALSE, socialOutcast = TRUE
  • NO: socialButterfly = FALSE, socialOutcast = TRUE
}
As you can see, the scenario for the "social butterfly" is not only the most complicated, but also the most unstable. Despite an apparent surplus of friends, there is always the possibility that you will end up seated like a "social outcast."


Unfortunately, none of these stereotypical personalities can be strictly proven true to in real life. Similarly it would be impossible to create a universal system for finding the best possible seat for every person on the planet. This was more so an exercise to demonstrate that there is an intricate thinking process involved in these types of behaviours, and perhaps to understand just how complicated the tiny things we do every day (often times within a split second) truly are.

No comments:

Post a Comment