Choreographing An Algorithm — Part 2

Baby Steps

In a previous blog post, I outlined my project of attaching movements to algorithm solutions, with the intention of ultimately being able to solve an algorithm using movements alone.

Time to choose an algorithm!

I’d like a dynamic algorithm that has a lot of substance to which I can attach movements.

After scouring through my algorithm books and thinking about past algorithms I’ve solved, I have turned to Google. Google has introduced me to Dynamic Programming!

Dynamic Programming is a method of simplifying a complicated problem by breaking it down into simpler sub-problems, then solving the sub-problems recursively. (That’s also part of my endeavor with this choreography project, so let’s lean into that meta space).

The algorithm I’ll be tackling is the Longest Common Subsequence.

So, what’s a subsequence?

Given two sequences, a subsequence is a sequence that appears in the same relative order as another, but not necessarily contiguously.
Input and Output of a common subsequence.

Finding a subsequence is one thing. Finding the longest subsequence is another. I’m going to pause here and think of how my body movements can map to the general idea of finding a subsequence within two larger sequences.

Here are my initial thoughts:

  • Play with body halving. Two sides of the body moving separately but with a few similar motifs. Each movement represents a character in the sequences. For example, the letter “A” in one of the sequences could be represented in movement as a quick elbow jab away from the body.
  • Continue phrase until the subsequence movements are larger and more dramatic and the other characters in the sequence become smaller and fade away.
  • We’re left with only the subsequence(the output).

This will not solve the algorithm. This will establish what exactly is happening in a Longest Common Subsequence algorithm. This is the pseudo code/talking out part of the coding session.

I’ll go work on some movement patterns based on my initial thoughts and based on the input listed above.

Stay tuned for the next post which will include video of my work thus far!