Traveling Salesman Problem

Image

“PathFinder” is a program I wrote that deals with a simple case of the Traveling Salesman Problem. The objective is to visit all points with the shortest path possible. My solution was not optimal, but it was not particularly inefficient either. I used Dijkstra’s algorithm, which finds the shortest path from point to point and then connects the last point to the point where you began. This creates a suboptimal path from the last point to the starting one.

Advertisements

Privacy for Security: Fair Trade?

The main idea of government is that the people give up some of their power to the government in exchange for security. But a question has recently come to light as a result of the uncovered PRISM program and the potential for Google Glass to record what its wearer sees: how far can the government go to ensure its people’s security before it goes too far?

I would like to be able to offer a definite line dividing acceptable amounts of surveillance from unacceptable, but in truth there is no such thing. The line is fuzzy and liable to shift. In the end, it all boils down to how much the people trust the government. For instance, one argument in favor of the PRISM program is that the government will only look closely at data that could aid them in finding terrorists and such, and that the correspondence of your every-day Joe would fly under the radar. For a populace that does not trust its government, however, such assurances are not enough to allay their fears that their every secret and illicit affair might be aired to prying eyes.

An article in the New York Times brushed against this topic when it mentioned that cameras in the hands of the people are a far different beast than they are in the hands of the government. As the article quotes from Jay Stanley, senior policy analyst with the American Civil Liberties Union in Washington, “In the hands of an individual, the video camera can be a very empowering thing. When it’s employed by the government to watch over the citizens, it has the opposite effect.”

Link to the article

Scientist, Engineer, Artist, Professional?

                  Where I live.

Living in the Silicon Valley means that I’m around a lot of scientists and engineers. But what exactly is the difference between a scientist and an engineer? The difference is that scientists are more interested in the theory behind something, and engineers prefer to actually build it. You could say that scientists like to learn new concepts while engineers like to apply them.

Artists are obviously different from scientists and engineers. Professionals, on the other hand, may not be so obvious. Professionals are educators who share knowledge, instead of dedicating their time to gathering or applying it.

Simple Lisp Program

( defun add (x y)
(+ x y))

( defun subtract (x y)
(- x y))

( defun multiply (x y)
(* x y))

( defun divide (x y)
(/ x y))

( defun factorial (x)
(if (eq x 0)
1
(* x (factorial(- x 1)))))

(print ( add 3 4 ))
(print ( subtract 5 3 ))
(print ( multiply 2 4 ))
(print ( divide 2 5 ))
(print ( factorial 5 ))

This is a program in Lisp that lets you add, subtract, multiply, divide, and find the factorial of a number. Unlike Java, which is imperative, Lisp is a functional programming language, which is why it looks so different. Imperative programming languages tell the computer what to do and how to achieve it. On the other hand, declarative languages (which include functional languages) tell the computer what should be accomplished without describing exactly how to do so.

Lisp was specified in 1958, making it one of the oldest programming languages still being widely used. It originated from Alonzo Church’s lambda calculus and has become the most popular language for AI research.

Final Project Proposal: Story-Telling Chatbot

What is the specific area you are working within?
I am working on a chatbot. That means my project involves word relations, mimicking human behavior, and of course AI.

What is it that you would like to learn about it?
I would like to learn more about conversational patterns and how chatbots like Cleverbot generate the Eliza Effect.

Why is this interesting to you?

I am always looking to expand my knowledge on AI, as well as programming in general. Besides that, I have an interest in the psychology behind the Eliza Effect.

Why should other people care?
Eventually, technology like this could be used to generate games that are a truly interactive experience, telling a story that is not preset but changes on every playthrough.

What are the practical applications of this topic?
See above.

What is the closest example (researched from the web) of what you want to build or investigate?
Two story-telling chatbots that have been built in the past are Tale-Spin and Racter.

What do I want to accomplish? (For example…)
I want to create a chatbot capable of holding conversation and telling a human user about its “experiences” (the stories it generates).

Building a demo/prototype/interactive experience?
Collecting a set of foundational psuedocode/approaches?
Creating a way to teach or explain it to others?
Pooling together a set of current cutting edge research in this area?
Any or all of the above?
etc.

My order set of steps I plan to take to accomplish it?
I plan to first outline the program in pseudocode. Then, I will gather phrases, subjects, places, verbs etc. for the prototype to utilize. After that I will work on actually coding the program, getting user input straight from the command-line to save time on making a frontend.
Foreseeable obstacles?
Generating stories that actually make sense.
What tools am I using?

Java, resources found online.

visualsort

 

Wrote a program that visually represents a bubble sort.

Procedural Literacy

Procedural literacy the ability to understand non-static systems like interactive programs and AI. It is especially important in this age when the usage of computers has become relatively widespread and interest in interactive AI is beginning to increase.