At this point I ought to cover a few details I may have omitted on my
journey. I expect, however, that this checkpoint doesn't signal the end
of my bout with examining the Latin square problem. I examined it
briefly freshman year with mixed results. This year showed marked
improvement; I look forward to potentially continued results.
While
I discussed backtracking to an extent, I did not discuss my data
structures here employed. In truth, it would appear that my method did
not use any data structures. Many data types were employed, notably
queues and stacks. I used a queue when attempting to solve the square
given pieces. The queue kept track of each incomplete square before it
was reprocessed to continue toward the end goal. The stack acted as the
function call stack when I checked to see how many possible solutions to
a partial Latin square there were. It differed by allowing me to count
how many completed squares there were without abandoning the total once
one was found.
There never truly was any test data for
this experiment. Each run (each square) was generated randomly at
runtime. However, I did model the algorithm off of the GRC OTG page. It used an example domain "amazon" and demonstrated certain special edge cases to deal with that random data may include.
Ultimately
the project worked as intended for the first tier (generating a square)
but not so well for the second tier (recalling the square).
Incrementally, I have found various minor coding errors that have
potentially hindered progress. It's possible that my approach as a
whole, though, even when properly executed, involves some fatal
incorrect assumptions. This clarity may come with time. One
consideration I am inclined to pursue at the moment is the potential
neglecting of the potential for restarting the algorithm with a new word
or group of characters. I also may be making a false assumption about
the start of the sequences. However, allowing the perpendicular
direction to vary freely is inaccurate as it must line up with the end
of the previous segment. Blindly adding that modification creates an
endless cycle.
A video of this project in action can be found here.
No comments:
Post a Comment